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

Merge branch 'master' into master

This commit is contained in:
Yoshie2000 2020-08-31 12:15:27 +02:00 committed by GitHub
commit ba576a8a88
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
25 changed files with 2917 additions and 2762 deletions

View File

@ -18,7 +18,7 @@
}, },
"sprites/belt/built/forward_2.png": "sprites/belt/built/forward_2.png":
{ {
"frame": {"x":1802,"y":1366,"w":116,"h":144}, "frame": {"x":1804,"y":1366,"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":1922,"y":1405,"w":116,"h":144}, "frame": {"x":1924,"y":1405,"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":1796,"y":1514,"w":116,"h":144}, "frame": {"x":439,"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},
@ -42,7 +42,7 @@
}, },
"sprites/belt/built/forward_5.png": "sprites/belt/built/forward_5.png":
{ {
"frame": {"x":1796,"y":1662,"w":116,"h":144}, "frame": {"x":1801,"y":1514,"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":1916,"y":1693,"w":116,"h":144}, "frame": {"x":1921,"y":1553,"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":1795,"y":1810,"w":116,"h":144}, "frame": {"x":1801,"y":1662,"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":145,"y":1887,"w":116,"h":144}, "frame": {"x":1921,"y":1701,"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":265,"y":1887,"w":116,"h":144}, "frame": {"x":137,"y":1849,"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":1537,"y":1139,"w":116,"h":144}, "frame": {"x":1539,"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":1804,"y":1218,"w":116,"h":144}, "frame": {"x":1538,"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":1924,"y":1257,"w":116,"h":144}, "frame": {"x":1806,"y":1218,"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":439,"y":1038,"w":116,"h":144}, "frame": {"x":1926,"y":1257,"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":961,"y":1033,"w":130,"h":130}, "frame": {"x":3,"y":1182,"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":1523,"y":1287,"w":130,"h":130}, "frame": {"x":137,"y":1182,"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":137,"y":1700,"w":130,"h":130}, "frame": {"x":283,"y":1703,"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":271,"y":1700,"w":130,"h":130}, "frame": {"x":389,"y":1849,"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":545,"y":1736,"w":130,"h":130}, "frame": {"x":417,"y":1703,"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":927,"y":1578,"w":130,"h":130}, "frame": {"x":523,"y":1849,"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":786,"y":1649,"w":130,"h":130}, "frame": {"x":551,"y":1703,"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":645,"y":1887,"w":130,"h":130}, "frame": {"x":657,"y":1849,"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":779,"y":1887,"w":130,"h":130}, "frame": {"x":791,"y":1408,"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":913,"y":1887,"w":130,"h":130}, "frame": {"x":685,"y":1703,"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":1519,"y":1421,"w":130,"h":130}, "frame": {"x":425,"y":1186,"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":1519,"y":1555,"w":130,"h":130}, "frame": {"x":425,"y":1320,"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":1915,"y":1841,"w":130,"h":130}, "frame": {"x":424,"y":1454,"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":3,"y":1700,"w":130,"h":130}, "frame": {"x":144,"y":1465,"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":1047,"y":1887,"w":130,"h":130}, "frame": {"x":925,"y":1476,"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":1181,"y":1887,"w":130,"h":130}, "frame": {"x":565,"y":1542,"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":920,"y":1712,"w":130,"h":130}, "frame": {"x":1461,"y":1703,"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":1054,"y":1735,"w":130,"h":130}, "frame": {"x":791,"y":1849,"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":1188,"y":1735,"w":130,"h":130}, "frame": {"x":925,"y":1610,"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":1322,"y":1703,"w":130,"h":130}, "frame": {"x":1059,"y":1740,"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":405,"y":1315,"w":130,"h":130}, "frame": {"x":1193,"y":1805,"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":405,"y":1449,"w":130,"h":130}, "frame": {"x":1327,"y":1827,"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":405,"y":1583,"w":130,"h":130}, "frame": {"x":925,"y":1744,"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":3,"y":1182,"w":130,"h":130}, "frame": {"x":1059,"y":1874,"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":1315,"y":1887,"w":130,"h":130}, "frame": {"x":699,"y":1542,"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":1449,"y":1887,"w":130,"h":130}, "frame": {"x":1059,"y":1606,"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":1583,"y":1887,"w":130,"h":130}, "frame": {"x":1193,"y":1671,"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":1061,"y":1601,"w":130,"h":130}, "frame": {"x":1327,"y":1693,"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":137,"y":1182,"w":130,"h":130}, "frame": {"x":925,"y":1878,"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":271,"y":1182,"w":130,"h":130}, "frame": {"x":1461,"y":1849,"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":385,"y":1887,"w":116,"h":144}, "frame": {"x":3,"y":1318,"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},
@ -386,7 +386,7 @@
}, },
"sprites/blueprints/display.png": "sprites/blueprints/display.png":
{ {
"frame": {"x":1916,"y":1553,"w":128,"h":136}, "frame": {"x":257,"y":1849,"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},
@ -458,7 +458,7 @@
}, },
"sprites/blueprints/miner.png": "sprites/blueprints/miner.png":
{ {
"frame": {"x":1513,"y":1689,"w":136,"h":143}, "frame": {"x":123,"y":1318,"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/reader.png": "sprites/blueprints/reader.png":
{ {
"frame": {"x":1086,"y":1313,"w":141,"h":144}, "frame": {"x":938,"y":1181,"w":141,"h":144},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":2,"y":0,"w":141,"h":144}, "spriteSourceSize": {"x":2,"y":0,"w":141,"h":144},
@ -514,7 +514,7 @@
}, },
"sprites/blueprints/rotater-ccw.png": "sprites/blueprints/rotater-ccw.png":
{ {
"frame": {"x":1243,"y":1123,"w":143,"h":144}, "frame": {"x":1245,"y":1123,"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},
@ -522,7 +522,7 @@
}, },
"sprites/blueprints/rotater-fl.png": "sprites/blueprints/rotater-fl.png":
{ {
"frame": {"x":940,"y":1167,"w":142,"h":144}, "frame": {"x":1658,"y":1325,"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},
@ -530,7 +530,7 @@
}, },
"sprites/blueprints/rotater.png": "sprites/blueprints/rotater.png":
{ {
"frame": {"x":1390,"y":1126,"w":143,"h":144}, "frame": {"x":1097,"y":1171,"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},
@ -538,7 +538,7 @@
}, },
"sprites/blueprints/splitter-compact-inverse.png": "sprites/blueprints/splitter-compact-inverse.png":
{ {
"frame": {"x":791,"y":1254,"w":142,"h":138}, "frame": {"x":560,"y":1036,"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},
@ -546,7 +546,7 @@
}, },
"sprites/blueprints/splitter-compact-merge-inverse.png": "sprites/blueprints/splitter-compact-merge-inverse.png":
{ {
"frame": {"x":1086,"y":1171,"w":142,"h":138}, "frame": {"x":792,"y":1118,"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},
@ -554,7 +554,7 @@
}, },
"sprites/blueprints/splitter-compact-merge.png": "sprites/blueprints/splitter-compact-merge.png":
{ {
"frame": {"x":1376,"y":1421,"w":139,"h":138}, "frame": {"x":1373,"y":1409,"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},
@ -562,7 +562,7 @@
}, },
"sprites/blueprints/splitter-compact.png": "sprites/blueprints/splitter-compact.png":
{ {
"frame": {"x":1227,"y":1558,"w":139,"h":138}, "frame": {"x":1373,"y":1551,"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},
@ -602,7 +602,7 @@
}, },
"sprites/blueprints/underground_belt_entry-tier2.png": "sprites/blueprints/underground_belt_entry-tier2.png":
{ {
"frame": {"x":405,"y":1186,"w":138,"h":125}, "frame": {"x":1516,"y":1574,"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},
@ -610,7 +610,7 @@
}, },
"sprites/blueprints/underground_belt_entry.png": "sprites/blueprints/underground_belt_entry.png":
{ {
"frame": {"x":3,"y":1836,"w":138,"h":112}, "frame": {"x":283,"y":1182,"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},
@ -618,7 +618,7 @@
}, },
"sprites/blueprints/underground_belt_exit-tier2.png": "sprites/blueprints/underground_belt_exit-tier2.png":
{ {
"frame": {"x":1653,"y":1632,"w":139,"h":112}, "frame": {"x":1225,"y":1555,"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},
@ -626,7 +626,7 @@
}, },
"sprites/blueprints/underground_belt_exit.png": "sprites/blueprints/underground_belt_exit.png":
{ {
"frame": {"x":645,"y":1377,"w":138,"h":112}, "frame": {"x":283,"y":1298,"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},
@ -656,6 +656,14 @@
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":133}, "spriteSourceSize": {"x":0,"y":0,"w":144,"h":133},
"sourceSize": {"w":144,"h":144} "sourceSize": {"w":144,"h":144}
}, },
"sprites/blueprints/virtual_processor-stacker.png":
{
"frame": {"x":961,"y":1033,"w":132,"h":144},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":132,"h":144},
"sourceSize": {"w":144,"h":144}
},
"sprites/blueprints/virtual_processor-unstacker.png": "sprites/blueprints/virtual_processor-unstacker.png":
{ {
"frame": {"x":1101,"y":704,"w":144,"h":144}, "frame": {"x":1101,"y":704,"w":144,"h":144},
@ -690,7 +698,7 @@
}, },
"sprites/blueprints/wire-turn.png": "sprites/blueprints/wire-turn.png":
{ {
"frame": {"x":707,"y":1036,"w":82,"h":82}, "frame": {"x":706,"y":1036,"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},
@ -714,7 +722,7 @@
}, },
"sprites/blueprints/wire_tunnel.png": "sprites/blueprints/wire_tunnel.png":
{ {
"frame": {"x":1653,"y":1748,"w":138,"h":135}, "frame": {"x":1516,"y":1435,"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},
@ -722,7 +730,7 @@
}, },
"sprites/buildings/belt_left.png": "sprites/buildings/belt_left.png":
{ {
"frame": {"x":961,"y":1033,"w":130,"h":130}, "frame": {"x":3,"y":1182,"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},
@ -730,7 +738,7 @@
}, },
"sprites/buildings/belt_right.png": "sprites/buildings/belt_right.png":
{ {
"frame": {"x":1047,"y":1887,"w":130,"h":130}, "frame": {"x":925,"y":1476,"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},
@ -810,7 +818,7 @@
}, },
"sprites/buildings/logic_gate-or.png": "sprites/buildings/logic_gate-or.png":
{ {
"frame": {"x":559,"y":1173,"w":143,"h":123}, "frame": {"x":1659,"y":1198,"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},
@ -826,7 +834,7 @@
}, },
"sprites/buildings/logic_gate-xor.png": "sprites/buildings/logic_gate-xor.png":
{ {
"frame": {"x":1657,"y":1198,"w":143,"h":143}, "frame": {"x":1392,"y":1126,"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},
@ -834,7 +842,7 @@
}, },
"sprites/buildings/logic_gate.png": "sprites/buildings/logic_gate.png":
{ {
"frame": {"x":793,"y":1118,"w":143,"h":132}, "frame": {"x":1391,"y":1273,"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},
@ -842,7 +850,7 @@
}, },
"sprites/buildings/miner-chainable.png": "sprites/buildings/miner-chainable.png":
{ {
"frame": {"x":505,"y":1887,"w":136,"h":142}, "frame": {"x":3,"y":1703,"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},
@ -850,7 +858,7 @@
}, },
"sprites/buildings/miner.png": "sprites/buildings/miner.png":
{ {
"frame": {"x":405,"y":1736,"w":136,"h":142}, "frame": {"x":143,"y":1703,"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},
@ -898,7 +906,7 @@
}, },
"sprites/buildings/reader.png": "sprites/buildings/reader.png":
{ {
"frame": {"x":937,"y":1315,"w":141,"h":144}, "frame": {"x":790,"y":1260,"w":141,"h":144},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":2,"y":0,"w":141,"h":144}, "spriteSourceSize": {"x":2,"y":0,"w":141,"h":144},
@ -906,7 +914,7 @@
}, },
"sprites/buildings/rotater-ccw.png": "sprites/buildings/rotater-ccw.png":
{ {
"frame": {"x":1378,"y":1274,"w":141,"h":143}, "frame": {"x":1083,"y":1319,"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},
@ -914,7 +922,7 @@
}, },
"sprites/buildings/rotater-fl.png": "sprites/buildings/rotater-fl.png":
{ {
"frame": {"x":1231,"y":1411,"w":141,"h":143}, "frame": {"x":935,"y":1329,"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},
@ -922,7 +930,7 @@
}, },
"sprites/buildings/rotater.png": "sprites/buildings/rotater.png":
{ {
"frame": {"x":1657,"y":1345,"w":141,"h":143}, "frame": {"x":1228,"y":1408,"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},
@ -930,7 +938,7 @@
}, },
"sprites/buildings/splitter-compact-inverse.png": "sprites/buildings/splitter-compact-inverse.png":
{ {
"frame": {"x":1082,"y":1461,"w":141,"h":136}, "frame": {"x":1080,"y":1466,"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},
@ -938,7 +946,7 @@
}, },
"sprites/buildings/splitter-compact-merge-inverse.png": "sprites/buildings/splitter-compact-merge-inverse.png":
{ {
"frame": {"x":1232,"y":1271,"w":142,"h":136}, "frame": {"x":559,"y":1178,"w":142,"h":136},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":3,"w":142,"h":136}, "spriteSourceSize": {"x":0,"y":3,"w":142,"h":136},
@ -946,7 +954,7 @@
}, },
"sprites/buildings/splitter-compact-merge.png": "sprites/buildings/splitter-compact-merge.png":
{ {
"frame": {"x":1653,"y":1492,"w":139,"h":136}, "frame": {"x":1658,"y":1473,"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},
@ -954,7 +962,7 @@
}, },
"sprites/buildings/splitter-compact.png": "sprites/buildings/splitter-compact.png":
{ {
"frame": {"x":1370,"y":1563,"w":139,"h":136}, "frame": {"x":1658,"y":1613,"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},
@ -994,7 +1002,7 @@
}, },
"sprites/buildings/underground_belt_entry-tier2.png": "sprites/buildings/underground_belt_entry-tier2.png":
{ {
"frame": {"x":645,"y":1493,"w":137,"h":124}, "frame": {"x":3,"y":1476,"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},
@ -1002,7 +1010,7 @@
}, },
"sprites/buildings/underground_belt_entry.png": "sprites/buildings/underground_belt_entry.png":
{ {
"frame": {"x":928,"y":1463,"w":137,"h":111}, "frame": {"x":283,"y":1414,"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},
@ -1010,7 +1018,7 @@
}, },
"sprites/buildings/underground_belt_exit-tier2.png": "sprites/buildings/underground_belt_exit-tier2.png":
{ {
"frame": {"x":786,"y":1534,"w":137,"h":111}, "frame": {"x":283,"y":1529,"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},
@ -1018,7 +1026,7 @@
}, },
"sprites/buildings/underground_belt_exit.png": "sprites/buildings/underground_belt_exit.png":
{ {
"frame": {"x":645,"y":1621,"w":137,"h":111}, "frame": {"x":424,"y":1588,"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},
@ -1042,12 +1050,20 @@
}, },
"sprites/buildings/virtual_processor-shapecompare.png": "sprites/buildings/virtual_processor-shapecompare.png":
{ {
"frame": {"x":560,"y":1036,"w":143,"h":133}, "frame": {"x":1244,"y":1271,"w":143,"h":133},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":143,"h":133}, "spriteSourceSize": {"x":1,"y":0,"w":143,"h":133},
"sourceSize": {"w":144,"h":144} "sourceSize": {"w":144,"h":144}
}, },
"sprites/buildings/virtual_processor-stacker.png":
{
"frame": {"x":3,"y":1849,"w":130,"h":144},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":130,"h":144},
"sourceSize": {"w":144,"h":144}
},
"sprites/buildings/virtual_processor-unstacker.png": "sprites/buildings/virtual_processor-unstacker.png":
{ {
"frame": {"x":3,"y":1035,"w":144,"h":143}, "frame": {"x":3,"y":1035,"w":144,"h":143},
@ -1106,7 +1122,7 @@
}, },
"sprites/buildings/wire_tunnel.png": "sprites/buildings/wire_tunnel.png":
{ {
"frame": {"x":787,"y":1396,"w":137,"h":134}, "frame": {"x":559,"y":1318,"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},
@ -1138,7 +1154,7 @@
}, },
"sprites/misc/processor_disabled.png": "sprites/misc/processor_disabled.png":
{ {
"frame": {"x":3,"y":1958,"w":78,"h":81}, "frame": {"x":3,"y":1606,"w":78,"h":81},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":10,"y":10,"w":78,"h":81}, "spriteSourceSize": {"x":10,"y":10,"w":78,"h":81},
@ -1186,7 +1202,7 @@
}, },
"sprites/misc/waypoint.png": "sprites/misc/waypoint.png":
{ {
"frame": {"x":292,"y":1834,"w":38,"h":48}, "frame": {"x":48,"y":1997,"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},
@ -1250,7 +1266,7 @@
}, },
"sprites/wires/display/white.png": "sprites/wires/display/white.png":
{ {
"frame": {"x":145,"y":1836,"w":47,"h":47}, "frame": {"x":90,"y":1997,"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},
@ -1258,7 +1274,7 @@
}, },
"sprites/wires/display/yellow.png": "sprites/wires/display/yellow.png":
{ {
"frame": {"x":196,"y":1836,"w":47,"h":47}, "frame": {"x":141,"y":1997,"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},
@ -1290,7 +1306,7 @@
}, },
"sprites/wires/network_conflict.png": "sprites/wires/network_conflict.png":
{ {
"frame": {"x":85,"y":1952,"w":47,"h":44}, "frame": {"x":192,"y":1997,"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},
@ -1298,7 +1314,7 @@
}, },
"sprites/wires/network_empty.png": "sprites/wires/network_empty.png":
{ {
"frame": {"x":247,"y":1834,"w":41,"h":48}, "frame": {"x":3,"y":1997,"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},
@ -1338,7 +1354,7 @@
}, },
"sprites/wires/sets/color_turn.png": "sprites/wires/sets/color_turn.png":
{ {
"frame": {"x":707,"y":1122,"w":81,"h":81}, "frame": {"x":706,"y":1122,"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},
@ -1370,7 +1386,7 @@
}, },
"sprites/wires/sets/conflict_turn.png": "sprites/wires/sets/conflict_turn.png":
{ {
"frame": {"x":706,"y":1207,"w":81,"h":81}, "frame": {"x":705,"y":1207,"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},
@ -1426,7 +1442,7 @@
}, },
"sprites/wires/sets/shape_split.png": "sprites/wires/sets/shape_split.png":
{ {
"frame": {"x":1095,"y":1086,"w":144,"h":81}, "frame": {"x":1097,"y":1086,"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},
@ -1434,7 +1450,7 @@
}, },
"sprites/wires/sets/shape_turn.png": "sprites/wires/sets/shape_turn.png":
{ {
"frame": {"x":706,"y":1292,"w":81,"h":81}, "frame": {"x":705,"y":1292,"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},
@ -1455,6 +1471,6 @@
"format": "RGBA8888", "format": "RGBA8888",
"size": {"w":2048,"h":2048}, "size": {"w":2048,"h":2048},
"scale": "0.75", "scale": "0.75",
"smartupdate": "$TexturePacker:SmartUpdate:26af492934beffa75e19b73e6d9eba56:d408ec7454e52a9384f80985bf14db9c:908b89f5ca8ff73e331a35a3b14d0604$" "smartupdate": "$TexturePacker:SmartUpdate:d21082eda6f288e04b0739186004794d:0912211652d1c400e2846013f9de057b:908b89f5ca8ff73e331a35a3b14d0604$"
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@ -10,7 +10,7 @@
}, },
"sprites/belt/built/forward_1.png": "sprites/belt/built/forward_1.png":
{ {
"frame": {"x":3,"y":939,"w":40,"h":48}, "frame": {"x":51,"y":961,"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":179,"y":969,"w":40,"h":48}, "frame": {"x":352,"y":869,"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":407,"y":864,"w":40,"h":48}, "frame": {"x":300,"y":891,"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":352,"y":869,"w":40,"h":48}, "frame": {"x":249,"y":893,"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":300,"y":883,"w":40,"h":48}, "frame": {"x":455,"y":864,"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":249,"y":893,"w":40,"h":48}, "frame": {"x":396,"y":912,"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":451,"y":864,"w":40,"h":48}, "frame": {"x":344,"y":921,"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":223,"y":945,"w":40,"h":48}, "frame": {"x":227,"y":973,"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":267,"y":945,"w":40,"h":48}, "frame": {"x":271,"y":973,"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":47,"y":961,"w":40,"h":48}, "frame": {"x":95,"y":961,"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":91,"y":961,"w":40,"h":48}, "frame": {"x":139,"y":941,"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":135,"y":941,"w":40,"h":48}, "frame": {"x":183,"y":917,"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":179,"y":917,"w":40,"h":48}, "frame": {"x":183,"y":969,"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},
@ -130,7 +130,7 @@
}, },
"sprites/belt/built/left_2.png": "sprites/belt/built/left_2.png":
{ {
"frame": {"x":223,"y":611,"w":44,"h":44}, "frame": {"x":323,"y":699,"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":275,"y":659,"w":44,"h":44}, "frame": {"x":275,"y":707,"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":323,"y":691,"w":44,"h":44}, "frame": {"x":323,"y":747,"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":275,"y":707,"w":44,"h":44}, "frame": {"x":208,"y":759,"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":323,"y":739,"w":44,"h":44}, "frame": {"x":156,"y":773,"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":208,"y":759,"w":44,"h":44}, "frame": {"x":105,"y":797,"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":156,"y":773,"w":44,"h":44}, "frame": {"x":54,"y":817,"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":105,"y":797,"w":44,"h":44}, "frame": {"x":3,"y":843,"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":325,"y":547,"w":44,"h":44}, "frame": {"x":465,"y":619,"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":325,"y":595,"w":44,"h":44}, "frame": {"x":324,"y":651,"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":464,"y":619,"w":44,"h":44}, "frame": {"x":223,"y":611,"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":324,"y":643,"w":44,"h":44}, "frame": {"x":275,"y":659,"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":54,"y":817,"w":44,"h":44}, "frame": {"x":311,"y":795,"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":3,"y":843,"w":44,"h":44}, "frame": {"x":256,"y":797,"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":102,"y":845,"w":44,"h":44}, "frame": {"x":3,"y":891,"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":51,"y":865,"w":44,"h":44}, "frame": {"x":359,"y":821,"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":3,"y":891,"w":44,"h":44}, "frame": {"x":304,"y":843,"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":359,"y":821,"w":44,"h":44}, "frame": {"x":252,"y":845,"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":304,"y":835,"w":44,"h":44}, "frame": {"x":201,"y":855,"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":252,"y":845,"w":44,"h":44}, "frame": {"x":150,"y":869,"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":201,"y":855,"w":44,"h":44}, "frame": {"x":99,"y":893,"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":150,"y":869,"w":44,"h":44}, "frame": {"x":51,"y":913,"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":311,"y":787,"w":44,"h":44}, "frame": {"x":204,"y":807,"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":256,"y":797,"w":44,"h":44}, "frame": {"x":153,"y":821,"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":204,"y":807,"w":44,"h":44}, "frame": {"x":102,"y":845,"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":153,"y":821,"w":44,"h":44}, "frame": {"x":51,"y":865,"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":99,"y":893,"w":44,"h":44}, "frame": {"x":3,"y":939,"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":51,"y":913,"w":44,"h":44}, "frame": {"x":407,"y":864,"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":311,"y":935,"w":40,"h":48}, "frame": {"x":315,"y":973,"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},
@ -656,6 +656,14 @@
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":45}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":45},
"sourceSize": {"w":48,"h":48} "sourceSize": {"w":48,"h":48}
}, },
"sprites/blueprints/virtual_processor-stacker.png":
{
"frame": {"x":325,"y":547,"w":45,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":45,"h":48},
"sourceSize": {"w":48,"h":48}
},
"sprites/blueprints/virtual_processor-unstacker.png": "sprites/blueprints/virtual_processor-unstacker.png":
{ {
"frame": {"x":107,"y":400,"w":48,"h":48}, "frame": {"x":107,"y":400,"w":48,"h":48},
@ -706,7 +714,7 @@
}, },
"sprites/blueprints/wire_tunnel-coating.png": "sprites/blueprints/wire_tunnel-coating.png":
{ {
"frame": {"x":425,"y":655,"w":12,"h":46}, "frame": {"x":426,"y":655,"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},
@ -730,7 +738,7 @@
}, },
"sprites/buildings/belt_right.png": "sprites/buildings/belt_right.png":
{ {
"frame": {"x":54,"y":817,"w":44,"h":44}, "frame": {"x":311,"y":795,"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},
@ -818,7 +826,7 @@
}, },
"sprites/buildings/logic_gate-transistor.png": "sprites/buildings/logic_gate-transistor.png":
{ {
"frame": {"x":425,"y":586,"w":35,"h":48}, "frame": {"x":426,"y":586,"w":35,"h":48},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":35,"h":48}, "spriteSourceSize": {"x":0,"y":0,"w":35,"h":48},
@ -914,7 +922,7 @@
}, },
"sprites/buildings/rotater-fl.png": "sprites/buildings/rotater-fl.png":
{ {
"frame": {"x":273,"y":555,"w":48,"h":48}, "frame": {"x":374,"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},
@ -922,7 +930,7 @@
}, },
"sprites/buildings/rotater.png": "sprites/buildings/rotater.png":
{ {
"frame": {"x":373,"y":567,"w":48,"h":48}, "frame": {"x":273,"y":555,"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},
@ -986,7 +994,7 @@
}, },
"sprites/buildings/trash.png": "sprites/buildings/trash.png":
{ {
"frame": {"x":373,"y":619,"w":48,"h":48}, "frame": {"x":374,"y":619,"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},
@ -1048,6 +1056,14 @@
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":45}, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":45},
"sourceSize": {"w":48,"h":48} "sourceSize": {"w":48,"h":48}
}, },
"sprites/buildings/virtual_processor-stacker.png":
{
"frame": {"x":325,"y":599,"w":45,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":45,"h":48},
"sourceSize": {"w":48,"h":48}
},
"sprites/buildings/virtual_processor-unstacker.png": "sprites/buildings/virtual_processor-unstacker.png":
{ {
"frame": {"x":272,"y":607,"w":48,"h":48}, "frame": {"x":272,"y":607,"w":48,"h":48},
@ -1066,7 +1082,7 @@
}, },
"sprites/buildings/wire-cross.png": "sprites/buildings/wire-cross.png":
{ {
"frame": {"x":457,"y":667,"w":48,"h":48}, "frame": {"x":458,"y":667,"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},
@ -1098,7 +1114,7 @@
}, },
"sprites/buildings/wire_tunnel-coating.png": "sprites/buildings/wire_tunnel-coating.png":
{ {
"frame": {"x":441,"y":655,"w":12,"h":46}, "frame": {"x":442,"y":655,"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},
@ -1162,7 +1178,7 @@
}, },
"sprites/misc/slot_bad_arrow.png": "sprites/misc/slot_bad_arrow.png":
{ {
"frame": {"x":425,"y":638,"w":13,"h":13}, "frame": {"x":426,"y":638,"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},
@ -1170,7 +1186,7 @@
}, },
"sprites/misc/slot_good_arrow.png": "sprites/misc/slot_good_arrow.png":
{ {
"frame": {"x":442,"y":638,"w":13,"h":13}, "frame": {"x":443,"y":638,"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},
@ -1378,7 +1394,7 @@
}, },
"sprites/wires/sets/regular_cross.png": "sprites/wires/sets/regular_cross.png":
{ {
"frame": {"x":457,"y":667,"w":48,"h":48}, "frame": {"x":458,"y":667,"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},
@ -1455,6 +1471,6 @@
"format": "RGBA8888", "format": "RGBA8888",
"size": {"w":512,"h":1024}, "size": {"w":512,"h":1024},
"scale": "0.25", "scale": "0.25",
"smartupdate": "$TexturePacker:SmartUpdate:26af492934beffa75e19b73e6d9eba56:d408ec7454e52a9384f80985bf14db9c:908b89f5ca8ff73e331a35a3b14d0604$" "smartupdate": "$TexturePacker:SmartUpdate:d21082eda6f288e04b0739186004794d:0912211652d1c400e2846013f9de057b:908b89f5ca8ff73e331a35a3b14d0604$"
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 277 KiB

After

Width:  |  Height:  |  Size: 280 KiB

View File

@ -10,7 +10,7 @@
}, },
"sprites/belt/built/forward_1.png": "sprites/belt/built/forward_1.png":
{ {
"frame": {"x":891,"y":1749,"w":78,"h":96}, "frame": {"x":94,"y":1746,"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":331,"y":1550,"w":78,"h":96}, "frame": {"x":754,"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},
@ -26,7 +26,7 @@
}, },
"sprites/belt/built/forward_3.png": "sprites/belt/built/forward_3.png":
{ {
"frame": {"x":413,"y":1639,"w":78,"h":96}, "frame": {"x":653,"y":1564,"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":495,"y":1695,"w":78,"h":96}, "frame": {"x":556,"y":1601,"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":577,"y":1756,"w":78,"h":96}, "frame": {"x":458,"y":1663,"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":659,"y":1834,"w":78,"h":96}, "frame": {"x":359,"y":1711,"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":3,"y":1934,"w":78,"h":96}, "frame": {"x":268,"y":1771,"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":85,"y":1538,"w":78,"h":96}, "frame": {"x":176,"y":1835,"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":3,"y":1538,"w":78,"h":96}, "frame": {"x":85,"y":1846,"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":3,"y":1438,"w":78,"h":96}, "frame": {"x":3,"y":1789,"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":85,"y":1438,"w":78,"h":96}, "frame": {"x":3,"y":1889,"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":167,"y":1502,"w":78,"h":96}, "frame": {"x":856,"y":1469,"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":249,"y":1530,"w":78,"h":96}, "frame": {"x":938,"y":1469,"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":931,"y":903,"w":87,"h":87}, "frame": {"x":403,"y":911,"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":403,"y":911,"w":87,"h":87}, "frame": {"x":403,"y":1002,"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":663,"y":1383,"w":87,"h":87}, "frame": {"x":3,"y":1516,"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":572,"y":1418,"w":87,"h":87}, "frame": {"x":785,"y":1191,"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":754,"y":1461,"w":87,"h":87}, "frame": {"x":876,"y":1196,"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":663,"y":1474,"w":87,"h":87}, "frame": {"x":785,"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":845,"y":1464,"w":87,"h":87}, "frame": {"x":685,"y":1287,"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":754,"y":1552,"w":87,"h":87}, "frame": {"x":583,"y":1325,"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":845,"y":1555,"w":87,"h":87}, "frame": {"x":482,"y":1381,"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":3,"y":1256,"w":87,"h":87}, "frame": {"x":383,"y":1429,"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":401,"y":1002,"w":87,"h":87}, "frame": {"x":391,"y":1338,"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":481,"y":1275,"w":87,"h":87}, "frame": {"x":292,"y":1398,"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":572,"y":1327,"w":87,"h":87}, "frame": {"x":196,"y":1462,"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":481,"y":1366,"w":87,"h":87}, "frame": {"x":99,"y":1473,"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":94,"y":1256,"w":87,"h":87}, "frame": {"x":287,"y":1489,"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":1320,"w":87,"h":87}, "frame": {"x":190,"y":1553,"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":640,"y":1565,"w":87,"h":87}, "frame": {"x":674,"y":1378,"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":731,"y":1643,"w":87,"h":87}, "frame": {"x":573,"y":1416,"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":822,"y":1646,"w":87,"h":87}, "frame": {"x":474,"y":1472,"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":913,"y":1658,"w":87,"h":87}, "frame": {"x":378,"y":1520,"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":3,"y":1347,"w":87,"h":87}, "frame": {"x":281,"y":1580,"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":1347,"w":87,"h":87}, "frame": {"x":185,"y":1644,"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":185,"y":1411,"w":87,"h":87}, "frame": {"x":94,"y":1655,"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":276,"y":1439,"w":87,"h":87}, "frame": {"x":3,"y":1698,"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":276,"y":1348,"w":87,"h":87}, "frame": {"x":94,"y":1564,"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":367,"y":1368,"w":87,"h":87}, "frame": {"x":3,"y":1607,"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":458,"y":1457,"w":87,"h":87}, "frame": {"x":876,"y":1287,"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":549,"y":1509,"w":87,"h":87}, "frame": {"x":776,"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":367,"y":1459,"w":87,"h":87}, "frame": {"x":867,"y":1378,"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":458,"y":1548,"w":87,"h":87}, "frame": {"x":765,"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":167,"y":1602,"w":78,"h":96}, "frame": {"x":85,"y":1946,"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":549,"y":1600,"w":86,"h":91}, "frame": {"x":664,"y":1469,"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,7 +402,7 @@
}, },
"sprites/blueprints/lever.png": "sprites/blueprints/lever.png":
{ {
"frame": {"x":85,"y":1638,"w":75,"h":86}, "frame": {"x":167,"y":1935,"w":75,"h":86},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":11,"y":3,"w":75,"h":86}, "spriteSourceSize": {"x":11,"y":3,"w":75,"h":86},
@ -410,7 +410,7 @@
}, },
"sprites/blueprints/logic_gate-not.png": "sprites/blueprints/logic_gate-not.png":
{ {
"frame": {"x":936,"y":1558,"w":83,"h":96}, "frame": {"x":469,"y":1563,"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":203,"y":861,"w":96,"h":82}, "frame": {"x":303,"y":903,"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":910,"y":1094,"w":96,"h":89}, "frame": {"x":910,"y":1103,"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":585,"y":1227,"w":92,"h":96}, "frame": {"x":100,"y":1373,"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":681,"y":1283,"w":92,"h":96}, "frame": {"x":3,"y":1416,"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},
@ -506,7 +506,7 @@
}, },
"sprites/blueprints/reader.png": "sprites/blueprints/reader.png":
{ {
"frame": {"x":203,"y":947,"w":95,"h":96}, "frame": {"x":3,"y":926,"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},
@ -522,7 +522,7 @@
}, },
"sprites/blueprints/rotater-fl.png": "sprites/blueprints/rotater-fl.png":
{ {
"frame": {"x":302,"y":961,"w":95,"h":96}, "frame": {"x":102,"y":983,"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},
@ -538,7 +538,7 @@
}, },
"sprites/blueprints/splitter-compact-inverse.png": "sprites/blueprints/splitter-compact-inverse.png":
{ {
"frame": {"x":399,"y":1093,"w":95,"h":93}, "frame": {"x":300,"y":1047,"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},
@ -546,7 +546,7 @@
}, },
"sprites/blueprints/splitter-compact-merge-inverse.png": "sprites/blueprints/splitter-compact-merge-inverse.png":
{ {
"frame": {"x":498,"y":1099,"w":95,"h":93}, "frame": {"x":201,"y":1111,"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},
@ -554,7 +554,7 @@
}, },
"sprites/blueprints/splitter-compact-merge.png": "sprites/blueprints/splitter-compact-merge.png":
{ {
"frame": {"x":794,"y":1270,"w":93,"h":93}, "frame": {"x":300,"y":1144,"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},
@ -562,7 +562,7 @@
}, },
"sprites/blueprints/splitter-compact.png": "sprites/blueprints/splitter-compact.png":
{ {
"frame": {"x":891,"y":1280,"w":93,"h":93}, "frame": {"x":201,"y":1208,"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},
@ -602,7 +602,7 @@
}, },
"sprites/blueprints/underground_belt_entry-tier2.png": "sprites/blueprints/underground_belt_entry-tier2.png":
{ {
"frame": {"x":294,"y":1161,"w":93,"h":84}, "frame": {"x":397,"y":1172,"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},
@ -610,7 +610,7 @@
}, },
"sprites/blueprints/underground_belt_entry.png": "sprites/blueprints/underground_belt_entry.png":
{ {
"frame": {"x":391,"y":1190,"w":93,"h":75}, "frame": {"x":298,"y":1241,"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},
@ -618,7 +618,7 @@
}, },
"sprites/blueprints/underground_belt_exit-tier2.png": "sprites/blueprints/underground_belt_exit-tier2.png":
{ {
"frame": {"x":794,"y":1191,"w":94,"h":75}, "frame": {"x":399,"y":1093,"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},
@ -626,7 +626,7 @@
}, },
"sprites/blueprints/underground_belt_exit.png": "sprites/blueprints/underground_belt_exit.png":
{ {
"frame": {"x":488,"y":1196,"w":93,"h":75}, "frame": {"x":198,"y":1305,"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},
@ -642,7 +642,7 @@
}, },
"sprites/blueprints/virtual_processor-rotater.png": "sprites/blueprints/virtual_processor-rotater.png":
{ {
"frame": {"x":725,"y":1734,"w":79,"h":96}, "frame": {"x":276,"y":1671,"w":79,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":79,"h":96}, "spriteSourceSize": {"x":9,"y":0,"w":79,"h":96},
@ -650,12 +650,20 @@
}, },
"sprites/blueprints/virtual_processor-shapecompare.png": "sprites/blueprints/virtual_processor-shapecompare.png":
{ {
"frame": {"x":910,"y":1187,"w":96,"h":89}, "frame": {"x":3,"y":774,"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},
"sourceSize": {"w":96,"h":96} "sourceSize": {"w":96,"h":96}
}, },
"sprites/blueprints/virtual_processor-stacker.png":
{
"frame": {"x":931,"y":903,"w":88,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":88,"h":96},
"sourceSize": {"w":96,"h":96}
},
"sprites/blueprints/virtual_processor-unstacker.png": "sprites/blueprints/virtual_processor-unstacker.png":
{ {
"frame": {"x":349,"y":803,"w":96,"h":96}, "frame": {"x":349,"y":803,"w":96,"h":96},
@ -682,7 +690,7 @@
}, },
"sprites/blueprints/wire-split.png": "sprites/blueprints/wire-split.png":
{ {
"frame": {"x":103,"y":866,"w":96,"h":55}, "frame": {"x":3,"y":867,"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},
@ -714,7 +722,7 @@
}, },
"sprites/blueprints/wire_tunnel.png": "sprites/blueprints/wire_tunnel.png":
{ {
"frame": {"x":3,"y":1083,"w":93,"h":91}, "frame": {"x":101,"y":1278,"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},
@ -722,7 +730,7 @@
}, },
"sprites/buildings/belt_left.png": "sprites/buildings/belt_left.png":
{ {
"frame": {"x":931,"y":903,"w":87,"h":87}, "frame": {"x":403,"y":911,"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},
@ -730,7 +738,7 @@
}, },
"sprites/buildings/belt_right.png": "sprites/buildings/belt_right.png":
{ {
"frame": {"x":94,"y":1256,"w":87,"h":87}, "frame": {"x":287,"y":1489,"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},
@ -770,7 +778,7 @@
}, },
"sprites/buildings/display.png": "sprites/buildings/display.png":
{ {
"frame": {"x":936,"y":1464,"w":84,"h":90}, "frame": {"x":565,"y":1507,"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},
@ -802,7 +810,7 @@
}, },
"sprites/buildings/logic_gate-not.png": "sprites/buildings/logic_gate-not.png":
{ {
"frame": {"x":639,"y":1656,"w":82,"h":96}, "frame": {"x":372,"y":1611,"w":82,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":8,"y":0,"w":82,"h":96}, "spriteSourceSize": {"x":8,"y":0,"w":82,"h":96},
@ -810,7 +818,7 @@
}, },
"sprites/buildings/logic_gate-or.png": "sprites/buildings/logic_gate-or.png":
{ {
"frame": {"x":203,"y":774,"w":96,"h":83}, "frame": {"x":203,"y":866,"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},
@ -834,7 +842,7 @@
}, },
"sprites/buildings/logic_gate.png": "sprites/buildings/logic_gate.png":
{ {
"frame": {"x":103,"y":774,"w":96,"h":88}, "frame": {"x":203,"y":774,"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},
@ -842,7 +850,7 @@
}, },
"sprites/buildings/miner-chainable.png": "sprites/buildings/miner-chainable.png":
{ {
"frame": {"x":291,"y":1249,"w":91,"h":95}, "frame": {"x":690,"y":1188,"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},
@ -850,7 +858,7 @@
}, },
"sprites/buildings/miner.png": "sprites/buildings/miner.png":
{ {
"frame": {"x":386,"y":1269,"w":91,"h":95}, "frame": {"x":590,"y":1226,"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},
@ -898,7 +906,7 @@
}, },
"sprites/buildings/reader.png": "sprites/buildings/reader.png":
{ {
"frame": {"x":3,"y":983,"w":95,"h":96}, "frame": {"x":3,"y":1026,"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},
@ -906,7 +914,7 @@
}, },
"sprites/buildings/rotater-ccw.png": "sprites/buildings/rotater-ccw.png":
{ {
"frame": {"x":102,"y":983,"w":95,"h":96}, "frame": {"x":201,"y":1011,"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},
@ -914,7 +922,7 @@
}, },
"sprites/buildings/rotater-fl.png": "sprites/buildings/rotater-fl.png":
{ {
"frame": {"x":201,"y":1047,"w":95,"h":96}, "frame": {"x":102,"y":1083,"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},
@ -922,7 +930,7 @@
}, },
"sprites/buildings/rotater.png": "sprites/buildings/rotater.png":
{ {
"frame": {"x":300,"y":1061,"w":95,"h":96}, "frame": {"x":3,"y":1126,"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},
@ -930,7 +938,7 @@
}, },
"sprites/buildings/splitter-compact-inverse.png": "sprites/buildings/splitter-compact-inverse.png":
{ {
"frame": {"x":696,"y":1188,"w":94,"h":91}, "frame": {"x":3,"y":1226,"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},
@ -938,7 +946,7 @@
}, },
"sprites/buildings/splitter-compact-merge-inverse.png": "sprites/buildings/splitter-compact-merge-inverse.png":
{ {
"frame": {"x":597,"y":1132,"w":95,"h":91}, "frame": {"x":102,"y":1183,"w":95,"h":91},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":0,"y":2,"w":95,"h":91}, "spriteSourceSize": {"x":0,"y":2,"w":95,"h":91},
@ -946,7 +954,7 @@
}, },
"sprites/buildings/splitter-compact-merge.png": "sprites/buildings/splitter-compact-merge.png":
{ {
"frame": {"x":100,"y":1083,"w":93,"h":91}, "frame": {"x":3,"y":1321,"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},
@ -954,7 +962,7 @@
}, },
"sprites/buildings/splitter-compact.png": "sprites/buildings/splitter-compact.png":
{ {
"frame": {"x":197,"y":1147,"w":93,"h":91}, "frame": {"x":497,"y":1099,"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},
@ -994,7 +1002,7 @@
}, },
"sprites/buildings/underground_belt_entry-tier2.png": "sprites/buildings/underground_belt_entry-tier2.png":
{ {
"frame": {"x":873,"y":1377,"w":92,"h":83}, "frame": {"x":494,"y":1194,"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},
@ -1002,7 +1010,7 @@
}, },
"sprites/buildings/underground_belt_entry.png": "sprites/buildings/underground_belt_entry.png":
{ {
"frame": {"x":3,"y":1178,"w":92,"h":74}, "frame": {"x":395,"y":1260,"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},
@ -1010,7 +1018,7 @@
}, },
"sprites/buildings/underground_belt_exit-tier2.png": "sprites/buildings/underground_belt_exit-tier2.png":
{ {
"frame": {"x":99,"y":1178,"w":92,"h":74}, "frame": {"x":295,"y":1320,"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},
@ -1018,7 +1026,7 @@
}, },
"sprites/buildings/underground_belt_exit.png": "sprites/buildings/underground_belt_exit.png":
{ {
"frame": {"x":195,"y":1242,"w":92,"h":74}, "frame": {"x":196,"y":1384,"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},
@ -1034,7 +1042,7 @@
}, },
"sprites/buildings/virtual_processor-rotater.png": "sprites/buildings/virtual_processor-rotater.png":
{ {
"frame": {"x":808,"y":1737,"w":79,"h":96}, "frame": {"x":185,"y":1735,"w":79,"h":96},
"rotated": false, "rotated": false,
"trimmed": true, "trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":79,"h":96}, "spriteSourceSize": {"x":9,"y":0,"w":79,"h":96},
@ -1042,12 +1050,20 @@
}, },
"sprites/buildings/virtual_processor-shapecompare.png": "sprites/buildings/virtual_processor-shapecompare.png":
{ {
"frame": {"x":3,"y":774,"w":96,"h":89}, "frame": {"x":103,"y":774,"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},
"sourceSize": {"w":96,"h":96} "sourceSize": {"w":96,"h":96}
}, },
"sprites/buildings/virtual_processor-stacker.png":
{
"frame": {"x":491,"y":1281,"w":88,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":88,"h":96},
"sourceSize": {"w":96,"h":96}
},
"sprites/buildings/virtual_processor-unstacker.png": "sprites/buildings/virtual_processor-unstacker.png":
{ {
"frame": {"x":510,"y":999,"w":96,"h":96}, "frame": {"x":510,"y":999,"w":96,"h":96},
@ -1074,7 +1090,7 @@
}, },
"sprites/buildings/wire-split.png": "sprites/buildings/wire-split.png":
{ {
"frame": {"x":3,"y":867,"w":96,"h":54}, "frame": {"x":103,"y":867,"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},
@ -1106,7 +1122,7 @@
}, },
"sprites/buildings/wire_tunnel.png": "sprites/buildings/wire_tunnel.png":
{ {
"frame": {"x":777,"y":1367,"w":92,"h":90}, "frame": {"x":594,"y":1132,"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},
@ -1330,7 +1346,7 @@
}, },
"sprites/wires/sets/color_split.png": "sprites/wires/sets/color_split.png":
{ {
"frame": {"x":303,"y":903,"w":96,"h":54}, "frame": {"x":103,"y":925,"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},
@ -1362,7 +1378,7 @@
}, },
"sprites/wires/sets/conflict_split.png": "sprites/wires/sets/conflict_split.png":
{ {
"frame": {"x":3,"y":925,"w":96,"h":54}, "frame": {"x":203,"y":953,"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},
@ -1394,7 +1410,7 @@
}, },
"sprites/wires/sets/regular_split.png": "sprites/wires/sets/regular_split.png":
{ {
"frame": {"x":3,"y":867,"w":96,"h":54}, "frame": {"x":103,"y":867,"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},
@ -1410,7 +1426,7 @@
}, },
"sprites/wires/sets/shape_cross.png": "sprites/wires/sets/shape_cross.png":
{ {
"frame": {"x":922,"y":994,"w":96,"h":96}, "frame": {"x":922,"y":1003,"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},
@ -1426,7 +1442,7 @@
}, },
"sprites/wires/sets/shape_split.png": "sprites/wires/sets/shape_split.png":
{ {
"frame": {"x":103,"y":925,"w":96,"h":54}, "frame": {"x":303,"y":989,"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},
@ -1455,6 +1471,6 @@
"format": "RGBA8888", "format": "RGBA8888",
"size": {"w":1024,"h":2048}, "size": {"w":1024,"h":2048},
"scale": "0.5", "scale": "0.5",
"smartupdate": "$TexturePacker:SmartUpdate:26af492934beffa75e19b73e6d9eba56:d408ec7454e52a9384f80985bf14db9c:908b89f5ca8ff73e331a35a3b14d0604$" "smartupdate": "$TexturePacker:SmartUpdate:d21082eda6f288e04b0739186004794d:0912211652d1c400e2846013f9de057b:908b89f5ca8ff73e331a35a3b14d0604$"
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 658 KiB

After

Width:  |  Height:  |  Size: 677 KiB

View File

@ -267,6 +267,7 @@
<key type="filename">sprites/blueprints/logic_gate.png</key> <key type="filename">sprites/blueprints/logic_gate.png</key>
<key type="filename">sprites/blueprints/miner-chainable.png</key> <key type="filename">sprites/blueprints/miner-chainable.png</key>
<key type="filename">sprites/blueprints/miner.png</key> <key type="filename">sprites/blueprints/miner.png</key>
<key type="filename">sprites/blueprints/reader.png</key>
<key type="filename">sprites/blueprints/rotater-ccw.png</key> <key type="filename">sprites/blueprints/rotater-ccw.png</key>
<key type="filename">sprites/blueprints/rotater-fl.png</key> <key type="filename">sprites/blueprints/rotater-fl.png</key>
<key type="filename">sprites/blueprints/rotater.png</key> <key type="filename">sprites/blueprints/rotater.png</key>
@ -295,6 +296,7 @@
<key type="filename">sprites/buildings/logic_gate-xor.png</key> <key type="filename">sprites/buildings/logic_gate-xor.png</key>
<key type="filename">sprites/buildings/logic_gate.png</key> <key type="filename">sprites/buildings/logic_gate.png</key>
<key type="filename">sprites/buildings/miner-chainable.png</key> <key type="filename">sprites/buildings/miner-chainable.png</key>
<key type="filename">sprites/buildings/reader.png</key>
<key type="filename">sprites/buildings/rotater-ccw.png</key> <key type="filename">sprites/buildings/rotater-ccw.png</key>
<key type="filename">sprites/buildings/rotater-fl.png</key> <key type="filename">sprites/buildings/rotater-fl.png</key>
<key type="filename">sprites/buildings/splitter-compact-inverse.png</key> <key type="filename">sprites/buildings/splitter-compact-inverse.png</key>
@ -312,6 +314,7 @@
<key type="filename">sprites/buildings/virtual_processor.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-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/misc/reader_overlay.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>
<key type="filename">sprites/wires/sets/color_forward.png</key> <key type="filename">sprites/wires/sets/color_forward.png</key>
@ -466,6 +469,8 @@
<key type="filename">sprites/buildings/miner.png</key> <key type="filename">sprites/buildings/miner.png</key>
<key type="filename">sprites/buildings/rotater.png</key> <key type="filename">sprites/buildings/rotater.png</key>
<key type="filename">sprites/buildings/trash.png</key> <key type="filename">sprites/buildings/trash.png</key>
<key type="filename">sprites/misc/processor_disabled.png</key>
<key type="filename">sprites/misc/processor_disconnected.png</key>
<key type="filename">sprites/wires/logical_acceptor.png</key> <key type="filename">sprites/wires/logical_acceptor.png</key>
<key type="filename">sprites/wires/logical_ejector.png</key> <key type="filename">sprites/wires/logical_ejector.png</key>
<key type="filename">sprites/wires/overlay_tile.png</key> <key type="filename">sprites/wires/overlay_tile.png</key>

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

View File

@ -51,7 +51,7 @@ export default {
// testClipping: true, // testClipping: true,
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
// Allows to render slower, useful for recording at half speed to avoid stuttering // Allows to render slower, useful for recording at half speed to avoid stuttering
// framePausesBetweenTicks: 1, // framePausesBetweenTicks: 250,
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
// Replace all translations with emojis to see which texts are translateable // Replace all translations with emojis to see which texts are translateable
// testTranslations: true, // testTranslations: true,
@ -107,5 +107,8 @@ export default {
// Disables ejector animations and processing // Disables ejector animations and processing
// disableEjectorProcessing: true, // disableEjectorProcessing: true,
// ----------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------
// Allows manual ticking
// manualTickOnly: true,
// -----------------------------------------------------------------------------------
/* dev:end */ /* dev:end */
}; };

View File

@ -2,7 +2,7 @@ import { globalConfig } from "../core/config";
import { DrawParameters } from "../core/draw_parameters"; import { DrawParameters } from "../core/draw_parameters";
import { createLogger } from "../core/logging"; import { createLogger } from "../core/logging";
import { Rectangle } from "../core/rectangle"; import { Rectangle } from "../core/rectangle";
import { epsilonCompare, round4Digits } from "../core/utils"; import { epsilonCompare, round4Digits, clamp } from "../core/utils";
import { enumDirection, enumDirectionToVector, enumInvertedDirections, Vector } from "../core/vector"; import { enumDirection, enumDirectionToVector, enumInvertedDirections, Vector } from "../core/vector";
import { BasicSerializableObject, types } from "../savegame/serialization"; import { BasicSerializableObject, types } from "../savegame/serialization";
import { BaseItem } from "./base_item"; import { BaseItem } from "./base_item";
@ -982,28 +982,50 @@ export class BeltPath extends BasicSerializableObject {
beltSpeed *= 100; beltSpeed *= 100;
} }
let minimumDistance = 0; // Store whether this is the first item we processed, so premature
// item ejection is available
let isFirstItemProcessed = true;
// Store how much velocity (strictly its distance, not velocity) we have to distribute over all items
let remainingVelocity = beltSpeed;
// Try to reduce spacing
let remainingAmount = beltSpeed;
for (let i = this.items.length - 1; i >= 0; --i) { for (let i = this.items.length - 1; i >= 0; --i) {
const nextDistanceAndItem = this.items[i]; const nextDistanceAndItem = this.items[i];
const minimumSpacing = minimumDistance;
const takeAway = Math.max( // Compute how much spacing we need at least
const minimumSpacing = i === this.items.length - 1 ? 0 : globalConfig.itemSpacingOnBelts;
// Compute how much we can advance
const clampedProgress = Math.max(
0, 0,
Math.min(remainingAmount, nextDistanceAndItem[_nextDistance] - minimumSpacing) Math.min(remainingVelocity, nextDistanceAndItem[_nextDistance] - minimumSpacing)
); );
remainingAmount -= takeAway; // Reduce our velocity by the amount we consumed
nextDistanceAndItem[_nextDistance] -= takeAway; remainingVelocity -= clampedProgress;
this.spacingToFirstItem += takeAway; // Reduce the spacing
if (remainingAmount < 0.01) { nextDistanceAndItem[_nextDistance] -= clampedProgress;
break;
// If the last item can be ejected, eject it and reduce the spacing, because otherwise
// we lose velocity
if (isFirstItemProcessed && nextDistanceAndItem[_nextDistance] < 1e-7) {
// Store how much velocity we "lost" because we bumped the item to the end of the
// belt but couldn't move it any farther. We need this to tell the item acceptor
// animation to start a tad later, so everything matches up. Yes I'm a perfectionist.
const excessVelocity = beltSpeed - clampedProgress;
// Try to directly get rid of the item
if (this.tryHandOverItem(nextDistanceAndItem[_item], excessVelocity)) {
this.items.pop();
}
} }
minimumDistance = globalConfig.itemSpacingOnBelts; isFirstItemProcessed = false;
this.spacingToFirstItem += clampedProgress;
if (remainingVelocity < 0.01) {
break;
}
} }
// Check if we have an item which is ready to be emitted // Check if we have an item which is ready to be emitted
@ -1023,7 +1045,7 @@ export class BeltPath extends BasicSerializableObject {
* Tries to hand over the item to the end entity * Tries to hand over the item to the end entity
* @param {BaseItem} item * @param {BaseItem} item
*/ */
tryHandOverItem(item) { tryHandOverItem(item, remainingProgress = 0.0) {
if (!this.acceptorTarget) { if (!this.acceptorTarget) {
return; return;
} }
@ -1050,7 +1072,8 @@ export class BeltPath extends BasicSerializableObject {
targetAcceptorComp.onItemAccepted( targetAcceptorComp.onItemAccepted(
this.acceptorTarget.slot, this.acceptorTarget.slot,
this.acceptorTarget.direction, this.acceptorTarget.direction,
item item,
remainingProgress
); );
} }

View File

@ -1,5 +1,7 @@
import { Component } from "../component"; import { Component } from "../component";
import { BaseItem } from "../base_item"; import { BaseItem } from "../base_item";
import { typeItemSingleton } from "../item_resolver";
import { types } from "../../savegame/serialization";
export class BeltReaderComponent extends Component { export class BeltReaderComponent extends Component {
static getId() { static getId() {
@ -10,6 +12,12 @@ export class BeltReaderComponent extends Component {
return new BeltReaderComponent(); return new BeltReaderComponent();
} }
static getSchema() {
return {
lastItem: types.nullable(typeItemSingleton),
};
}
constructor() { constructor() {
super(); super();

View File

@ -54,7 +54,12 @@ export class ItemAcceptorComponent extends Component {
/** /**
* Fixes belt animations * Fixes belt animations
* @type {Array<{ item: BaseItem, slotIndex: number, animProgress: number, direction: enumDirection }>} * @type {Array<{
* item: BaseItem,
* slotIndex: number,
* animProgress: number,
* direction: enumDirection
* }>}
*/ */
this.itemConsumptionAnimations = []; this.itemConsumptionAnimations = [];
@ -95,13 +100,14 @@ export class ItemAcceptorComponent extends Component {
* @param {number} slotIndex * @param {number} slotIndex
* @param {enumDirection} direction * @param {enumDirection} direction
* @param {BaseItem} item * @param {BaseItem} item
* @param {number} remainingProgress World space remaining progress, can be set to set the start position of the item
*/ */
onItemAccepted(slotIndex, direction, item) { onItemAccepted(slotIndex, direction, item, remainingProgress = 0.0) {
this.itemConsumptionAnimations.push({ this.itemConsumptionAnimations.push({
item, item,
slotIndex, slotIndex,
direction, direction,
animProgress: 0.0, animProgress: Math.min(1, remainingProgress * 2),
}); });
} }

View File

@ -29,6 +29,17 @@ export const enumItemProcessorRequirements = {
filter: "filter", filter: "filter",
}; };
/** @typedef {{
* item: BaseItem,
* requiredSlot?: number,
* preferredSlot?: number
* }} EjectorItemToEject */
/** @typedef {{
* remainingTime: number,
* items: Array<EjectorItemToEject>,
* }} EjectorCharge */
export class ItemProcessorComponent extends Component { export class ItemProcessorComponent extends Component {
static getId() { static getId() {
return "ItemProcessor"; return "ItemProcessor";
@ -37,20 +48,6 @@ export class ItemProcessorComponent extends Component {
static getSchema() { static getSchema() {
return { return {
nextOutputSlot: types.uint, nextOutputSlot: types.uint,
inputSlots: types.array(
types.structured({
item: typeItemSingleton,
sourceSlot: types.uint,
})
),
itemsToEject: types.array(
types.structured({
item: typeItemSingleton,
requiredSlot: types.nullable(types.uint),
preferredSlot: types.nullable(types.uint),
})
),
secondsUntilEject: types.float,
}; };
} }
@ -101,21 +98,15 @@ export class ItemProcessorComponent extends Component {
* What we are currently processing, empty if we don't produce anything rn * What we are currently processing, empty if we don't produce anything rn
* requiredSlot: Item *must* be ejected on this slot * requiredSlot: Item *must* be ejected on this slot
* preferredSlot: Item *can* be ejected on this slot, but others are fine too if the one is not usable * preferredSlot: Item *can* be ejected on this slot, but others are fine too if the one is not usable
* @type {Array<{item: BaseItem, requiredSlot?: number, preferredSlot?: number}>} * @type {Array<EjectorCharge>}
*/ */
this.itemsToEject = []; this.ongoingCharges = [];
/**
* How long it takes until we are done with the current items
* @type {number}
*/
this.secondsUntilEject = 0;
/** /**
* How much processing time we have left from the last tick * How much processing time we have left from the last tick
* @type {number} * @type {number}
*/ */
this.bonusFromLastTick = 0; this.bonusTime = 0;
} }
/** /**

View File

@ -125,6 +125,24 @@ export class GameCore {
// @ts-ignore // @ts-ignore
window.globalRoot = root; window.globalRoot = root;
} }
// @todo Find better place
if (G_IS_DEV && globalConfig.debug.manualTickOnly) {
this.root.gameState.inputReciever.keydown.add(key => {
if (key.keyCode === 84) {
// 'T'
// Extract current real time
this.root.time.updateRealtimeNow();
// Perform logic ticks
this.root.time.performTicks(this.root.dynamicTickrate.deltaMs, this.boundInternalTick);
// Update analytics
root.productionAnalytics.update();
}
});
}
} }
/** /**
@ -244,11 +262,13 @@ export class GameCore {
// Camera is always updated, no matter what // Camera is always updated, no matter what
root.camera.update(deltaMs); root.camera.update(deltaMs);
if (!(G_IS_DEV && globalConfig.debug.manualTickOnly)) {
// Perform logic ticks // Perform logic ticks
this.root.time.performTicks(deltaMs, this.boundInternalTick); this.root.time.performTicks(deltaMs, this.boundInternalTick);
// Update analytics // Update analytics
root.productionAnalytics.update(); root.productionAnalytics.update();
}
// Update automatic save after everything finished // Update automatic save after everything finished
root.automaticSave.update(); root.automaticSave.update();

View File

@ -23,7 +23,7 @@ export class DynamicTickrate {
this.averageFps = 60; this.averageFps = 60;
this.setTickRate(60); this.setTickRate(this.root.app.settings.getDesiredFps());
if (G_IS_DEV && globalConfig.debug.renderForTrailer) { if (G_IS_DEV && globalConfig.debug.renderForTrailer) {
this.setTickRate(300); this.setTickRate(300);
@ -101,12 +101,13 @@ export class DynamicTickrate {
const desiredFps = this.root.app.settings.getDesiredFps(); const desiredFps = this.root.app.settings.getDesiredFps();
if (this.averageFps > desiredFps * 0.9) { // Disabled for now: Dynamicall adjusting tick rate
// if (average < maxTickDuration) { // if (this.averageFps > desiredFps * 0.9) {
this.increaseTickRate(); // // if (average < maxTickDuration) {
} else if (this.averageFps < desiredFps * 0.7) { // this.increaseTickRate();
this.decreaseTickRate(); // } else if (this.averageFps < desiredFps * 0.7) {
} // this.decreaseTickRate();
// }
this.capturedTicks = []; this.capturedTicks = [];
} }

View File

@ -110,6 +110,10 @@ export class GameSystemManager {
// Order is important! // Order is important!
// IMPORTANT: Item acceptor must be before the belt, because it may not tick after the belt
// has put in the item into the acceptor animation, otherwise its off
add("itemAcceptor", ItemAcceptorSystem);
add("belt", BeltSystem); add("belt", BeltSystem);
add("undergroundBelt", UndergroundBeltSystem); add("undergroundBelt", UndergroundBeltSystem);
@ -134,11 +138,6 @@ export class GameSystemManager {
add("constantSignal", ConstantSignalSystem); add("constantSignal", ConstantSignalSystem);
// IMPORTANT: Must be after belt system since belt system can change the
// orientation of an entity after it is placed -> the item acceptor cache
// then would be invalid
add("itemAcceptor", ItemAcceptorSystem);
// WIRES section // WIRES section
add("lever", LeverSystem); add("lever", LeverSystem);

View File

@ -454,6 +454,7 @@ export class HUDBuildingPlacer extends HUDBuildingPlacerLogic {
const ejectorComp = this.fakeEntity.components.ItemEjector; const ejectorComp = this.fakeEntity.components.ItemEjector;
const staticComp = this.fakeEntity.components.StaticMapEntity; const staticComp = this.fakeEntity.components.StaticMapEntity;
const beltComp = this.fakeEntity.components.Belt; const beltComp = this.fakeEntity.components.Belt;
const minerComp = this.fakeEntity.components.Miner;
const goodArrowSprite = Loader.getSprite("sprites/misc/slot_good_arrow.png"); const goodArrowSprite = Loader.getSprite("sprites/misc/slot_good_arrow.png");
const badArrowSprite = Loader.getSprite("sprites/misc/slot_bad_arrow.png"); const badArrowSprite = Loader.getSprite("sprites/misc/slot_bad_arrow.png");
@ -571,6 +572,7 @@ export class HUDBuildingPlacer extends HUDBuildingPlacerLogic {
const destEntity = destEntities[i]; const destEntity = destEntities[i];
const destAcceptor = destEntity.components.ItemAcceptor; const destAcceptor = destEntity.components.ItemAcceptor;
const destStaticComp = destEntity.components.StaticMapEntity; const destStaticComp = destEntity.components.StaticMapEntity;
const destMiner = destEntity.components.Miner;
const destLocalTile = destStaticComp.worldToLocalTile(ejectorSlotWsTile); const destLocalTile = destStaticComp.worldToLocalTile(ejectorSlotWsTile);
const destLocalDir = destStaticComp.worldDirectionToLocal(ejectorSlotWsDirection); const destLocalDir = destStaticComp.worldDirectionToLocal(ejectorSlotWsDirection);
@ -580,6 +582,9 @@ export class HUDBuildingPlacer extends HUDBuildingPlacerLogic {
} else if (destEntity.components.Belt && destLocalDir === enumDirection.top) { } else if (destEntity.components.Belt && destLocalDir === enumDirection.top) {
// Connected to a belt // Connected to a belt
isConnected = true; isConnected = true;
} else if (minerComp && minerComp.chainable && destMiner && destMiner.chainable) {
// Chainable miners connected to eachother
isConnected = true;
} else { } else {
// This one is blocked // This one is blocked
isBlocked = true; isBlocked = true;

View File

@ -12,7 +12,11 @@ export class ItemAcceptorSystem extends GameSystemWithFilter {
} }
update() { update() {
const progress = this.root.dynamicTickrate.deltaSeconds * 2; // * 2 because its only a half tile const progress =
this.root.dynamicTickrate.deltaSeconds *
2 *
this.root.hubGoals.getBeltBaseSpeed() *
globalConfig.itemSpacingOnBelts; // * 2 because its only a half tile
for (let i = 0; i < this.allEntities.length; ++i) { for (let i = 0; i < this.allEntities.length; ++i) {
const entity = this.allEntities[i]; const entity = this.allEntities[i];
@ -22,15 +26,9 @@ export class ItemAcceptorSystem extends GameSystemWithFilter {
// Process item consumption animations to avoid items popping from the belts // Process item consumption animations to avoid items popping from the belts
for (let animIndex = 0; animIndex < animations.length; ++animIndex) { for (let animIndex = 0; animIndex < animations.length; ++animIndex) {
const anim = animations[animIndex]; const anim = animations[animIndex];
anim.animProgress += anim.animProgress += progress;
progress * this.root.hubGoals.getBeltBaseSpeed() * globalConfig.itemSpacingOnBelts;
if (anim.animProgress > 1) { if (anim.animProgress > 1) {
// Original
// animations.splice(animIndex, 1);
// Faster variant
fastArrayDelete(animations, animIndex); fastArrayDelete(animations, animIndex);
animIndex -= 1; animIndex -= 1;
} }
} }

View File

@ -1,4 +1,3 @@
import { globalConfig } from "../../core/config";
import { BaseItem } from "../base_item"; import { BaseItem } from "../base_item";
import { enumColorMixingResults, enumColors } from "../colors"; import { enumColorMixingResults, enumColors } from "../colors";
import { import {
@ -12,6 +11,11 @@ import { BOOL_TRUE_SINGLETON, isTruthyItem } from "../items/boolean_item";
import { ColorItem, COLOR_ITEM_SINGLETONS } from "../items/color_item"; import { ColorItem, COLOR_ITEM_SINGLETONS } from "../items/color_item";
import { ShapeItem } from "../items/shape_item"; import { ShapeItem } from "../items/shape_item";
/**
* We need to allow queuing charges, otherwise the throughput will stall
*/
const MAX_QUEUED_CHARGES = 2;
export class ItemProcessorSystem extends GameSystemWithFilter { export class ItemProcessorSystem extends GameSystemWithFilter {
constructor(root) { constructor(root) {
super(root, [ItemProcessorComponent]); super(root, [ItemProcessorComponent]);
@ -24,27 +28,25 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
const processorComp = entity.components.ItemProcessor; const processorComp = entity.components.ItemProcessor;
const ejectorComp = entity.components.ItemEjector; const ejectorComp = entity.components.ItemEjector;
// First of all, process the current recipe const currentCharge = processorComp.ongoingCharges[0];
const newSecondsUntilEject =
processorComp.secondsUntilEject - this.root.dynamicTickrate.deltaSeconds;
processorComp.secondsUntilEject = Math.max(0, newSecondsUntilEject); if (currentCharge) {
// Process next charge
if (newSecondsUntilEject < 0) { if (currentCharge.remainingTime > 0.0) {
processorComp.bonusFromLastTick -= newSecondsUntilEject; currentCharge.remainingTime -= this.root.dynamicTickrate.deltaSeconds;
if (currentCharge.remainingTime < 0.0) {
// Add bonus time, this is the time we spent too much
processorComp.bonusTime += -currentCharge.remainingTime;
}
} }
if (G_IS_DEV && globalConfig.debug.instantProcessors) { // Check if it finished
processorComp.secondsUntilEject = 0; if (currentCharge.remainingTime <= 0.0) {
} const itemsToEject = currentCharge.items;
// Check if we have any finished items we can eject // Go over all items and try to eject them
if ( for (let j = 0; j < itemsToEject.length; ++j) {
processorComp.secondsUntilEject === 0 && // it was processed in time const { item, requiredSlot, preferredSlot } = itemsToEject[j];
processorComp.itemsToEject.length > 0 // we have some items left to eject
) {
for (let itemIndex = 0; itemIndex < processorComp.itemsToEject.length; ++itemIndex) {
const { item, requiredSlot, preferredSlot } = processorComp.itemsToEject[itemIndex];
let slot = null; let slot = null;
if (requiredSlot !== null && requiredSlot !== undefined) { if (requiredSlot !== null && requiredSlot !== undefined) {
@ -69,15 +71,21 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
if (!ejectorComp.tryEject(slot, item)) { if (!ejectorComp.tryEject(slot, item)) {
assert(false, "Failed to eject"); assert(false, "Failed to eject");
} else { } else {
processorComp.itemsToEject.splice(itemIndex, 1); itemsToEject.splice(j, 1);
itemIndex -= 1; j -= 1;
} }
} }
} }
// If the charge was entirely emptied to the outputs, start the next charge
if (itemsToEject.length === 0) {
processorComp.ongoingCharges.shift();
}
}
} }
// Check if we have an empty queue and can start a new charge // Check if we have an empty queue and can start a new charge
if (processorComp.itemsToEject.length === 0) { if (processorComp.ongoingCharges.length < MAX_QUEUED_CHARGES) {
if (this.canProcess(entity)) { if (this.canProcess(entity)) {
this.startNewCharge(entity); this.startNewCharge(entity);
} }
@ -236,12 +244,6 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
itemsBySlot[items[i].sourceSlot] = items[i]; itemsBySlot[items[i].sourceSlot] = items[i];
} }
const baseSpeed = this.root.hubGoals.getProcessorBaseSpeed(processorComp.type);
// Substract one tick because we already process it this frame
processorComp.secondsUntilEject = Math.max(0, 1 / baseSpeed - processorComp.bonusFromLastTick);
processorComp.bonusFromLastTick = 0;
/** @type {Array<{item: BaseItem, requiredSlot?: number, preferredSlot?: number}>} */ /** @type {Array<{item: BaseItem, requiredSlot?: number, preferredSlot?: number}>} */
const outItems = []; const outItems = [];
@ -544,6 +546,35 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
} }
} }
processorComp.itemsToEject = outItems; // Queue Charge
const baseSpeed = this.root.hubGoals.getProcessorBaseSpeed(processorComp.type);
const originalTime = 1 / baseSpeed;
const bonusTimeToApply = Math.min(originalTime, processorComp.bonusTime);
const timeToProcess = originalTime - bonusTimeToApply;
// Substract one tick because we already process it this frame
// if (processorComp.bonusTime > originalTime) {
// if (processorComp.type === enumItemProcessorTypes.reader) {
// console.log(
// "Bonus time",
// round4Digits(processorComp.bonusTime),
// "Original time",
// round4Digits(originalTime),
// "Overcomit by",
// round4Digits(processorComp.bonusTime - originalTime),
// "->",
// round4Digits(timeToProcess),
// "reduced by",
// round4Digits(bonusTimeToApply)
// );
// }
// }
processorComp.bonusTime -= bonusTimeToApply;
processorComp.ongoingCharges.push({
items: outItems,
remainingTime: timeToProcess,
});
} }
} }

View File

@ -88,10 +88,7 @@ export class ItemProcessorOverlaysSystem extends GameSystem {
parameters.context.textAlign = "center"; parameters.context.textAlign = "center";
parameters.context.font = "bold 10px GameFont"; parameters.context.font = "bold 10px GameFont";
parameters.context.fillText( parameters.context.fillText(
"" + "" + Math.round(readerComp.lastThroughput * 10) / 10,
(G_IS_DEV
? round4Digits(readerComp.lastThroughput)
: Math.round(readerComp.lastThroughput * 10) / 10),
(staticComp.origin.x + 0.5) * globalConfig.tileSize, (staticComp.origin.x + 0.5) * globalConfig.tileSize,
(staticComp.origin.y + 0.62) * globalConfig.tileSize (staticComp.origin.y + 0.62) * globalConfig.tileSize
); );

View File

@ -35,18 +35,40 @@ export class LogicGateSystem extends GameSystemWithFilter {
const slotValues = []; const slotValues = [];
// Store if any conflict was found
let anyConflict = false;
// Gather inputs from all connected networks
for (let i = 0; i < slotComp.slots.length; ++i) { for (let i = 0; i < slotComp.slots.length; ++i) {
const slot = slotComp.slots[i]; const slot = slotComp.slots[i];
if (slot.type !== enumPinSlotType.logicalAcceptor) { if (slot.type !== enumPinSlotType.logicalAcceptor) {
continue; continue;
} }
if (slot.linkedNetwork) { if (slot.linkedNetwork) {
if (slot.linkedNetwork.valueConflict) {
anyConflict = true;
break;
}
slotValues.push(slot.linkedNetwork.currentValue); slotValues.push(slot.linkedNetwork.currentValue);
} else { } else {
slotValues.push(null); slotValues.push(null);
} }
} }
// Handle conflicts
if (anyConflict) {
for (let i = 0; i < slotComp.slots.length; ++i) {
const slot = slotComp.slots[i];
if (slot.type !== enumPinSlotType.logicalEjector) {
continue;
}
slot.value = null;
}
continue;
}
// Compute actual result
const result = this.boundOperations[logicComp.type](slotValues); const result = this.boundOperations[logicComp.type](slotValues);
if (Array.isArray(result)) { if (Array.isArray(result)) {

View File

@ -123,10 +123,9 @@ export const autosaveIntervals = [
}, },
]; ];
const refreshRateOptions = ["60", "75", "100", "120", "144", "165", "250", "500"]; const refreshRateOptions = ["30", "60", "120", "180", "240"];
if (G_IS_DEV) { if (G_IS_DEV) {
refreshRateOptions.unshift("30");
refreshRateOptions.unshift("10"); refreshRateOptions.unshift("10");
refreshRateOptions.unshift("5"); refreshRateOptions.unshift("5");
refreshRateOptions.push("1000"); refreshRateOptions.push("1000");
@ -162,7 +161,7 @@ export const allApplicationSettings = [
new BoolSetting( new BoolSetting(
"soundsMuted", "soundsMuted",
enumCategories.general, enumCategories.general,#
/** /**
* @param {Application} app * @param {Application} app
*/ */
@ -636,6 +635,7 @@ export class ApplicationSettings extends ReadWriteProxy {
if (data.version < 24) { if (data.version < 24) {
data.settings.musicVolume = 1.0; data.settings.musicVolume = 1.0;
data.settings.soundVolume = 1.0; data.settings.soundVolume = 1.0;
data.settings.refreshRate = "60";
data.version = 24; data.version = 24;
} }

View File

@ -44,48 +44,45 @@ 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 Anzahl an Wegpunkten [*] Unbegrenzte Anzahl an Wegpunkten
[*] unbegrenzte Anzahl an Speicherständen [*] Unbegrenzte Anzahl an Speicherständen
[*] zusätzliche Einstellungen [*] Zusätzliche Einstellungen
[*] Bald: Strom & Kabel! (Ungefähr) geplant für ende Juli 2020. [*] Es kommen: Kabel & Energie! Voraussichtlich gegen Ende Juli 2020
[*] Bald: mehr Level [*] Es kommen: Mehr Levels
[*] Erlaubt es mir shapez.io weiter zu entwickeln ❤️ [*] Unterstütze die Entwicklung von shapez.io ❤️
[/list] [/list]
[b]Zukünftige Updates:[/b] [b]Geplante Funktionen[/b]
Ich update das Spiel sehr oft, und versuche wöchentlich ein Update zu veröffentlichen! Ich bin aktiv mit der Entwicklung beschäftigt und versuche jede Woche ein Update oder den aktuellen Stand der Entwicklung zu veröffentlichen.
[list] [list]
[*] Verschiedene Karten und Herausforderungen (z.B. Karten mit Hindernissen) [*] Verschiedene Karten und Herausforderungen (z.B. Karten mit Hindernissen)
[*] Herausforderungen (liefere die geforderte Form mit einer beschränkten Karte / anzahl an Gebäuden ab) [*] Puzzle (Liefere die geforderte Form mit begrenztem Platz/limitierten Gebäuden)
[*] Eine Kampange, in der die Gebäude einen Preis haben. [*] Eine Kampagne mit Gebäudekosten
[*] einen konfigurierbaren Kartengenerator (bestimme Ressourcen / Größe / Dichte, den Seed und viel mehr) [*] Konfigurierbarer Kartengenerator (Ändere die Grösse/Anzahl/Dichte der Ressourcenflecken, den Seed und viel mehr)
[*] zusätzliche Formen [*] Mehr Formentypen
[*] Performanceverbesserungen (Das Spiel läuft bereits sehr gut!) [*] Performanceverbesserungen (Das Spiel läuft bereits sehr gut!)
[*] Und vieles mehr! [*] Und vieles mehr!
[/list] [/list]
[b]Das Spiel ist open source![/b] [b]Das Spiel ist Open Source![/b]
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. 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.
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]
[list] [list]
[*] [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]
@ -156,7 +153,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! Kaufe 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 verwende Chrome für die beste Erfahrung!
savegameLevel: Level <x> savegameLevel: Level <x>
savegameLevelUnknown: Unbekanntes Level savegameLevelUnknown: Unbekanntes Level
@ -274,8 +271,7 @@ dialogs:
exportScreenshotWarning: exportScreenshotWarning:
title: Bildschirmfoto exportieren title: Bildschirmfoto exportieren
desc: >- 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!
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
@ -373,7 +369,7 @@ ingame:
delivered: delivered:
title: Abgeliefert title: Abgeliefert
description: Zeigt die Menge an Formen, die im zentralen Gebäude abgeliefert werden. description: Zeigt die Menge an Formen, die im zentralen Gebäude abgeliefert werden.
noShapesProduced: Bisher wurden keine Formen produziert. noShapesProduced: Es werden noch keine Formen produziert oder abgeliefert.
# Displays the shapes per minute, e.g. '523 / m' # Displays the shapes per minute, e.g. '523 / m'
shapesPerMinute: <shapes> / m shapesPerMinute: <shapes> / m
@ -502,7 +498,7 @@ buildings:
name: Rotierer (+90°) 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 die Formen um 180 Grad. description: Rotiert die Formen um 180 Grad.
stacker: stacker:
@ -770,11 +766,18 @@ settings:
description: >- description: >-
Aktiviert das automatische Entfernen von überflüssigen Förderbändern bei der Platzierung von Tunneln. Aktiviert das automatische Entfernen von überflüssigen Förderbändern bei der Platzierung von Tunneln.
Außerdem funktioniert das Ziehen von Tunneln und überschüssige werden ebenfalls entfernt. Außerdem funktioniert das Ziehen von Tunneln und überschüssige werden ebenfalls entfernt.
vignette: vignette:
title: Vignette title: Vignette
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, in welche Richtung er zeigt.
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: >-
@ -785,13 +788,6 @@ 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: >-
@ -830,6 +826,8 @@ keybindings:
toggleFPSInfo: FPS und Debug-Info an/aus toggleFPSInfo: FPS und Debug-Info an/aus
switchLayers: Ebenen wechseln switchLayers: Ebenen wechseln
exportScreenshot: Ganze Fabrik als Foto exportieren exportScreenshot: Ganze Fabrik als Foto exportieren
# --- Do not translate the values in this section
belt: *belt belt: *belt
splitter: *splitter splitter: *splitter
underground_belt: *underground_belt underground_belt: *underground_belt
@ -840,6 +838,7 @@ keybindings:
mixer: *mixer mixer: *mixer
painter: *painter painter: *painter
trash: *trash trash: *trash
# ---
pipette: Pipette pipette: Pipette
rotateWhilePlacing: Rotieren rotateWhilePlacing: Rotieren
@ -847,6 +846,7 @@ 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: >-
@ -860,7 +860,6 @@ 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
pasteLastBlueprint: Letzte Blaupause einfügen
advanced_processor: Farbinvertierer advanced_processor: Farbinvertierer
energy_generator: Stromgenerator energy_generator: Stromgenerator
wire: Stromkabel wire: Stromkabel
@ -881,9 +880,8 @@ about:
Der Soundtrack wurde von <a href="https://soundcloud.com/pettersumelius" Der Soundtrack wurde von <a href="https://soundcloud.com/pettersumelius"
target="_blank">Peppsen</a> komponiert! Klasse Typ.<br><br> target="_blank">Peppsen</a> komponiert! Klasse Typ.<br><br>
Abschließend möchte ich meinem Kumpel <a Abschließend möchte ich meinem Kumpel <a href="https://github.com/niklas-dahl" target="_blank">Niklas</a> danken!
href="https://github.com/niklas-dahl" target="_blank">Niklas</a> danken! Ohne unsere Ohne unsere etlichen gemeinsamen Stunden in Factorio wäre dieses Projekt nie zustande gekommen.
etlichen gemeinsamen Stunden in Factorio wäre dieses Projekt nie zustande gekommen.
changelog: changelog:
title: Änderungen title: Änderungen