1
0
mirror of https://github.com/tobspr/shapez.io.git synced 2025-06-13 13:04:03 +00:00

Merge branch 'master' into logic-pain-fix

This commit is contained in:
dengr1065 2020-08-29 00:29:21 +03:00
commit 997cde22d9
70 changed files with 13256 additions and 12368 deletions

View File

@ -59,7 +59,7 @@ This project is based on ES5. Some ES2015 features are used but most of them are
1. Create the component file in `src/js/game/components/<name_lowercase>.js` 1. Create the component file in `src/js/game/components/<name_lowercase>.js`
2. Create a component class (e.g. `MyFancyComponent`) which `extends Component` 2. Create a component class (e.g. `MyFancyComponent`) which `extends Component`
3. Create a `static getId()` method which should return the `CamelCaseName` without component (e.g. `MyFancy`) 3. Create a `static getId()` method which should return the `PascalCaseName` without component (e.g. `MyFancy`)
4. If any data needs to be persisted, create a `static getSchema()` which should return the properties to be saved (See other components) 4. If any data needs to be persisted, create a `static getSchema()` which should return the properties to be saved (See other components)
5. Add a constructor. **The constructor must be called with optional parameters only!** `new MyFancyComponent({})` should always work. 5. Add a constructor. **The constructor must be called with optional parameters only!** `new MyFancyComponent({})` should always work.
6. Add any props you need in the constructor. 6. Add any props you need in the constructor.

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 B

View File

@ -10,7 +10,7 @@
}, },
"sprites/belt/built/forward_1.png": "sprites/belt/built/forward_1.png":
{ {
"frame": {"x":1925,"y":1008,"w":116,"h":144}, "frame": {"x":1545,"y":991,"w":116,"h":144},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
@ -18,7 +18,7 @@
}, },
"sprites/belt/built/forward_2.png": "sprites/belt/built/forward_2.png":
{ {
"frame": {"x":1540,"y":1139,"w":116,"h":144}, "frame": {"x":428,"y":1186,"w":116,"h":144},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
@ -26,7 +26,7 @@
}, },
"sprites/belt/built/forward_3.png": "sprites/belt/built/forward_3.png":
{ {
"frame": {"x":1803,"y":1118,"w":116,"h":144}, "frame": {"x":427,"y":1334,"w":116,"h":144},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
@ -34,7 +34,7 @@
}, },
"sprites/belt/built/forward_4.png": "sprites/belt/built/forward_4.png":
{ {
"frame": {"x":1923,"y":1156,"w":116,"h":144}, "frame": {"x":971,"y":1317,"w":116,"h":144},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
@ -42,7 +42,7 @@
}, },
"sprites/belt/built/forward_5.png": "sprites/belt/built/forward_5.png":
{ {
"frame": {"x":1801,"y":1266,"w":116,"h":144}, "frame": {"x":421,"y":1482,"w":116,"h":144},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
@ -50,7 +50,7 @@
}, },
"sprites/belt/built/forward_6.png": "sprites/belt/built/forward_6.png":
{ {
"frame": {"x":1921,"y":1304,"w":116,"h":144}, "frame": {"x":414,"y":1630,"w":116,"h":144},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
@ -58,7 +58,7 @@
}, },
"sprites/belt/built/forward_7.png": "sprites/belt/built/forward_7.png":
{ {
"frame": {"x":432,"y":1334,"w":116,"h":144}, "frame": {"x":969,"y":1465,"w":116,"h":144},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
@ -66,7 +66,7 @@
}, },
"sprites/belt/built/forward_8.png": "sprites/belt/built/forward_8.png":
{ {
"frame": {"x":430,"y":1482,"w":116,"h":144}, "frame": {"x":412,"y":1778,"w":116,"h":144},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
@ -74,7 +74,7 @@
}, },
"sprites/belt/built/forward_9.png": "sprites/belt/built/forward_9.png":
{ {
"frame": {"x":141,"y":1877,"w":116,"h":144}, "frame": {"x":961,"y":1613,"w":116,"h":144},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
@ -82,7 +82,7 @@
}, },
"sprites/belt/built/forward_10.png": "sprites/belt/built/forward_10.png":
{ {
"frame": {"x":438,"y":890,"w":116,"h":144}, "frame": {"x":1545,"y":1139,"w":116,"h":144},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
@ -90,7 +90,7 @@
}, },
"sprites/belt/built/forward_11.png": "sprites/belt/built/forward_11.png":
{ {
"frame": {"x":438,"y":1038,"w":116,"h":144}, "frame": {"x":1534,"y":1287,"w":116,"h":144},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
@ -98,7 +98,7 @@
}, },
"sprites/belt/built/forward_12.png": "sprites/belt/built/forward_12.png":
{ {
"frame": {"x":1542,"y":991,"w":116,"h":144}, "frame": {"x":1530,"y":1435,"w":116,"h":144},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
@ -106,7 +106,7 @@
}, },
"sprites/belt/built/forward_13.png": "sprites/belt/built/forward_13.png":
{ {
"frame": {"x":437,"y":1186,"w":116,"h":144}, "frame": {"x":433,"y":1038,"w":116,"h":144},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
@ -114,7 +114,7 @@
}, },
"sprites/belt/built/left_0.png": "sprites/belt/built/left_0.png":
{ {
"frame": {"x":145,"y":1475,"w":130,"h":130}, "frame": {"x":151,"y":1035,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
@ -122,7 +122,7 @@
}, },
"sprites/belt/built/left_1.png": "sprites/belt/built/left_1.png":
{ {
"frame": {"x":3,"y":1575,"w":130,"h":130}, "frame": {"x":151,"y":1169,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
@ -130,7 +130,7 @@
}, },
"sprites/belt/built/left_2.png": "sprites/belt/built/left_2.png":
{ {
"frame": {"x":279,"y":1493,"w":130,"h":130}, "frame": {"x":3,"y":1696,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
@ -138,7 +138,7 @@
}, },
"sprites/belt/built/left_3.png": "sprites/belt/built/left_3.png":
{ {
"frame": {"x":137,"y":1609,"w":130,"h":130}, "frame": {"x":541,"y":1580,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
@ -146,7 +146,7 @@
}, },
"sprites/belt/built/left_4.png": "sprites/belt/built/left_4.png":
{ {
"frame": {"x":3,"y":1709,"w":130,"h":130}, "frame": {"x":278,"y":1687,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
@ -154,7 +154,7 @@
}, },
"sprites/belt/built/left_5.png": "sprites/belt/built/left_5.png":
{ {
"frame": {"x":271,"y":1627,"w":130,"h":130}, "frame": {"x":137,"y":1705,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
@ -162,7 +162,7 @@
}, },
"sprites/belt/built/left_6.png": "sprites/belt/built/left_6.png":
{ {
"frame": {"x":137,"y":1743,"w":130,"h":130}, "frame": {"x":3,"y":1830,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
@ -170,7 +170,7 @@
}, },
"sprites/belt/built/left_7.png": "sprites/belt/built/left_7.png":
{ {
"frame": {"x":3,"y":1843,"w":130,"h":130}, "frame": {"x":1091,"y":1354,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
@ -178,7 +178,7 @@
}, },
"sprites/belt/built/left_8.png": "sprites/belt/built/left_8.png":
{ {
"frame": {"x":1379,"y":1274,"w":130,"h":130}, "frame": {"x":827,"y":1578,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
@ -186,7 +186,7 @@
}, },
"sprites/belt/built/left_9.png": "sprites/belt/built/left_9.png":
{ {
"frame": {"x":1513,"y":1287,"w":130,"h":130}, "frame": {"x":534,"y":1714,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
@ -194,7 +194,7 @@
}, },
"sprites/belt/built/left_10.png": "sprites/belt/built/left_10.png":
{ {
"frame": {"x":1076,"y":1288,"w":130,"h":130}, "frame": {"x":151,"y":1303,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
@ -202,7 +202,7 @@
}, },
"sprites/belt/built/left_11.png": "sprites/belt/built/left_11.png":
{ {
"frame": {"x":927,"y":1295,"w":130,"h":130}, "frame": {"x":146,"y":1437,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
@ -210,7 +210,7 @@
}, },
"sprites/belt/built/left_12.png": "sprites/belt/built/left_12.png":
{ {
"frame": {"x":786,"y":1363,"w":130,"h":130}, "frame": {"x":280,"y":1553,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
@ -218,7 +218,7 @@
}, },
"sprites/belt/built/left_13.png": "sprites/belt/built/left_13.png":
{ {
"frame": {"x":552,"y":1416,"w":130,"h":130}, "frame": {"x":144,"y":1571,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
@ -226,7 +226,7 @@
}, },
"sprites/belt/built/right_0.png": "sprites/belt/built/right_0.png":
{ {
"frame": {"x":1647,"y":1294,"w":130,"h":130}, "frame": {"x":271,"y":1821,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
@ -234,7 +234,7 @@
}, },
"sprites/belt/built/right_1.png": "sprites/belt/built/right_1.png":
{ {
"frame": {"x":1781,"y":1414,"w":130,"h":130}, "frame": {"x":137,"y":1839,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
@ -242,7 +242,7 @@
}, },
"sprites/belt/built/right_2.png": "sprites/belt/built/right_2.png":
{ {
"frame": {"x":1344,"y":1408,"w":130,"h":130}, "frame": {"x":532,"y":1848,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
@ -250,7 +250,7 @@
}, },
"sprites/belt/built/right_3.png": "sprites/belt/built/right_3.png":
{ {
"frame": {"x":1195,"y":1520,"w":130,"h":130}, "frame": {"x":1359,"y":1447,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
@ -258,7 +258,7 @@
}, },
"sprites/belt/built/right_4.png": "sprites/belt/built/right_4.png":
{ {
"frame": {"x":1054,"y":1556,"w":130,"h":130}, "frame": {"x":1223,"y":1539,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
@ -266,7 +266,7 @@
}, },
"sprites/belt/built/right_5.png": "sprites/belt/built/right_5.png":
{ {
"frame": {"x":1478,"y":1421,"w":130,"h":130}, "frame": {"x":1081,"y":1622,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
@ -274,7 +274,7 @@
}, },
"sprites/belt/built/right_6.png": "sprites/belt/built/right_6.png":
{ {
"frame": {"x":1329,"y":1542,"w":130,"h":130}, "frame": {"x":1357,"y":1581,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
@ -282,7 +282,7 @@
}, },
"sprites/belt/built/right_7.png": "sprites/belt/built/right_7.png":
{ {
"frame": {"x":1188,"y":1654,"w":130,"h":130}, "frame": {"x":1215,"y":1673,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
@ -290,7 +290,7 @@
}, },
"sprites/belt/built/right_8.png": "sprites/belt/built/right_8.png":
{ {
"frame": {"x":1612,"y":1428,"w":130,"h":130}, "frame": {"x":1081,"y":1756,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
@ -298,7 +298,7 @@
}, },
"sprites/belt/built/right_9.png": "sprites/belt/built/right_9.png":
{ {
"frame": {"x":1463,"y":1555,"w":130,"h":130}, "frame": {"x":798,"y":1909,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
@ -306,7 +306,7 @@
}, },
"sprites/belt/built/right_10.png": "sprites/belt/built/right_10.png":
{ {
"frame": {"x":1915,"y":1452,"w":130,"h":130}, "frame": {"x":1225,"y":1405,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
@ -314,7 +314,7 @@
}, },
"sprites/belt/built/right_11.png": "sprites/belt/built/right_11.png":
{ {
"frame": {"x":1210,"y":1386,"w":130,"h":130}, "frame": {"x":1089,"y":1488,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
@ -322,7 +322,7 @@
}, },
"sprites/belt/built/right_12.png": "sprites/belt/built/right_12.png":
{ {
"frame": {"x":1061,"y":1422,"w":130,"h":130}, "frame": {"x":827,"y":1712,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
@ -330,7 +330,7 @@
}, },
"sprites/belt/built/right_13.png": "sprites/belt/built/right_13.png":
{ {
"frame": {"x":920,"y":1429,"w":130,"h":130}, "frame": {"x":668,"y":1717,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
@ -338,7 +338,7 @@
}, },
"sprites/blueprints/belt_left.png": "sprites/blueprints/belt_left.png":
{ {
"frame": {"x":1322,"y":1676,"w":130,"h":130}, "frame": {"x":932,"y":1909,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
@ -346,7 +346,7 @@
}, },
"sprites/blueprints/belt_right.png": "sprites/blueprints/belt_right.png":
{ {
"frame": {"x":1746,"y":1548,"w":130,"h":130}, "frame": {"x":1066,"y":1909,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
@ -354,7 +354,7 @@
}, },
"sprites/blueprints/belt_top.png": "sprites/blueprints/belt_top.png":
{ {
"frame": {"x":261,"y":1877,"w":116,"h":144}, "frame": {"x":961,"y":1761,"w":116,"h":144},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
@ -362,7 +362,7 @@
}, },
"sprites/blueprints/constant_signal.png": "sprites/blueprints/constant_signal.png":
{ {
"frame": {"x":1937,"y":759,"w":105,"h":127}, "frame": {"x":1938,"y":759,"w":105,"h":127},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":20,"y":0,"w":105,"h":127}, "spriteSourceSize": {"x":20,"y":0,"w":105,"h":127},
@ -386,7 +386,7 @@
}, },
"sprites/blueprints/display.png": "sprites/blueprints/display.png":
{ {
"frame": {"x":1597,"y":1562,"w":128,"h":136}, "frame": {"x":666,"y":1909,"w":128,"h":136},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":8,"y":8,"w":128,"h":136}, "spriteSourceSize": {"x":8,"y":8,"w":128,"h":136},
@ -402,10 +402,10 @@
}, },
"sprites/blueprints/lever.png": "sprites/blueprints/lever.png":
{ {
"frame": {"x":1823,"y":732,"w":110,"h":116}, "frame": {"x":1823,"y":732,"w":111,"h":129},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":17,"y":17,"w":110,"h":116}, "spriteSourceSize": {"x":17,"y":4,"w":111,"h":129},
"sourceSize": {"w":144,"h":144} "sourceSize": {"w":144,"h":144}
}, },
"sprites/blueprints/logic_gate-not.png": "sprites/blueprints/logic_gate-not.png":
@ -418,7 +418,7 @@
}, },
"sprites/blueprints/logic_gate-or.png": "sprites/blueprints/logic_gate-or.png":
{ {
"frame": {"x":560,"y":888,"w":144,"h":123}, "frame": {"x":1249,"y":989,"w":144,"h":123},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":123}, "spriteSourceSize": {"x":0,"y":0,"w":144,"h":123},
@ -426,7 +426,7 @@
}, },
"sprites/blueprints/logic_gate-transistor.png": "sprites/blueprints/logic_gate-transistor.png":
{ {
"frame": {"x":1820,"y":970,"w":101,"h":144}, "frame": {"x":1820,"y":996,"w":101,"h":144},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":101,"h":144}, "spriteSourceSize": {"x":0,"y":0,"w":101,"h":144},
@ -434,7 +434,7 @@
}, },
"sprites/blueprints/logic_gate-xor.png": "sprites/blueprints/logic_gate-xor.png":
{ {
"frame": {"x":1101,"y":852,"w":144,"h":143}, "frame": {"x":290,"y":890,"w":144,"h":143},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":143}, "spriteSourceSize": {"x":0,"y":0,"w":144,"h":143},
@ -442,7 +442,7 @@
}, },
"sprites/blueprints/logic_gate.png": "sprites/blueprints/logic_gate.png":
{ {
"frame": {"x":824,"y":885,"w":144,"h":133}, "frame": {"x":1249,"y":852,"w":144,"h":133},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":133}, "spriteSourceSize": {"x":0,"y":0,"w":144,"h":133},
@ -450,7 +450,7 @@
}, },
"sprites/blueprints/miner-chainable.png": "sprites/blueprints/miner-chainable.png":
{ {
"frame": {"x":150,"y":1035,"w":136,"h":143}, "frame": {"x":689,"y":1424,"w":136,"h":143},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":5,"y":0,"w":136,"h":143}, "spriteSourceSize": {"x":5,"y":0,"w":136,"h":143},
@ -458,7 +458,7 @@
}, },
"sprites/blueprints/miner.png": "sprites/blueprints/miner.png":
{ {
"frame": {"x":150,"y":1182,"w":136,"h":143}, "frame": {"x":547,"y":1433,"w":136,"h":143},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":5,"y":0,"w":136,"h":143}, "spriteSourceSize": {"x":5,"y":0,"w":136,"h":143},
@ -506,7 +506,7 @@
}, },
"sprites/blueprints/rotater-ccw.png": "sprites/blueprints/rotater-ccw.png":
{ {
"frame": {"x":3,"y":1035,"w":143,"h":144}, "frame": {"x":1665,"y":1198,"w":143,"h":144},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":143,"h":144}, "spriteSourceSize": {"x":1,"y":0,"w":143,"h":144},
@ -514,7 +514,7 @@
}, },
"sprites/blueprints/rotater-fl.png": "sprites/blueprints/rotater-fl.png":
{ {
"frame": {"x":1396,"y":979,"w":142,"h":144}, "frame": {"x":948,"y":1169,"w":142,"h":144},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":142,"h":144}, "spriteSourceSize": {"x":0,"y":0,"w":142,"h":144},
@ -522,7 +522,7 @@
}, },
"sprites/blueprints/rotater.png": "sprites/blueprints/rotater.png":
{ {
"frame": {"x":290,"y":1060,"w":143,"h":144}, "frame": {"x":1899,"y":1169,"w":143,"h":144},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":143,"h":144}, "spriteSourceSize": {"x":1,"y":0,"w":143,"h":144},
@ -530,15 +530,31 @@
}, },
"sprites/blueprints/splitter-compact-inverse.png": "sprites/blueprints/splitter-compact-inverse.png":
{ {
"frame": {"x":1249,"y":988,"w":142,"h":138}, "frame": {"x":1242,"y":1116,"w":142,"h":138},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":2,"w":142,"h":138}, "spriteSourceSize": {"x":0,"y":2,"w":142,"h":138},
"sourceSize": {"w":144,"h":144} "sourceSize": {"w":144,"h":144}
}, },
"sprites/blueprints/splitter-compact-merge-inverse.png":
{
"frame": {"x":1094,"y":1212,"w":142,"h":138},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":2,"w":142,"h":138},
"sourceSize": {"w":144,"h":144}
},
"sprites/blueprints/splitter-compact-merge.png":
{
"frame": {"x":1650,"y":1493,"w":139,"h":138},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":5,"y":2,"w":139,"h":138},
"sourceSize": {"w":144,"h":144}
},
"sprites/blueprints/splitter-compact.png": "sprites/blueprints/splitter-compact.png":
{ {
"frame": {"x":1094,"y":1146,"w":139,"h":138}, "frame": {"x":1844,"y":1604,"w":139,"h":138},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":5,"y":2,"w":139,"h":138}, "spriteSourceSize": {"x":5,"y":2,"w":139,"h":138},
@ -578,7 +594,7 @@
}, },
"sprites/blueprints/underground_belt_entry-tier2.png": "sprites/blueprints/underground_belt_entry-tier2.png":
{ {
"frame": {"x":3,"y":1330,"w":138,"h":125}, "frame": {"x":553,"y":1176,"w":138,"h":125},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":19,"w":138,"h":125}, "spriteSourceSize": {"x":4,"y":19,"w":138,"h":125},
@ -586,7 +602,7 @@
}, },
"sprites/blueprints/underground_belt_entry.png": "sprites/blueprints/underground_belt_entry.png":
{ {
"frame": {"x":3,"y":1459,"w":138,"h":112}, "frame": {"x":285,"y":1322,"w":138,"h":112},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":32,"w":138,"h":112}, "spriteSourceSize": {"x":4,"y":32,"w":138,"h":112},
@ -594,7 +610,7 @@
}, },
"sprites/blueprints/underground_belt_exit-tier2.png": "sprites/blueprints/underground_belt_exit-tier2.png":
{ {
"frame": {"x":558,"y":1185,"w":139,"h":112}, "frame": {"x":3,"y":1326,"w":139,"h":112},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":139,"h":112}, "spriteSourceSize": {"x":4,"y":0,"w":139,"h":112},
@ -602,13 +618,13 @@
}, },
"sprites/blueprints/underground_belt_exit.png": "sprites/blueprints/underground_belt_exit.png":
{ {
"frame": {"x":1237,"y":1270,"w":138,"h":112}, "frame": {"x":3,"y":1442,"w":138,"h":112},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":138,"h":112}, "spriteSourceSize": {"x":4,"y":0,"w":138,"h":112},
"sourceSize": {"w":144,"h":144} "sourceSize": {"w":144,"h":144}
}, },
"sprites/blueprints/wire-cross.png": "sprites/blueprints/virtual_processor-analyzer.png":
{ {
"frame": {"x":3,"y":887,"w":144,"h":144}, "frame": {"x":3,"y":887,"w":144,"h":144},
"rotated": false, "rotated": false,
@ -616,9 +632,49 @@
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":144}, "spriteSourceSize": {"x":0,"y":0,"w":144,"h":144},
"sourceSize": {"w":144,"h":144} "sourceSize": {"w":144,"h":144}
}, },
"sprites/blueprints/virtual_processor-rotater.png":
{
"frame": {"x":1925,"y":1021,"w":118,"h":144},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":14,"y":0,"w":118,"h":144},
"sourceSize": {"w":144,"h":144}
},
"sprites/blueprints/virtual_processor-shapecompare.png":
{
"frame": {"x":1397,"y":852,"w":144,"h":133},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":133},
"sourceSize": {"w":144,"h":144}
},
"sprites/blueprints/virtual_processor-unstacker.png":
{
"frame": {"x":1101,"y":704,"w":144,"h":144},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":144},
"sourceSize": {"w":144,"h":144}
},
"sprites/blueprints/virtual_processor.png":
{
"frame": {"x":285,"y":1037,"w":144,"h":141},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":3,"w":144,"h":141},
"sourceSize": {"w":144,"h":144}
},
"sprites/blueprints/wire-cross.png":
{
"frame": {"x":1249,"y":704,"w":144,"h":144},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":144},
"sourceSize": {"w":144,"h":144}
},
"sprites/blueprints/wire-split.png": "sprites/blueprints/wire-split.png":
{ {
"frame": {"x":801,"y":1022,"w":144,"h":82}, "frame": {"x":1397,"y":989,"w":144,"h":82},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":62,"w":144,"h":82}, "spriteSourceSize": {"x":0,"y":62,"w":144,"h":82},
@ -626,7 +682,7 @@
}, },
"sprites/blueprints/wire-turn.png": "sprites/blueprints/wire-turn.png":
{ {
"frame": {"x":706,"y":1036,"w":82,"h":82}, "frame": {"x":1813,"y":1144,"w":82,"h":82},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":62,"y":62,"w":82,"h":82}, "spriteSourceSize": {"x":62,"y":62,"w":82,"h":82},
@ -650,7 +706,7 @@
}, },
"sprites/blueprints/wire_tunnel.png": "sprites/blueprints/wire_tunnel.png":
{ {
"frame": {"x":290,"y":1208,"w":138,"h":135}, "frame": {"x":702,"y":1170,"w":138,"h":135},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":138,"h":135}, "spriteSourceSize": {"x":4,"y":4,"w":138,"h":135},
@ -658,7 +714,7 @@
}, },
"sprites/buildings/belt_left.png": "sprites/buildings/belt_left.png":
{ {
"frame": {"x":145,"y":1475,"w":130,"h":130}, "frame": {"x":151,"y":1035,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
@ -666,7 +722,7 @@
}, },
"sprites/buildings/belt_right.png": "sprites/buildings/belt_right.png":
{ {
"frame": {"x":1647,"y":1294,"w":130,"h":130}, "frame": {"x":271,"y":1821,"w":130,"h":130},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
@ -730,10 +786,10 @@
}, },
"sprites/buildings/lever.png": "sprites/buildings/lever.png":
{ {
"frame": {"x":1823,"y":852,"w":109,"h":114}, "frame": {"x":1823,"y":865,"w":109,"h":127},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":18,"y":18,"w":109,"h":114}, "spriteSourceSize": {"x":18,"y":5,"w":109,"h":127},
"sourceSize": {"w":144,"h":144} "sourceSize": {"w":144,"h":144}
}, },
"sprites/buildings/logic_gate-not.png": "sprites/buildings/logic_gate-not.png":
@ -746,7 +802,7 @@
}, },
"sprites/buildings/logic_gate-or.png": "sprites/buildings/logic_gate-or.png":
{ {
"frame": {"x":1396,"y":852,"w":143,"h":123}, "frame": {"x":1095,"y":1085,"w":143,"h":123},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":143,"h":123}, "spriteSourceSize": {"x":1,"y":0,"w":143,"h":123},
@ -762,7 +818,7 @@
}, },
"sprites/buildings/logic_gate-xor.png": "sprites/buildings/logic_gate-xor.png":
{ {
"frame": {"x":3,"y":1183,"w":143,"h":143}, "frame": {"x":1897,"y":1317,"w":143,"h":143},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":143,"h":143}, "spriteSourceSize": {"x":1,"y":0,"w":143,"h":143},
@ -770,7 +826,7 @@
}, },
"sprites/buildings/logic_gate.png": "sprites/buildings/logic_gate.png":
{ {
"frame": {"x":1249,"y":852,"w":143,"h":132}, "frame": {"x":948,"y":1033,"w":143,"h":132},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":143,"h":132}, "spriteSourceSize": {"x":1,"y":0,"w":143,"h":132},
@ -778,7 +834,7 @@
}, },
"sprites/buildings/miner-chainable.png": "sprites/buildings/miner-chainable.png":
{ {
"frame": {"x":150,"y":1329,"w":136,"h":142}, "frame": {"x":829,"y":1432,"w":136,"h":142},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":5,"y":0,"w":136,"h":142}, "spriteSourceSize": {"x":5,"y":0,"w":136,"h":142},
@ -786,7 +842,7 @@
}, },
"sprites/buildings/miner.png": "sprites/buildings/miner.png":
{ {
"frame": {"x":290,"y":1347,"w":136,"h":142}, "frame": {"x":687,"y":1571,"w":136,"h":142},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":5,"y":0,"w":136,"h":142}, "spriteSourceSize": {"x":5,"y":0,"w":136,"h":142},
@ -834,7 +890,7 @@
}, },
"sprites/buildings/rotater-ccw.png": "sprites/buildings/rotater-ccw.png":
{ {
"frame": {"x":1098,"y":999,"w":141,"h":143}, "frame": {"x":1240,"y":1258,"w":141,"h":143},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":2,"y":0,"w":141,"h":143}, "spriteSourceSize": {"x":2,"y":0,"w":141,"h":143},
@ -842,7 +898,7 @@
}, },
"sprites/buildings/rotater-fl.png": "sprites/buildings/rotater-fl.png":
{ {
"frame": {"x":949,"y":1033,"w":141,"h":143}, "frame": {"x":1385,"y":1300,"w":141,"h":143},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":141,"h":143}, "spriteSourceSize": {"x":1,"y":0,"w":141,"h":143},
@ -850,7 +906,7 @@
}, },
"sprites/buildings/rotater.png": "sprites/buildings/rotater.png":
{ {
"frame": {"x":1395,"y":1127,"w":141,"h":143}, "frame": {"x":1654,"y":1346,"w":141,"h":143},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":2,"y":0,"w":141,"h":143}, "spriteSourceSize": {"x":2,"y":0,"w":141,"h":143},
@ -858,15 +914,31 @@
}, },
"sprites/buildings/splitter-compact-inverse.png": "sprites/buildings/splitter-compact-inverse.png":
{ {
"frame": {"x":1243,"y":1130,"w":141,"h":136}, "frame": {"x":1884,"y":1464,"w":141,"h":136},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":3,"w":141,"h":136}, "spriteSourceSize": {"x":0,"y":3,"w":141,"h":136},
"sourceSize": {"w":144,"h":144} "sourceSize": {"w":144,"h":144}
}, },
"sprites/buildings/splitter-compact-merge-inverse.png":
{
"frame": {"x":1388,"y":1160,"w":142,"h":136},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":3,"w":142,"h":136},
"sourceSize": {"w":144,"h":144}
},
"sprites/buildings/splitter-compact-merge.png":
{
"frame": {"x":559,"y":1036,"w":139,"h":136},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":5,"y":3,"w":139,"h":136},
"sourceSize": {"w":144,"h":144}
},
"sprites/buildings/splitter-compact.png": "sprites/buildings/splitter-compact.png":
{ {
"frame": {"x":792,"y":1108,"w":139,"h":136}, "frame": {"x":285,"y":1182,"w":139,"h":136},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":5,"y":3,"w":139,"h":136}, "spriteSourceSize": {"x":5,"y":3,"w":139,"h":136},
@ -898,7 +970,7 @@
}, },
"sprites/buildings/trash.png": "sprites/buildings/trash.png":
{ {
"frame": {"x":1101,"y":704,"w":144,"h":144}, "frame": {"x":1397,"y":704,"w":144,"h":144},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":144}, "spriteSourceSize": {"x":0,"y":0,"w":144,"h":144},
@ -906,7 +978,7 @@
}, },
"sprites/buildings/underground_belt_entry-tier2.png": "sprites/buildings/underground_belt_entry-tier2.png":
{ {
"frame": {"x":1660,"y":1166,"w":137,"h":124}, "frame": {"x":548,"y":1305,"w":137,"h":124},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":5,"y":20,"w":137,"h":124}, "spriteSourceSize": {"x":5,"y":20,"w":137,"h":124},
@ -914,7 +986,7 @@
}, },
"sprites/buildings/underground_belt_entry.png": "sprites/buildings/underground_belt_entry.png":
{ {
"frame": {"x":935,"y":1180,"w":137,"h":111}, "frame": {"x":280,"y":1438,"w":137,"h":111},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":5,"y":33,"w":137,"h":111}, "spriteSourceSize": {"x":5,"y":33,"w":137,"h":111},
@ -922,7 +994,7 @@
}, },
"sprites/buildings/underground_belt_exit-tier2.png": "sprites/buildings/underground_belt_exit-tier2.png":
{ {
"frame": {"x":786,"y":1248,"w":137,"h":111}, "frame": {"x":689,"y":1309,"w":137,"h":111},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":5,"y":0,"w":137,"h":111}, "spriteSourceSize": {"x":5,"y":0,"w":137,"h":111},
@ -930,15 +1002,55 @@
}, },
"sprites/buildings/underground_belt_exit.png": "sprites/buildings/underground_belt_exit.png":
{ {
"frame": {"x":557,"y":1301,"w":137,"h":111}, "frame": {"x":830,"y":1317,"w":137,"h":111},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":5,"y":0,"w":137,"h":111}, "spriteSourceSize": {"x":5,"y":0,"w":137,"h":111},
"sourceSize": {"w":144,"h":144} "sourceSize": {"w":144,"h":144}
}, },
"sprites/buildings/virtual_processor-analyzer.png":
{
"frame": {"x":1675,"y":732,"w":144,"h":144},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":144},
"sourceSize": {"w":144,"h":144}
},
"sprites/buildings/virtual_processor-rotater.png":
{
"frame": {"x":438,"y":890,"w":117,"h":144},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":14,"y":0,"w":117,"h":144},
"sourceSize": {"w":144,"h":144}
},
"sprites/buildings/virtual_processor-shapecompare.png":
{
"frame": {"x":801,"y":1033,"w":143,"h":133},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":143,"h":133},
"sourceSize": {"w":144,"h":144}
},
"sprites/buildings/virtual_processor-unstacker.png":
{
"frame": {"x":3,"y":1035,"w":144,"h":143},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":1,"w":144,"h":143},
"sourceSize": {"w":144,"h":144}
},
"sprites/buildings/virtual_processor.png":
{
"frame": {"x":3,"y":1182,"w":144,"h":140},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":144,"h":140},
"sourceSize": {"w":144,"h":144}
},
"sprites/buildings/wire-cross.png": "sprites/buildings/wire-cross.png":
{ {
"frame": {"x":1249,"y":704,"w":144,"h":144}, "frame": {"x":1672,"y":880,"w":144,"h":144},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":144}, "spriteSourceSize": {"x":0,"y":0,"w":144,"h":144},
@ -946,7 +1058,7 @@
}, },
"sprites/buildings/wire-split.png": "sprites/buildings/wire-split.png":
{ {
"frame": {"x":290,"y":890,"w":144,"h":81}, "frame": {"x":1098,"y":1000,"w":144,"h":81},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":63,"w":144,"h":81}, "spriteSourceSize": {"x":0,"y":63,"w":144,"h":81},
@ -954,7 +1066,7 @@
}, },
"sprites/buildings/wire-turn.png": "sprites/buildings/wire-turn.png":
{ {
"frame": {"x":706,"y":1122,"w":81,"h":81}, "frame": {"x":1812,"y":1230,"w":81,"h":81},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":63,"y":63,"w":81,"h":81}, "spriteSourceSize": {"x":63,"y":63,"w":81,"h":81},
@ -978,7 +1090,7 @@
}, },
"sprites/buildings/wire_tunnel.png": "sprites/buildings/wire_tunnel.png":
{ {
"frame": {"x":1662,"y":1028,"w":137,"h":134}, "frame": {"x":3,"y":1558,"w":137,"h":134},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":5,"y":5,"w":137,"h":134}, "spriteSourceSize": {"x":5,"y":5,"w":137,"h":134},
@ -1034,7 +1146,7 @@
}, },
"sprites/misc/waypoint.png": "sprites/misc/waypoint.png":
{ {
"frame": {"x":48,"y":1977,"w":38,"h":48}, "frame": {"x":1987,"y":1656,"w":38,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":5,"y":0,"w":38,"h":48}, "spriteSourceSize": {"x":5,"y":0,"w":38,"h":48},
@ -1106,7 +1218,7 @@
}, },
"sprites/wires/display/yellow.png": "sprites/wires/display/yellow.png":
{ {
"frame": {"x":90,"y":1977,"w":47,"h":47}, "frame": {"x":1793,"y":1570,"w":47,"h":47},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":1,"y":1,"w":47,"h":47}, "spriteSourceSize": {"x":1,"y":1,"w":47,"h":47},
@ -1114,10 +1226,10 @@
}, },
"sprites/wires/lever_on.png": "sprites/wires/lever_on.png":
{ {
"frame": {"x":1936,"y":890,"w":109,"h":114}, "frame": {"x":1936,"y":890,"w":109,"h":127},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":18,"y":18,"w":109,"h":114}, "spriteSourceSize": {"x":18,"y":5,"w":109,"h":127},
"sourceSize": {"w":144,"h":144} "sourceSize": {"w":144,"h":144}
}, },
"sprites/wires/logical_acceptor.png": "sprites/wires/logical_acceptor.png":
@ -1138,7 +1250,7 @@
}, },
"sprites/wires/network_conflict.png": "sprites/wires/network_conflict.png":
{ {
"frame": {"x":271,"y":1810,"w":47,"h":44}, "frame": {"x":1793,"y":1621,"w":47,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":1,"y":2,"w":47,"h":44}, "spriteSourceSize": {"x":1,"y":2,"w":47,"h":44},
@ -1146,7 +1258,7 @@
}, },
"sprites/wires/network_empty.png": "sprites/wires/network_empty.png":
{ {
"frame": {"x":3,"y":1977,"w":41,"h":48}, "frame": {"x":1987,"y":1604,"w":41,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":5,"y":0,"w":41,"h":48}, "spriteSourceSize": {"x":5,"y":0,"w":41,"h":48},
@ -1162,7 +1274,7 @@
}, },
"sprites/wires/sets/color_cross.png": "sprites/wires/sets/color_cross.png":
{ {
"frame": {"x":1397,"y":704,"w":144,"h":144}, "frame": {"x":1101,"y":852,"w":144,"h":144},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":144}, "spriteSourceSize": {"x":0,"y":0,"w":144,"h":144},
@ -1178,7 +1290,7 @@
}, },
"sprites/wires/sets/color_split.png": "sprites/wires/sets/color_split.png":
{ {
"frame": {"x":290,"y":975,"w":144,"h":81}, "frame": {"x":1397,"y":1075,"w":144,"h":81},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":63,"w":144,"h":81}, "spriteSourceSize": {"x":0,"y":63,"w":144,"h":81},
@ -1186,7 +1298,7 @@
}, },
"sprites/wires/sets/color_turn.png": "sprites/wires/sets/color_turn.png":
{ {
"frame": {"x":701,"y":1207,"w":81,"h":81}, "frame": {"x":1812,"y":1315,"w":81,"h":81},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":63,"y":63,"w":81,"h":81}, "spriteSourceSize": {"x":63,"y":63,"w":81,"h":81},
@ -1194,7 +1306,7 @@
}, },
"sprites/wires/sets/conflict_cross.png": "sprites/wires/sets/conflict_cross.png":
{ {
"frame": {"x":1675,"y":732,"w":144,"h":144}, "frame": {"x":824,"y":885,"w":144,"h":144},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":144}, "spriteSourceSize": {"x":0,"y":0,"w":144,"h":144},
@ -1210,7 +1322,7 @@
}, },
"sprites/wires/sets/conflict_split.png": "sprites/wires/sets/conflict_split.png":
{ {
"frame": {"x":558,"y":1015,"w":144,"h":81}, "frame": {"x":1665,"y":1028,"w":144,"h":81},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":63,"w":144,"h":81}, "spriteSourceSize": {"x":0,"y":63,"w":144,"h":81},
@ -1218,7 +1330,7 @@
}, },
"sprites/wires/sets/conflict_turn.png": "sprites/wires/sets/conflict_turn.png":
{ {
"frame": {"x":701,"y":1292,"w":81,"h":81}, "frame": {"x":1799,"y":1400,"w":81,"h":81},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":63,"y":63,"w":81,"h":81}, "spriteSourceSize": {"x":63,"y":63,"w":81,"h":81},
@ -1226,7 +1338,7 @@
}, },
"sprites/wires/sets/regular_cross.png": "sprites/wires/sets/regular_cross.png":
{ {
"frame": {"x":1249,"y":704,"w":144,"h":144}, "frame": {"x":1672,"y":880,"w":144,"h":144},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":144}, "spriteSourceSize": {"x":0,"y":0,"w":144,"h":144},
@ -1242,7 +1354,7 @@
}, },
"sprites/wires/sets/regular_split.png": "sprites/wires/sets/regular_split.png":
{ {
"frame": {"x":290,"y":890,"w":144,"h":81}, "frame": {"x":1098,"y":1000,"w":144,"h":81},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":63,"w":144,"h":81}, "spriteSourceSize": {"x":0,"y":63,"w":144,"h":81},
@ -1250,7 +1362,7 @@
}, },
"sprites/wires/sets/regular_turn.png": "sprites/wires/sets/regular_turn.png":
{ {
"frame": {"x":706,"y":1122,"w":81,"h":81}, "frame": {"x":1812,"y":1230,"w":81,"h":81},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":63,"y":63,"w":81,"h":81}, "spriteSourceSize": {"x":63,"y":63,"w":81,"h":81},
@ -1258,7 +1370,7 @@
}, },
"sprites/wires/sets/shape_cross.png": "sprites/wires/sets/shape_cross.png":
{ {
"frame": {"x":1672,"y":880,"w":144,"h":144}, "frame": {"x":560,"y":888,"w":144,"h":144},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":144}, "spriteSourceSize": {"x":0,"y":0,"w":144,"h":144},
@ -1274,7 +1386,7 @@
}, },
"sprites/wires/sets/shape_split.png": "sprites/wires/sets/shape_split.png":
{ {
"frame": {"x":558,"y":1100,"w":144,"h":81}, "frame": {"x":1665,"y":1113,"w":144,"h":81},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":63,"w":144,"h":81}, "spriteSourceSize": {"x":0,"y":63,"w":144,"h":81},
@ -1282,7 +1394,7 @@
}, },
"sprites/wires/sets/shape_turn.png": "sprites/wires/sets/shape_turn.png":
{ {
"frame": {"x":698,"y":1377,"w":81,"h":81}, "frame": {"x":1799,"y":1485,"w":81,"h":81},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":63,"y":63,"w":81,"h":81}, "spriteSourceSize": {"x":63,"y":63,"w":81,"h":81},
@ -1303,6 +1415,6 @@
"format": "RGBA8888", "format": "RGBA8888",
"size": {"w":2048,"h":2048}, "size": {"w":2048,"h":2048},
"scale": "0.75", "scale": "0.75",
"smartupdate": "$TexturePacker:SmartUpdate:876f0711b44fa7bbab8d2539e9651766:ff01f850e086ef31c114b036c3a32e6d:908b89f5ca8ff73e331a35a3b14d0604$" "smartupdate": "$TexturePacker:SmartUpdate:65dccccf359b3f3582914eac20260366:f9eee0054558f8bf77da34f281176a03:908b89f5ca8ff73e331a35a3b14d0604$"
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@ -2,7 +2,7 @@
"sprites/belt/built/forward_0.png": "sprites/belt/built/forward_0.png":
{ {
"frame": {"x":415,"y":463,"w":40,"h":48}, "frame": {"x":98,"y":963,"w":40,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -10,7 +10,7 @@
}, },
"sprites/belt/built/forward_1.png": "sprites/belt/built/forward_1.png":
{ {
"frame": {"x":195,"y":828,"w":40,"h":48}, "frame": {"x":399,"y":759,"w":40,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -18,7 +18,7 @@
}, },
"sprites/belt/built/forward_2.png": "sprites/belt/built/forward_2.png":
{ {
"frame": {"x":3,"y":959,"w":40,"h":48}, "frame": {"x":142,"y":940,"w":40,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -26,7 +26,7 @@
}, },
"sprites/belt/built/forward_3.png": "sprites/belt/built/forward_3.png":
{ {
"frame": {"x":448,"y":705,"w":40,"h":48}, "frame": {"x":186,"y":962,"w":40,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -34,7 +34,7 @@
}, },
"sprites/belt/built/forward_4.png": "sprites/belt/built/forward_4.png":
{ {
"frame": {"x":394,"y":752,"w":40,"h":48}, "frame": {"x":230,"y":962,"w":40,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -42,7 +42,7 @@
}, },
"sprites/belt/built/forward_5.png": "sprites/belt/built/forward_5.png":
{ {
"frame": {"x":342,"y":762,"w":40,"h":48}, "frame": {"x":443,"y":765,"w":40,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -50,7 +50,7 @@
}, },
"sprites/belt/built/forward_6.png": "sprites/belt/built/forward_6.png":
{ {
"frame": {"x":289,"y":795,"w":40,"h":48}, "frame": {"x":389,"y":811,"w":40,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -58,7 +58,7 @@
}, },
"sprites/belt/built/forward_7.png": "sprites/belt/built/forward_7.png":
{ {
"frame": {"x":239,"y":836,"w":40,"h":48}, "frame": {"x":338,"y":858,"w":40,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -66,7 +66,7 @@
}, },
"sprites/belt/built/forward_8.png": "sprites/belt/built/forward_8.png":
{ {
"frame": {"x":191,"y":880,"w":40,"h":48}, "frame": {"x":287,"y":904,"w":40,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -74,7 +74,7 @@
}, },
"sprites/belt/built/forward_9.png": "sprites/belt/built/forward_9.png":
{ {
"frame": {"x":143,"y":883,"w":40,"h":48}, "frame": {"x":274,"y":956,"w":40,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -82,7 +82,7 @@
}, },
"sprites/belt/built/forward_10.png": "sprites/belt/built/forward_10.png":
{ {
"frame": {"x":147,"y":831,"w":40,"h":48}, "frame": {"x":345,"y":806,"w":40,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -90,7 +90,7 @@
}, },
"sprites/belt/built/forward_11.png": "sprites/belt/built/forward_11.png":
{ {
"frame": {"x":99,"y":862,"w":40,"h":48}, "frame": {"x":294,"y":852,"w":40,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -98,7 +98,7 @@
}, },
"sprites/belt/built/forward_12.png": "sprites/belt/built/forward_12.png":
{ {
"frame": {"x":51,"y":870,"w":40,"h":48}, "frame": {"x":243,"y":890,"w":40,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -106,7 +106,7 @@
}, },
"sprites/belt/built/forward_13.png": "sprites/belt/built/forward_13.png":
{ {
"frame": {"x":3,"y":907,"w":40,"h":48}, "frame": {"x":195,"y":910,"w":40,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -114,7 +114,7 @@
}, },
"sprites/belt/built/left_0.png": "sprites/belt/built/left_0.png":
{ {
"frame": {"x":3,"y":667,"w":44,"h":44}, "frame": {"x":105,"y":730,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -122,7 +122,7 @@
}, },
"sprites/belt/built/left_1.png": "sprites/belt/built/left_1.png":
{ {
"frame": {"x":208,"y":636,"w":44,"h":44}, "frame": {"x":54,"y":771,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -130,7 +130,7 @@
}, },
"sprites/belt/built/left_2.png": "sprites/belt/built/left_2.png":
{ {
"frame": {"x":256,"y":640,"w":44,"h":44}, "frame": {"x":102,"y":778,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -138,7 +138,7 @@
}, },
"sprites/belt/built/left_3.png": "sprites/belt/built/left_3.png":
{ {
"frame": {"x":202,"y":684,"w":44,"h":44}, "frame": {"x":51,"y":819,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -146,7 +146,7 @@
}, },
"sprites/belt/built/left_4.png": "sprites/belt/built/left_4.png":
{ {
"frame": {"x":150,"y":687,"w":44,"h":44}, "frame": {"x":3,"y":851,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -154,7 +154,7 @@
}, },
"sprites/belt/built/left_5.png": "sprites/belt/built/left_5.png":
{ {
"frame": {"x":99,"y":718,"w":44,"h":44}, "frame": {"x":255,"y":746,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -162,7 +162,7 @@
}, },
"sprites/belt/built/left_6.png": "sprites/belt/built/left_6.png":
{ {
"frame": {"x":51,"y":726,"w":44,"h":44}, "frame": {"x":201,"y":766,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -170,7 +170,7 @@
}, },
"sprites/belt/built/left_7.png": "sprites/belt/built/left_7.png":
{ {
"frame": {"x":3,"y":763,"w":44,"h":44}, "frame": {"x":150,"y":796,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -178,7 +178,7 @@
}, },
"sprites/belt/built/left_8.png": "sprites/belt/built/left_8.png":
{ {
"frame": {"x":304,"y":651,"w":44,"h":44}, "frame": {"x":99,"y":826,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -186,7 +186,7 @@
}, },
"sprites/belt/built/left_9.png": "sprites/belt/built/left_9.png":
{ {
"frame": {"x":250,"y":688,"w":44,"h":44}, "frame": {"x":51,"y":867,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -194,7 +194,7 @@
}, },
"sprites/belt/built/left_10.png": "sprites/belt/built/left_10.png":
{ {
"frame": {"x":154,"y":639,"w":44,"h":44}, "frame": {"x":3,"y":803,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -202,7 +202,7 @@
}, },
"sprites/belt/built/left_11.png": "sprites/belt/built/left_11.png":
{ {
"frame": {"x":102,"y":670,"w":44,"h":44}, "frame": {"x":207,"y":718,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -210,7 +210,7 @@
}, },
"sprites/belt/built/left_12.png": "sprites/belt/built/left_12.png":
{ {
"frame": {"x":51,"y":678,"w":44,"h":44}, "frame": {"x":310,"y":708,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -218,7 +218,7 @@
}, },
"sprites/belt/built/left_13.png": "sprites/belt/built/left_13.png":
{ {
"frame": {"x":3,"y":715,"w":44,"h":44}, "frame": {"x":153,"y":748,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -226,7 +226,7 @@
}, },
"sprites/belt/built/right_0.png": "sprites/belt/built/right_0.png":
{ {
"frame": {"x":198,"y":732,"w":44,"h":44}, "frame": {"x":3,"y":899,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -234,7 +234,7 @@
}, },
"sprites/belt/built/right_1.png": "sprites/belt/built/right_1.png":
{ {
"frame": {"x":147,"y":735,"w":44,"h":44}, "frame": {"x":358,"y":710,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -242,7 +242,7 @@
}, },
"sprites/belt/built/right_2.png": "sprites/belt/built/right_2.png":
{ {
"frame": {"x":298,"y":699,"w":44,"h":44}, "frame": {"x":99,"y":874,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -250,7 +250,7 @@
}, },
"sprites/belt/built/right_3.png": "sprites/belt/built/right_3.png":
{ {
"frame": {"x":246,"y":736,"w":44,"h":44}, "frame": {"x":51,"y":915,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -258,7 +258,7 @@
}, },
"sprites/belt/built/right_4.png": "sprites/belt/built/right_4.png":
{ {
"frame": {"x":195,"y":780,"w":44,"h":44}, "frame": {"x":3,"y":947,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -266,7 +266,7 @@
}, },
"sprites/belt/built/right_5.png": "sprites/belt/built/right_5.png":
{ {
"frame": {"x":147,"y":783,"w":44,"h":44}, "frame": {"x":406,"y":711,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -274,7 +274,7 @@
}, },
"sprites/belt/built/right_6.png": "sprites/belt/built/right_6.png":
{ {
"frame": {"x":99,"y":814,"w":44,"h":44}, "frame": {"x":351,"y":758,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -282,7 +282,7 @@
}, },
"sprites/belt/built/right_7.png": "sprites/belt/built/right_7.png":
{ {
"frame": {"x":51,"y":822,"w":44,"h":44}, "frame": {"x":297,"y":804,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -290,7 +290,7 @@
}, },
"sprites/belt/built/right_8.png": "sprites/belt/built/right_8.png":
{ {
"frame": {"x":3,"y":859,"w":44,"h":44}, "frame": {"x":246,"y":842,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -298,7 +298,7 @@
}, },
"sprites/belt/built/right_9.png": "sprites/belt/built/right_9.png":
{ {
"frame": {"x":400,"y":704,"w":44,"h":44}, "frame": {"x":195,"y":862,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -306,7 +306,7 @@
}, },
"sprites/belt/built/right_10.png": "sprites/belt/built/right_10.png":
{ {
"frame": {"x":99,"y":766,"w":44,"h":44}, "frame": {"x":303,"y":756,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -314,7 +314,7 @@
}, },
"sprites/belt/built/right_11.png": "sprites/belt/built/right_11.png":
{ {
"frame": {"x":51,"y":774,"w":44,"h":44}, "frame": {"x":249,"y":794,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -322,7 +322,7 @@
}, },
"sprites/belt/built/right_12.png": "sprites/belt/built/right_12.png":
{ {
"frame": {"x":3,"y":811,"w":44,"h":44}, "frame": {"x":198,"y":814,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -330,7 +330,7 @@
}, },
"sprites/belt/built/right_13.png": "sprites/belt/built/right_13.png":
{ {
"frame": {"x":352,"y":666,"w":44,"h":44}, "frame": {"x":147,"y":844,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -338,7 +338,7 @@
}, },
"sprites/blueprints/belt_left.png": "sprites/blueprints/belt_left.png":
{ {
"frame": {"x":346,"y":714,"w":44,"h":44}, "frame": {"x":147,"y":892,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -346,7 +346,7 @@
}, },
"sprites/blueprints/belt_right.png": "sprites/blueprints/belt_right.png":
{ {
"frame": {"x":294,"y":747,"w":44,"h":44}, "frame": {"x":454,"y":717,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -354,7 +354,7 @@
}, },
"sprites/blueprints/belt_top.png": "sprites/blueprints/belt_top.png":
{ {
"frame": {"x":95,"y":914,"w":40,"h":48}, "frame": {"x":318,"y":956,"w":40,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -386,7 +386,7 @@
}, },
"sprites/blueprints/display.png": "sprites/blueprints/display.png":
{ {
"frame": {"x":106,"y":620,"w":44,"h":46}, "frame": {"x":211,"y":567,"w":44,"h":46},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":2,"y":2,"w":44,"h":46}, "spriteSourceSize": {"x":2,"y":2,"w":44,"h":46},
@ -402,15 +402,15 @@
}, },
"sprites/blueprints/lever.png": "sprites/blueprints/lever.png":
{ {
"frame": {"x":470,"y":257,"w":38,"h":40}, "frame": {"x":470,"y":257,"w":38,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":5,"y":5,"w":38,"h":40}, "spriteSourceSize": {"x":5,"y":1,"w":38,"h":44},
"sourceSize": {"w":48,"h":48} "sourceSize": {"w":48,"h":48}
}, },
"sprites/blueprints/logic_gate-not.png": "sprites/blueprints/logic_gate-not.png":
{ {
"frame": {"x":243,"y":784,"w":42,"h":48}, "frame": {"x":321,"y":509,"w":42,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":42,"h":48}, "spriteSourceSize": {"x":3,"y":0,"w":42,"h":48},
@ -418,7 +418,7 @@
}, },
"sprites/blueprints/logic_gate-or.png": "sprites/blueprints/logic_gate-or.png":
{ {
"frame": {"x":55,"y":500,"w":48,"h":42}, "frame": {"x":311,"y":662,"w":48,"h":42},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":42}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":42},
@ -442,7 +442,7 @@
}, },
"sprites/blueprints/logic_gate.png": "sprites/blueprints/logic_gate.png":
{ {
"frame": {"x":384,"y":566,"w":48,"h":45}, "frame": {"x":311,"y":613,"w":48,"h":45},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":45}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":45},
@ -450,7 +450,7 @@
}, },
"sprites/blueprints/miner-chainable.png": "sprites/blueprints/miner-chainable.png":
{ {
"frame": {"x":462,"y":345,"w":47,"h":48}, "frame": {"x":462,"y":353,"w":47,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":48}, "spriteSourceSize": {"x":1,"y":0,"w":47,"h":48},
@ -458,7 +458,7 @@
}, },
"sprites/blueprints/miner.png": "sprites/blueprints/miner.png":
{ {
"frame": {"x":211,"y":584,"w":47,"h":48}, "frame": {"x":55,"y":626,"w":47,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":48}, "spriteSourceSize": {"x":1,"y":0,"w":47,"h":48},
@ -522,7 +522,7 @@
}, },
"sprites/blueprints/rotater.png": "sprites/blueprints/rotater.png":
{ {
"frame": {"x":460,"y":397,"w":48,"h":48}, "frame": {"x":460,"y":405,"w":48,"h":48},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
@ -536,9 +536,25 @@
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
"sourceSize": {"w":48,"h":48} "sourceSize": {"w":48,"h":48}
}, },
"sprites/blueprints/splitter-compact-merge-inverse.png":
{
"frame": {"x":277,"y":390,"w":48,"h":48},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
"sourceSize": {"w":48,"h":48}
},
"sprites/blueprints/splitter-compact-merge.png":
{
"frame": {"x":54,"y":678,"w":47,"h":47},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":47},
"sourceSize": {"w":48,"h":48}
},
"sprites/blueprints/splitter-compact.png": "sprites/blueprints/splitter-compact.png":
{ {
"frame": {"x":364,"y":615,"w":47,"h":47}, "frame": {"x":3,"y":710,"w":47,"h":47},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":47}, "spriteSourceSize": {"x":1,"y":0,"w":47,"h":47},
@ -570,7 +586,7 @@
}, },
"sprites/blueprints/trash.png": "sprites/blueprints/trash.png":
{ {
"frame": {"x":277,"y":390,"w":48,"h":48}, "frame": {"x":183,"y":419,"w":48,"h":48},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
@ -578,7 +594,7 @@
}, },
"sprites/blueprints/underground_belt_entry-tier2.png": "sprites/blueprints/underground_belt_entry-tier2.png":
{ {
"frame": {"x":3,"y":500,"w":48,"h":43}, "frame": {"x":259,"y":649,"w":48,"h":43},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":5,"w":48,"h":43}, "spriteSourceSize": {"x":0,"y":5,"w":48,"h":43},
@ -586,7 +602,7 @@
}, },
"sprites/blueprints/underground_belt_entry.png": "sprites/blueprints/underground_belt_entry.png":
{ {
"frame": {"x":159,"y":523,"w":48,"h":38}, "frame": {"x":363,"y":668,"w":48,"h":38},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":10,"w":48,"h":38}, "spriteSourceSize": {"x":0,"y":10,"w":48,"h":38},
@ -594,7 +610,7 @@
}, },
"sprites/blueprints/underground_belt_exit-tier2.png": "sprites/blueprints/underground_belt_exit-tier2.png":
{ {
"frame": {"x":211,"y":542,"w":48,"h":38}, "frame": {"x":3,"y":552,"w":48,"h":38},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":38}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":38},
@ -602,15 +618,55 @@
}, },
"sprites/blueprints/underground_belt_exit.png": "sprites/blueprints/underground_belt_exit.png":
{ {
"frame": {"x":263,"y":546,"w":48,"h":38}, "frame": {"x":55,"y":552,"w":48,"h":38},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":38}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":38},
"sourceSize": {"w":48,"h":48} "sourceSize": {"w":48,"h":48}
}, },
"sprites/blueprints/virtual_processor-analyzer.png":
{
"frame": {"x":92,"y":448,"w":48,"h":48},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
"sourceSize": {"w":48,"h":48}
},
"sprites/blueprints/virtual_processor-rotater.png":
{
"frame": {"x":467,"y":613,"w":41,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":41,"h":48},
"sourceSize": {"w":48,"h":48}
},
"sprites/blueprints/virtual_processor-shapecompare.png":
{
"frame": {"x":363,"y":619,"w":48,"h":45},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":45},
"sourceSize": {"w":48,"h":48}
},
"sprites/blueprints/virtual_processor-unstacker.png":
{
"frame": {"x":369,"y":411,"w":48,"h":48},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
"sourceSize": {"w":48,"h":48}
},
"sprites/blueprints/virtual_processor.png":
{
"frame": {"x":460,"y":457,"w":48,"h":48},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
"sourceSize": {"w":48,"h":48}
},
"sprites/blueprints/wire-cross.png": "sprites/blueprints/wire-cross.png":
{ {
"frame": {"x":183,"y":419,"w":48,"h":48}, "frame": {"x":275,"y":442,"w":48,"h":48},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
@ -618,7 +674,7 @@
}, },
"sprites/blueprints/wire-split.png": "sprites/blueprints/wire-split.png":
{ {
"frame": {"x":315,"y":567,"w":48,"h":28}, "frame": {"x":3,"y":594,"w":48,"h":28},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":20,"w":48,"h":28}, "spriteSourceSize": {"x":0,"y":20,"w":48,"h":28},
@ -642,7 +698,7 @@
}, },
"sprites/blueprints/wire_tunnel-coating.png": "sprites/blueprints/wire_tunnel-coating.png":
{ {
"frame": {"x":235,"y":458,"w":13,"h":47}, "frame": {"x":235,"y":462,"w":13,"h":47},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":17,"y":0,"w":13,"h":47}, "spriteSourceSize": {"x":17,"y":0,"w":13,"h":47},
@ -650,7 +706,7 @@
}, },
"sprites/blueprints/wire_tunnel.png": "sprites/blueprints/wire_tunnel.png":
{ {
"frame": {"x":384,"y":515,"w":48,"h":47}, "frame": {"x":107,"y":500,"w":48,"h":47},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":47}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":47},
@ -658,7 +714,7 @@
}, },
"sprites/buildings/belt_left.png": "sprites/buildings/belt_left.png":
{ {
"frame": {"x":3,"y":667,"w":44,"h":44}, "frame": {"x":105,"y":730,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -666,7 +722,7 @@
}, },
"sprites/buildings/belt_right.png": "sprites/buildings/belt_right.png":
{ {
"frame": {"x":198,"y":732,"w":44,"h":44}, "frame": {"x":3,"y":899,"w":44,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -674,7 +730,7 @@
}, },
"sprites/buildings/belt_top.png": "sprites/buildings/belt_top.png":
{ {
"frame": {"x":415,"y":463,"w":40,"h":48}, "frame": {"x":98,"y":963,"w":40,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -682,7 +738,7 @@
}, },
"sprites/buildings/constant_signal.png": "sprites/buildings/constant_signal.png":
{ {
"frame": {"x":235,"y":411,"w":36,"h":43}, "frame": {"x":235,"y":415,"w":36,"h":43},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":6,"y":0,"w":36,"h":43}, "spriteSourceSize": {"x":6,"y":0,"w":36,"h":43},
@ -706,7 +762,7 @@
}, },
"sprites/buildings/display.png": "sprites/buildings/display.png":
{ {
"frame": {"x":54,"y":628,"w":44,"h":46}, "frame": {"x":211,"y":617,"w":44,"h":46},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":2,"y":2,"w":44,"h":46}, "spriteSourceSize": {"x":2,"y":2,"w":44,"h":46},
@ -730,15 +786,15 @@
}, },
"sprites/buildings/lever.png": "sprites/buildings/lever.png":
{ {
"frame": {"x":470,"y":301,"w":38,"h":40}, "frame": {"x":470,"y":305,"w":38,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":5,"y":5,"w":38,"h":40}, "spriteSourceSize": {"x":5,"y":1,"w":38,"h":44},
"sourceSize": {"w":48,"h":48} "sourceSize": {"w":48,"h":48}
}, },
"sprites/buildings/logic_gate-not.png": "sprites/buildings/logic_gate-not.png":
{ {
"frame": {"x":466,"y":653,"w":43,"h":48}, "frame": {"x":51,"y":963,"w":43,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":43,"h":48}, "spriteSourceSize": {"x":3,"y":0,"w":43,"h":48},
@ -746,7 +802,7 @@
}, },
"sprites/buildings/logic_gate-or.png": "sprites/buildings/logic_gate-or.png":
{ {
"frame": {"x":107,"y":500,"w":48,"h":42}, "frame": {"x":415,"y":665,"w":48,"h":42},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":42}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":42},
@ -762,7 +818,7 @@
}, },
"sprites/buildings/logic_gate-xor.png": "sprites/buildings/logic_gate-xor.png":
{ {
"frame": {"x":92,"y":448,"w":48,"h":48}, "frame": {"x":183,"y":471,"w":48,"h":48},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
@ -770,7 +826,7 @@
}, },
"sprites/buildings/logic_gate.png": "sprites/buildings/logic_gate.png":
{ {
"frame": {"x":436,"y":604,"w":48,"h":45}, "frame": {"x":107,"y":551,"w":48,"h":45},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":45}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":45},
@ -778,7 +834,7 @@
}, },
"sprites/buildings/miner-chainable.png": "sprites/buildings/miner-chainable.png":
{ {
"frame": {"x":262,"y":588,"w":47,"h":48}, "frame": {"x":3,"y":658,"w":47,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":48}, "spriteSourceSize": {"x":1,"y":0,"w":47,"h":48},
@ -786,7 +842,7 @@
}, },
"sprites/buildings/miner.png": "sprites/buildings/miner.png":
{ {
"frame": {"x":313,"y":599,"w":47,"h":48}, "frame": {"x":106,"y":632,"w":47,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":48}, "spriteSourceSize": {"x":1,"y":0,"w":47,"h":48},
@ -834,7 +890,7 @@
}, },
"sprites/buildings/rotater-ccw.png": "sprites/buildings/rotater-ccw.png":
{ {
"frame": {"x":369,"y":411,"w":48,"h":48}, "frame": {"x":269,"y":494,"w":48,"h":48},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
@ -842,7 +898,7 @@
}, },
"sprites/buildings/rotater-fl.png": "sprites/buildings/rotater-fl.png":
{ {
"frame": {"x":460,"y":449,"w":48,"h":48}, "frame": {"x":367,"y":463,"w":48,"h":48},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
@ -850,7 +906,7 @@
}, },
"sprites/buildings/rotater.png": "sprites/buildings/rotater.png":
{ {
"frame": {"x":275,"y":442,"w":48,"h":48}, "frame": {"x":259,"y":546,"w":48,"h":48},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
@ -858,15 +914,31 @@
}, },
"sprites/buildings/splitter-compact-inverse.png": "sprites/buildings/splitter-compact-inverse.png":
{ {
"frame": {"x":436,"y":553,"w":48,"h":47}, "frame": {"x":159,"y":523,"w":48,"h":47},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":47}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":47},
"sourceSize": {"w":48,"h":48} "sourceSize": {"w":48,"h":48}
}, },
"sprites/buildings/splitter-compact-merge-inverse.png":
{
"frame": {"x":259,"y":598,"w":48,"h":47},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":47},
"sourceSize": {"w":48,"h":48}
},
"sprites/buildings/splitter-compact-merge.png":
{
"frame": {"x":157,"y":655,"w":47,"h":47},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":47},
"sourceSize": {"w":48,"h":48}
},
"sprites/buildings/splitter-compact.png": "sprites/buildings/splitter-compact.png":
{ {
"frame": {"x":415,"y":653,"w":47,"h":47}, "frame": {"x":208,"y":667,"w":47,"h":47},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":47}, "spriteSourceSize": {"x":1,"y":0,"w":47,"h":47},
@ -898,7 +970,7 @@
}, },
"sprites/buildings/trash.png": "sprites/buildings/trash.png":
{ {
"frame": {"x":183,"y":471,"w":48,"h":48}, "frame": {"x":419,"y":509,"w":48,"h":48},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
@ -906,7 +978,7 @@
}, },
"sprites/buildings/underground_belt_entry-tier2.png": "sprites/buildings/underground_belt_entry-tier2.png":
{ {
"frame": {"x":3,"y":579,"w":47,"h":42}, "frame": {"x":105,"y":684,"w":47,"h":42},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":1,"y":6,"w":47,"h":42}, "spriteSourceSize": {"x":1,"y":6,"w":47,"h":42},
@ -914,7 +986,7 @@
}, },
"sprites/buildings/underground_belt_entry.png": "sprites/buildings/underground_belt_entry.png":
{ {
"frame": {"x":3,"y":625,"w":47,"h":38}, "frame": {"x":54,"y":729,"w":47,"h":38},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":1,"y":10,"w":47,"h":38}, "spriteSourceSize": {"x":1,"y":10,"w":47,"h":38},
@ -922,7 +994,7 @@
}, },
"sprites/buildings/underground_belt_exit-tier2.png": "sprites/buildings/underground_belt_exit-tier2.png":
{ {
"frame": {"x":106,"y":578,"w":47,"h":38}, "frame": {"x":3,"y":761,"w":47,"h":38},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":38}, "spriteSourceSize": {"x":1,"y":0,"w":47,"h":38},
@ -930,15 +1002,55 @@
}, },
"sprites/buildings/underground_belt_exit.png": "sprites/buildings/underground_belt_exit.png":
{ {
"frame": {"x":157,"y":597,"w":47,"h":38}, "frame": {"x":156,"y":706,"w":47,"h":38},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":38}, "spriteSourceSize": {"x":1,"y":0,"w":47,"h":38},
"sourceSize": {"w":48,"h":48} "sourceSize": {"w":48,"h":48}
}, },
"sprites/buildings/virtual_processor-analyzer.png":
{
"frame": {"x":367,"y":515,"w":48,"h":48},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
"sourceSize": {"w":48,"h":48}
},
"sprites/buildings/virtual_processor-rotater.png":
{
"frame": {"x":467,"y":665,"w":41,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":41,"h":48},
"sourceSize": {"w":48,"h":48}
},
"sprites/buildings/virtual_processor-shapecompare.png":
{
"frame": {"x":159,"y":574,"w":48,"h":45},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":45},
"sourceSize": {"w":48,"h":48}
},
"sprites/buildings/virtual_processor-unstacker.png":
{
"frame": {"x":311,"y":561,"w":48,"h":48},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
"sourceSize": {"w":48,"h":48}
},
"sprites/buildings/virtual_processor.png":
{
"frame": {"x":419,"y":561,"w":48,"h":48},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
"sourceSize": {"w":48,"h":48}
},
"sprites/buildings/wire-cross.png": "sprites/buildings/wire-cross.png":
{ {
"frame": {"x":268,"y":494,"w":48,"h":48}, "frame": {"x":363,"y":567,"w":48,"h":48},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
@ -946,7 +1058,7 @@
}, },
"sprites/buildings/wire-split.png": "sprites/buildings/wire-split.png":
{ {
"frame": {"x":55,"y":546,"w":48,"h":28}, "frame": {"x":55,"y":594,"w":48,"h":28},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":20,"w":48,"h":28}, "spriteSourceSize": {"x":0,"y":20,"w":48,"h":28},
@ -962,7 +1074,7 @@
}, },
"sprites/buildings/wire.png": "sprites/buildings/wire.png":
{ {
"frame": {"x":327,"y":457,"w":8,"h":48}, "frame": {"x":235,"y":513,"w":8,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":20,"y":0,"w":8,"h":48}, "spriteSourceSize": {"x":20,"y":0,"w":8,"h":48},
@ -970,7 +1082,7 @@
}, },
"sprites/buildings/wire_tunnel-coating.png": "sprites/buildings/wire_tunnel-coating.png":
{ {
"frame": {"x":252,"y":492,"w":12,"h":46}, "frame": {"x":327,"y":457,"w":12,"h":46},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":18,"y":1,"w":12,"h":46}, "spriteSourceSize": {"x":18,"y":1,"w":12,"h":46},
@ -978,7 +1090,7 @@
}, },
"sprites/buildings/wire_tunnel.png": "sprites/buildings/wire_tunnel.png":
{ {
"frame": {"x":55,"y":578,"w":47,"h":46}, "frame": {"x":259,"y":696,"w":47,"h":46},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":1,"y":1,"w":47,"h":46}, "spriteSourceSize": {"x":1,"y":1,"w":47,"h":46},
@ -1010,7 +1122,7 @@
}, },
"sprites/misc/slot_bad_arrow.png": "sprites/misc/slot_bad_arrow.png":
{ {
"frame": {"x":252,"y":458,"w":13,"h":13}, "frame": {"x":252,"y":462,"w":13,"h":13},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13}, "spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -1018,7 +1130,7 @@
}, },
"sprites/misc/slot_good_arrow.png": "sprites/misc/slot_good_arrow.png":
{ {
"frame": {"x":252,"y":475,"w":13,"h":13}, "frame": {"x":252,"y":479,"w":13,"h":13},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13}, "spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -1042,7 +1154,7 @@
}, },
"sprites/wires/boolean_false.png": "sprites/wires/boolean_false.png":
{ {
"frame": {"x":235,"y":509,"w":12,"h":15}, "frame": {"x":252,"y":496,"w":12,"h":15},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":2,"y":1,"w":12,"h":15}, "spriteSourceSize": {"x":2,"y":1,"w":12,"h":15},
@ -1114,10 +1226,10 @@
}, },
"sprites/wires/lever_on.png": "sprites/wires/lever_on.png":
{ {
"frame": {"x":235,"y":367,"w":38,"h":40}, "frame": {"x":235,"y":367,"w":38,"h":44},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":5,"y":5,"w":38,"h":40}, "spriteSourceSize": {"x":5,"y":1,"w":38,"h":44},
"sourceSize": {"w":48,"h":48} "sourceSize": {"w":48,"h":48}
}, },
"sprites/wires/logical_acceptor.png": "sprites/wires/logical_acceptor.png":
@ -1162,7 +1274,7 @@
}, },
"sprites/wires/sets/color_cross.png": "sprites/wires/sets/color_cross.png":
{ {
"frame": {"x":363,"y":463,"w":48,"h":48}, "frame": {"x":415,"y":613,"w":48,"h":48},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
@ -1170,7 +1282,7 @@
}, },
"sprites/wires/sets/color_forward.png": "sprites/wires/sets/color_forward.png":
{ {
"frame": {"x":339,"y":457,"w":8,"h":48}, "frame": {"x":247,"y":515,"w":8,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":20,"y":0,"w":8,"h":48}, "spriteSourceSize": {"x":20,"y":0,"w":8,"h":48},
@ -1178,7 +1290,7 @@
}, },
"sprites/wires/sets/color_split.png": "sprites/wires/sets/color_split.png":
{ {
"frame": {"x":3,"y":547,"w":48,"h":28}, "frame": {"x":107,"y":600,"w":48,"h":28},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":20,"w":48,"h":28}, "spriteSourceSize": {"x":0,"y":20,"w":48,"h":28},
@ -1194,7 +1306,7 @@
}, },
"sprites/wires/sets/conflict_cross.png": "sprites/wires/sets/conflict_cross.png":
{ {
"frame": {"x":459,"y":501,"w":48,"h":48}, "frame": {"x":3,"y":500,"w":48,"h":48},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
@ -1202,7 +1314,7 @@
}, },
"sprites/wires/sets/conflict_forward.png": "sprites/wires/sets/conflict_forward.png":
{ {
"frame": {"x":351,"y":457,"w":8,"h":48}, "frame": {"x":343,"y":457,"w":8,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":20,"y":0,"w":8,"h":48}, "spriteSourceSize": {"x":20,"y":0,"w":8,"h":48},
@ -1210,7 +1322,7 @@
}, },
"sprites/wires/sets/conflict_split.png": "sprites/wires/sets/conflict_split.png":
{ {
"frame": {"x":107,"y":546,"w":48,"h":28}, "frame": {"x":159,"y":623,"w":48,"h":28},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":20,"w":48,"h":28}, "spriteSourceSize": {"x":0,"y":20,"w":48,"h":28},
@ -1226,7 +1338,7 @@
}, },
"sprites/wires/sets/regular_cross.png": "sprites/wires/sets/regular_cross.png":
{ {
"frame": {"x":268,"y":494,"w":48,"h":48}, "frame": {"x":363,"y":567,"w":48,"h":48},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
@ -1234,7 +1346,7 @@
}, },
"sprites/wires/sets/regular_forward.png": "sprites/wires/sets/regular_forward.png":
{ {
"frame": {"x":327,"y":457,"w":8,"h":48}, "frame": {"x":235,"y":513,"w":8,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":20,"y":0,"w":8,"h":48}, "spriteSourceSize": {"x":20,"y":0,"w":8,"h":48},
@ -1242,7 +1354,7 @@
}, },
"sprites/wires/sets/regular_split.png": "sprites/wires/sets/regular_split.png":
{ {
"frame": {"x":55,"y":546,"w":48,"h":28}, "frame": {"x":55,"y":594,"w":48,"h":28},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":20,"w":48,"h":28}, "spriteSourceSize": {"x":0,"y":20,"w":48,"h":28},
@ -1258,7 +1370,7 @@
}, },
"sprites/wires/sets/shape_cross.png": "sprites/wires/sets/shape_cross.png":
{ {
"frame": {"x":332,"y":515,"w":48,"h":48}, "frame": {"x":55,"y":500,"w":48,"h":48},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
@ -1266,7 +1378,7 @@
}, },
"sprites/wires/sets/shape_forward.png": "sprites/wires/sets/shape_forward.png":
{ {
"frame": {"x":320,"y":509,"w":8,"h":48}, "frame": {"x":355,"y":457,"w":8,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":20,"y":0,"w":8,"h":48}, "spriteSourceSize": {"x":20,"y":0,"w":8,"h":48},
@ -1274,7 +1386,7 @@
}, },
"sprites/wires/sets/shape_split.png": "sprites/wires/sets/shape_split.png":
{ {
"frame": {"x":159,"y":565,"w":48,"h":28}, "frame": {"x":3,"y":626,"w":48,"h":28},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":20,"w":48,"h":28}, "spriteSourceSize": {"x":0,"y":20,"w":48,"h":28},
@ -1303,6 +1415,6 @@
"format": "RGBA8888", "format": "RGBA8888",
"size": {"w":512,"h":1024}, "size": {"w":512,"h":1024},
"scale": "0.25", "scale": "0.25",
"smartupdate": "$TexturePacker:SmartUpdate:876f0711b44fa7bbab8d2539e9651766:ff01f850e086ef31c114b036c3a32e6d:908b89f5ca8ff73e331a35a3b14d0604$" "smartupdate": "$TexturePacker:SmartUpdate:65dccccf359b3f3582914eac20260366:f9eee0054558f8bf77da34f281176a03:908b89f5ca8ff73e331a35a3b14d0604$"
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 KiB

After

Width:  |  Height:  |  Size: 266 KiB

View File

@ -2,7 +2,7 @@
"sprites/belt/built/forward_0.png": "sprites/belt/built/forward_0.png":
{ {
"frame": {"x":943,"y":816,"w":78,"h":96}, "frame": {"x":943,"y":842,"w":78,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -18,7 +18,7 @@
}, },
"sprites/belt/built/forward_2.png": "sprites/belt/built/forward_2.png":
{ {
"frame": {"x":850,"y":1402,"w":78,"h":96}, "frame": {"x":758,"y":1549,"w":78,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -26,7 +26,7 @@
}, },
"sprites/belt/built/forward_3.png": "sprites/belt/built/forward_3.png":
{ {
"frame": {"x":932,"y":1402,"w":78,"h":96}, "frame": {"x":658,"y":1555,"w":78,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -34,7 +34,7 @@
}, },
"sprites/belt/built/forward_4.png": "sprites/belt/built/forward_4.png":
{ {
"frame": {"x":751,"y":1431,"w":78,"h":96}, "frame": {"x":556,"y":1580,"w":78,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -42,7 +42,7 @@
}, },
"sprites/belt/built/forward_5.png": "sprites/belt/built/forward_5.png":
{ {
"frame": {"x":650,"y":1480,"w":78,"h":96}, "frame": {"x":459,"y":1617,"w":78,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -50,7 +50,7 @@
}, },
"sprites/belt/built/forward_6.png": "sprites/belt/built/forward_6.png":
{ {
"frame": {"x":551,"y":1494,"w":78,"h":96}, "frame": {"x":359,"y":1647,"w":78,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -58,7 +58,7 @@
}, },
"sprites/belt/built/forward_7.png": "sprites/belt/built/forward_7.png":
{ {
"frame": {"x":454,"y":1522,"w":78,"h":96}, "frame": {"x":268,"y":1671,"w":78,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -66,7 +66,7 @@
}, },
"sprites/belt/built/forward_8.png": "sprites/belt/built/forward_8.png":
{ {
"frame": {"x":358,"y":1553,"w":78,"h":96}, "frame": {"x":176,"y":1749,"w":78,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -74,7 +74,7 @@
}, },
"sprites/belt/built/forward_9.png": "sprites/belt/built/forward_9.png":
{ {
"frame": {"x":267,"y":1554,"w":78,"h":96}, "frame": {"x":85,"y":1821,"w":78,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -82,7 +82,7 @@
}, },
"sprites/belt/built/forward_10.png": "sprites/belt/built/forward_10.png":
{ {
"frame": {"x":276,"y":1454,"w":78,"h":96}, "frame": {"x":94,"y":1721,"w":78,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -90,7 +90,7 @@
}, },
"sprites/belt/built/forward_11.png": "sprites/belt/built/forward_11.png":
{ {
"frame": {"x":185,"y":1499,"w":78,"h":96}, "frame": {"x":3,"y":1737,"w":78,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -98,7 +98,7 @@
}, },
"sprites/belt/built/forward_12.png": "sprites/belt/built/forward_12.png":
{ {
"frame": {"x":94,"y":1514,"w":78,"h":96}, "frame": {"x":859,"y":1500,"w":78,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -106,7 +106,7 @@
}, },
"sprites/belt/built/forward_13.png": "sprites/belt/built/forward_13.png":
{ {
"frame": {"x":3,"y":1585,"w":78,"h":96}, "frame": {"x":941,"y":1500,"w":78,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -114,7 +114,7 @@
}, },
"sprites/belt/built/left_0.png": "sprites/belt/built/left_0.png":
{ {
"frame": {"x":196,"y":1135,"w":87,"h":87}, "frame": {"x":495,"y":1250,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -122,7 +122,7 @@
}, },
"sprites/belt/built/left_1.png": "sprites/belt/built/left_1.png":
{ {
"frame": {"x":99,"y":1150,"w":87,"h":87}, "frame": {"x":394,"y":1274,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -130,7 +130,7 @@
}, },
"sprites/belt/built/left_2.png": "sprites/belt/built/left_2.png":
{ {
"frame": {"x":287,"y":1181,"w":87,"h":87}, "frame": {"x":789,"y":1185,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -138,7 +138,7 @@
}, },
"sprites/belt/built/left_3.png": "sprites/belt/built/left_3.png":
{ {
"frame": {"x":190,"y":1226,"w":87,"h":87}, "frame": {"x":880,"y":1227,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -146,7 +146,7 @@
}, },
"sprites/belt/built/left_4.png": "sprites/belt/built/left_4.png":
{ {
"frame": {"x":94,"y":1241,"w":87,"h":87}, "frame": {"x":789,"y":1276,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -154,7 +154,7 @@
}, },
"sprites/belt/built/left_5.png": "sprites/belt/built/left_5.png":
{ {
"frame": {"x":3,"y":1312,"w":87,"h":87}, "frame": {"x":690,"y":1282,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -162,7 +162,7 @@
}, },
"sprites/belt/built/left_6.png": "sprites/belt/built/left_6.png":
{ {
"frame": {"x":674,"y":1207,"w":87,"h":87}, "frame": {"x":586,"y":1303,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -170,7 +170,7 @@
}, },
"sprites/belt/built/left_7.png": "sprites/belt/built/left_7.png":
{ {
"frame": {"x":577,"y":1217,"w":87,"h":87}, "frame": {"x":485,"y":1341,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -178,7 +178,7 @@
}, },
"sprites/belt/built/left_8.png": "sprites/belt/built/left_8.png":
{ {
"frame": {"x":478,"y":1246,"w":87,"h":87}, "frame": {"x":386,"y":1365,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -186,7 +186,7 @@
}, },
"sprites/belt/built/left_9.png": "sprites/belt/built/left_9.png":
{ {
"frame": {"x":378,"y":1271,"w":87,"h":87}, "frame": {"x":286,"y":1389,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -194,7 +194,7 @@
}, },
"sprites/belt/built/left_10.png": "sprites/belt/built/left_10.png":
{ {
"frame": {"x":3,"y":1221,"w":87,"h":87}, "frame": {"x":295,"y":1298,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -202,7 +202,7 @@
}, },
"sprites/belt/built/left_11.png": "sprites/belt/built/left_11.png":
{ {
"frame": {"x":583,"y":1126,"w":87,"h":87}, "frame": {"x":195,"y":1376,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -210,7 +210,7 @@
}, },
"sprites/belt/built/left_12.png": "sprites/belt/built/left_12.png":
{ {
"frame": {"x":486,"y":1155,"w":87,"h":87}, "frame": {"x":99,"y":1448,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -218,7 +218,7 @@
}, },
"sprites/belt/built/left_13.png": "sprites/belt/built/left_13.png":
{ {
"frame": {"x":387,"y":1180,"w":87,"h":87}, "frame": {"x":3,"y":1464,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -226,7 +226,7 @@
}, },
"sprites/belt/built/right_0.png": "sprites/belt/built/right_0.png":
{ {
"frame": {"x":281,"y":1272,"w":87,"h":87}, "frame": {"x":190,"y":1467,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -234,7 +234,7 @@
}, },
"sprites/belt/built/right_1.png": "sprites/belt/built/right_1.png":
{ {
"frame": {"x":185,"y":1317,"w":87,"h":87}, "frame": {"x":94,"y":1539,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -242,7 +242,7 @@
}, },
"sprites/belt/built/right_2.png": "sprites/belt/built/right_2.png":
{ {
"frame": {"x":569,"y":1308,"w":87,"h":87}, "frame": {"x":576,"y":1394,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -250,7 +250,7 @@
}, },
"sprites/belt/built/right_3.png": "sprites/belt/built/right_3.png":
{ {
"frame": {"x":469,"y":1337,"w":87,"h":87}, "frame": {"x":477,"y":1432,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -258,7 +258,7 @@
}, },
"sprites/belt/built/right_4.png": "sprites/belt/built/right_4.png":
{ {
"frame": {"x":372,"y":1362,"w":87,"h":87}, "frame": {"x":377,"y":1456,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -266,7 +266,7 @@
}, },
"sprites/belt/built/right_5.png": "sprites/belt/built/right_5.png":
{ {
"frame": {"x":276,"y":1363,"w":87,"h":87}, "frame": {"x":281,"y":1480,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -274,7 +274,7 @@
}, },
"sprites/belt/built/right_6.png": "sprites/belt/built/right_6.png":
{ {
"frame": {"x":185,"y":1408,"w":87,"h":87}, "frame": {"x":185,"y":1558,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -282,7 +282,7 @@
}, },
"sprites/belt/built/right_7.png": "sprites/belt/built/right_7.png":
{ {
"frame": {"x":94,"y":1423,"w":87,"h":87}, "frame": {"x":94,"y":1630,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -290,7 +290,7 @@
}, },
"sprites/belt/built/right_8.png": "sprites/belt/built/right_8.png":
{ {
"frame": {"x":3,"y":1494,"w":87,"h":87}, "frame": {"x":3,"y":1646,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -298,7 +298,7 @@
}, },
"sprites/belt/built/right_9.png": "sprites/belt/built/right_9.png":
{ {
"frame": {"x":856,"y":1311,"w":87,"h":87}, "frame": {"x":872,"y":1409,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -306,7 +306,7 @@
}, },
"sprites/belt/built/right_10.png": "sprites/belt/built/right_10.png":
{ {
"frame": {"x":94,"y":1332,"w":87,"h":87}, "frame": {"x":3,"y":1555,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -314,7 +314,7 @@
}, },
"sprites/belt/built/right_11.png": "sprites/belt/built/right_11.png":
{ {
"frame": {"x":3,"y":1403,"w":87,"h":87}, "frame": {"x":880,"y":1318,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -322,7 +322,7 @@
}, },
"sprites/belt/built/right_12.png": "sprites/belt/built/right_12.png":
{ {
"frame": {"x":765,"y":1249,"w":87,"h":87}, "frame": {"x":781,"y":1367,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -330,7 +330,7 @@
}, },
"sprites/belt/built/right_13.png": "sprites/belt/built/right_13.png":
{ {
"frame": {"x":668,"y":1298,"w":87,"h":87}, "frame": {"x":677,"y":1373,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -338,7 +338,7 @@
}, },
"sprites/blueprints/belt_left.png": "sprites/blueprints/belt_left.png":
{ {
"frame": {"x":759,"y":1340,"w":87,"h":87}, "frame": {"x":768,"y":1458,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -346,7 +346,7 @@
}, },
"sprites/blueprints/belt_right.png": "sprites/blueprints/belt_right.png":
{ {
"frame": {"x":660,"y":1389,"w":87,"h":87}, "frame": {"x":667,"y":1464,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -354,7 +354,7 @@
}, },
"sprites/blueprints/belt_top.png": "sprites/blueprints/belt_top.png":
{ {
"frame": {"x":176,"y":1599,"w":78,"h":96}, "frame": {"x":3,"y":1837,"w":78,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -386,7 +386,7 @@
}, },
"sprites/blueprints/display.png": "sprites/blueprints/display.png":
{ {
"frame": {"x":560,"y":1399,"w":86,"h":91}, "frame": {"x":568,"y":1485,"w":86,"h":91},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":5,"y":5,"w":86,"h":91}, "spriteSourceSize": {"x":5,"y":5,"w":86,"h":91},
@ -402,15 +402,15 @@
}, },
"sprites/blueprints/lever.png": "sprites/blueprints/lever.png":
{ {
"frame": {"x":946,"y":734,"w":74,"h":78}, "frame": {"x":946,"y":752,"w":75,"h":86},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":11,"y":11,"w":74,"h":78}, "spriteSourceSize": {"x":11,"y":3,"w":75,"h":86},
"sourceSize": {"w":96,"h":96} "sourceSize": {"w":96,"h":96}
}, },
"sprites/blueprints/logic_gate-not.png": "sprites/blueprints/logic_gate-not.png":
{ {
"frame": {"x":367,"y":1453,"w":83,"h":96}, "frame": {"x":372,"y":1547,"w":83,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":7,"y":0,"w":83,"h":96}, "spriteSourceSize": {"x":7,"y":0,"w":83,"h":96},
@ -418,7 +418,7 @@
}, },
"sprites/blueprints/logic_gate-or.png": "sprites/blueprints/logic_gate-or.png":
{ {
"frame": {"x":521,"y":991,"w":96,"h":82}, "frame": {"x":3,"y":874,"w":96,"h":82},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":82}, "spriteSourceSize": {"x":0,"y":0,"w":96,"h":82},
@ -442,7 +442,7 @@
}, },
"sprites/blueprints/logic_gate.png": "sprites/blueprints/logic_gate.png":
{ {
"frame": {"x":335,"y":902,"w":96,"h":89}, "frame": {"x":521,"y":999,"w":96,"h":89},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":89}, "spriteSourceSize": {"x":0,"y":0,"w":96,"h":89},
@ -450,7 +450,7 @@
}, },
"sprites/blueprints/miner-chainable.png": "sprites/blueprints/miner-chainable.png":
{ {
"frame": {"x":929,"y":916,"w":92,"h":96}, "frame": {"x":929,"y":942,"w":92,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":92,"h":96}, "spriteSourceSize": {"x":3,"y":0,"w":92,"h":96},
@ -458,7 +458,7 @@
}, },
"sprites/blueprints/miner.png": "sprites/blueprints/miner.png":
{ {
"frame": {"x":100,"y":1050,"w":92,"h":96}, "frame": {"x":298,"y":1198,"w":92,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":92,"h":96}, "spriteSourceSize": {"x":3,"y":0,"w":92,"h":96},
@ -514,7 +514,7 @@
}, },
"sprites/blueprints/rotater-fl.png": "sprites/blueprints/rotater-fl.png":
{ {
"frame": {"x":921,"y":1016,"w":95,"h":96}, "frame": {"x":203,"y":990,"w":95,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":95,"h":96}, "spriteSourceSize": {"x":0,"y":0,"w":95,"h":96},
@ -530,15 +530,31 @@
}, },
"sprites/blueprints/splitter-compact-inverse.png": "sprites/blueprints/splitter-compact-inverse.png":
{ {
"frame": {"x":820,"y":1152,"w":95,"h":93}, "frame": {"x":202,"y":1090,"w":95,"h":93},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":1,"w":95,"h":93}, "spriteSourceSize": {"x":0,"y":1,"w":95,"h":93},
"sourceSize": {"w":96,"h":96} "sourceSize": {"w":96,"h":96}
}, },
"sprites/blueprints/splitter-compact-merge-inverse.png":
{
"frame": {"x":102,"y":1091,"w":95,"h":93},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":1,"w":95,"h":93},
"sourceSize": {"w":96,"h":96}
},
"sprites/blueprints/splitter-compact-merge.png":
{
"frame": {"x":401,"y":1098,"w":93,"h":93},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":1,"w":93,"h":93},
"sourceSize": {"w":96,"h":96}
},
"sprites/blueprints/splitter-compact.png": "sprites/blueprints/splitter-compact.png":
{ {
"frame": {"x":101,"y":874,"w":93,"h":93}, "frame": {"x":301,"y":1101,"w":93,"h":93},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":3,"y":1,"w":93,"h":93}, "spriteSourceSize": {"x":3,"y":1,"w":93,"h":93},
@ -578,7 +594,7 @@
}, },
"sprites/blueprints/underground_belt_entry-tier2.png": "sprites/blueprints/underground_belt_entry-tier2.png":
{ {
"frame": {"x":198,"y":969,"w":93,"h":84}, "frame": {"x":597,"y":1116,"w":93,"h":84},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":2,"y":12,"w":93,"h":84}, "spriteSourceSize": {"x":2,"y":12,"w":93,"h":84},
@ -586,7 +602,7 @@
}, },
"sprites/blueprints/underground_belt_entry.png": "sprites/blueprints/underground_belt_entry.png":
{ {
"frame": {"x":100,"y":971,"w":93,"h":75}, "frame": {"x":498,"y":1171,"w":93,"h":75},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":2,"y":21,"w":93,"h":75}, "spriteSourceSize": {"x":2,"y":21,"w":93,"h":75},
@ -594,7 +610,7 @@
}, },
"sprites/blueprints/underground_belt_exit-tier2.png": "sprites/blueprints/underground_belt_exit-tier2.png":
{ {
"frame": {"x":3,"y":874,"w":94,"h":75}, "frame": {"x":499,"y":1092,"w":94,"h":75},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":2,"y":0,"w":94,"h":75}, "spriteSourceSize": {"x":2,"y":0,"w":94,"h":75},
@ -602,13 +618,13 @@
}, },
"sprites/blueprints/underground_belt_exit.png": "sprites/blueprints/underground_belt_exit.png":
{ {
"frame": {"x":3,"y":1048,"w":93,"h":75}, "frame": {"x":398,"y":1195,"w":93,"h":75},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":2,"y":0,"w":93,"h":75}, "spriteSourceSize": {"x":2,"y":0,"w":93,"h":75},
"sourceSize": {"w":96,"h":96} "sourceSize": {"w":96,"h":96}
}, },
"sprites/blueprints/wire-cross.png": "sprites/blueprints/virtual_processor-analyzer.png":
{ {
"frame": {"x":521,"y":799,"w":96,"h":96}, "frame": {"x":521,"y":799,"w":96,"h":96},
"rotated": false, "rotated": false,
@ -616,9 +632,49 @@
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96}, "spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
"sourceSize": {"w":96,"h":96} "sourceSize": {"w":96,"h":96}
}, },
"sprites/blueprints/virtual_processor-rotater.png":
{
"frame": {"x":276,"y":1571,"w":79,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":79,"h":96},
"sourceSize": {"w":96,"h":96}
},
"sprites/blueprints/virtual_processor-shapecompare.png":
{
"frame": {"x":621,"y":1023,"w":96,"h":89},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":89},
"sourceSize": {"w":96,"h":96}
},
"sprites/blueprints/virtual_processor-unstacker.png":
{
"frame": {"x":729,"y":890,"w":96,"h":96},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
"sourceSize": {"w":96,"h":96}
},
"sprites/blueprints/virtual_processor.png":
{
"frame": {"x":921,"y":1042,"w":96,"h":94},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":2,"w":96,"h":94},
"sourceSize": {"w":96,"h":96}
},
"sprites/blueprints/wire-cross.png":
{
"frame": {"x":829,"y":894,"w":96,"h":96},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
"sourceSize": {"w":96,"h":96}
},
"sprites/blueprints/wire-split.png": "sprites/blueprints/wire-split.png":
{ {
"frame": {"x":721,"y":990,"w":96,"h":55}, "frame": {"x":103,"y":874,"w":96,"h":55},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":41,"w":96,"h":55}, "spriteSourceSize": {"x":0,"y":41,"w":96,"h":55},
@ -650,7 +706,7 @@
}, },
"sprites/blueprints/wire_tunnel.png": "sprites/blueprints/wire_tunnel.png":
{ {
"frame": {"x":3,"y":953,"w":93,"h":91}, "frame": {"x":201,"y":1187,"w":93,"h":91},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":2,"y":2,"w":93,"h":91}, "spriteSourceSize": {"x":2,"y":2,"w":93,"h":91},
@ -658,7 +714,7 @@
}, },
"sprites/buildings/belt_left.png": "sprites/buildings/belt_left.png":
{ {
"frame": {"x":196,"y":1135,"w":87,"h":87}, "frame": {"x":495,"y":1250,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -666,7 +722,7 @@
}, },
"sprites/buildings/belt_right.png": "sprites/buildings/belt_right.png":
{ {
"frame": {"x":281,"y":1272,"w":87,"h":87}, "frame": {"x":190,"y":1467,"w":87,"h":87},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -674,7 +730,7 @@
}, },
"sprites/buildings/belt_top.png": "sprites/buildings/belt_top.png":
{ {
"frame": {"x":943,"y":816,"w":78,"h":96}, "frame": {"x":943,"y":842,"w":78,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -706,7 +762,7 @@
}, },
"sprites/buildings/display.png": "sprites/buildings/display.png":
{ {
"frame": {"x":463,"y":1428,"w":84,"h":90}, "frame": {"x":468,"y":1523,"w":84,"h":90},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":6,"y":6,"w":84,"h":90}, "spriteSourceSize": {"x":6,"y":6,"w":84,"h":90},
@ -730,10 +786,10 @@
}, },
"sprites/buildings/lever.png": "sprites/buildings/lever.png":
{ {
"frame": {"x":948,"y":574,"w":73,"h":76}, "frame": {"x":948,"y":574,"w":73,"h":85},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":12,"y":12,"w":73,"h":76}, "spriteSourceSize": {"x":12,"y":3,"w":73,"h":85},
"sourceSize": {"w":96,"h":96} "sourceSize": {"w":96,"h":96}
}, },
"sprites/buildings/logic_gate-not.png": "sprites/buildings/logic_gate-not.png":
@ -746,7 +802,7 @@
}, },
"sprites/buildings/logic_gate-or.png": "sprites/buildings/logic_gate-or.png":
{ {
"frame": {"x":621,"y":923,"w":96,"h":83}, "frame": {"x":921,"y":1140,"w":96,"h":83},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":83}, "spriteSourceSize": {"x":0,"y":0,"w":96,"h":83},
@ -762,7 +818,7 @@
}, },
"sprites/buildings/logic_gate-xor.png": "sprites/buildings/logic_gate-xor.png":
{ {
"frame": {"x":339,"y":803,"w":96,"h":95}, "frame": {"x":821,"y":994,"w":96,"h":95},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":95}, "spriteSourceSize": {"x":0,"y":0,"w":96,"h":95},
@ -770,7 +826,7 @@
}, },
"sprites/buildings/logic_gate.png": "sprites/buildings/logic_gate.png":
{ {
"frame": {"x":521,"y":899,"w":96,"h":88}, "frame": {"x":821,"y":1093,"w":96,"h":88},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":88}, "spriteSourceSize": {"x":0,"y":0,"w":96,"h":88},
@ -778,7 +834,7 @@
}, },
"sprites/buildings/miner-chainable.png": "sprites/buildings/miner-chainable.png":
{ {
"frame": {"x":391,"y":1081,"w":91,"h":95}, "frame": {"x":694,"y":1183,"w":91,"h":95},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":91,"h":95}, "spriteSourceSize": {"x":3,"y":0,"w":91,"h":95},
@ -786,7 +842,7 @@
}, },
"sprites/buildings/miner.png": "sprites/buildings/miner.png":
{ {
"frame": {"x":292,"y":1082,"w":91,"h":95}, "frame": {"x":595,"y":1204,"w":91,"h":95},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":91,"h":95}, "spriteSourceSize": {"x":3,"y":0,"w":91,"h":95},
@ -834,7 +890,7 @@
}, },
"sprites/buildings/rotater-ccw.png": "sprites/buildings/rotater-ccw.png":
{ {
"frame": {"x":821,"y":1052,"w":95,"h":96}, "frame": {"x":103,"y":991,"w":95,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":95,"h":96}, "spriteSourceSize": {"x":1,"y":0,"w":95,"h":96},
@ -842,7 +898,7 @@
}, },
"sprites/buildings/rotater-fl.png": "sprites/buildings/rotater-fl.png":
{ {
"frame": {"x":721,"y":1107,"w":95,"h":96}, "frame": {"x":3,"y":1018,"w":95,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":95,"h":96}, "spriteSourceSize": {"x":0,"y":0,"w":95,"h":96},
@ -850,7 +906,7 @@
}, },
"sprites/buildings/rotater.png": "sprites/buildings/rotater.png":
{ {
"frame": {"x":920,"y":1116,"w":95,"h":96}, "frame": {"x":302,"y":1001,"w":95,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":95,"h":96}, "spriteSourceSize": {"x":1,"y":0,"w":95,"h":96},
@ -858,15 +914,31 @@
}, },
"sprites/buildings/splitter-compact-inverse.png": "sprites/buildings/splitter-compact-inverse.png":
{ {
"frame": {"x":919,"y":1216,"w":94,"h":91}, "frame": {"x":401,"y":1003,"w":94,"h":91},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":2,"w":94,"h":91}, "spriteSourceSize": {"x":0,"y":2,"w":94,"h":91},
"sourceSize": {"w":96,"h":96} "sourceSize": {"w":96,"h":96}
}, },
"sprites/buildings/splitter-compact-merge-inverse.png":
{
"frame": {"x":3,"y":1118,"w":95,"h":91},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":2,"w":95,"h":91},
"sourceSize": {"w":96,"h":96}
},
"sprites/buildings/splitter-compact-merge.png":
{
"frame": {"x":102,"y":1188,"w":93,"h":91},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":2,"w":93,"h":91},
"sourceSize": {"w":96,"h":96}
},
"sprites/buildings/splitter-compact.png": "sprites/buildings/splitter-compact.png":
{ {
"frame": {"x":198,"y":874,"w":93,"h":91}, "frame": {"x":3,"y":1213,"w":93,"h":91},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":3,"y":2,"w":93,"h":91}, "spriteSourceSize": {"x":3,"y":2,"w":93,"h":91},
@ -898,7 +970,7 @@
}, },
"sprites/buildings/trash.png": "sprites/buildings/trash.png":
{ {
"frame": {"x":729,"y":890,"w":96,"h":96}, "frame": {"x":3,"y":774,"w":96,"h":96},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96}, "spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
@ -906,7 +978,7 @@
}, },
"sprites/buildings/underground_belt_entry-tier2.png": "sprites/buildings/underground_belt_entry-tier2.png":
{ {
"frame": {"x":295,"y":995,"w":92,"h":83}, "frame": {"x":100,"y":1283,"w":92,"h":83},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":3,"y":13,"w":92,"h":83}, "spriteSourceSize": {"x":3,"y":13,"w":92,"h":83},
@ -914,7 +986,7 @@
}, },
"sprites/buildings/underground_belt_entry.png": "sprites/buildings/underground_belt_entry.png":
{ {
"frame": {"x":196,"y":1057,"w":92,"h":74}, "frame": {"x":3,"y":1308,"w":92,"h":74},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":3,"y":22,"w":92,"h":74}, "spriteSourceSize": {"x":3,"y":22,"w":92,"h":74},
@ -922,7 +994,7 @@
}, },
"sprites/buildings/underground_belt_exit-tier2.png": "sprites/buildings/underground_belt_exit-tier2.png":
{ {
"frame": {"x":391,"y":1003,"w":92,"h":74}, "frame": {"x":99,"y":1370,"w":92,"h":74},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":92,"h":74}, "spriteSourceSize": {"x":3,"y":0,"w":92,"h":74},
@ -930,15 +1002,55 @@
}, },
"sprites/buildings/underground_belt_exit.png": "sprites/buildings/underground_belt_exit.png":
{ {
"frame": {"x":487,"y":1077,"w":92,"h":74}, "frame": {"x":3,"y":1386,"w":92,"h":74},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":92,"h":74}, "spriteSourceSize": {"x":3,"y":0,"w":92,"h":74},
"sourceSize": {"w":96,"h":96} "sourceSize": {"w":96,"h":96}
}, },
"sprites/buildings/virtual_processor-analyzer.png":
{
"frame": {"x":103,"y":774,"w":96,"h":96},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
"sourceSize": {"w":96,"h":96}
},
"sprites/buildings/virtual_processor-rotater.png":
{
"frame": {"x":185,"y":1649,"w":79,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":79,"h":96},
"sourceSize": {"w":96,"h":96}
},
"sprites/buildings/virtual_processor-shapecompare.png":
{
"frame": {"x":721,"y":1090,"w":96,"h":89},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":89},
"sourceSize": {"w":96,"h":96}
},
"sprites/buildings/virtual_processor-unstacker.png":
{
"frame": {"x":203,"y":774,"w":96,"h":96},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
"sourceSize": {"w":96,"h":96}
},
"sprites/buildings/virtual_processor.png":
{
"frame": {"x":335,"y":903,"w":96,"h":94},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":2,"w":96,"h":94},
"sourceSize": {"w":96,"h":96}
},
"sprites/buildings/wire-cross.png": "sprites/buildings/wire-cross.png":
{ {
"frame": {"x":829,"y":894,"w":96,"h":96}, "frame": {"x":339,"y":803,"w":96,"h":96},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96}, "spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
@ -946,7 +1058,7 @@
}, },
"sprites/buildings/wire-split.png": "sprites/buildings/wire-split.png":
{ {
"frame": {"x":621,"y":1010,"w":96,"h":54}, "frame": {"x":203,"y":874,"w":96,"h":54},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":42,"w":96,"h":54}, "spriteSourceSize": {"x":0,"y":42,"w":96,"h":54},
@ -978,7 +1090,7 @@
}, },
"sprites/buildings/wire_tunnel.png": "sprites/buildings/wire_tunnel.png":
{ {
"frame": {"x":3,"y":1127,"w":92,"h":90}, "frame": {"x":199,"y":1282,"w":92,"h":90},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":3,"y":3,"w":92,"h":90}, "spriteSourceSize": {"x":3,"y":3,"w":92,"h":90},
@ -1114,10 +1226,10 @@
}, },
"sprites/wires/lever_on.png": "sprites/wires/lever_on.png":
{ {
"frame": {"x":948,"y":654,"w":73,"h":76}, "frame": {"x":948,"y":663,"w":73,"h":85},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":12,"y":12,"w":73,"h":76}, "spriteSourceSize": {"x":12,"y":3,"w":73,"h":85},
"sourceSize": {"w":96,"h":96} "sourceSize": {"w":96,"h":96}
}, },
"sprites/wires/logical_acceptor.png": "sprites/wires/logical_acceptor.png":
@ -1162,7 +1274,7 @@
}, },
"sprites/wires/sets/color_cross.png": "sprites/wires/sets/color_cross.png":
{ {
"frame": {"x":3,"y":774,"w":96,"h":96}, "frame": {"x":521,"y":899,"w":96,"h":96},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96}, "spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
@ -1178,7 +1290,7 @@
}, },
"sprites/wires/sets/color_split.png": "sprites/wires/sets/color_split.png":
{ {
"frame": {"x":821,"y":994,"w":96,"h":54}, "frame": {"x":203,"y":932,"w":96,"h":54},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":42,"w":96,"h":54}, "spriteSourceSize": {"x":0,"y":42,"w":96,"h":54},
@ -1194,7 +1306,7 @@
}, },
"sprites/wires/sets/conflict_cross.png": "sprites/wires/sets/conflict_cross.png":
{ {
"frame": {"x":103,"y":774,"w":96,"h":96}, "frame": {"x":621,"y":923,"w":96,"h":96},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96}, "spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
@ -1210,7 +1322,7 @@
}, },
"sprites/wires/sets/conflict_split.png": "sprites/wires/sets/conflict_split.png":
{ {
"frame": {"x":721,"y":1049,"w":96,"h":54}, "frame": {"x":103,"y":933,"w":96,"h":54},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":42,"w":96,"h":54}, "spriteSourceSize": {"x":0,"y":42,"w":96,"h":54},
@ -1226,7 +1338,7 @@
}, },
"sprites/wires/sets/regular_cross.png": "sprites/wires/sets/regular_cross.png":
{ {
"frame": {"x":829,"y":894,"w":96,"h":96}, "frame": {"x":339,"y":803,"w":96,"h":96},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96}, "spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
@ -1242,7 +1354,7 @@
}, },
"sprites/wires/sets/regular_split.png": "sprites/wires/sets/regular_split.png":
{ {
"frame": {"x":621,"y":1010,"w":96,"h":54}, "frame": {"x":203,"y":874,"w":96,"h":54},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":42,"w":96,"h":54}, "spriteSourceSize": {"x":0,"y":42,"w":96,"h":54},
@ -1258,7 +1370,7 @@
}, },
"sprites/wires/sets/shape_cross.png": "sprites/wires/sets/shape_cross.png":
{ {
"frame": {"x":203,"y":774,"w":96,"h":96}, "frame": {"x":721,"y":990,"w":96,"h":96},
"rotated": false, "rotated": false,
"trimmed": false, "trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96}, "spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
@ -1274,7 +1386,7 @@
}, },
"sprites/wires/sets/shape_split.png": "sprites/wires/sets/shape_split.png":
{ {
"frame": {"x":621,"y":1068,"w":96,"h":54}, "frame": {"x":3,"y":960,"w":96,"h":54},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":42,"w":96,"h":54}, "spriteSourceSize": {"x":0,"y":42,"w":96,"h":54},
@ -1303,6 +1415,6 @@
"format": "RGBA8888", "format": "RGBA8888",
"size": {"w":1024,"h":2048}, "size": {"w":1024,"h":2048},
"scale": "0.5", "scale": "0.5",
"smartupdate": "$TexturePacker:SmartUpdate:876f0711b44fa7bbab8d2539e9651766:ff01f850e086ef31c114b036c3a32e6d:908b89f5ca8ff73e331a35a3b14d0604$" "smartupdate": "$TexturePacker:SmartUpdate:65dccccf359b3f3582914eac20260366:f9eee0054558f8bf77da34f281176a03:908b89f5ca8ff73e331a35a3b14d0604$"
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 567 KiB

After

Width:  |  Height:  |  Size: 636 KiB

View File

@ -277,6 +277,12 @@
<key type="filename">sprites/blueprints/underground_belt_entry.png</key> <key type="filename">sprites/blueprints/underground_belt_entry.png</key>
<key type="filename">sprites/blueprints/underground_belt_exit-tier2.png</key> <key type="filename">sprites/blueprints/underground_belt_exit-tier2.png</key>
<key type="filename">sprites/blueprints/underground_belt_exit.png</key> <key type="filename">sprites/blueprints/underground_belt_exit.png</key>
<key type="filename">sprites/blueprints/virtual_processor-analyzer.png</key>
<key type="filename">sprites/blueprints/virtual_processor-rotater.png</key>
<key type="filename">sprites/blueprints/virtual_processor-shapecompare.png</key>
<key type="filename">sprites/blueprints/virtual_processor-unstacker.png</key>
<key type="filename">sprites/blueprints/virtual_processor.png</key>
<key type="filename">sprites/blueprints/wire_tunnel-coating.png</key>
<key type="filename">sprites/blueprints/wire_tunnel.png</key> <key type="filename">sprites/blueprints/wire_tunnel.png</key>
<key type="filename">sprites/buildings/constant_signal.png</key> <key type="filename">sprites/buildings/constant_signal.png</key>
<key type="filename">sprites/buildings/display.png</key> <key type="filename">sprites/buildings/display.png</key>
@ -295,6 +301,12 @@
<key type="filename">sprites/buildings/underground_belt_entry.png</key> <key type="filename">sprites/buildings/underground_belt_entry.png</key>
<key type="filename">sprites/buildings/underground_belt_exit-tier2.png</key> <key type="filename">sprites/buildings/underground_belt_exit-tier2.png</key>
<key type="filename">sprites/buildings/underground_belt_exit.png</key> <key type="filename">sprites/buildings/underground_belt_exit.png</key>
<key type="filename">sprites/buildings/virtual_processor-analyzer.png</key>
<key type="filename">sprites/buildings/virtual_processor-rotater.png</key>
<key type="filename">sprites/buildings/virtual_processor-shapecompare.png</key>
<key type="filename">sprites/buildings/virtual_processor-unstacker.png</key>
<key type="filename">sprites/buildings/virtual_processor.png</key>
<key type="filename">sprites/buildings/wire_tunnel-coating.png</key>
<key type="filename">sprites/buildings/wire_tunnel.png</key> <key type="filename">sprites/buildings/wire_tunnel.png</key>
<key type="filename">sprites/wires/lever_on.png</key> <key type="filename">sprites/wires/lever_on.png</key>
<key type="filename">sprites/wires/sets/color_cross.png</key> <key type="filename">sprites/wires/sets/color_cross.png</key>
@ -533,6 +545,8 @@
</struct> </struct>
<key type="filename">sprites/wires/boolean_false.png</key> <key type="filename">sprites/wires/boolean_false.png</key>
<key type="filename">sprites/wires/boolean_true.png</key> <key type="filename">sprites/wires/boolean_true.png</key>
<key type="filename">sprites/wires/network_conflict.png</key>
<key type="filename">sprites/wires/network_empty.png</key>
<key type="filename">sprites/wires/wires_preview.png</key> <key type="filename">sprites/wires/wires_preview.png</key>
<struct type="IndividualSpriteSettings"> <struct type="IndividualSpriteSettings">
<key>pivotPoint</key> <key>pivotPoint</key>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

View File

@ -664,7 +664,7 @@ iframe {
user-select: all; user-select: all;
} }
// Steam overlay fiy // Steam overlay fix
#steamOverlayCanvasFix { #steamOverlayCanvasFix {
position: fixed; position: fixed;
top: 0px; top: 0px;

View File

@ -1,5 +1,5 @@
$buildings: belt, cutter, miner, mixer, painter, rotater, splitter, stacker, trash, underground_belt, wire, $buildings: belt, cutter, miner, mixer, painter, rotater, splitter, stacker, trash, underground_belt, wire,
constant_signal, logic_gate, lever, filter, wire_tunnel, display; constant_signal, logic_gate, lever, filter, wire_tunnel, display, virtual_processor;
@each $building in $buildings { @each $building in $buildings {
[data-icon="building_icons/#{$building}.png"] { [data-icon="building_icons/#{$building}.png"] {

View File

@ -14,20 +14,37 @@
@include S(padding, 1px, 10px); @include S(padding, 1px, 10px);
border: 0; border: 0;
box-shadow: none; box-shadow: none;
border-radius: 0;
@include IncreasedClickArea(1px); @include IncreasedClickArea(1px);
@include S(min-width, 30px); @include S(min-width, 30px);
color: #fff; color: #fff;
opacity: 0.25; opacity: 0.25;
@include S(margin-left, 1px); @include S(border-radius, $globalBorderRadius);
border-radius: 0;
&:first-child {
@include S(border-top-left-radius, $globalBorderRadius);
@include S(border-bottom-left-radius, $globalBorderRadius);
}
&:last-child {
@include S(border-top-right-radius, $globalBorderRadius);
@include S(border-bottom-right-radius, $globalBorderRadius);
}
&.displayIcons, &.displayIcons,
&.displayDetailed { &.displayDetailed,
&.displaySorted {
background: uiResource("icons/display_list.png") center center / #{D(15px)} no-repeat; background: uiResource("icons/display_list.png") center center / #{D(15px)} no-repeat;
&.displayIcons { &.displayIcons {
background-image: uiResource("icons/display_icons.png"); background-image: uiResource("icons/display_icons.png");
background-size: #{D(11.5px)}; background-size: #{D(11.5px)};
} }
&.displaySorted {
background-image: uiResource("icons/display_sorted.png");
background-size: #{D(11.5px)};
margin-right: 4px;
@include S(padding, 1px, 0);
}
} }
background-color: #44484a !important; background-color: #44484a !important;
@ -80,10 +97,7 @@
background: #f4f4f4; background: #f4f4f4;
@include S(margin-bottom, 4px); @include S(margin-bottom, 4px);
display: grid; display: grid;
@include S(border-radius, $globalBorderRadius);
@include DarkThemeOverride {
background: #222428;
}
grid-template-columns: 1fr auto; grid-template-columns: 1fr auto;
@include S(padding, 5px); @include S(padding, 5px);
@ -91,6 +105,18 @@
margin-bottom: 0; margin-bottom: 0;
} }
&.pinned {
background: #e3e5e9;
}
@include DarkThemeOverride {
background: #222428;
&.pinned {
background: darken(#222428, 10);
}
}
canvas.icon { canvas.icon {
grid-column: 1 / 2; grid-column: 1 / 2;
grid-row: 1 / 2; grid-row: 1 / 2;
@ -100,7 +126,6 @@
.counter { .counter {
@include SuperSmallText; @include SuperSmallText;
@include S(padding, 0, 3px); @include S(padding, 0, 3px);
} }
} }
@ -109,6 +134,7 @@
.dialogInner { .dialogInner {
&[data-displaymode="detailed"] .displayDetailed, &[data-displaymode="detailed"] .displayDetailed,
&[data-displaymode="icons"] .displayIcons, &[data-displaymode="icons"] .displayIcons,
&[data-sorted="true"] .displaySorted,
&[data-datasource="produced"] .modeProduced, &[data-datasource="produced"] .modeProduced,
&[data-datasource="delivered"] .modeDelivered, &[data-datasource="delivered"] .modeDelivered,
&[data-datasource="stored"] .modeStored { &[data-datasource="stored"] .modeStored {
@ -132,7 +158,6 @@
.counter { .counter {
grid-column: 1 / 2; grid-column: 1 / 2;
grid-row: 2 / 3; grid-row: 2 / 3;
background: rgba(0, 10, 20, 0.05);
justify-self: end; justify-self: end;
} }
} }

View File

@ -103,7 +103,7 @@ $zindex: 100;
} }
body.uiHidden { body.uiHidden {
#ingame_HUD_buildings_toolbar, .ingame_buildingsToolbar,
#ingame_HUD_PlacementHints, #ingame_HUD_PlacementHints,
#ingame_HUD_GameMenu, #ingame_HUD_GameMenu,
#ingame_HUD_PinnedShapes, #ingame_HUD_PinnedShapes,

View File

@ -285,13 +285,13 @@
@include S(border-radius, $globalBorderRadius); @include S(border-radius, $globalBorderRadius);
@include S(padding, 5px); @include S(padding, 5px);
display: grid; display: grid;
grid-template-columns: 1fr auto auto; grid-template-columns: 1fr 1fr auto auto;
grid-template-rows: auto auto; grid-template-rows: auto auto;
@include S(grid-column-gap, 4px); @include S(grid-column-gap, 4px);
@include S(grid-row-gap, 1px); @include S(grid-row-gap, 1px);
.playtime { .playtime {
grid-column: 1 / 2; grid-column: 2 / 3;
grid-row: 2 / 3; grid-row: 2 / 3;
@include SuperSmallText; @include SuperSmallText;
opacity: 0.5; opacity: 0.5;
@ -299,13 +299,29 @@
.level { .level {
grid-column: 1 / 2; grid-column: 1 / 2;
grid-row: 2 / 3;
@include SuperSmallText;
opacity: 0.5;
}
.name {
grid-column: 1 / 3;
grid-row: 1 / 2; grid-row: 1 / 2;
@include PlainText; @include PlainText;
display: inline-flex;
align-items: center;
> span {
display: inline-flex;
@include S(max-width, 140px);
overflow: hidden;
}
} }
button.resumeGame, button.resumeGame,
button.downloadGame, button.downloadGame,
button.deleteGame { button.deleteGame,
button.renameGame {
padding: 0; padding: 0;
align-self: center; align-self: center;
justify-self: center; justify-self: center;
@ -314,7 +330,7 @@
} }
button.downloadGame { button.downloadGame {
grid-column: 2 / 3; grid-column: 3 / 4;
grid-row: 1 / 2; grid-row: 1 / 2;
background-color: $colorBlueBright; background-color: $colorBlueBright;
background-image: uiResource("icons/download.png"); background-image: uiResource("icons/download.png");
@ -326,7 +342,7 @@
} }
button.deleteGame { button.deleteGame {
grid-column: 2 / 3; grid-column: 3 / 4;
grid-row: 2 / 3; grid-row: 2 / 3;
background-color: $colorRedBright; background-color: $colorRedBright;
@include IncreasedClickArea(0px); @include IncreasedClickArea(0px);
@ -337,8 +353,28 @@
background-size: 60%; background-size: 60%;
} }
button.renameGame {
background-color: transparent;
@include IncreasedClickArea(2px);
background-image: uiResource("icons/edit_key.png");
@include S(width, 10px);
@include S(height, 10px);
align-self: center;
justify-self: center;
background-size: 90%;
opacity: 0.25;
@include S(margin-left, 4px);
&:hover {
opacity: 0.35;
}
@include DarkThemeInvert;
}
button.resumeGame { button.resumeGame {
grid-column: 3 / 4; grid-column: 4 / 5;
grid-row: 1 / 3; grid-row: 1 / 3;
margin: 0; margin: 0;
@include S(width, 32px); @include S(width, 32px);

View File

@ -14,7 +14,11 @@ export const CHANGELOG = [
"Zoom towards mouse cursor (by Dimava)", "Zoom towards mouse cursor (by Dimava)",
"Added multiple settings to optimize the performance", "Added multiple settings to optimize the performance",
"Updated the soundtrack again, it is now 40 minutes in total!", "Updated the soundtrack again, it is now 40 minutes in total!",
"Added a button to the statistics dialog to disable the sorting (by squeek502)",
"Updated and added new translations (Thanks to all contributors!)", "Updated and added new translations (Thanks to all contributors!)",
"Added setting to be able to delete buildings while placing (inspired by hexy)",
"Mark pinned shapes in statistics dialog and show them first (inspired by davidburhans)",
"There are now compact 1x1 splitters available to be unlocked!",
"Allow editing waypoints (by isaisstillalive)", "Allow editing waypoints (by isaisstillalive)",
"Show confirmation when cutting area which is too expensive to get pasted again (by isaisstillalive)", "Show confirmation when cutting area which is too expensive to get pasted again (by isaisstillalive)",
"Show mouse and camera tile on debug overlay (F4) (by dengr)", "Show mouse and camera tile on debug overlay (F4) (by dengr)",

View File

@ -368,9 +368,18 @@ export class DialogWithForm extends Dialog {
* @param {array=} param0.buttons * @param {array=} param0.buttons
* @param {string=} param0.confirmButtonId * @param {string=} param0.confirmButtonId
* @param {string=} param0.extraButton * @param {string=} param0.extraButton
* @param {boolean=} param0.closeButton
* @param {Array<FormElement>} param0.formElements * @param {Array<FormElement>} param0.formElements
*/ */
constructor({ app, title, desc, formElements, buttons = ["cancel", "ok:good"], confirmButtonId = "ok" }) { constructor({
app,
title,
desc,
formElements,
buttons = ["cancel", "ok:good"],
confirmButtonId = "ok",
closeButton = true,
}) {
let html = ""; let html = "";
html += desc + "<br>"; html += desc + "<br>";
for (let i = 0; i < formElements.length; ++i) { for (let i = 0; i < formElements.length; ++i) {
@ -383,7 +392,7 @@ export class DialogWithForm extends Dialog {
contentHTML: html, contentHTML: html,
buttons: buttons, buttons: buttons,
type: "info", type: "info",
closeButton: true, closeButton,
}); });
this.confirmButtonId = confirmButtonId; this.confirmButtonId = confirmButtonId;
this.formElements = formElements; this.formElements = formElements;

View File

@ -53,27 +53,6 @@ export class Rectangle {
return a.left <= b.right && b.left <= a.right && a.top <= b.bottom && b.top <= a.bottom; return a.left <= b.right && b.left <= a.right && a.top <= b.bottom && b.top <= a.bottom;
} }
/**
* Returns a rectangle arround a rotated point
* @param {Array<Vector>} points
* @param {number} angle
* @returns {Rectangle}
*/
static getAroundPointsRotated(points, angle) {
let minX = 1e10;
let minY = 1e10;
let maxX = -1e10;
let maxY = -1e10;
for (let i = 0; i < points.length; ++i) {
const rotated = points[i].rotated(angle);
minX = Math.min(minX, rotated.x);
minY = Math.min(minY, rotated.y);
maxX = Math.max(maxX, rotated.x);
maxY = Math.max(maxY, rotated.y);
}
return new Rectangle(minX, minY, maxX - minX, maxY - minY);
}
/** /**
* Copies this instance * Copies this instance
* @returns {Rectangle} * @returns {Rectangle}
@ -82,28 +61,6 @@ export class Rectangle {
return new Rectangle(this.x, this.y, this.w, this.h); return new Rectangle(this.x, this.y, this.w, this.h);
} }
/**
* Ensures the rectangle contains the given square
* @param {number} centerX
* @param {number} centerY
* @param {number} halfWidth
* @param {number} halfHeight
*/
extendBySquare(centerX, centerY, halfWidth, halfHeight) {
if (this.isEmpty()) {
// Just assign values since this rectangle is empty
this.x = centerX - halfWidth;
this.y = centerY - halfHeight;
this.w = halfWidth * 2;
this.h = halfHeight * 2;
} else {
this.setLeft(Math.min(this.x, centerX - halfWidth));
this.setRight(Math.max(this.right(), centerX + halfWidth));
this.setTop(Math.min(this.y, centerY - halfHeight));
this.setBottom(Math.max(this.bottom(), centerY + halfHeight));
}
}
/** /**
* Returns if this rectangle is empty * Returns if this rectangle is empty
* @returns {boolean} * @returns {boolean}
@ -259,14 +216,6 @@ export class Rectangle {
return new Rectangle(this.x - amount, this.y - amount, this.w + 2 * amount, this.h + 2 * amount); return new Rectangle(this.x - amount, this.y - amount, this.w + 2 * amount, this.h + 2 * amount);
} }
/**
* Helper for computing a culling area. Returns the top left tile
* @returns {Vector}
*/
getMinStartTile() {
return new Vector(this.x, this.y).snapWorldToTile();
}
/** /**
* Returns if the given rectangle is contained * Returns if the given rectangle is contained
* @param {Rectangle} rect * @param {Rectangle} rect
@ -394,7 +343,7 @@ export class Rectangle {
} }
/** /**
* Returns a new recangle in tile space which includes all tiles which are visible in this rect * Returns a new rectangle in tile space which includes all tiles which are visible in this rect
* @returns {Rectangle} * @returns {Rectangle}
*/ */
toTileCullRectangle() { toTileCullRectangle() {

View File

@ -28,7 +28,7 @@ export class MetaCutterBuilding extends MetaBuilding {
case enumCutterVariants.quad: case enumCutterVariants.quad:
return new Vector(4, 1); return new Vector(4, 1);
default: default:
assertAlways(false, "Unknown splitter variant: " + variant); assertAlways(false, "Unknown cutter variant: " + variant);
} }
} }

View File

@ -23,10 +23,6 @@ export class MetaLeverBuilding extends MetaBuilding {
return true; return true;
} }
getIsRotateable() {
return false;
}
getDimensions() { getDimensions() {
return new Vector(1, 1); return new Vector(1, 1);
} }

View File

@ -11,7 +11,12 @@ import { formatItemsPerSecond } from "../../core/utils";
import { BeltUnderlaysComponent } from "../components/belt_underlays"; import { BeltUnderlaysComponent } from "../components/belt_underlays";
/** @enum {string} */ /** @enum {string} */
export const enumSplitterVariants = { compact: "compact", compactInverse: "compact-inverse" }; export const enumSplitterVariants = {
compact: "compact",
compactInverse: "compact-inverse",
compactMerge: "compact-merge",
compactMergeInverse: "compact-merge-inverse",
};
export class MetaSplitterBuilding extends MetaBuilding { export class MetaSplitterBuilding extends MetaBuilding {
constructor() { constructor() {
@ -24,6 +29,8 @@ export class MetaSplitterBuilding extends MetaBuilding {
return new Vector(2, 1); return new Vector(2, 1);
case enumSplitterVariants.compact: case enumSplitterVariants.compact:
case enumSplitterVariants.compactInverse: case enumSplitterVariants.compactInverse:
case enumSplitterVariants.compactMerge:
case enumSplitterVariants.compactMergeInverse:
return new Vector(1, 1); return new Vector(1, 1);
default: default:
assertAlways(false, "Unknown splitter variant: " + variant); assertAlways(false, "Unknown splitter variant: " + variant);
@ -48,14 +55,17 @@ export class MetaSplitterBuilding extends MetaBuilding {
* @param {GameRoot} root * @param {GameRoot} root
*/ */
getAvailableVariants(root) { getAvailableVariants(root) {
let available = [defaultBuildingVariant];
if (root.hubGoals.isRewardUnlocked(enumHubGoalRewards.reward_splitter_compact)) { if (root.hubGoals.isRewardUnlocked(enumHubGoalRewards.reward_splitter_compact)) {
return [ available.push(enumSplitterVariants.compact, enumSplitterVariants.compactInverse);
defaultBuildingVariant,
enumSplitterVariants.compact,
enumSplitterVariants.compactInverse,
];
} }
return super.getAvailableVariants(root);
if (root.hubGoals.isRewardUnlocked(enumHubGoalRewards.reward_merger_compact)) {
available.push(enumSplitterVariants.compactMerge, enumSplitterVariants.compactMergeInverse);
}
return available;
} }
/** /**
@ -151,8 +161,37 @@ export class MetaSplitterBuilding extends MetaBuilding {
break; break;
} }
case enumSplitterVariants.compactMerge:
case enumSplitterVariants.compactMergeInverse: {
entity.components.ItemAcceptor.setSlots([
{
pos: new Vector(0, 0),
directions: [enumDirection.bottom],
},
]);
entity.components.ItemEjector.setSlots([
{
pos: new Vector(0, 0),
direction: enumDirection.top,
},
{
pos: new Vector(0, 0),
direction:
variant === enumSplitterVariants.compactMergeInverse
? enumDirection.left
: enumDirection.right,
},
]);
entity.components.BeltUnderlays.underlays = [
{ pos: new Vector(0, 0), direction: enumDirection.top },
];
break;
}
default: default:
assertAlways(false, "Unknown painter variant: " + variant); assertAlways(false, "Unknown splitter variant: " + variant);
} }
} }
} }

View File

@ -0,0 +1,151 @@
import { Vector, enumDirection } from "../../core/vector";
import { LogicGateComponent, enumLogicGateType } from "../components/logic_gate";
import { WiredPinsComponent, enumPinSlotType } from "../components/wired_pins";
import { Entity } from "../entity";
import { defaultBuildingVariant, MetaBuilding } from "../meta_building";
import { GameRoot } from "../root";
/** @enum {string} */
export const enumVirtualProcessorVariants = {
analyzer: "analyzer",
rotater: "rotater",
unstacker: "unstacker",
shapecompare: "shapecompare",
};
/** @enum {string} */
export const enumVariantToGate = {
[defaultBuildingVariant]: enumLogicGateType.cutter,
[enumVirtualProcessorVariants.analyzer]: enumLogicGateType.analyzer,
[enumVirtualProcessorVariants.rotater]: enumLogicGateType.rotater,
[enumVirtualProcessorVariants.unstacker]: enumLogicGateType.unstacker,
[enumVirtualProcessorVariants.shapecompare]: enumLogicGateType.shapecompare,
};
export class MetaVirtualProcessorBuilding extends MetaBuilding {
constructor() {
super("virtual_processor");
}
getSilhouetteColor() {
return "#823cab";
}
/**
* @param {GameRoot} root
*/
getIsUnlocked(root) {
// @todo
return true;
}
/** @returns {"wires"} **/
getLayer() {
return "wires";
}
getDimensions() {
return new Vector(1, 1);
}
getAvailableVariants() {
return [
defaultBuildingVariant,
enumVirtualProcessorVariants.rotater,
enumVirtualProcessorVariants.unstacker,
enumVirtualProcessorVariants.analyzer,
enumVirtualProcessorVariants.shapecompare,
];
}
getRenderPins() {
// We already have it included
return false;
}
/**
*
* @param {Entity} entity
* @param {number} rotationVariant
*/
updateVariants(entity, rotationVariant, variant) {
const gateType = enumVariantToGate[variant];
entity.components.LogicGate.type = gateType;
const pinComp = entity.components.WiredPins;
switch (gateType) {
case enumLogicGateType.cutter:
case enumLogicGateType.analyzer:
case enumLogicGateType.unstacker: {
pinComp.setSlots([
{
pos: new Vector(0, 0),
direction: enumDirection.left,
type: enumPinSlotType.logicalEjector,
},
{
pos: new Vector(0, 0),
direction: enumDirection.right,
type: enumPinSlotType.logicalEjector,
},
{
pos: new Vector(0, 0),
direction: enumDirection.bottom,
type: enumPinSlotType.logicalAcceptor,
},
]);
break;
}
case enumLogicGateType.rotater: {
pinComp.setSlots([
{
pos: new Vector(0, 0),
direction: enumDirection.top,
type: enumPinSlotType.logicalEjector,
},
{
pos: new Vector(0, 0),
direction: enumDirection.bottom,
type: enumPinSlotType.logicalAcceptor,
},
]);
break;
}
case enumLogicGateType.shapecompare: {
pinComp.setSlots([
{
pos: new Vector(0, 0),
direction: enumDirection.top,
type: enumPinSlotType.logicalEjector,
},
{
pos: new Vector(0, 0),
direction: enumDirection.left,
type: enumPinSlotType.logicalAcceptor,
},
{
pos: new Vector(0, 0),
direction: enumDirection.right,
type: enumPinSlotType.logicalAcceptor,
},
]);
break;
}
default:
assertAlways("unknown logic gate type: " + gateType);
}
}
/**
* Creates the entity at the given location
* @param {Entity} entity
*/
setupEntityComponents(entity) {
entity.addComponent(
new WiredPinsComponent({
slots: [],
})
);
entity.addComponent(new LogicGateComponent({}));
}
}

View File

@ -7,6 +7,12 @@ export const enumLogicGateType = {
xor: "xor", xor: "xor",
or: "or", or: "or",
transistor: "transistor", transistor: "transistor",
analyzer: "analyzer",
rotater: "rotater",
unstacker: "unstacker",
cutter: "cutter",
shapecompare: "shapecompare",
}; };
export class LogicGateComponent extends Component { export class LogicGateComponent extends Component {

View File

@ -334,6 +334,7 @@ export class HUDBuildingPlacer extends HUDBuildingPlacerLogic {
} }
// Synchronize rotation and origin // Synchronize rotation and origin
this.fakeEntity.layer = metaBuilding.getLayer();
const staticComp = this.fakeEntity.components.StaticMapEntity; const staticComp = this.fakeEntity.components.StaticMapEntity;
staticComp.origin = mouseTile; staticComp.origin = mouseTile;
staticComp.rotation = rotation; staticComp.rotation = rotation;

View File

@ -641,7 +641,10 @@ export class HUDBuildingPlacerLogic extends BaseHUDPart {
} }
// Deletion // Deletion
if (button === enumMouseButton.right && !metaBuilding) { if (
button === enumMouseButton.right &&
(!metaBuilding || !this.root.app.settings.getAllSettings().clearCursorOnDeleteWhilePlacing)
) {
this.currentlyDragging = true; this.currentlyDragging = true;
this.currentlyDeleting = true; this.currentlyDeleting = true;
this.lastDragTile = this.root.camera.screenToWorld(pos).toTileSpace(); this.lastDragTile = this.root.camera.screenToWorld(pos).toTileSpace();

View File

@ -271,10 +271,19 @@ export class HUDMassSelector extends BaseHUDPart {
parameters.context.fillStyle = THEME.map.selectionOverlay; parameters.context.fillStyle = THEME.map.selectionOverlay;
const renderedUids = new Set();
for (let x = realTileStart.x; x <= realTileEnd.x; ++x) { for (let x = realTileStart.x; x <= realTileEnd.x; ++x) {
for (let y = realTileStart.y; y <= realTileEnd.y; ++y) { for (let y = realTileStart.y; y <= realTileEnd.y; ++y) {
const contents = this.root.map.getLayerContentXY(x, y, this.root.currentLayer); const contents = this.root.map.getLayerContentXY(x, y, this.root.currentLayer);
if (contents && this.root.logic.canDeleteBuilding(contents)) { if (contents && this.root.logic.canDeleteBuilding(contents)) {
// Prevent rendering the overlay twice
const uid = contents.uid;
if (renderedUids.has(uid)) {
continue;
}
renderedUids.add(uid);
const staticComp = contents.components.StaticMapEntity; const staticComp = contents.components.StaticMapEntity;
const bounds = staticComp.getTileSpaceBounds(); const bounds = staticComp.getTileSpaceBounds();
parameters.context.beginRoundedRect( parameters.context.beginRoundedRect(

View File

@ -84,7 +84,7 @@ export class HUDShapeViewer extends BaseHUDPart {
const layers = definition.layers; const layers = definition.layers;
this.contentDiv.setAttribute("data-layers", layers.length); this.contentDiv.setAttribute("data-layers", layers.length);
for (let i = 0; i < layers.length; ++i) { for (let i = layers.length - 1; i >= 0; --i) {
const layerElem = makeDiv(this.renderArea, null, ["layer", "layer-" + i]); const layerElem = makeDiv(this.renderArea, null, ["layer", "layer-" + i]);
let fakeLayers = []; let fakeLayers = [];

View File

@ -47,9 +47,11 @@ export class HUDStatistics extends BaseHUDPart {
this.trackClicks(button, () => this.setDataSource(dataSource)); this.trackClicks(button, () => this.setDataSource(dataSource));
} }
const buttonDisplaySorted = makeButton(this.filtersDisplayMode, ["displaySorted"]);
const buttonDisplayDetailed = makeButton(this.filtersDisplayMode, ["displayDetailed"]); const buttonDisplayDetailed = makeButton(this.filtersDisplayMode, ["displayDetailed"]);
const buttonDisplayIcons = makeButton(this.filtersDisplayMode, ["displayIcons"]); const buttonDisplayIcons = makeButton(this.filtersDisplayMode, ["displayIcons"]);
this.trackClicks(buttonDisplaySorted, () => this.toggleSorted());
this.trackClicks(buttonDisplayIcons, () => this.setDisplayMode(enumDisplayMode.icons)); this.trackClicks(buttonDisplayIcons, () => this.setDisplayMode(enumDisplayMode.icons));
this.trackClicks(buttonDisplayDetailed, () => this.setDisplayMode(enumDisplayMode.detailed)); this.trackClicks(buttonDisplayDetailed, () => this.setDisplayMode(enumDisplayMode.detailed));
@ -80,6 +82,21 @@ export class HUDStatistics extends BaseHUDPart {
} }
} }
/**
* @param {boolean} sorted
*/
setSorted(sorted) {
this.sorted = sorted;
this.dialogInner.setAttribute("data-sorted", String(sorted));
if (this.visible) {
this.rerenderFull();
}
}
toggleSorted() {
this.setSorted(!this.sorted);
}
initialize() { initialize() {
this.domAttach = new DynamicDomAttach(this.root, this.background, { this.domAttach = new DynamicDomAttach(this.root, this.background, {
attachClass: "visible", attachClass: "visible",
@ -95,6 +112,7 @@ export class HUDStatistics extends BaseHUDPart {
/** @type {Object.<string, HUDShapeStatisticsHandle>} */ /** @type {Object.<string, HUDShapeStatisticsHandle>} */
this.activeHandles = {}; this.activeHandles = {};
this.setSorted(true);
this.setDataSource(enumAnalyticsDataSource.produced); this.setDataSource(enumAnalyticsDataSource.produced);
this.setDisplayMode(enumDisplayMode.detailed); this.setDisplayMode(enumDisplayMode.detailed);
@ -183,7 +201,22 @@ export class HUDStatistics extends BaseHUDPart {
} }
} }
entries.sort((a, b) => b[1] - a[1]); const pinnedShapes = this.root.hud.parts.pinnedShapes;
entries.sort((a, b) => {
const aPinned = pinnedShapes.isShapePinned(a[0]);
const bPinned = pinnedShapes.isShapePinned(b[0]);
if (aPinned !== bPinned) {
return aPinned ? -1 : 1;
}
// Sort by shape key for some consistency
if (!this.sorted || b[1] == a[1]) {
return b[0].localeCompare(a[0]);
}
return b[1] - a[1];
});
let rendered = new Set(); let rendered = new Set();

View File

@ -74,6 +74,11 @@ export class HUDShapeStatisticsHandle {
return; return;
} }
this.element.classList.toggle(
"pinned",
this.root.hud.parts.pinnedShapes.isShapePinned(this.definition.getHash())
);
switch (dataSource) { switch (dataSource) {
case enumAnalyticsDataSource.stored: { case enumAnalyticsDataSource.stored: {
this.counter.innerText = formatBigNumber( this.counter.innerText = formatBigNumber(
@ -87,15 +92,10 @@ export class HUDShapeStatisticsHandle {
(this.root.productionAnalytics.getCurrentShapeRate(dataSource, this.definition) / (this.root.productionAnalytics.getCurrentShapeRate(dataSource, this.definition) /
globalConfig.analyticsSliceDurationSeconds) * globalConfig.analyticsSliceDurationSeconds) *
60; 60;
this.counter.innerText = T.ingame.statistics.shapesPerMinute.replace( this.counter.innerText = T.ingame.statistics.shapesPerSecond.replace(
"<shapes>", "<shapes>",
formatBigNumber(rate) formatBigNumber(rate / 60)
); );
if (G_IS_DEV && globalConfig.debug.detailedStatistics) {
this.counter.innerText = "" + round2Digits(rate / 60) + " /s";
}
break; break;
} }
} }

View File

@ -4,6 +4,7 @@ import { MetaConstantSignalBuilding } from "../../buildings/constant_signal";
import { MetaLogicGateBuilding } from "../../buildings/logic_gate"; import { MetaLogicGateBuilding } from "../../buildings/logic_gate";
import { MetaLeverBuilding } from "../../buildings/lever"; import { MetaLeverBuilding } from "../../buildings/lever";
import { MetaWireTunnelBuilding } from "../../buildings/wire_tunnel"; import { MetaWireTunnelBuilding } from "../../buildings/wire_tunnel";
import { MetaVirtualProcessorBuilding } from "../../buildings/virtual_processor";
const supportedBuildings = [ const supportedBuildings = [
MetaWireBuilding, MetaWireBuilding,
@ -11,6 +12,7 @@ const supportedBuildings = [
MetaConstantSignalBuilding, MetaConstantSignalBuilding,
MetaLogicGateBuilding, MetaLogicGateBuilding,
MetaLeverBuilding, MetaLeverBuilding,
MetaVirtualProcessorBuilding,
]; ];
export class HUDWiresToolbar extends HUDBaseToolbar { export class HUDWiresToolbar extends HUDBaseToolbar {

View File

@ -63,6 +63,7 @@ export const KEYMAPPINGS = {
wire_tunnel: { keyCode: key("2") }, wire_tunnel: { keyCode: key("2") },
constant_signal: { keyCode: key("3") }, constant_signal: { keyCode: key("3") },
logic_gate: { keyCode: key("4") }, logic_gate: { keyCode: key("4") },
virtual_processor: { keyCode: key("5") },
}, },
placement: { placement: {

View File

@ -47,16 +47,23 @@ export class MapChunkView extends MapChunk {
} }
/** /**
* Draws the foreground layer * Draws the dynamic foreground layer
* @param {DrawParameters} parameters * @param {DrawParameters} parameters
*/ */
drawForegroundLayer(parameters) { drawForegroundDynamicLayer(parameters) {
const systems = this.root.systemMgr.systems; const systems = this.root.systemMgr.systems;
systems.itemEjector.drawChunk(parameters, this); systems.itemEjector.drawChunk(parameters, this);
systems.itemAcceptor.drawChunk(parameters, this); systems.itemAcceptor.drawChunk(parameters, this);
systems.miner.drawChunk(parameters, this); systems.miner.drawChunk(parameters, this);
}
/**
* Draws the static foreground layer
* @param {DrawParameters} parameters
*/
drawForegroundStaticLayer(parameters) {
const systems = this.root.systemMgr.systems;
systems.staticMapEntities.drawChunk(parameters, this); systems.staticMapEntities.drawChunk(parameters, this);
systems.lever.drawChunk(parameters, this); systems.lever.drawChunk(parameters, this);

View File

@ -131,7 +131,8 @@ export class MapView extends BaseMap {
* @param {DrawParameters} parameters * @param {DrawParameters} parameters
*/ */
drawForeground(parameters) { drawForeground(parameters) {
this.drawVisibleChunks(parameters, MapChunkView.prototype.drawForegroundLayer); this.drawVisibleChunks(parameters, MapChunkView.prototype.drawForegroundDynamicLayer);
this.drawVisibleChunks(parameters, MapChunkView.prototype.drawForegroundStaticLayer);
} }
/** /**

View File

@ -21,6 +21,7 @@ import { MetaLeverBuilding } from "./buildings/lever";
import { MetaFilterBuilding } from "./buildings/filter"; import { MetaFilterBuilding } from "./buildings/filter";
import { MetaWireTunnelBuilding, enumWireTunnelVariants } from "./buildings/wire_tunnel"; import { MetaWireTunnelBuilding, enumWireTunnelVariants } from "./buildings/wire_tunnel";
import { MetaDisplayBuilding } from "./buildings/display"; import { MetaDisplayBuilding } from "./buildings/display";
import { MetaVirtualProcessorBuilding, enumVirtualProcessorVariants } from "./buildings/virtual_processor";
const logger = createLogger("building_registry"); const logger = createLogger("building_registry");
@ -43,6 +44,7 @@ export function initMetaBuildingRegistry() {
gMetaBuildingRegistry.register(MetaFilterBuilding); gMetaBuildingRegistry.register(MetaFilterBuilding);
gMetaBuildingRegistry.register(MetaWireTunnelBuilding); gMetaBuildingRegistry.register(MetaWireTunnelBuilding);
gMetaBuildingRegistry.register(MetaDisplayBuilding); gMetaBuildingRegistry.register(MetaDisplayBuilding);
gMetaBuildingRegistry.register(MetaVirtualProcessorBuilding);
// Belt // Belt
registerBuildingVariant(1, MetaBeltBaseBuilding, defaultBuildingVariant, 0); registerBuildingVariant(1, MetaBeltBaseBuilding, defaultBuildingVariant, 0);
@ -53,6 +55,8 @@ export function initMetaBuildingRegistry() {
registerBuildingVariant(4, MetaSplitterBuilding); registerBuildingVariant(4, MetaSplitterBuilding);
registerBuildingVariant(5, MetaSplitterBuilding, enumSplitterVariants.compact); registerBuildingVariant(5, MetaSplitterBuilding, enumSplitterVariants.compact);
registerBuildingVariant(6, MetaSplitterBuilding, enumSplitterVariants.compactInverse); registerBuildingVariant(6, MetaSplitterBuilding, enumSplitterVariants.compactInverse);
registerBuildingVariant(47, MetaSplitterBuilding, enumSplitterVariants.compactMerge);
registerBuildingVariant(48, MetaSplitterBuilding, enumSplitterVariants.compactMergeInverse);
// Miner // Miner
registerBuildingVariant(7, MetaMinerBuilding); registerBuildingVariant(7, MetaMinerBuilding);
@ -121,6 +125,13 @@ export function initMetaBuildingRegistry() {
// Display // Display
registerBuildingVariant(40, MetaDisplayBuilding); registerBuildingVariant(40, MetaDisplayBuilding);
// Virtual Processor
registerBuildingVariant(42, MetaVirtualProcessorBuilding);
registerBuildingVariant(43, MetaVirtualProcessorBuilding, enumVirtualProcessorVariants.analyzer);
registerBuildingVariant(44, MetaVirtualProcessorBuilding, enumVirtualProcessorVariants.rotater);
registerBuildingVariant(45, MetaVirtualProcessorBuilding, enumVirtualProcessorVariants.unstacker);
registerBuildingVariant(46, MetaVirtualProcessorBuilding, enumVirtualProcessorVariants.shapecompare);
// Propagate instances // Propagate instances
for (const key in gBuildingVariants) { for (const key in gBuildingVariants) {
gBuildingVariants[key].metaInstance = gMetaBuildingRegistry.findByClass( gBuildingVariants[key].metaInstance = gMetaBuildingRegistry.findByClass(

View File

@ -85,7 +85,7 @@ export class ShapeDefinition extends BasicSerializableObject {
return errorCode; return errorCode;
} }
const definition = ShapeDefinition.fromShortKey(data); const definition = ShapeDefinition.fromShortKey(data);
this.layers = definition.layers; this.layers = /** @type {Array<ShapeLayer>} */ (definition.layers);
} }
serialize() { serialize() {
@ -102,7 +102,8 @@ export class ShapeDefinition extends BasicSerializableObject {
/** /**
* The layers from bottom to top * The layers from bottom to top
* @type {Array<ShapeLayer>} */ * @type {Array<ShapeLayer>}
*/
this.layers = layers; this.layers = layers;
/** @type {string} */ /** @type {string} */
@ -600,7 +601,7 @@ export class ShapeDefinition extends BasicSerializableObject {
for (let quadrantIndex = 0; quadrantIndex < 4; ++quadrantIndex) { for (let quadrantIndex = 0; quadrantIndex < 4; ++quadrantIndex) {
const item = quadrants[quadrantIndex]; const item = quadrants[quadrantIndex];
if (item) { if (item) {
item.color = colors[quadrantIndex] || item.color; item.color = colors[quadrantIndex] || null;
} }
} }
} }

View File

@ -52,6 +52,7 @@ export class ConstantSignalSystem extends GameSystemWithFilter {
desc: "Enter a shape code, color or '0' or '1'", desc: "Enter a shape code, color or '0' or '1'",
formElements: [signalValueInput], formElements: [signalValueInput],
buttons: ["cancel:bad:escape", "ok:good:enter"], buttons: ["cancel:bad:escape", "ok:good:enter"],
closeButton: false,
}); });
this.root.hud.parts.dialogs.internalShowDialog(dialog); this.root.hud.parts.dialogs.internalShowDialog(dialog);
@ -106,6 +107,11 @@ export class ConstantSignalSystem extends GameSystemWithFilter {
* @returns {BaseItem} * @returns {BaseItem}
*/ */
parseSignalCode(code) { parseSignalCode(code) {
if (!this.root || !this.root.shapeDefinitionMgr) {
// Stale reference
return null;
}
code = trim(code); code = trim(code);
const codeLower = code.toLowerCase(); const codeLower = code.toLowerCase();

View File

@ -37,14 +37,7 @@ export class LeverSystem extends GameSystemWithFilter {
const leverComp = entity.components.Lever; const leverComp = entity.components.Lever;
if (leverComp) { if (leverComp) {
const sprite = leverComp.toggled ? this.spriteOn : this.spriteOff; const sprite = leverComp.toggled ? this.spriteOn : this.spriteOff;
const origin = entity.components.StaticMapEntity.origin; entity.components.StaticMapEntity.drawSpriteOnBoundsClipped(parameters, sprite);
sprite.drawCached(
parameters,
origin.x * globalConfig.tileSize,
origin.y * globalConfig.tileSize,
globalConfig.tileSize,
globalConfig.tileSize
);
} }
} }
} }

View File

@ -1,9 +1,12 @@
import { LogicGateComponent, enumLogicGateType } from "../components/logic_gate";
import { GameSystemWithFilter } from "../game_system_with_filter";
import { BaseItem } from "../base_item"; import { BaseItem } from "../base_item";
import { enumColors } from "../colors";
import { enumLogicGateType, LogicGateComponent } from "../components/logic_gate";
import { enumPinSlotType } from "../components/wired_pins"; import { enumPinSlotType } from "../components/wired_pins";
import { BOOL_TRUE_SINGLETON, BOOL_FALSE_SINGLETON, BooleanItem } from "../items/boolean_item"; import { GameSystemWithFilter } from "../game_system_with_filter";
import { enumItemProcessorTypes } from "../components/item_processor"; import { BOOL_FALSE_SINGLETON, BOOL_TRUE_SINGLETON, BooleanItem } from "../items/boolean_item";
import { COLOR_ITEM_SINGLETONS } from "../items/color_item";
import { ShapeDefinition } from "../shape_definition";
import { ShapeItem } from "../items/shape_item";
export class LogicGateSystem extends GameSystemWithFilter { export class LogicGateSystem extends GameSystemWithFilter {
constructor(root) { constructor(root) {
@ -15,6 +18,12 @@ export class LogicGateSystem extends GameSystemWithFilter {
[enumLogicGateType.xor]: this.compute_XOR.bind(this), [enumLogicGateType.xor]: this.compute_XOR.bind(this),
[enumLogicGateType.or]: this.compute_OR.bind(this), [enumLogicGateType.or]: this.compute_OR.bind(this),
[enumLogicGateType.transistor]: this.compute_IF.bind(this), [enumLogicGateType.transistor]: this.compute_IF.bind(this),
[enumLogicGateType.rotater]: this.compute_ROTATE.bind(this),
[enumLogicGateType.analyzer]: this.compute_ANALYZE.bind(this),
[enumLogicGateType.cutter]: this.compute_CUT.bind(this),
[enumLogicGateType.unstacker]: this.compute_UNSTACK.bind(this),
[enumLogicGateType.shapecompare]: this.compute_SHAPECOMPARE.bind(this),
}; };
} }
@ -40,16 +49,26 @@ export class LogicGateSystem extends GameSystemWithFilter {
const result = this.boundOperations[logicComp.type](slotValues); const result = this.boundOperations[logicComp.type](slotValues);
if (Array.isArray(result)) {
let resultIndex = 0;
for (let i = 0; i < slotComp.slots.length; ++i) {
const slot = slotComp.slots[i];
if (slot.type !== enumPinSlotType.logicalEjector) {
continue;
}
slot.value = result[resultIndex++];
}
} else {
// @TODO: For now we hardcode the value to always be slot 0 // @TODO: For now we hardcode the value to always be slot 0
assert( assert(
slotValues.length === slotComp.slots.length - 1, slotValues.length === slotComp.slots.length - 1,
"Bad slot config, should have N acceptor slots and 1 ejector" "Bad slot config, should have N acceptor slots and 1 ejector"
); );
assert(slotComp.slots[0].type === enumPinSlotType.logicalEjector, "Slot 0 should be ejector"); assert(slotComp.slots[0].type === enumPinSlotType.logicalEjector, "Slot 0 should be ejector");
slotComp.slots[0].value = result; slotComp.slots[0].value = result;
} }
} }
}
/** /**
* @param {Array<BaseItem|null>} parameters * @param {Array<BaseItem|null>} parameters
@ -177,4 +196,131 @@ export class LogicGateSystem extends GameSystemWithFilter {
return null; return null;
} }
/**
* @param {Array<BaseItem|null>} parameters
* @returns {BaseItem}
*/
compute_ROTATE(parameters) {
const item = parameters[0];
if (!item || item.getItemType() !== "shape") {
// Not a shape
return null;
}
const definition = /** @type {ShapeItem} */ (item).definition;
const rotatedDefinition = this.root.shapeDefinitionMgr.shapeActionRotateCW(definition);
return this.root.shapeDefinitionMgr.getShapeItemFromDefinition(rotatedDefinition);
}
/**
* @param {Array<BaseItem|null>} parameters
* @returns {[BaseItem, BaseItem]}
*/
compute_ANALYZE(parameters) {
const item = parameters[0];
if (!item || item.getItemType() !== "shape") {
// Not a shape
return [null, null];
}
const definition = /** @type {ShapeItem} */ (item).definition;
const lowerLayer = /** @type {import("../shape_definition").ShapeLayer} */ (definition.layers[0]);
if (!lowerLayer) {
return [null, null];
}
const topRightContent = lowerLayer[0];
if (!topRightContent || topRightContent.subShape === null) {
return [null, null];
}
const newDefinition = new ShapeDefinition({
layers: [
[
{ subShape: topRightContent.subShape, color: enumColors.uncolored },
{ subShape: topRightContent.subShape, color: enumColors.uncolored },
{ subShape: topRightContent.subShape, color: enumColors.uncolored },
{ subShape: topRightContent.subShape, color: enumColors.uncolored },
],
],
});
return [
COLOR_ITEM_SINGLETONS[topRightContent.color],
this.root.shapeDefinitionMgr.getShapeItemFromDefinition(newDefinition),
];
}
/**
* @param {Array<BaseItem|null>} parameters
* @returns {[BaseItem, BaseItem]}
*/
compute_CUT(parameters) {
const item = parameters[0];
if (!item || item.getItemType() !== "shape") {
// Not a shape
return [null, null];
}
const definition = /** @type {ShapeItem} */ (item).definition;
const result = this.root.shapeDefinitionMgr.shapeActionCutHalf(definition);
return [
result[0].isEntirelyEmpty()
? null
: this.root.shapeDefinitionMgr.getShapeItemFromDefinition(result[0]),
result[1].isEntirelyEmpty()
? null
: this.root.shapeDefinitionMgr.getShapeItemFromDefinition(result[1]),
];
}
/**
* @param {Array<BaseItem|null>} parameters
* @returns {[BaseItem, BaseItem]}
*/
compute_UNSTACK(parameters) {
const item = parameters[0];
if (!item || item.getItemType() !== "shape") {
// Not a shape
return [null, null];
}
const definition = /** @type {ShapeItem} */ (item).definition;
const layers = /** @type {Array<import("../shape_definition").ShapeLayer>} */ (definition.layers);
const upperLayerDefinition = new ShapeDefinition({
layers: [layers[layers.length - 1]],
});
const lowerLayers = layers.slice(0, layers.length - 1);
const lowerLayerDefinition =
lowerLayers.length > 0 ? new ShapeDefinition({ layers: lowerLayers }) : null;
return [
lowerLayerDefinition
? this.root.shapeDefinitionMgr.getShapeItemFromDefinition(lowerLayerDefinition)
: null,
this.root.shapeDefinitionMgr.getShapeItemFromDefinition(upperLayerDefinition),
];
}
/**
* @param {Array<BaseItem|null>} parameters
* @returns {BaseItem}
*/
compute_SHAPECOMPARE(parameters) {
const itemA = parameters[0];
const itemB = parameters[1];
return itemA &&
itemB &&
itemA.getItemType() === "shape" &&
itemB.getItemType() === "shape" &&
/** @type {ShapeItem} */ (itemA).definition.getHash() ===
/** @type {ShapeItem} */ (itemB).definition.getHash()
? BOOL_TRUE_SINGLETON
: BOOL_FALSE_SINGLETON;
}
} }

View File

@ -24,6 +24,9 @@ export const enumHubGoalRewards = {
reward_painter_quad: "reward_painter_quad", reward_painter_quad: "reward_painter_quad",
reward_storage: "reward_storage", reward_storage: "reward_storage",
// @todo: unlock
reward_merger_compact: "reward_compact_merger",
reward_blueprints: "reward_blueprints", reward_blueprints: "reward_blueprints",
reward_freeplay: "reward_freeplay", reward_freeplay: "reward_freeplay",

View File

@ -243,6 +243,7 @@ export const allApplicationSettings = [
}), }),
new BoolSetting("alwaysMultiplace", enumCategories.advanced, (app, value) => {}), new BoolSetting("alwaysMultiplace", enumCategories.advanced, (app, value) => {}),
new BoolSetting("clearCursorOnDeleteWhilePlacing", enumCategories.advanced, (app, value) => {}),
new BoolSetting("enableTunnelSmartplace", enumCategories.advanced, (app, value) => {}), new BoolSetting("enableTunnelSmartplace", enumCategories.advanced, (app, value) => {}),
new BoolSetting("vignette", enumCategories.userInterface, (app, value) => {}), new BoolSetting("vignette", enumCategories.userInterface, (app, value) => {}),
new BoolSetting("compactBuildingInfo", enumCategories.userInterface, (app, value) => {}), new BoolSetting("compactBuildingInfo", enumCategories.userInterface, (app, value) => {}),
@ -289,6 +290,7 @@ class SettingsStorage {
this.compactBuildingInfo = false; this.compactBuildingInfo = false;
this.disableCutDeleteWarnings = false; this.disableCutDeleteWarnings = false;
this.rotationByBuilding = true; this.rotationByBuilding = true;
this.clearCursorOnDeleteWhilePlacing = true;
this.enableColorBlindHelper = false; this.enableColorBlindHelper = false;
@ -495,7 +497,7 @@ export class ApplicationSettings extends ReadWriteProxy {
} }
getCurrentVersion() { getCurrentVersion() {
return 21; return 22;
} }
/** @param {{settings: SettingsStorage, version: number}} data */ /** @param {{settings: SettingsStorage, version: number}} data */
@ -588,6 +590,11 @@ export class ApplicationSettings extends ReadWriteProxy {
data.version = 21; data.version = 21;
} }
if (data.version < 22) {
data.settings.clearCursorOnDeleteWhilePlacing = true;
data.version = 22;
}
return ExplainedResult.good(); return ExplainedResult.good();
} }
} }

View File

@ -37,7 +37,7 @@ export class SavegameManager extends ReadWriteProxy {
} }
getCurrentVersion() { getCurrentVersion() {
return 1001; return 1002;
} }
/** /**
@ -64,6 +64,13 @@ export class SavegameManager extends ReadWriteProxy {
data.version = 1001; data.version = 1001;
} }
if (data.version < 1002) {
data.savegames.forEach(savegame => {
savegame.name = null;
});
data.version = 1002;
}
return ExplainedResult.good(); return ExplainedResult.good();
} }

View File

@ -27,6 +27,7 @@
* version: number, * version: number,
* internalId: string, * internalId: string,
* level: number * level: number
* name: string|null
* }} SavegameMetadata * }} SavegameMetadata
* *
* @typedef {{ * @typedef {{

View File

@ -14,6 +14,8 @@ import { ReadWriteProxy } from "../core/read_write_proxy";
import { HUDModalDialogs } from "../game/hud/parts/modal_dialogs"; import { HUDModalDialogs } from "../game/hud/parts/modal_dialogs";
import { T } from "../translations"; import { T } from "../translations";
import { getApplicationSettingById } from "../profile/application_settings"; import { getApplicationSettingById } from "../profile/application_settings";
import { FormElementInput } from "../core/modal_dialog_forms";
import { DialogWithForm } from "../core/modal_dialog_elements";
/** /**
* @typedef {import("../savegame/savegame_typedefs").SavegameMetadata} SavegameMetadata * @typedef {import("../savegame/savegame_typedefs").SavegameMetadata} SavegameMetadata
@ -392,6 +394,13 @@ export class MainMenuState extends GameState {
: T.mainMenu.savegameLevelUnknown : T.mainMenu.savegameLevelUnknown
); );
const name = makeDiv(
elem,
null,
["name"],
"<span>" + (games[i].name ? games[i].name : T.mainMenu.savegameUnnamed) + "</span>"
);
const deleteButton = document.createElement("button"); const deleteButton = document.createElement("button");
deleteButton.classList.add("styledButton", "deleteGame"); deleteButton.classList.add("styledButton", "deleteGame");
elem.appendChild(deleteButton); elem.appendChild(deleteButton);
@ -400,6 +409,10 @@ export class MainMenuState extends GameState {
downloadButton.classList.add("styledButton", "downloadGame"); downloadButton.classList.add("styledButton", "downloadGame");
elem.appendChild(downloadButton); elem.appendChild(downloadButton);
const renameButton = document.createElement("button");
renameButton.classList.add("styledButton", "renameGame");
name.appendChild(renameButton);
const resumeButton = document.createElement("button"); const resumeButton = document.createElement("button");
resumeButton.classList.add("styledButton", "resumeGame"); resumeButton.classList.add("styledButton", "resumeGame");
elem.appendChild(resumeButton); elem.appendChild(resumeButton);
@ -407,10 +420,41 @@ export class MainMenuState extends GameState {
this.trackClicks(deleteButton, () => this.deleteGame(games[i])); this.trackClicks(deleteButton, () => this.deleteGame(games[i]));
this.trackClicks(downloadButton, () => this.downloadGame(games[i])); this.trackClicks(downloadButton, () => this.downloadGame(games[i]));
this.trackClicks(resumeButton, () => this.resumeGame(games[i])); this.trackClicks(resumeButton, () => this.resumeGame(games[i]));
this.trackClicks(renameButton, () => this.requestRenameSavegame(games[i]));
} }
} }
} }
/**
* @param {SavegameMetadata} game
*/
requestRenameSavegame(game) {
const regex = /^[a-zA-Z0-9_\- ]{1,20}$/;
const nameInput = new FormElementInput({
id: "nameInput",
label: null,
placeholder: "",
defaultValue: game.name || "",
validator: val => val.match(regex),
});
const dialog = new DialogWithForm({
app: this.app,
title: T.dialogs.renameSavegame.title,
desc: T.dialogs.renameSavegame.desc,
formElements: [nameInput],
buttons: ["cancel:bad:escape", "ok:good:enter"],
});
this.dialogs.internalShowDialog(dialog);
// When confirmed, save the name
dialog.buttonSignals.ok.add(() => {
game.name = nameInput.getValue();
this.app.savegameMgr.writeAsync();
this.renderSavegames();
});
}
/** /**
* @param {SavegameMetadata} game * @param {SavegameMetadata} game
*/ */
@ -473,7 +517,8 @@ export class MainMenuState extends GameState {
const savegame = this.app.savegameMgr.getSavegameById(game.internalId); const savegame = this.app.savegameMgr.getSavegameById(game.internalId);
savegame.readAsync().then(() => { savegame.readAsync().then(() => {
const data = ReadWriteProxy.serializeObject(savegame.currentData); const data = ReadWriteProxy.serializeObject(savegame.currentData);
generateFileDownload(savegame.filename, data); const filename = (game.name || "unnamed") + ".bin";
generateFileDownload(filename, data);
}); });
} }

View File

@ -17,7 +17,7 @@ export class MobileWarningState extends GameState {
There is also no estimate when this will change, but feel to make a contribution! It's There is also no estimate when this will change, but feel to make a contribution! It's
&nbsp;<a href="https://github.com/tobspr/shapez.io" target="_blank">open source</a>!</p> &nbsp;<a href="https://github.com/tobspr/shapez.io" target="_blank">open source</a>!</p>
<p>If you want to play on your computer, you can also get the standalone on steam:</p> <p>If you want to play on your computer, you can also get the standalone on Steam:</p>
<a href="${ <a href="${

View File

@ -25,7 +25,7 @@ steamPage:
shortText: shapez.io és un joc que té com a objectiu construir i automatitzar fàbriques per tal de produir figures cada cop més complexes en un mapa infinit. shortText: shapez.io és un joc que té com a objectiu construir i automatitzar fàbriques per tal de produir figures cada cop més complexes en un mapa infinit.
# This is the text shown above the Discord link # This is the text shown above the Discord link
discordLink: Official Discord - Chat with me! discordLink: Discord Oficial (en Anglès)
# This is the long description for the steam page - It is contained here so you can help to translate it, and I will regulary update the store page. # This is the long description for the steam page - It is contained here so you can help to translate it, and I will regulary update the store page.
# NOTICE: # NOTICE:
@ -34,50 +34,50 @@ steamPage:
longText: >- longText: >-
[img]{STEAM_APP_IMAGE}/extras/store_page_gif.gif[/img] [img]{STEAM_APP_IMAGE}/extras/store_page_gif.gif[/img]
shapez.io is a game about building factories to automate the creation and processing of increasingly complex shapes across an infinitely expanding map. shapez.io és un joc que té com a objectiu construir i automatitzar fàbriques per tal de produir figures cada cop més complexes en un mapa infinit.
Upon delivering the requested shapes you'll progress within the game and unlock upgrades to speed up your factory. Al lliurar les formes geomètriques sol·licitades, progressaràs i desbloquejaràs millores per accelerar la teva fàbrica.
As the demand for shapes increases, you'll have to scale up your factory to meet the demand - Don't forget about resources though, you'll have to expand across the [b]infinite map[/b]! Com que la demanda de figures va augmentant, hauràs de augmentar proporcionalment la teva fàbrica per satisfer la demanda. Però no t'oblidis dels recursos, ja que t'hauràs d'expandre a través del [b]mapa infinit[/b]!
Soon you'll have to mix colors and paint your shapes with them - Combine red, green and blue color resources to produce different colors and paint shapes with them to satisfy the demand. Sovint, hauràs de començar a mesclar color i pintar les figures amb aquests; combina roig, verd i blau per produïr diferents colors i pintar les figures amb aquests per satisfer la demanda.
This game features 18 progressive levels (Which should already keep you busy for hours!) but I'm constantly adding new content - There's a lot planned! Aquest joc presenta 18 nivells progressius (Els quals ja haurien de mantenir-te ocupat durant hores!) però estic constantment afegint nou contingut. Tenim moltes coses planejades!
Purchasing the game gives you access to the standalone version which has additional features, and you'll also receive access to newly developed features. La compra del joc et dona accés a versió independent amb característiques adicionals, i també rebràs accés a les noves característiques que es desenvolupin.
[b]Standalone Advantages[/b] [b]Ventatges de la Versió Independent[/b]
[list] [list]
[*] Dark Mode [*] Mode Oscur
[*] Unlimited Waypoints [*] Punts d'interès il·limitats
[*] Unlimited Savegames [*] Guardar partides il·limitades
[*] Additional settings [*] Configuracions Adicionals
[*] Coming soon: Wires & Energy! Aiming for (roughly) end of July 2020. [*] Pròximament: Cables i Energia! Objectiu (aproximadament) per finals de Juliol del 2020.
[*] Coming soon: More Levels [*] Pròximament: Més Nivells
[*] Allows me to further develop shapez.io ❤️ [*] Em permet seguir desenvolupant shapez.io ❤️
[/list] [/list]
[b]Future Updates[/b] [b]Futures Actualitzacions[/b]
I am updating the game often and trying to push an update at least once every week! Actualitzo el joc sovint i intent treure una actualització nova per setmana!
[list] [list]
[*] Different maps and challenges (e.g. maps with obstacles) [*] Mapes i reptes diferents (p.e. mapes amb obstacles)
[*] Puzzles (Deliver the requested shape with a restricted area / set of buildings) [*] Trencaclosques (Entrega la figura amb una àrea/conjunt d'edificis delimitats)
[*] A story mode where buildings have a cost [*] Un "Mode Història" on els edificis tenen un cost
[*] Configurable map generator (Configure resource/shape size/density, seed and more) [*] Generador de mapes configurable (Configura el tamany/densitat de les formes/recursos, llavors i més)
[*] Additional types of shapes [*] Formes geomètriques adicionals
[*] Performance improvements (The game already runs pretty well!) [*] Millores de rendiment (El joc ja funciona força bé!)
[*] And much more! [*] Moltes coses més!
[/list] [/list]
[b]This game is open source![/b] [b]Aquest joc és de codi obert![/b]
Anybody can contribute, I'm actively involved in the community and attempt to review all suggestions and take feedback into consideration where possible. Qualsevol pot contribuir, estic involucrat activament en la comunitat i intento revisar tots els suggeriments i tenir en compte els comentaris sempre que sigui possible.
Be sure to check out my trello board for the full roadmap! Assegureu-vos de consultar el meu tauler de trello per obtenir el full de ruta complet!
[b]Links[/b] [b]Enllaços[/b]
[list] [list]
[*] [url=https://discord.com/invite/HN7EVzV]Official Discord[/url] [*] [url=https://discord.com/invite/HN7EVzV]Official Discord[/url]
@ -174,7 +174,7 @@ dialogs:
importSavegameError: importSavegameError:
title: Error en importar title: Error en importar
text: >- text: >-
Failed to import your savegame: Ha ocurrit un error intentant importar la teva partida:
importSavegameSuccess: importSavegameSuccess:
title: Importar title: Importar
@ -184,7 +184,7 @@ dialogs:
gameLoadFailure: gameLoadFailure:
title: No es pot carregar la partida guardada title: No es pot carregar la partida guardada
text: >- text: >-
Failed to load your savegame: Ha ocurrit un error al intentar carregar la teva partida:
confirmSavegameDelete: confirmSavegameDelete:
title: Eliminar title: Eliminar
@ -194,7 +194,7 @@ dialogs:
savegameDeletionError: savegameDeletionError:
title: Error en eliminar title: Error en eliminar
text: >- text: >-
Failed to delete the savegame: Ha ocurrit un error al intentar eliminar la teva partida:
restartRequired: restartRequired:
title: Reiniciar title: Reiniciar
@ -240,12 +240,12 @@ dialogs:
massCutConfirm: massCutConfirm:
title: Tallar edificis title: Tallar edificis
desc: >- desc: >-
Estàs esborrant molts edificis de cop (<count> per ser exactes)! Estàs segur que vols seguir? Estàs tallant molts edificis de cop (<count> per ser exactes)! Estàs segur que vols seguir?
massCutInsufficientConfirm: massCutInsufficientConfirm:
title: Confirm cut title: Confirmar tallar
desc: >- desc: >-
You can not afford to paste this area! Are you sure you want to cut it? No pots aferrar a aquesta zona! Estàs segur de que vols tallarla?
blueprintsNotUnlocked: blueprintsNotUnlocked:
title: Encara no s'ha desbloquejat title: Encara no s'ha desbloquejat
@ -271,7 +271,7 @@ dialogs:
desc: En la Demo només pots crear dos marcadors, aconsegueix la versió completa per gaudir de l'experiència completa! desc: En la Demo només pots crear dos marcadors, aconsegueix la versió completa per gaudir de l'experiència completa!
exportScreenshotWarning: exportScreenshotWarning:
title: Export screenshot title: Exportar Captura de Pantalla
desc: Has demanat exportar la teva/teua base com una captura de pantalla. Tin en conte que aquest procés pot ser molt lent i inclús crashear el teu joc! desc: Has demanat exportar la teva/teua base com una captura de pantalla. Tin en conte que aquest procés pot ser molt lent i inclús crashear el teu joc!
ingame: ingame:
@ -307,7 +307,7 @@ ingame:
purple: Morat purple: Morat
cyan: Cian cyan: Cian
white: Blanc white: Blanc
black: Black black: Negre
uncolored: Sense color uncolored: Sense color
# Everything related to placing buildings (I.e. as soon as you selected a building # Everything related to placing buildings (I.e. as soon as you selected a building
@ -315,7 +315,7 @@ ingame:
buildingPlacement: buildingPlacement:
# Buildings can have different variants which are unlocked at later levels, # Buildings can have different variants which are unlocked at later levels,
# and this is the hint shown when there are multiple variants available. # and this is the hint shown when there are multiple variants available.
cycleBuildingVariants: Pulsa <key> per a ciclar entre variants. cycleBuildingVariants: Prem <key> per a ciclar entre variants.
# Shows the hotkey in the ui, e.g. "Hotkey: Q" # Shows the hotkey in the ui, e.g. "Hotkey: Q"
hotkeyLabel: >- hotkeyLabel: >-
@ -687,139 +687,139 @@ settings:
disabled: Desactivat disabled: Desactivat
scrollWheelSensitivity: scrollWheelSensitivity:
title: Zoom sensitivity title: Sensitivitat del Zoom
description: >- description: >-
Changes how sensitive the zoom is (Either mouse wheel or trackpad). Canvia la sensitivitat del zoom (Roda del ratolí o del trackpad).
sensitivity: sensitivity:
super_slow: Super slow super_slow: Molt lent
slow: Slow slow: Lent
regular: Regular regular: Regular
fast: Fast fast: Ràpid
super_fast: Super fast super_fast: Molt Ràpid
movementSpeed: movementSpeed:
title: Movement speed title: Velocitat de Moviment
description: >- description: >-
Changes how fast the view moves when using the keyboard. Canvia la rapidesa amb la que la vista es mou mentres empres el teclat.
speeds: speeds:
super_slow: Super slow super_slow: Molt lent
slow: Slow slow: Lent
regular: Regular regular: Regular
fast: Fast fast: Rápid
super_fast: Super Fast super_fast: Molt Ràpid
extremely_fast: Extremely Fast extremely_fast: Extremadament Ràpid
language: language:
title: Language title: Idioma
description: >- description: >-
Change the language. All translations are user-contributed and might be incomplete! Canvia l'idioma. Totes les traduccions són contribucions d'usuaris i poden estar incompletes!
enableColorBlindHelper: enableColorBlindHelper:
title: Color Blind Mode title: Mode per Daltònics
description: >- description: >-
Enables various tools which allow you to play the game if you are color blind. Habilita diverses eines que et permeten jugar si ets Daltònic.
fullscreen: fullscreen:
title: Fullscreen title: Pantalla Completa
description: >- description: >-
It is recommended to play the game in fullscreen to get the best experience. Only available in the standalone. Es recomana jugar en Pantalla Completa per aconseguir la millor experiència. Només disponible a la versió completa del joc.
soundsMuted: soundsMuted:
title: Mute Sounds title: Silencia els sons
description: >- description: >-
If enabled, mutes all sound effects. Si està activat, silencia tots els sons.
musicMuted: musicMuted:
title: Mute Music title: Silencia la música
description: >- description: >-
If enabled, mutes all music. Si està activat, silencia la música.
theme: theme:
title: Game theme title: Tema del joc (Visual)
description: >- description: >-
Choose the game theme (light / dark). Tria el tema visual (clar / oscur).
themes: themes:
dark: Dark dark: Oscur
light: Light light: Clar
refreshRate: refreshRate:
title: Simulation Target title: Objectiu de Simulació
description: >- description: >-
If you have a 144hz monitor, change the refresh rate here so the game will properly simulate at higher refresh rates. This might actually decrease the FPS if your computer is too slow. Si tens un monitor de 144hz, canvia la tarifa de refresc aquí per que el joc es mostri de forma correcta a tarifes de refresc altes. Pot decrementar els FPS si el teu ordenador és massa lent.
alwaysMultiplace: alwaysMultiplace:
title: Multiplace title: Col·locació Múltiple
description: >- description: >-
If enabled, all buildings will stay selected after placement until you cancel it. This is equivalent to holding SHIFT permanently. Si s'activa, tots els edificis es mantindràn seleccionats després de col·locarlos fins que ho cancel·lis. Això és equivalent a mantenir SHIFT permanentment.
offerHints: offerHints:
title: Hints & Tutorials title: Pistes i Tutorials
description: >- description: >-
Whether to offer hints and tutorials while playing. Also hides certain UI elements up to a given level to make it easier to get into the game. Si s'activa, es mostraràn pistes i tutorials mentres es juga. També amaga certs elements visuals fins a un nivell per que sigui més fàcil aprendre a jugar.
enableTunnelSmartplace: enableTunnelSmartplace:
title: Smart Tunnels title: Túnels Intel·ligents
description: >- description: >-
When enabled, placing tunnels will automatically remove unnecessary belts. This also enables you to drag tunnels and excess tunnels will get removed. Si s'activa, al col·locar túnels s'eliminaràn les cintes transportadores innecessaris. També et permet arrastrar túnels i els túnels sobrants s'eliminaràn.
vignette: vignette:
title: Vignette title: Vinyeta
description: >- description: >-
Enables the vignette, which darkens the screen corners and makes text easier to read. Activa la vinyeta, que obscureix els cantons de la pantalla i facilita la lectura de texte.
rotationByBuilding: rotationByBuilding:
title: Rotation by building type title: Rotació segons el tipus d'edifici.
description: >- description: >-
Each building type remembers the rotation you last set it to individually. This may be more comfortable if you frequently switch between placing different building types. Cada tipus d'edifici recorda la rotació que vau definir per última vegada de manera individual. Això pot ser més còmode si canvies freqüentment entre edificis.
compactBuildingInfo: compactBuildingInfo:
title: Compact Building Infos title: Informació sobre Edificis Compactes
description: >- description: >-
Shortens info boxes for buildings by only showing their ratios. Otherwise a description and image is shown. Escurça els quadres dinformació dels edificis només mostrant les seves velocitats. En cas contrari, es mostra una descripció i una imatge.
disableCutDeleteWarnings: disableCutDeleteWarnings:
title: Disable Cut/Delete Warnings title: Desactiva els diàlegs de Talla/Borra
description: >- description: >-
Disables the warning dialogs brought up when cutting/deleting more than 100 entities. Desactiva els diàlegs d'advertència que es mostren en tallar / suprimir més de 100 entitats.
keybindings: keybindings:
title: Keybindings title: Combinacions de tecles
hint: >- hint: >-
Tip: Be sure to make use of CTRL, SHIFT and ALT! They enable different placement options. Tip: Assegura't d'emprar CTRL, SHIFT i ALT! Et permeten col·locar objectes de formes diferents.
resetKeybindings: Reset Keybindings resetKeybindings: Resetejar les Combinacions de tecles
categoryLabels: categoryLabels:
general: Application general: Aplicació
ingame: Game ingame: Joc
navigation: Navigating navigation: Navegació
placement: Placement placement: Col·locació
massSelect: Mass Select massSelect: Sel·lecció Massiva
buildings: Building Shortcuts buildings: Dreceres d'Edificis
placementModifiers: Placement Modifiers placementModifiers: Modificadors de col·locació
mappings: mappings:
confirm: Confirm confirm: Confirmar
back: Back back: Enrere
mapMoveUp: Move Up mapMoveUp: Moure Amunt
mapMoveRight: Move Right mapMoveRight: Moure Dreta
mapMoveDown: Move Down mapMoveDown: Moure Avall
mapMoveLeft: Move Left mapMoveLeft: Moure Esquerra
mapMoveFaster: Move Faster mapMoveFaster: Moure més Ràpid
centerMap: Center Map centerMap: Centrar Mapa
mapZoomIn: Zoom in mapZoomIn: Apropar
mapZoomOut: Zoom out mapZoomOut: Allunyar
createMarker: Create Marker createMarker: Crea un Marcador
menuOpenShop: Upgrades menuOpenShop: Millores
menuOpenStats: Statistics menuOpenStats: Estadístiques
menuClose: Close Menu menuClose: Tancar Menú
toggleHud: Toggle HUD toggleHud: Commutar HUD
toggleFPSInfo: Toggle FPS and Debug Info toggleFPSInfo: Commutar FPS i Informació de Depuració
switchLayers: Switch layers switchLayers: Canviar capes
exportScreenshot: Export whole Base as Image exportScreenshot: Exportar la Base com a Imatge
belt: *belt belt: *belt
splitter: *splitter splitter: *splitter
underground_belt: *underground_belt underground_belt: *underground_belt
@ -834,49 +834,49 @@ keybindings:
trash: *trash trash: *trash
wire: *wire wire: *wire
pipette: Pipette pipette: Pipeta
rotateWhilePlacing: Rotate rotateWhilePlacing: Rotar
rotateInverseModifier: >- rotateInverseModifier: >-
Modifier: Rotate CCW instead Modifier: Rotar en sentit antihorari
cycleBuildingVariants: Cycle Variants cycleBuildingVariants: Rotar les Variants
confirmMassDelete: Delete area confirmMassDelete: Eliminar àrea
pasteLastBlueprint: Paste last blueprint pasteLastBlueprint: Afferar el darrer pla
cycleBuildings: Cycle Buildings cycleBuildings: Rotar els Buildings
lockBeltDirection: Enable belt planner lockBeltDirection: Habilitar el planificador de cintes transportadores
switchDirectionLockSide: >- switchDirectionLockSide: >-
Planner: Switch side Planner: Canviar costat
massSelectStart: Hold and drag to start massSelectStart: Manteniu premut i arrossegueu per començar
massSelectSelectMultiple: Select multiple areas massSelectSelectMultiple: Seleccionar múltiples àrees
massSelectCopy: Copy area massSelectCopy: Copiar àrea
massSelectCut: Cut area massSelectCut: Tallar àrea
placementDisableAutoOrientation: Disable automatic orientation placementDisableAutoOrientation: Desactivar orientació automàtica
placeMultiple: Stay in placement mode placeMultiple: Mantenir-se en mode de col·locació
placeInverse: Invert automatic belt orientation placeInverse: Invertir orientació automàtica de les cintes transportadores
about: about:
title: About this Game title: Sobre aquest Joc
body: >- body: >-
This game is open source and developed by <a href="https://github.com/tobspr" target="_blank">Tobias Springer</a> (this is me).<br><br> Aquest joc és de codi obert i desenvolupat per <a href="https://github.com/tobspr" target="_blank">Tobias Springer</a> (sóc jo).<br><br>
If you want to contribute, check out <a href="<githublink>" target="_blank">shapez.io on GitHub</a>.<br><br> Si vols contribuir, visita <a href="<githublink>" target="_blank">shapez.io a GitHub</a>.<br><br>
This game wouldn't have been possible without the great Discord community around my games - You should really join the <a href="<discordlink>" target="_blank">Discord server</a>!<br><br> Aquest joc no hauria estat possible sense la gran comunitat de Discord al voltant dels meus jocs. Recoman unir-se al <a href="<discordlink>" target="_blank">servidor de Discord</a>!<br><br>
The soundtrack was made by <a href="https://soundcloud.com/pettersumelius" target="_blank">Peppsen</a> - He's awesome.<br><br> Banda sonora creada per<a href="https://soundcloud.com/pettersumelius" target="_blank">Peppsen</a> - És increïble.<br><br>
Finally, huge thanks to my best friend <a href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Without our Factorio sessions, this game would never have existed. Finalment, gràcies al meu millor amic <a href="https://github.com/niklas-dahl" target="_blank">Niklas</a>. Sense les nostres sessions de Factorio, aquest joc mai hauria existit.
changelog: changelog:
title: Changelog title: Registre de Canvis
demo: demo:
features: features:
restoringGames: Restoring savegames restoringGames: Restaurar partides guardats
importingGames: Importing savegames importingGames: Importar partides guardats
oneGameLimit: Limited to one savegame oneGameLimit: Limitat a una partida guardada.
customizeKeybindings: Customizing Keybindings customizeKeybindings: Personalitzar teclats
exportingBase: Exporting whole Base as Image exportingBase: Exportar la base com a Imatge
settingNotAvailable: Not available in the demo. settingNotAvailable: No disponible en la versió de demostració.

View File

@ -234,8 +234,8 @@ dialogs:
createMarker: createMarker:
title: Nová značka title: Nová značka
desc: Give it a meaningful name, you can also include a <strong>short key</strong> of a shape (Which you can generate <a href="https://viewer.shapez.io" target="_blank">here</a>) desc: Pojmenuj jí nějak výstižně, též ji můžeš doplnit <strong>zkratkou</strong> pro tvar (Kterou si můžete vytvořit <a href="https://viewer.shapez.io" target="_blank">zde</a>)
titleEdit: Edit Marker titleEdit: Upravit značku
markerDemoLimit: markerDemoLimit:
desc: V ukázce můžete vytvořit pouze dvě značky. Získejte plnou verzi pro neomezený počet značek! desc: V ukázce můžete vytvořit pouze dvě značky. Získejte plnou verzi pro neomezený počet značek!
@ -252,8 +252,8 @@ dialogs:
může zejména u větších základen dlouho trvat, nebo dokonce shodit hru! může zejména u větších základen dlouho trvat, nebo dokonce shodit hru!
massCutInsufficientConfirm: massCutInsufficientConfirm:
title: Confirm cut title: Potvrdit vyjmutí
desc: You can not afford to paste this area! Are you sure you want to cut it? desc: Nemůžeš si dovolit vložení této oblasti! Skutečně ji chceš vyjmout?
ingame: ingame:
# This is shown in the top left corner and displays useful keybindings in # This is shown in the top left corner and displays useful keybindings in
@ -510,25 +510,25 @@ buildings:
description: Skladuje věci navíc až do naplnění kapacity. Může být použit na skladování surovin navíc. description: Skladuje věci navíc až do naplnění kapacity. Může být použit na skladování surovin navíc.
wire: wire:
default: default:
name: Energy Wire name: Kabel
description: Allows you to transport energy. description: Dovoluje přenos energie.
advanced_processor: advanced_processor:
default: default:
name: Color Inverter name: Invertor barev
description: Accepts a color or shape and inverts it. description: Přijme barvu či tvar a převrátí jej.
energy_generator: energy_generator:
deliver: Deliver deliver: Dodej
toGenerateEnergy: For toGenerateEnergy: Pro
default: default:
name: Energy Generator name: Generátor energie
description: Generates energy by consuming shapes. description: Vyrábí energii zpracováním tvarů.
wire_crossings: wire_crossings:
default: default:
name: Wire Splitter name: Dělič kabelů
description: Splits a energy wire into two. description: Rozdělí kabel na dva.
merger: merger:
name: Wire Merger name: Slučovač kabelů
description: Merges two energy wires into one. description: Spojí dva kabely do jednoho.
storyRewards: storyRewards:
# Those are the rewards gained from completing the store # Those are the rewards gained from completing the store
@ -543,7 +543,7 @@ storyRewards:
reward_painter: reward_painter:
title: Barvení title: Barvení
desc: >- desc: >-
The <strong>painter</strong> has been unlocked - Extract some color veins (just as you do with shapes) and combine it with a shape in the painter to color them!<br><br>PS: If you are colorblind, there is a <strong>color blind mode</strong> in the settings! <strong>Barvič</strong> byl právě odemčen - Vytěžte nějaká ložiska barev (podobně jako těžíte tvary) a spojte je s tvarem v barviči pro jeho obarvení!<br><br>PS: Pokud jste barvoslepý, v nastavení naleznete <strong>režim pro barvoslepé</strong>!
reward_mixer: reward_mixer:
title: Míchání barev title: Míchání barev
@ -587,7 +587,7 @@ storyRewards:
desc: Odemknuli jste variantu <strong>barviče</strong> - Funguje stejně jako normální, ale nabarví <strong>dva tvary naráz</strong> pomocí jedné barvy! desc: Odemknuli jste variantu <strong>barviče</strong> - Funguje stejně jako normální, ale nabarví <strong>dva tvary naráz</strong> pomocí jedné barvy!
reward_painter_quad: reward_painter_quad:
title: Quad Painting title: Čtyřstranné barvení
desc: Odemknuli jste variantu <strong>painter</strong> - Umožní vám nabarvit každou čtvrtinu tvaru jinou barvou! desc: Odemknuli jste variantu <strong>painter</strong> - Umožní vám nabarvit každou čtvrtinu tvaru jinou barvou!
reward_storage: reward_storage:
@ -616,9 +616,9 @@ storyRewards:
settings: settings:
title: Nastavení title: Nastavení
categories: categories:
general: General general: Obecné
userInterface: User Interface userInterface: Uživatelské rozhraní
advanced: Advanced advanced: Rozšířené
versionBadges: versionBadges:
dev: Vývojová verze dev: Vývojová verze

View File

@ -44,37 +44,38 @@ steamPage:
Nutze dein gesammeltes Wissen über die Maschinen und lasse deine Fabriken die gewünschten Formen der 18 verschiedenen Level abliefern. Schalte mit jedem Level neue Arbeitsschritte oder Gebäude frei. Das sollte dich schon für Stunden beschäftigt halten! Danach werden im Freispielmodus zufällige Formen generiert, die du ebenfalls abliefern kannst. Ich füge regelmäßig neue Funktionen hinzu und davon sind eine ganze Menge geplant! Nutze dein gesammeltes Wissen über die Maschinen und lasse deine Fabriken die gewünschten Formen der 18 verschiedenen Level abliefern. Schalte mit jedem Level neue Arbeitsschritte oder Gebäude frei. Das sollte dich schon für Stunden beschäftigt halten! Danach werden im Freispielmodus zufällige Formen generiert, die du ebenfalls abliefern kannst. Ich füge regelmäßig neue Funktionen hinzu und davon sind eine ganze Menge geplant!
Wenn du das Spiel erwirbst, erhälst du Zugriff auf die zusätzlichen Features der Standalone-Version. Das bedeutet, du kannst unter anderem die neuesten Updates zuerst spielen! Wenn du das Spiel erwirbst, erhälst du Zugriff auf die zusätzlichen Features der Standalone-Version. Das bedeutet, du kannst unter anderem die neuesten Updates zuerst spielen!
[b]Vorteile der Standalone[/b] [b]Vorteile der Standalone[/b]
[list] [list]
[*] Dark-Mode [*] Dark Mode
[*] Unbegrenzte Wegpunkte [*] unbegrenzte Anzahl an Wegpunkten
[*] Unbegrenzte Anzahl von Spielständen [*] unbegrenzte Anzahl an Speicherständen
[*] Weitere Einstellungen [*] zusätzliche Einstellungen
[*] Es kommen: Mehr Levels [*] Bald: Strom & Kabel! (Ungefähr) geplant für ende Juli 2020.
[*] Es kommen: Kabel & Energie! Voraussichtlich gegen Ende Juli 2020. [*] Bald: mehr Level
[*] Unterstütze die Entwicklung von shapez.io ❤️ [*] Erlaubt es mir shapez.io weiter zu entwickeln ❤️
[/list] [/list]
[b]Geplante Funktionen[/b] [b]Zukünftige Updates:[/b]
Ich bin aktiv mit der Entwicklung beschäftigt und versuche jede Woche ein Update oder den aktuellen Stand der Entwicklung zu veröffentlichen. Ich update das Spiel sehr oft, und versuche wöchentlich ein Update zu veröffentlichen!
[list] [list]
[*] Verschiedene Karten und Herausforderungen (z.B. Karten mit Hindernissen) [*] Verschiedene Karten und Herausforderungen (z.B. Karten mit Hindernissen)
[*] Puzzle (Liefere die gewünschten Formen mit begrenztem Platz / limitierten Gebäuden) [*] Herausforderungen (liefere die geforderte Form mit einer beschränkten Karte / anzahl an Gebäuden ab)
[*] Story-Modus mit Gebäudekosten [*] Eine Kampange, in der die Gebäude einen Preis haben.
[*] Einstellbare Kartengenerierung (Ändere die Grösse/Anzahl/Dichte der Ressourcenflecken, den Seed und mehr) [*] einen konfigurierbaren Kartengenerator (bestimme Ressourcen / Größe / Dichte, den Seed und viel mehr)
[*] Mehr Formentypen [*] zusätzliche Formen
[*] Performanceverbesserungen (Das Spiel läuft bereits ganz gut!) [*] Performanceverbesserungen (Das Spiel läuft bereits sehr gut!)
[*] Und vieles mehr! [*] Und vieles mehr!
[/list] [/list]
[b] Dieses Spiel ist Open Source[/b] [b]Das Spiel ist open source![/b]
Jeder kann dazu beitragen! Ich bin aktiv in die Community involviert, versuche alle Vorschläge zu lesen und beziehe so viel Feedback wie möglich mit in die Entwicklung ein. Jeder kann dazu beitragen. Ich bin aktiv in der Communtiy involviert und versuche alle Vorschläge zu lesen und beziehe so viel Feedback wie möglich mit in die Entwicklung ein.
Die komplette Roadmap gibt es auf dem Trello-Board zum Nachlesen! Die komplette Roadmap gibt es auf dem Trello-Board zum Nachlesen!
[b]Links [/b] [b]Links [/b]
@ -83,6 +84,8 @@ steamPage:
[*] [url=https://discord.com/invite/HN7EVzV]Offizieller Discord[/url] [*] [url=https://discord.com/invite/HN7EVzV]Offizieller Discord[/url]
[*] [url=https://trello.com/b/ISQncpJP/shapezio]Roadmap[/url] [*] [url=https://trello.com/b/ISQncpJP/shapezio]Roadmap[/url]
[*] [url=https://www.reddit.com/r/shapezio]Subreddit[/url] [*] [url=https://www.reddit.com/r/shapezio]Subreddit[/url]
[*] [url=https://github.com/tobspr/shapez.io]Source code (GitHub)[/url]
[*] [url=https://github.com/tobspr/shapez.io/blob/master/translations/README.md]Hilf zu übersetzen[/url]
[*] [url=https://github.com/tobspr/shapez.io]Quelltext (GitHub)[/url] [*] [url=https://github.com/tobspr/shapez.io]Quelltext (GitHub)[/url]
[*] [url=https://github.com/tobspr/shapez.io/blob/master/translations/README.md]Hilf beim Übersetzen[/url] [*] [url=https://github.com/tobspr/shapez.io/blob/master/translations/README.md]Hilf beim Übersetzen[/url]
[/list] [/list]
@ -105,7 +108,7 @@ global:
trillions: T trillions: T
# Shown for infinitely big numbers # Shown for infinitely big numbers
infinite: unend infinite:
time: time:
# Used for formatting past time dates # Used for formatting past time dates
@ -141,9 +144,9 @@ demoBanners:
mainMenu: mainMenu:
play: Spielen play: Spielen
changelog: Änderungsprotokoll
continue: Fortsetzen continue: Fortsetzen
newGame: Neues Spiel newGame: Neues Spiel
changelog: Änderungshistorie
subreddit: Reddit subreddit: Reddit
importSavegame: Importieren importSavegame: Importieren
openSourceHint: Dieses Spiel ist Open Source! openSourceHint: Dieses Spiel ist Open Source!
@ -153,7 +156,7 @@ mainMenu:
# This is shown when using firefox and other browsers which are not supported. # This is shown when using firefox and other browsers which are not supported.
browserWarning: >- browserWarning: >-
Sorry, aber das Spiel wird in deinem Browser langsam laufen! Erwerbe die Standalone-Version oder downloade Chrome für die beste Erfahrung! Sorry, aber das Spiel wird in deinem Browser langsam laufen! Kaufe die Standalone-Version oder downloade Chrome für die beste Erfahrung!
savegameLevel: Level <x> savegameLevel: Level <x>
savegameLevelUnknown: Unbekanntes Level savegameLevelUnknown: Unbekanntes Level
@ -167,7 +170,7 @@ dialogs:
restart: Neustart restart: Neustart
reset: Zurücksetzen reset: Zurücksetzen
getStandalone: Standalone Ansehen getStandalone: Standalone Ansehen
deleteGame: Ich weiß, was ich tue deleteGame: Ich weiß, was ich tue!
viewUpdate: Update anzeigen viewUpdate: Update anzeigen
showUpgrades: Upgrades anzeigen showUpgrades: Upgrades anzeigen
showKeybindings: Kürzel anzeigen showKeybindings: Kürzel anzeigen
@ -200,15 +203,15 @@ dialogs:
restartRequired: restartRequired:
title: Neustart benötigt title: Neustart benötigt
text: >- text: >-
Du muss das Spiel neu starten, um die Einstellungen anzuwenden. Du musst das Spiel neu starten, um die Einstellungen anzuwenden.
editKeybinding: editKeybinding:
title: Tastenbelegung ändern title: Tastenbelegung ändern
desc: Drücke die (Maus-)Taste, die du vergeben willst, oder ESC um abzubrechen. desc: Drücke die (Maus-)Taste, die du belegen möchtest, oder ESC um abzubrechen.
resetKeybindingsConfirmation: resetKeybindingsConfirmation:
title: Tastenbelegung zurücksetzen title: Tastenbelegung zurücksetzen
desc: Das wird alle deine Tastenbelegungen auf den Standard zurücksetzen. Bist du dir sicher? desc: Dies wird alle deine Tastenbelegungen auf den Standard zurücksetzen. Bist du dir sicher?
keybindingsResetOk: keybindingsResetOk:
title: Tastenbelegung zurückgesetzt title: Tastenbelegung zurückgesetzt
@ -231,7 +234,7 @@ dialogs:
title: Upgrades Freischalten title: Upgrades Freischalten
desc: >- desc: >-
Viele deiner Formen können noch benutzt werden, um Upgrades freizuschalten - <strong>Zerstöre deine alten Fabriken nicht!</strong> Viele deiner Formen können noch benutzt werden, um Upgrades freizuschalten - <strong>Zerstöre deine alten Fabriken nicht!</strong>
Den Upgrade-Tab kannst du oben rechts im Bildschirm finden. Den Upgrade-Tab findest du oben rechts im Bildschirm.
massDeleteConfirm: massDeleteConfirm:
title: Löschen bestätigen title: Löschen bestätigen
@ -245,13 +248,12 @@ dialogs:
massCutInsufficientConfirm: massCutInsufficientConfirm:
title: Ausschneiden bestätigen title: Ausschneiden bestätigen
desc: >- desc: Du kannst dir das Einfügen nicht leisten! Bist du sicher, dass du trotzdem Ausschneiden möchtest?
Du hast aktuell nicht genug Blaupausenformen, um die Auswahl einzufügen! Möchtest du sie trotzdem ausschneiden?
blueprintsNotUnlocked: blueprintsNotUnlocked:
title: Noch nicht freigeschaltet title: Noch nicht freigeschaltet
desc: >- desc: >-
Blueprints werden erst in Level 12 freigeschaltet! Blaupausen werden erst in Level 12 freigeschaltet!
keybindingsIntroduction: keybindingsIntroduction:
title: Nützliche Hotkeys title: Nützliche Hotkeys
@ -264,15 +266,16 @@ dialogs:
createMarker: createMarker:
title: Neuer Marker title: Neuer Marker
titleEdit: Edit Marker
desc: Gib ihm einen griffigen Namen. Du kannst sogar die <strong>Abkürzung</strong> einer Form eingeben (Diese kann <a href="https://viewer.shapez.io" target="_blank">hier</a> generiert werden). desc: Gib ihm einen griffigen Namen. Du kannst sogar die <strong>Abkürzung</strong> einer Form eingeben (Diese kann <a href="https://viewer.shapez.io" target="_blank">hier</a> generiert werden).
titleEdit: Marker bearbeiten
markerDemoLimit: markerDemoLimit:
desc: Du kannst nur 2 benutzerdefinierte Marker in der Demo benutzen. Hol dir die Standalone, um unendlich viele Marker zu erstellen! desc: Du kannst nur 2 Marker in der Demo benutzen. Hol dir die Standalone, um unendlich viele Marker zu erstellen!
exportScreenshotWarning: exportScreenshotWarning:
title: Bildschirmfoto exportieren title: Bildschirmfoto exportieren
desc: Hier kannst du ein Bildschirmfoto von deiner ganzen Fabrik erstellen. Für extrem große Fabriken kann das jedoch sehr lange dauern und ggf. zum Spielabsturz führen! desc: >-
Hier kannst du ein Bildschirmfoto von deiner ganzen Fabrik erstellen. Für extrem große Fabriken kann das jedoch sehr lange dauern und ggf. zum Spielabsturz führen!
ingame: ingame:
# This is shown in the top left corner and displays useful keybindings in # This is shown in the top left corner and displays useful keybindings in
@ -363,7 +366,7 @@ ingame:
dataSources: dataSources:
stored: stored:
title: Gelagert title: Gelagert
description: Zeigt die Menge an Formen, die im zentralen Gebäude gelagert sind. description: Zeigt die Menge an Formen, die im Hub gelagert sind.
produced: produced:
title: Produziert title: Produziert
description: Zeigt die Menge an Formen, die deine gesamte Fabrik produziert (inkl. Zwischenprodukte). description: Zeigt die Menge an Formen, die deine gesamte Fabrik produziert (inkl. Zwischenprodukte).
@ -400,7 +403,7 @@ ingame:
# Map markers # Map markers
waypoints: waypoints:
waypoints: Markierungen waypoints: Markierungen
hub: HUB hub: Hub
description: Linksklick auf einen Marker, um dort hinzugelangen, Rechtsklick, um ihn zu löschen.<br><br>Drücke <keybinding> um einen Marker aus deinem Blickwinkel, oder <strong>rechtsklicke</strong>, um einen Marker auf der ausgewählten Position zu erschaffen. description: Linksklick auf einen Marker, um dort hinzugelangen, Rechtsklick, um ihn zu löschen.<br><br>Drücke <keybinding> um einen Marker aus deinem Blickwinkel, oder <strong>rechtsklicke</strong>, um einen Marker auf der ausgewählten Position zu erschaffen.
creationSuccessNotification: Marker wurde erstellt. creationSuccessNotification: Marker wurde erstellt.
@ -416,7 +419,7 @@ ingame:
hints: hints:
1_1_extractor: Platziere einen <strong>Extrahierer</strong> auf der <strong>Kreisform</strong> um sie zu extrahieren! 1_1_extractor: Platziere einen <strong>Extrahierer</strong> auf der <strong>Kreisform</strong> um sie zu extrahieren!
1_2_conveyor: >- 1_2_conveyor: >-
Verbinde den Extrahierer mit einem <strong>Förderband</strong> und schließe ihn am zentralen Gebäude an!<br><br>Tipp: <strong>Drück und ziehe</strong> das Förderband mit der Maus! Verbinde den Extrahierer mit einem <strong>Förderband</strong> und schließe ihn am Hub an!<br><br>Tipp: <strong>Drück und ziehe</strong> das Förderband mit der Maus!
1_3_expand: >- 1_3_expand: >-
Dies ist <strong>KEIN</strong> Idle-Game! Baue mehr Extrahierer und Förderbänder, um das Ziel schneller zu erreichen.<br><br>Tipp: Halte <strong>UMSCH</strong>, um mehrere Gebäude zu platzieren und nutze <strong>R</strong> um sie zu rotieren. Dies ist <strong>KEIN</strong> Idle-Game! Baue mehr Extrahierer und Förderbänder, um das Ziel schneller zu erreichen.<br><br>Tipp: Halte <strong>UMSCH</strong>, um mehrere Gebäude zu platzieren und nutze <strong>R</strong> um sie zu rotieren.
@ -493,14 +496,14 @@ buildings:
rotater: rotater:
default: default:
name: &rotater Rotierer name: &rotater Rotierer (-90°)
description: Rotiert Formen im Uhrzeigersinn um 90 Grad. description: Rotiert Formen im Uhrzeigersinn um 90 Grad.
ccw: ccw:
name: Rotierer (CCW) name: Rotierer (+90°)
description: Rotiert Formen gegen den Uhrzeigersinn um 90 Grad. description: Rotiert Formen gegen den Uhrzeigersinn um 90 Grad.
fl: fl:
name: Rotierer (180) name: Rotierer (+180°)
description: Rotiert Formen um 180 Grad. description: Rotiert die Formen um 180 Grad.
stacker: stacker:
default: default:
@ -540,25 +543,25 @@ buildings:
wire: wire:
default: default:
name: Energiekabel name: Stromkabel
description: Transportiert Energie. description: Erlaubt dir Strom zu transportieren.
advanced_processor: advanced_processor:
default: default:
name: Farbinvertierer name: Farbinvertierer
description: Akzeptiert Farben und Formen und invertiert sie. description: Invertiert die Farbe. Geht auch bei Formen.
energy_generator: energy_generator:
deliver: Liefere deliver: Liefere
toGenerateEnergy: für toGenerateEnergy: für
default: default:
name: Energiegenerator name: Stromgenerator
description: Generiert Energie, indem die Formen verbraucht werden. description: Erzeugt Strom, indem er Formen verbraucht.
wire_crossings: wire_crossings:
default: default:
name: Kabelverteiler name: Kabelverteiler
description: Teilt ein Energiekabel in zwei Ausgänge. description: Teilt ein Stromkabel in zwei auf.
merger: merger:
name: Kabelverbinder name: Kabelverbinder
description: Verbindet zwei Energiekabel zu einem. description: Verbindet zwei Stromkabel zu einem.
storyRewards: storyRewards:
# Those are the rewards gained from completing the store # Those are the rewards gained from completing the store
@ -573,7 +576,7 @@ storyRewards:
reward_painter: reward_painter:
title: Färben title: Färben
desc: >- desc: >-
The <strong>painter</strong> has been unlocked - Extract some color veins (just as you do with shapes) and combine it with a shape in the painter to color them!<br><br>PS: If you are colorblind, there is a <strong>color blind mode</strong> in the settings! Der <strong>Färber</strong> wurde freigeschaltet. Extrahiere ein paar Farben (genauso wie bei Formen) und färbe damit eine Form im Färber!<br><br>PS: Falls du Farbenblind bist, es gibt einen <strong>Modus für Farbenblinde</strong> in den Einstellungen!
reward_mixer: reward_mixer:
title: Farben mischen title: Farben mischen
@ -626,7 +629,7 @@ storyRewards:
reward_freeplay: reward_freeplay:
title: Freies Spiel title: Freies Spiel
desc: Du hast es geschafft! Du hast den <strong>Freispielmodus</strong> freigeschaltet! Das heißt, dass abzuliefernde Formen jetzt zufällig generiert werden! (Keine Sorge, für die Standaloneversion ist noch mehr geplant!) desc: Du hast es geschafft! Du bist im <strong>freien Spiel</strong> angekommen! Das heißt, dass abzuliefernde Formen jetzt zufällig generiert werden! (Keine Sorge, für die Standaloneversion ist noch mehr geplant!)
reward_blueprints: reward_blueprints:
title: Blaupause title: Blaupause
@ -636,7 +639,7 @@ storyRewards:
no_reward: no_reward:
title: Nächstes Level title: Nächstes Level
desc: >- desc: >-
Dieses Level hat dir keine Belohnung gegeben, aber das nächste schon! <br><br> PS: Denk daran, deine alten Fabriken nicht zu zerstören - Du wirst sie später <strong>alle</strong> noch brauchen, um <strong>Upgrades freizuschalten</strong>! Dieses Level hat dir keine Belohnung gegeben, aber dafür das Nächste schon! <br><br> PS: Denk daran, deine alten Fabriken nicht zu zerstören - Du wirst sie später <strong>alle</strong> noch brauchen, um <strong>Upgrades freizuschalten</strong>!
no_reward_freeplay: no_reward_freeplay:
title: Nächstes Level title: Nächstes Level
@ -684,7 +687,7 @@ settings:
scrollWheelSensitivity: scrollWheelSensitivity:
title: Zoomempfindlichkeit title: Zoomempfindlichkeit
description: >- description: >-
Ändert die Sensitivität des Zooms (Sowohl Mausrad, als auch Trackpad). Ändert die Empfindlichkeit des Zooms (Sowohl Mausrad, als auch Trackpad).
sensitivity: sensitivity:
super_slow: Sehr langsam super_slow: Sehr langsam
slow: Langsam slow: Langsam
@ -722,30 +725,30 @@ settings:
soundsMuted: soundsMuted:
title: Geräusche stummschalten title: Geräusche stummschalten
description: >- description: >-
Bei Aktivierung werden alle Geräusche stummgeschaltet. Bei der Aktivierung werden alle Geräusche stummgeschaltet.
musicMuted: musicMuted:
title: Musik stummschalten title: Musik stummschalten
description: >- description: >-
Bei Aktivierung wird die Musik stummgeschaltet. Bei der Aktivierung wird die Musik stummgeschaltet.
theme: theme:
title: Farbmodus title: Farbmodus
description: >- description: >-
Wähle zwischen dunklem und hellem Farbmodus. Wähle zwischen dem dunklen und dem hellen Farbmodus.
themes: themes:
dark: Dunkel dark: Dunkel
light: Hell light: Hell
refreshRate: refreshRate:
title: Zielbildwiederholrate title: Tickrate
description: >- description: >-
Für z.B. einen 144-Hz-Monitor kann die Bildwiederholrate hier korrekt eingestellt werden. Bei einem zu langsamen Computer kann dies die Leistung beeinträchtigen. Das Spiel passt die Tickrate automatisch so an, dass sie immer zwischen diesem Wert und der hälfte bleibt. Zum Beispiel bei einer Tickrate von 60 Hz versucht das Spiel, diese zu halten. Falls dies zu viel ist, regelt der Computer diese runter bis zu einer Untergrenze von 30Hz.
alwaysMultiplace: alwaysMultiplace:
title: Mehrfachplatzierung title: Mehrfachplatzierung
description: >- description: >-
Bei Aktivierung wird das platzierte Gebäude nicht abgewählt. Das hat den gleichen Effekt wie beim Platzieren permanent UMSCH gedrückt zu halten. Bei Aktivierung wird das platzierte Gebäude nicht abgewählt. Das hat den gleichen Effekt wie beim Platzieren UMSCH gedrückt zu halten.
offerHints: offerHints:
title: Hinweise & Tutorials title: Hinweise & Tutorials
@ -762,11 +765,6 @@ settings:
description: >- description: >-
Aktiviert den Vignetteneffekt, der den Rand des Bildschirms zunehmend verdunkelt und das Lesen der Textfelder vereinfacht. Aktiviert den Vignetteneffekt, der den Rand des Bildschirms zunehmend verdunkelt und das Lesen der Textfelder vereinfacht.
rotationByBuilding:
title: Rotation pro Gebäudetyp
description: >-
Jeder Gebäudetyp merkt sich einzeln, welche Rotation ausgewählt ist. Das fühlt sich möglicherweise besser an, wenn du häufig zwischen verschiedenen Gebäudetypen wechselst.
compactBuildingInfo: compactBuildingInfo:
title: Kompakte Gebäudeinformationen title: Kompakte Gebäudeinformationen
description: >- description: >-
@ -777,6 +775,13 @@ settings:
description: >- description: >-
Deaktiviert die Warnung, die beim Löschen und Ausschneiden von mehr als 100 Feldern angezeigt wird. Deaktiviert die Warnung, die beim Löschen und Ausschneiden von mehr als 100 Feldern angezeigt wird.
rotationByBuilding:
title: Rotation pro Gebäudetyp
description: >-
Jeder Gebäudetyp merkt sich einzeln, in welche Richtung er zeigt.
Das fühlt sich möglicherweise besser an, wenn du häufig zwischen verschiedenen
Gebäudetypen wechselst.
keybindings: keybindings:
title: Tastenbelegung title: Tastenbelegung
hint: >- hint: >-
@ -785,7 +790,7 @@ keybindings:
resetKeybindings: Tastenbelegung zurücksetzen. resetKeybindings: Tastenbelegung zurücksetzen.
categoryLabels: categoryLabels:
general: Applikation general: Anwendung
ingame: Spiel ingame: Spiel
navigation: Navigation navigation: Navigation
placement: Platzierung placement: Platzierung
@ -803,8 +808,8 @@ keybindings:
mapMoveFaster: Schneller bewegen mapMoveFaster: Schneller bewegen
centerMap: Karte zentrieren centerMap: Karte zentrieren
mapZoomIn: Hineinzoomen mapZoomIn: Reinzoomen
mapZoomOut: Herauszoomen mapZoomOut: Rauszoomen
createMarker: Markierung erstellen createMarker: Markierung erstellen
menuOpenShop: Upgrades menuOpenShop: Upgrades
@ -832,7 +837,6 @@ keybindings:
Modifikator: stattdessen gegen den UZS rotieren Modifikator: stattdessen gegen den UZS rotieren
cycleBuildingVariants: Variante wählen cycleBuildingVariants: Variante wählen
confirmMassDelete: Massenlöschung bestätigen confirmMassDelete: Massenlöschung bestätigen
pasteLastBlueprint: Letzte Blaupause einfügen
cycleBuildings: Gebäude rotieren cycleBuildings: Gebäude rotieren
lockBeltDirection: Bandplaner aktivieren lockBeltDirection: Bandplaner aktivieren
switchDirectionLockSide: >- switchDirectionLockSide: >-
@ -846,8 +850,10 @@ keybindings:
placementDisableAutoOrientation: Automatische Orientierung deaktivieren placementDisableAutoOrientation: Automatische Orientierung deaktivieren
placeMultiple: Im Platziermodus bleiben placeMultiple: Im Platziermodus bleiben
placeInverse: Automatische Förderbandorientierung invertieren placeInverse: Automatische Förderbandorientierung invertieren
advanced_processor: Farbnivertierer pasteLastBlueprint: Letzte Blaupause einfügen
energy_generator: Energiegenerator advanced_processor: Farbinvertierer
energy_generator: Stromgenerator
wire: Stromkabel
about: about:
title: Über dieses Spiel title: Über dieses Spiel

View File

@ -153,10 +153,11 @@ mainMenu:
# This is shown when using firefox and other browsers which are not supported. # This is shown when using firefox and other browsers which are not supported.
browserWarning: >- browserWarning: >-
Sorry, but the game is known to run slow on your browser! Get the standalone version or download chrome for the full experience. Sorry, but the game is known to run slow on your browser! Get the standalone version or download Google Chrome for the full experience.
savegameLevel: Level <x> savegameLevel: Level <x>
savegameLevelUnknown: Unknown Level savegameLevelUnknown: Unknown Level
savegameUnnamed: Unnamed
dialogs: dialogs:
buttons: buttons:
@ -274,6 +275,10 @@ dialogs:
title: Export screenshot title: Export screenshot
desc: You requested to export your base as a screenshot. Please note that this can be quite slow for a big base and even crash your game! desc: You requested to export your base as a screenshot. Please note that this can be quite slow for a big base and even crash your game!
renameSavegame:
title: Rename Savegame
desc: You can rename your savegame here.
ingame: ingame:
# This is shown in the top left corner and displays useful keybindings in # This is shown in the top left corner and displays useful keybindings in
# every situation # every situation
@ -304,7 +309,7 @@ ingame:
green: Green green: Green
blue: Blue blue: Blue
yellow: Yellow yellow: Yellow
purple: Purple purple: Magenta
cyan: Cyan cyan: Cyan
white: White white: White
black: Black black: Black
@ -372,8 +377,8 @@ ingame:
description: Displaying shapes which are delivered to your central building. description: Displaying shapes which are delivered to your central building.
noShapesProduced: No shapes have been produced so far. noShapesProduced: No shapes have been produced so far.
# Displays the shapes per minute, e.g. '523 / m' # Displays the shapes per second, e.g. '523 / s'
shapesPerMinute: <shapes> / m shapesPerSecond: <shapes> / s
# Settings menu, when you press "ESC" # Settings menu, when you press "ESC"
settingsMenu: settingsMenu:
@ -482,6 +487,14 @@ buildings:
name: Merger (compact) name: Merger (compact)
description: Merges two conveyor belts into one. description: Merges two conveyor belts into one.
compact-merge:
name: Splitter (compact)
description: Splits one conveyor belt into two.
compact-merge-inverse:
name: Splitter (compact)
description: Splits one conveyor belt into two.
cutter: cutter:
default: default:
name: &cutter Cutter name: &cutter Cutter
@ -591,11 +604,32 @@ buildings:
# TEMP # TEMP
description: Can be connected on the wires layer to show a color or shape. When inputting a boolean item, the display will be white if the value is 1. description: Can be connected on the wires layer to show a color or shape. When inputting a boolean item, the display will be white if the value is 1.
virtual_processor:
default:
name: &virtual_processor Virtual Cutter
description: Virtually cuts the shape input from top to bottom and returns both halfs.
analyzer:
name: Shape Analyzer
description: Analyzes the top right quadrant of the lowest layer of the shape and returns its shape and color
rotater:
name: Virtual Rotater
description: Virtually rotates the shape by 90 degrees clockwise.
unstacker:
name: Virtual Unstacker
description: Returns the topmost layer to the right, and the remaining ones on the left.
shapecompare:
name: Compare Shapes
description: Returns true if both shapes are exactly equal
storyRewards: storyRewards:
# Those are the rewards gained from completing the store # Those are the rewards gained from completing the store
reward_cutter_and_trash: reward_cutter_and_trash:
title: Cutting Shapes title: Cutting Shapes
desc: You just unlocked the <strong>cutter</strong> - it cuts shapes half from <strong>top to bottom</strong> regardless of its orientation!<br><br>Be sure to get rid of the waste, or otherwise <strong>it will stall</strong> - For this purpose I gave you a trash, which destroys everything you put into it! desc: You just unlocked the <strong>cutter</strong> - it cuts shapes in half from <strong>top to bottom</strong> regardless of its orientation!<br><br>Be sure to get rid of the waste, or otherwise <strong>it will stall</strong> - For this purpose I have given you the trash can, which destroys everything you put into it!
reward_rotater: reward_rotater:
title: Rotating title: Rotating
@ -820,6 +854,11 @@ settings:
description: >- description: >-
Disabling the tile grid can help with the performance. This also makes the game look cleaner! Disabling the tile grid can help with the performance. This also makes the game look cleaner!
clearCursorOnDeleteWhilePlacing:
title: Clear Cursor on Right Click
description: >-
Enabled by default, clears the cursor whenever you right click while you have a building selected for placement. If disabled, you can delete buildings by right-clicking while placing a building.
lowQualityTextures: lowQualityTextures:
title: Low quality textures (Ugly) title: Low quality textures (Ugly)
description: >- description: >-

View File

@ -488,8 +488,8 @@ buildings:
name: Pivoteur inversé name: Pivoteur inversé
description: Fait pivoter une forme de 90 degrés vers la gauche. description: Fait pivoter une forme de 90 degrés vers la gauche.
fl: fl:
name: Pivoteur (180) name: Retourneur
description: Fait pivoter les formes de 90 degrés. description: Tourne la forme de 180 degrés.
stacker: stacker:
default: default:
@ -635,9 +635,9 @@ storyRewards:
settings: settings:
title: Options title: Options
categories: categories:
general: General general: Général
userInterface: User Interface userInterface: Interface Utilisateur
advanced: Advanced advanced: Avancé
versionBadges: versionBadges:
dev: Développement dev: Développement

View File

@ -22,7 +22,7 @@
--- ---
steamPage: steamPage:
# This is the short text appearing on the steam page # This is the short text appearing on the steam page
shortText: shapez.io is a game about building factories to automate the creation and combination of increasingly complex shapes within an infinite map. shortText: shapez.io giderek karmaşıklaşan şekillerin sonsuz bir harita üzerinde üretimi ve birleştirilmesi hakında bir oyundur.
# This is the long description for the steam page - It is contained here so you can help to translate it, and I will regulary update the store page. # This is the long description for the steam page - It is contained here so you can help to translate it, and I will regulary update the store page.
# NOTICE: # NOTICE:
@ -31,56 +31,57 @@ steamPage:
longText: >- longText: >-
[img]{STEAM_APP_IMAGE}/extras/store_page_gif.gif[/img] [img]{STEAM_APP_IMAGE}/extras/store_page_gif.gif[/img]
shapez.io is a game about building factories to automate the creation and processing of increasingly complex shapes across an infinitely expanding map. shapez.io giderek karmaşıklaşan şekillerin sonsuz bir harita üzerinde üretimi ve birleştirilmesi hakında bir oyundur.
Upon delivering the requested shapes you will progress within the game and unlock upgrades to Hız up your factory. Talep edilen şekilleri verdikten sonra oyundaki geliştirmeleri açıp fabrikanızı hızlandırabilirsiniz.
As the demand for shapes increases, you will have to scale up your factory to meet the demand - Don't forget about resources though, you will have to expand across the [b]infinite map[/b]! Şekiller için talep artınca fabrikanı büyütüp talebi karşılamalısın - Kaynakları unutma! Sonsuz [b]sonsuz haritada[/b] genişlemen gerekecek!
Soon you will have to mix colors and paint your shapes with them - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand. Yakında renkleri karıştırman ve şekileri boyaman gerekecek - Talebi karşılamak için kırmızı, mavi ve yeşili karıştırıp şekilleri boyacaksın
This game features 18 progressive levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned! Bu oyun 18 kademeli seviye içerir (Seni saatlerce meşgul tutumalı) ama sürekli yeni şeyler ekliyorum - Ekleyecek çok şey var!
Purchasing the game gives you access to the standalone version which has additional features and you'll also receive access to newly developed features. Bu oyunu satın almak indirilebilir versiyonuna (Ek özellikler var) ve yeni özeliklerine erişebileceksiniz.
[b]Standalone Advantages[/b] [b]İndirebilir versiyonun avantajları[/b]
[list] [list]
[*] Dark Mode [*] Karanlık mod
[*] Unlimited Waypoints [*] Sonsuz işaret
[*] Unlimited Savegames [*] Sonsuz kayıt alanı
[*] Additional settings [*] Ek ayarlar
[*] Coming soon: Wires & Energy! Aiming for (roughly) end of July 2020. [*] Yakında geliyor: Kablo ve enerji! Temmuz sonunu hedefliyorum.
[*] Coming soon: More Levels [*] Yakında geliyor: Daha fazla seviyeler
[*] Allows me to further develop shapez.io ❤️ [*] Shapez.io'yu geliştirmeme izin veriyor ❤️
[/list] [/list]
[b]Future Updates[/b] [b]Gelecek güncellemeler[/b]
I am updating the game very often and trying to push an update at least every week! Oyunu sık sık güncelliyorum ve en az haftada bir güncellemeye çalışıyorum!
[list] [list]
[*] Different maps and challenges (e.g. maps with obstacles) [*] Farklı haritalar ve görevler (Örneğin engelli haritalar)
[*] Puzzles (Deliver the requested shape with a restricted area / set of buildings) [*] Yapbozlar (İstenen şekilleri kısıtlı bir alanda / belli yapılar ile)
[*] A story mode where buildings have a cost [*] Hikaye modu ile yapıların maliyeti olacak.
[*] Configurable map generator (Configure resource/shape size/density, seed and more) [*] Ayarlanabilir harita yapımı(Ayarlanabilir kaynak/şekil boyut/sıklığı, seedler ve daha fazlası)
[*] Additional types of shapes [*] Ek şekiller
[*] Performance improvements (The game already runs pretty well!) [*] Performans optimizasyonları (oyun zaten iyi çalışıyor)
[*] And much more! [*] Ve daha fazlası
[/list] [/list]
[b]This game is open source![/b] [b]Bu oyun açık kaynaklı![/b]
Bu oyuna herkes katkıda bulunabilir! Aktif olarak toplulukğa katkıda bulunuyorum ve bütün önerileri gözden geçirmeye çalışıyorum.
Yol planıma Trello'dan bakmayı unutmayın!
Anybody can contribute, I'm actively involved in the community and attempt to review all suggestions and take feedback into consideration where possible.
Be sure to check out my trello board for the full roadmap!
[b]Links[/b] [b]Links[/b]
[list] [list]
[*] [url=https://discord.com/invite/HN7EVzV]Official Discord[/url] [*] [url=https://discord.com/invite/HN7EVzV]Dİscord'umuz[/url]
[*] [url=https://trello.com/b/ISQncpJP/shapezio]Roadmap[/url] [*] [url=https://trello.com/b/ISQncpJP/shapezio]yol planı[/url]
[*] [url=https://www.reddit.com/r/shapezio]Subreddit[/url] [*] [url=https://www.reddit.com/r/shapezio]Subreddit[/url]
[*] [url=https://github.com/tobspr/shapez.io]Source code (GitHub)[/url] [*] [url=https://github.com/tobspr/shapez.io]KAynak kodu (GitHub)[/url]
[*] [url=https://github.com/tobspr/shapez.io/blob/master/translations/README.md]Help translate[/url] [*] [url=https://github.com/tobspr/shapez.io/blob/master/translations/README.md]Çevirmeye yardımcı olun[/url]
[/list] [/list]
discordLink: Official Discord - Chat with me! discordLink: Official Discord - Chat with me!