diff --git a/res_built/atlas/atlas0_hq.json b/res_built/atlas/atlas0_hq.json index f343cd86..2aa01927 100644 --- a/res_built/atlas/atlas0_hq.json +++ b/res_built/atlas/atlas0_hq.json @@ -18,7 +18,7 @@ }, "sprites/belt/built/forward_2.png": { - "frame": {"x":123,"y":1854,"w":116,"h":144}, + "frame": {"x":1540,"y":1139,"w":116,"h":144}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, @@ -26,7 +26,7 @@ }, "sprites/belt/built/forward_3.png": { - "frame": {"x":243,"y":1854,"w":116,"h":144}, + "frame": {"x":1803,"y":1118,"w":116,"h":144}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, @@ -34,7 +34,7 @@ }, "sprites/belt/built/forward_4.png": { - "frame": {"x":363,"y":1854,"w":116,"h":144}, + "frame": {"x":1923,"y":1156,"w":116,"h":144}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, @@ -42,7 +42,7 @@ }, "sprites/belt/built/forward_5.png": { - "frame": {"x":483,"y":1854,"w":116,"h":144}, + "frame": {"x":1801,"y":1266,"w":116,"h":144}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, @@ -50,7 +50,7 @@ }, "sprites/belt/built/forward_6.png": { - "frame": {"x":603,"y":1854,"w":116,"h":144}, + "frame": {"x":1921,"y":1304,"w":116,"h":144}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, @@ -58,7 +58,7 @@ }, "sprites/belt/built/forward_7.png": { - "frame": {"x":807,"y":1248,"w":116,"h":144}, + "frame": {"x":432,"y":1334,"w":116,"h":144}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, @@ -66,7 +66,7 @@ }, "sprites/belt/built/forward_8.png": { - "frame": {"x":807,"y":1396,"w":116,"h":144}, + "frame": {"x":430,"y":1482,"w":116,"h":144}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, @@ -74,7 +74,7 @@ }, "sprites/belt/built/forward_9.png": { - "frame": {"x":807,"y":1544,"w":116,"h":144}, + "frame": {"x":141,"y":1877,"w":116,"h":144}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, @@ -90,7 +90,7 @@ }, "sprites/belt/built/forward_11.png": { - "frame": {"x":1918,"y":1156,"w":116,"h":144}, + "frame": {"x":438,"y":1038,"w":116,"h":144}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, @@ -98,7 +98,7 @@ }, "sprites/belt/built/forward_12.png": { - "frame": {"x":1924,"y":1438,"w":116,"h":144}, + "frame": {"x":1542,"y":991,"w":116,"h":144}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, @@ -106,7 +106,7 @@ }, "sprites/belt/built/forward_13.png": { - "frame": {"x":3,"y":1854,"w":116,"h":144}, + "frame": {"x":437,"y":1186,"w":116,"h":144}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, @@ -114,7 +114,7 @@ }, "sprites/belt/built/left_0.png": { - "frame": {"x":1811,"y":1304,"w":130,"h":130}, + "frame": {"x":145,"y":1475,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, @@ -122,7 +122,7 @@ }, "sprites/belt/built/left_1.png": { - "frame": {"x":1656,"y":1313,"w":130,"h":130}, + "frame": {"x":3,"y":1575,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, @@ -130,7 +130,7 @@ }, "sprites/belt/built/left_2.png": { - "frame": {"x":1763,"y":1572,"w":130,"h":130}, + "frame": {"x":279,"y":1493,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, @@ -138,7 +138,7 @@ }, "sprites/belt/built/left_3.png": { - "frame": {"x":1629,"y":1581,"w":130,"h":130}, + "frame": {"x":137,"y":1609,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, @@ -146,7 +146,7 @@ }, "sprites/belt/built/left_4.png": { - "frame": {"x":1897,"y":1586,"w":130,"h":130}, + "frame": {"x":3,"y":1709,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, @@ -154,7 +154,7 @@ }, "sprites/belt/built/left_5.png": { - "frame": {"x":1763,"y":1706,"w":130,"h":130}, + "frame": {"x":271,"y":1627,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, @@ -162,7 +162,7 @@ }, "sprites/belt/built/left_6.png": { - "frame": {"x":1897,"y":1720,"w":130,"h":130}, + "frame": {"x":137,"y":1743,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, @@ -170,7 +170,7 @@ }, "sprites/belt/built/left_7.png": { - "frame": {"x":3,"y":1715,"w":130,"h":130}, + "frame": {"x":3,"y":1843,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, @@ -178,7 +178,7 @@ }, "sprites/belt/built/left_8.png": { - "frame": {"x":137,"y":1715,"w":130,"h":130}, + "frame": {"x":1379,"y":1274,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, @@ -186,7 +186,7 @@ }, "sprites/belt/built/left_9.png": { - "frame": {"x":271,"y":1715,"w":130,"h":130}, + "frame": {"x":1513,"y":1287,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, @@ -194,7 +194,7 @@ }, "sprites/belt/built/left_10.png": { - "frame": {"x":1495,"y":1375,"w":130,"h":130}, + "frame": {"x":1076,"y":1288,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, @@ -202,7 +202,7 @@ }, "sprites/belt/built/left_11.png": { - "frame": {"x":1790,"y":1438,"w":130,"h":130}, + "frame": {"x":927,"y":1295,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, @@ -210,7 +210,7 @@ }, "sprites/belt/built/left_12.png": { - "frame": {"x":1629,"y":1447,"w":130,"h":130}, + "frame": {"x":786,"y":1363,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, @@ -218,7 +218,7 @@ }, "sprites/belt/built/left_13.png": { - "frame": {"x":1495,"y":1509,"w":130,"h":130}, + "frame": {"x":552,"y":1416,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, @@ -226,7 +226,7 @@ }, "sprites/belt/built/right_0.png": { - "frame": {"x":405,"y":1715,"w":130,"h":130}, + "frame": {"x":1647,"y":1294,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, @@ -234,7 +234,7 @@ }, "sprites/belt/built/right_1.png": { - "frame": {"x":539,"y":1715,"w":130,"h":130}, + "frame": {"x":1781,"y":1414,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, @@ -242,7 +242,7 @@ }, "sprites/belt/built/right_2.png": { - "frame": {"x":1195,"y":1492,"w":130,"h":130}, + "frame": {"x":1344,"y":1408,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, @@ -250,7 +250,7 @@ }, "sprites/belt/built/right_3.png": { - "frame": {"x":1061,"y":1548,"w":130,"h":130}, + "frame": {"x":1195,"y":1520,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, @@ -258,7 +258,7 @@ }, "sprites/belt/built/right_4.png": { - "frame": {"x":927,"y":1590,"w":130,"h":130}, + "frame": {"x":1054,"y":1556,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, @@ -266,7 +266,7 @@ }, "sprites/belt/built/right_5.png": { - "frame": {"x":1329,"y":1515,"w":130,"h":130}, + "frame": {"x":1478,"y":1421,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, @@ -274,7 +274,7 @@ }, "sprites/belt/built/right_6.png": { - "frame": {"x":1195,"y":1626,"w":130,"h":130}, + "frame": {"x":1329,"y":1542,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, @@ -282,7 +282,7 @@ }, "sprites/belt/built/right_7.png": { - "frame": {"x":1061,"y":1682,"w":130,"h":130}, + "frame": {"x":1188,"y":1654,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, @@ -290,7 +290,7 @@ }, "sprites/belt/built/right_8.png": { - "frame": {"x":927,"y":1724,"w":130,"h":130}, + "frame": {"x":1612,"y":1428,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, @@ -298,7 +298,7 @@ }, "sprites/belt/built/right_9.png": { - "frame": {"x":1463,"y":1643,"w":130,"h":130}, + "frame": {"x":1463,"y":1555,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, @@ -306,7 +306,7 @@ }, "sprites/belt/built/right_10.png": { - "frame": {"x":673,"y":1715,"w":130,"h":130}, + "frame": {"x":1915,"y":1452,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, @@ -314,7 +314,7 @@ }, "sprites/belt/built/right_11.png": { - "frame": {"x":927,"y":1322,"w":130,"h":130}, + "frame": {"x":1210,"y":1386,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, @@ -322,7 +322,7 @@ }, "sprites/belt/built/right_12.png": { - "frame": {"x":1061,"y":1414,"w":130,"h":130}, + "frame": {"x":1061,"y":1422,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, @@ -330,7 +330,7 @@ }, "sprites/belt/built/right_13.png": { - "frame": {"x":927,"y":1456,"w":130,"h":130}, + "frame": {"x":920,"y":1429,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, @@ -338,7 +338,7 @@ }, "sprites/blueprints/belt_left.png": { - "frame": {"x":1329,"y":1649,"w":130,"h":130}, + "frame": {"x":1322,"y":1676,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, @@ -346,7 +346,7 @@ }, "sprites/blueprints/belt_right.png": { - "frame": {"x":1195,"y":1760,"w":130,"h":130}, + "frame": {"x":1746,"y":1548,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, @@ -354,7 +354,7 @@ }, "sprites/blueprints/belt_top.png": { - "frame": {"x":807,"y":1692,"w":116,"h":144}, + "frame": {"x":261,"y":1877,"w":116,"h":144}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, @@ -386,7 +386,7 @@ }, "sprites/blueprints/display.png": { - "frame": {"x":1539,"y":991,"w":128,"h":136}, + "frame": {"x":1597,"y":1562,"w":128,"h":136}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":8,"y":8,"w":128,"h":136}, @@ -450,7 +450,7 @@ }, "sprites/blueprints/miner-chainable.png": { - "frame": {"x":935,"y":1175,"w":136,"h":143}, + "frame": {"x":150,"y":1035,"w":136,"h":143}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":5,"y":0,"w":136,"h":143}, @@ -458,7 +458,7 @@ }, "sprites/blueprints/miner.png": { - "frame": {"x":1075,"y":1267,"w":136,"h":143}, + "frame": {"x":150,"y":1182,"w":136,"h":143}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":5,"y":0,"w":136,"h":143}, @@ -506,7 +506,7 @@ }, "sprites/blueprints/rotater-ccw.png": { - "frame": {"x":551,"y":1100,"w":143,"h":144}, + "frame": {"x":3,"y":1035,"w":143,"h":144}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":0,"w":143,"h":144}, @@ -514,7 +514,7 @@ }, "sprites/blueprints/rotater-fl.png": { - "frame": {"x":235,"y":1207,"w":142,"h":144}, + "frame": {"x":1396,"y":979,"w":142,"h":144}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":0,"w":142,"h":144}, @@ -522,7 +522,7 @@ }, "sprites/blueprints/rotater.png": { - "frame": {"x":3,"y":1035,"w":143,"h":144}, + "frame": {"x":290,"y":1060,"w":143,"h":144}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":0,"w":143,"h":144}, @@ -530,7 +530,7 @@ }, "sprites/blueprints/splitter-compact-inverse.png": { - "frame": {"x":3,"y":1319,"w":142,"h":138}, + "frame": {"x":1249,"y":988,"w":142,"h":138}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":2,"w":142,"h":138}, @@ -538,7 +538,7 @@ }, "sprites/blueprints/splitter-compact.png": { - "frame": {"x":949,"y":1033,"w":139,"h":138}, + "frame": {"x":1094,"y":1146,"w":139,"h":138}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":5,"y":2,"w":139,"h":138}, @@ -578,7 +578,7 @@ }, "sprites/blueprints/underground_belt_entry-tier2.png": { - "frame": {"x":1528,"y":1131,"w":138,"h":125}, + "frame": {"x":3,"y":1330,"w":138,"h":125}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":19,"w":138,"h":125}, @@ -586,7 +586,7 @@ }, "sprites/blueprints/underground_belt_entry.png": { - "frame": {"x":1243,"y":1115,"w":138,"h":112}, + "frame": {"x":3,"y":1459,"w":138,"h":112}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":32,"w":138,"h":112}, @@ -594,7 +594,7 @@ }, "sprites/blueprints/underground_belt_exit-tier2.png": { - "frame": {"x":1243,"y":999,"w":139,"h":112}, + "frame": {"x":558,"y":1185,"w":139,"h":112}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":0,"w":139,"h":112}, @@ -602,7 +602,7 @@ }, "sprites/blueprints/underground_belt_exit.png": { - "frame": {"x":1385,"y":1138,"w":138,"h":112}, + "frame": {"x":1237,"y":1270,"w":138,"h":112}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":0,"w":138,"h":112}, @@ -650,7 +650,7 @@ }, "sprites/blueprints/wire_tunnel.png": { - "frame": {"x":1386,"y":999,"w":138,"h":135}, + "frame": {"x":290,"y":1208,"w":138,"h":135}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":4,"w":138,"h":135}, @@ -658,7 +658,7 @@ }, "sprites/buildings/belt_left.png": { - "frame": {"x":1811,"y":1304,"w":130,"h":130}, + "frame": {"x":145,"y":1475,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":14,"w":130,"h":130}, @@ -666,7 +666,7 @@ }, "sprites/buildings/belt_right.png": { - "frame": {"x":405,"y":1715,"w":130,"h":130}, + "frame": {"x":1647,"y":1294,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, @@ -746,7 +746,7 @@ }, "sprites/buildings/logic_gate-or.png": { - "frame": {"x":382,"y":1123,"w":143,"h":123}, + "frame": {"x":1396,"y":852,"w":143,"h":123}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":0,"w":143,"h":123}, @@ -762,7 +762,7 @@ }, "sprites/buildings/logic_gate-xor.png": { - "frame": {"x":235,"y":1060,"w":143,"h":143}, + "frame": {"x":3,"y":1183,"w":143,"h":143}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":0,"w":143,"h":143}, @@ -770,7 +770,7 @@ }, "sprites/buildings/logic_gate.png": { - "frame": {"x":3,"y":1183,"w":143,"h":132}, + "frame": {"x":1249,"y":852,"w":143,"h":132}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":0,"w":143,"h":132}, @@ -778,7 +778,7 @@ }, "sprites/buildings/miner-chainable.png": { - "frame": {"x":1215,"y":1346,"w":136,"h":142}, + "frame": {"x":150,"y":1329,"w":136,"h":142}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":5,"y":0,"w":136,"h":142}, @@ -786,7 +786,7 @@ }, "sprites/buildings/miner.png": { - "frame": {"x":1355,"y":1369,"w":136,"h":142}, + "frame": {"x":290,"y":1347,"w":136,"h":142}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":5,"y":0,"w":136,"h":142}, @@ -834,7 +834,7 @@ }, "sprites/buildings/rotater-ccw.png": { - "frame": {"x":1249,"y":852,"w":141,"h":143}, + "frame": {"x":1098,"y":999,"w":141,"h":143}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":2,"y":0,"w":141,"h":143}, @@ -842,7 +842,7 @@ }, "sprites/buildings/rotater-fl.png": { - "frame": {"x":1394,"y":852,"w":141,"h":143}, + "frame": {"x":949,"y":1033,"w":141,"h":143}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":0,"w":141,"h":143}, @@ -850,7 +850,7 @@ }, "sprites/buildings/rotater.png": { - "frame": {"x":1671,"y":1028,"w":141,"h":143}, + "frame": {"x":1395,"y":1127,"w":141,"h":143}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":2,"y":0,"w":141,"h":143}, @@ -858,7 +858,7 @@ }, "sprites/buildings/splitter-compact-inverse.png": { - "frame": {"x":1098,"y":999,"w":141,"h":136}, + "frame": {"x":1243,"y":1130,"w":141,"h":136}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":3,"w":141,"h":136}, @@ -906,7 +906,7 @@ }, "sprites/buildings/underground_belt_entry-tier2.png": { - "frame": {"x":1092,"y":1139,"w":137,"h":124}, + "frame": {"x":1660,"y":1166,"w":137,"h":124}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":5,"y":20,"w":137,"h":124}, @@ -914,7 +914,7 @@ }, "sprites/buildings/underground_belt_entry.png": { - "frame": {"x":1233,"y":1231,"w":137,"h":111}, + "frame": {"x":935,"y":1180,"w":137,"h":111}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":5,"y":33,"w":137,"h":111}, @@ -922,7 +922,7 @@ }, "sprites/buildings/underground_belt_exit-tier2.png": { - "frame": {"x":1374,"y":1254,"w":137,"h":111}, + "frame": {"x":786,"y":1248,"w":137,"h":111}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":5,"y":0,"w":137,"h":111}, @@ -930,7 +930,7 @@ }, "sprites/buildings/underground_belt_exit.png": { - "frame": {"x":1515,"y":1260,"w":137,"h":111}, + "frame": {"x":557,"y":1301,"w":137,"h":111}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":5,"y":0,"w":137,"h":111}, @@ -954,7 +954,7 @@ }, "sprites/buildings/wire-turn.png": { - "frame": {"x":150,"y":1035,"w":81,"h":81}, + "frame": {"x":706,"y":1122,"w":81,"h":81}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":63,"y":63,"w":81,"h":81}, @@ -978,7 +978,7 @@ }, "sprites/buildings/wire_tunnel.png": { - "frame": {"x":1670,"y":1175,"w":137,"h":134}, + "frame": {"x":1662,"y":1028,"w":137,"h":134}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":5,"y":5,"w":137,"h":134}, @@ -986,7 +986,7 @@ }, "sprites/debug/acceptor_slot.png": { - "frame": {"x":1107,"y":481,"w":12,"h":12}, + "frame": {"x":1107,"y":447,"w":12,"h":12}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":12,"h":12}, @@ -994,7 +994,7 @@ }, "sprites/debug/ejector_slot.png": { - "frame": {"x":1107,"y":497,"w":12,"h":12}, + "frame": {"x":1107,"y":463,"w":12,"h":12}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":12,"h":12}, @@ -1034,7 +1034,7 @@ }, "sprites/misc/waypoint.png": { - "frame": {"x":1816,"y":1169,"w":38,"h":48}, + "frame": {"x":48,"y":1977,"w":38,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":5,"y":0,"w":38,"h":48}, @@ -1042,18 +1042,18 @@ }, "sprites/wires/boolean_false.png": { - "frame": {"x":1650,"y":556,"w":22,"h":29}, + "frame": {"x":255,"y":954,"w":31,"h":41}, "rotated": false, "trimmed": true, - "spriteSourceSize": {"x":14,"y":11,"w":22,"h":29}, + "spriteSourceSize": {"x":9,"y":5,"w":31,"h":41}, "sourceSize": {"w":48,"h":48} }, "sprites/wires/boolean_true.png": { - "frame": {"x":1107,"y":447,"w":17,"h":30}, + "frame": {"x":1650,"y":556,"w":22,"h":41}, "rotated": false, "trimmed": true, - "spriteSourceSize": {"x":14,"y":10,"w":17,"h":30}, + "spriteSourceSize": {"x":11,"y":5,"w":22,"h":41}, "sourceSize": {"w":48,"h":48} }, "sprites/wires/display/blue.png": @@ -1106,7 +1106,7 @@ }, "sprites/wires/display/yellow.png": { - "frame": {"x":1816,"y":1118,"w":47,"h":47}, + "frame": {"x":90,"y":1977,"w":47,"h":47}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":1,"w":47,"h":47}, @@ -1138,7 +1138,7 @@ }, "sprites/wires/network_conflict.png": { - "frame": {"x":1867,"y":1118,"w":47,"h":44}, + "frame": {"x":271,"y":1810,"w":47,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":2,"w":47,"h":44}, @@ -1146,7 +1146,7 @@ }, "sprites/wires/network_empty.png": { - "frame": {"x":1867,"y":1166,"w":41,"h":48}, + "frame": {"x":3,"y":1977,"w":41,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":5,"y":0,"w":41,"h":48}, @@ -1178,7 +1178,7 @@ }, "sprites/wires/sets/color_split.png": { - "frame": {"x":558,"y":1015,"w":144,"h":81}, + "frame": {"x":290,"y":975,"w":144,"h":81}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":63,"w":144,"h":81}, @@ -1186,7 +1186,7 @@ }, "sprites/wires/sets/color_turn.png": { - "frame": {"x":150,"y":1120,"w":81,"h":81}, + "frame": {"x":701,"y":1207,"w":81,"h":81}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":63,"y":63,"w":81,"h":81}, @@ -1210,7 +1210,7 @@ }, "sprites/wires/sets/conflict_split.png": { - "frame": {"x":255,"y":975,"w":144,"h":81}, + "frame": {"x":558,"y":1015,"w":144,"h":81}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":63,"w":144,"h":81}, @@ -1218,7 +1218,7 @@ }, "sprites/wires/sets/conflict_turn.png": { - "frame": {"x":150,"y":1205,"w":81,"h":81}, + "frame": {"x":701,"y":1292,"w":81,"h":81}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":63,"y":63,"w":81,"h":81}, @@ -1250,7 +1250,7 @@ }, "sprites/wires/sets/regular_turn.png": { - "frame": {"x":150,"y":1035,"w":81,"h":81}, + "frame": {"x":706,"y":1122,"w":81,"h":81}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":63,"y":63,"w":81,"h":81}, @@ -1274,7 +1274,7 @@ }, "sprites/wires/sets/shape_split.png": { - "frame": {"x":403,"y":1038,"w":144,"h":81}, + "frame": {"x":558,"y":1100,"w":144,"h":81}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":63,"w":144,"h":81}, @@ -1282,7 +1282,7 @@ }, "sprites/wires/sets/shape_turn.png": { - "frame": {"x":150,"y":1290,"w":81,"h":81}, + "frame": {"x":698,"y":1377,"w":81,"h":81}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":63,"y":63,"w":81,"h":81}, @@ -1303,6 +1303,6 @@ "format": "RGBA8888", "size": {"w":2048,"h":2048}, "scale": "0.75", - "smartupdate": "$TexturePacker:SmartUpdate:9bd368ae0b2aae72402b6bf839999ece:a43ffc40e72c7a025dd537be932491bf:908b89f5ca8ff73e331a35a3b14d0604$" + "smartupdate": "$TexturePacker:SmartUpdate:876f0711b44fa7bbab8d2539e9651766:ff01f850e086ef31c114b036c3a32e6d:908b89f5ca8ff73e331a35a3b14d0604$" } } diff --git a/res_built/atlas/atlas0_hq.png b/res_built/atlas/atlas0_hq.png index 2f323aba..ef9ab78b 100644 Binary files a/res_built/atlas/atlas0_hq.png and b/res_built/atlas/atlas0_hq.png differ diff --git a/res_built/atlas/atlas0_lq.json b/res_built/atlas/atlas0_lq.json index 88e793a9..3896c6fd 100644 --- a/res_built/atlas/atlas0_lq.json +++ b/res_built/atlas/atlas0_lq.json @@ -10,7 +10,7 @@ }, "sprites/belt/built/forward_1.png": { - "frame": {"x":99,"y":854,"w":40,"h":48}, + "frame": {"x":195,"y":828,"w":40,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, @@ -18,7 +18,7 @@ }, "sprites/belt/built/forward_2.png": { - "frame": {"x":345,"y":763,"w":40,"h":48}, + "frame": {"x":3,"y":959,"w":40,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, @@ -26,7 +26,7 @@ }, "sprites/belt/built/forward_3.png": { - "frame": {"x":291,"y":810,"w":40,"h":48}, + "frame": {"x":448,"y":705,"w":40,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, @@ -34,7 +34,7 @@ }, "sprites/belt/built/forward_4.png": { - "frame": {"x":243,"y":837,"w":40,"h":48}, + "frame": {"x":394,"y":752,"w":40,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, @@ -42,7 +42,7 @@ }, "sprites/belt/built/forward_5.png": { - "frame": {"x":194,"y":855,"w":40,"h":48}, + "frame": {"x":342,"y":762,"w":40,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, @@ -50,7 +50,7 @@ }, "sprites/belt/built/forward_6.png": { - "frame": {"x":143,"y":883,"w":40,"h":48}, + "frame": {"x":289,"y":795,"w":40,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, @@ -58,7 +58,7 @@ }, "sprites/belt/built/forward_7.png": { - "frame": {"x":95,"y":906,"w":40,"h":48}, + "frame": {"x":239,"y":836,"w":40,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, @@ -66,7 +66,7 @@ }, "sprites/belt/built/forward_8.png": { - "frame": {"x":47,"y":911,"w":40,"h":48}, + "frame": {"x":191,"y":880,"w":40,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, @@ -74,7 +74,7 @@ }, "sprites/belt/built/forward_9.png": { - "frame": {"x":3,"y":922,"w":40,"h":48}, + "frame": {"x":143,"y":883,"w":40,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, @@ -82,7 +82,7 @@ }, "sprites/belt/built/forward_10.png": { - "frame": {"x":51,"y":859,"w":40,"h":48}, + "frame": {"x":147,"y":831,"w":40,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, @@ -90,7 +90,7 @@ }, "sprites/belt/built/forward_11.png": { - "frame": {"x":3,"y":870,"w":40,"h":48}, + "frame": {"x":99,"y":862,"w":40,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, @@ -98,7 +98,7 @@ }, "sprites/belt/built/forward_12.png": { - "frame": {"x":448,"y":700,"w":40,"h":48}, + "frame": {"x":51,"y":870,"w":40,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, @@ -106,7 +106,7 @@ }, "sprites/belt/built/forward_13.png": { - "frame": {"x":397,"y":747,"w":40,"h":48}, + "frame": {"x":3,"y":907,"w":40,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, @@ -114,7 +114,7 @@ }, "sprites/belt/built/left_0.png": { - "frame": {"x":157,"y":639,"w":44,"h":44}, + "frame": {"x":3,"y":667,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, @@ -122,7 +122,7 @@ }, "sprites/belt/built/left_1.png": { - "frame": {"x":105,"y":662,"w":44,"h":44}, + "frame": {"x":208,"y":636,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, @@ -130,7 +130,7 @@ }, "sprites/belt/built/left_2.png": { - "frame": {"x":153,"y":687,"w":44,"h":44}, + "frame": {"x":256,"y":640,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, @@ -138,7 +138,7 @@ }, "sprites/belt/built/left_3.png": { - "frame": {"x":99,"y":710,"w":44,"h":44}, + "frame": {"x":202,"y":684,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, @@ -146,7 +146,7 @@ }, "sprites/belt/built/left_4.png": { - "frame": {"x":51,"y":715,"w":44,"h":44}, + "frame": {"x":150,"y":687,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, @@ -154,7 +154,7 @@ }, "sprites/belt/built/left_5.png": { - "frame": {"x":3,"y":726,"w":44,"h":44}, + "frame": {"x":99,"y":718,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, @@ -162,7 +162,7 @@ }, "sprites/belt/built/left_6.png": { - "frame": {"x":304,"y":666,"w":44,"h":44}, + "frame": {"x":51,"y":726,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, @@ -170,7 +170,7 @@ }, "sprites/belt/built/left_7.png": { - "frame": {"x":253,"y":693,"w":44,"h":44}, + "frame": {"x":3,"y":763,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, @@ -178,7 +178,7 @@ }, "sprites/belt/built/left_8.png": { - "frame": {"x":201,"y":711,"w":44,"h":44}, + "frame": {"x":304,"y":651,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, @@ -186,7 +186,7 @@ }, "sprites/belt/built/left_9.png": { - "frame": {"x":147,"y":735,"w":44,"h":44}, + "frame": {"x":250,"y":688,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, @@ -194,7 +194,7 @@ }, "sprites/belt/built/left_10.png": { - "frame": {"x":51,"y":667,"w":44,"h":44}, + "frame": {"x":154,"y":639,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, @@ -202,7 +202,7 @@ }, "sprites/belt/built/left_11.png": { - "frame": {"x":3,"y":678,"w":44,"h":44}, + "frame": {"x":102,"y":670,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, @@ -210,7 +210,7 @@ }, "sprites/belt/built/left_12.png": { - "frame": {"x":256,"y":645,"w":44,"h":44}, + "frame": {"x":51,"y":678,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, @@ -218,7 +218,7 @@ }, "sprites/belt/built/left_13.png": { - "frame": {"x":205,"y":663,"w":44,"h":44}, + "frame": {"x":3,"y":715,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, @@ -226,7 +226,7 @@ }, "sprites/belt/built/right_0.png": { - "frame": {"x":99,"y":758,"w":44,"h":44}, + "frame": {"x":198,"y":732,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, @@ -234,7 +234,7 @@ }, "sprites/belt/built/right_1.png": { - "frame": {"x":51,"y":763,"w":44,"h":44}, + "frame": {"x":147,"y":735,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, @@ -242,7 +242,7 @@ }, "sprites/belt/built/right_2.png": { - "frame": {"x":195,"y":759,"w":44,"h":44}, + "frame": {"x":298,"y":699,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, @@ -250,7 +250,7 @@ }, "sprites/belt/built/right_3.png": { - "frame": {"x":147,"y":783,"w":44,"h":44}, + "frame": {"x":246,"y":736,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, @@ -258,7 +258,7 @@ }, "sprites/belt/built/right_4.png": { - "frame": {"x":99,"y":806,"w":44,"h":44}, + "frame": {"x":195,"y":780,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, @@ -266,7 +266,7 @@ }, "sprites/belt/built/right_5.png": { - "frame": {"x":51,"y":811,"w":44,"h":44}, + "frame": {"x":147,"y":783,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, @@ -274,7 +274,7 @@ }, "sprites/belt/built/right_6.png": { - "frame": {"x":3,"y":822,"w":44,"h":44}, + "frame": {"x":99,"y":814,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, @@ -282,7 +282,7 @@ }, "sprites/belt/built/right_7.png": { - "frame": {"x":400,"y":699,"w":44,"h":44}, + "frame": {"x":51,"y":822,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, @@ -290,7 +290,7 @@ }, "sprites/belt/built/right_8.png": { - "frame": {"x":349,"y":715,"w":44,"h":44}, + "frame": {"x":3,"y":859,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, @@ -298,7 +298,7 @@ }, "sprites/belt/built/right_9.png": { - "frame": {"x":297,"y":762,"w":44,"h":44}, + "frame": {"x":400,"y":704,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, @@ -306,7 +306,7 @@ }, "sprites/belt/built/right_10.png": { - "frame": {"x":3,"y":774,"w":44,"h":44}, + "frame": {"x":99,"y":766,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, @@ -314,7 +314,7 @@ }, "sprites/belt/built/right_11.png": { - "frame": {"x":352,"y":667,"w":44,"h":44}, + "frame": {"x":51,"y":774,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, @@ -322,7 +322,7 @@ }, "sprites/belt/built/right_12.png": { - "frame": {"x":301,"y":714,"w":44,"h":44}, + "frame": {"x":3,"y":811,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, @@ -330,7 +330,7 @@ }, "sprites/belt/built/right_13.png": { - "frame": {"x":249,"y":741,"w":44,"h":44}, + "frame": {"x":352,"y":666,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, @@ -338,7 +338,7 @@ }, "sprites/blueprints/belt_left.png": { - "frame": {"x":243,"y":789,"w":44,"h":44}, + "frame": {"x":346,"y":714,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, @@ -346,7 +346,7 @@ }, "sprites/blueprints/belt_right.png": { - "frame": {"x":195,"y":807,"w":44,"h":44}, + "frame": {"x":294,"y":747,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, @@ -354,7 +354,7 @@ }, "sprites/blueprints/belt_top.png": { - "frame": {"x":47,"y":963,"w":40,"h":48}, + "frame": {"x":95,"y":914,"w":40,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, @@ -362,7 +362,7 @@ }, "sprites/blueprints/constant_signal.png": { - "frame": {"x":329,"y":386,"w":36,"h":43}, + "frame": {"x":329,"y":390,"w":36,"h":43}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":6,"y":0,"w":36,"h":43}, @@ -386,7 +386,7 @@ }, "sprites/blueprints/display.png": { - "frame": {"x":3,"y":628,"w":44,"h":46}, + "frame": {"x":106,"y":620,"w":44,"h":46}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":2,"y":2,"w":44,"h":46}, @@ -410,7 +410,7 @@ }, "sprites/blueprints/logic_gate-not.png": { - "frame": {"x":467,"y":648,"w":42,"h":48}, + "frame": {"x":243,"y":784,"w":42,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":3,"y":0,"w":42,"h":48}, @@ -418,7 +418,7 @@ }, "sprites/blueprints/logic_gate-or.png": { - "frame": {"x":426,"y":602,"w":48,"h":42}, + "frame": {"x":55,"y":500,"w":48,"h":42}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":42}, @@ -442,7 +442,7 @@ }, "sprites/blueprints/logic_gate.png": { - "frame": {"x":426,"y":553,"w":48,"h":45}, + "frame": {"x":384,"y":566,"w":48,"h":45}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":45}, @@ -458,7 +458,7 @@ }, "sprites/blueprints/miner.png": { - "frame": {"x":263,"y":593,"w":47,"h":48}, + "frame": {"x":211,"y":584,"w":47,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":0,"w":47,"h":48}, @@ -538,7 +538,7 @@ }, "sprites/blueprints/splitter-compact.png": { - "frame": {"x":416,"y":648,"w":47,"h":47}, + "frame": {"x":364,"y":615,"w":47,"h":47}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":0,"w":47,"h":47}, @@ -546,7 +546,7 @@ }, "sprites/blueprints/splitter.png": { - "frame": {"x":278,"y":334,"w":87,"h":48}, + "frame": {"x":278,"y":338,"w":87,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":5,"y":0,"w":87,"h":48}, @@ -570,7 +570,7 @@ }, "sprites/blueprints/trash.png": { - "frame": {"x":277,"y":386,"w":48,"h":48}, + "frame": {"x":277,"y":390,"w":48,"h":48}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":48}, @@ -578,7 +578,7 @@ }, "sprites/blueprints/underground_belt_entry-tier2.png": { - "frame": {"x":315,"y":567,"w":48,"h":43}, + "frame": {"x":3,"y":500,"w":48,"h":43}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":5,"w":48,"h":43}, @@ -586,7 +586,7 @@ }, "sprites/blueprints/underground_belt_entry.png": { - "frame": {"x":55,"y":500,"w":48,"h":38}, + "frame": {"x":159,"y":523,"w":48,"h":38}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":10,"w":48,"h":38}, @@ -594,7 +594,7 @@ }, "sprites/blueprints/underground_belt_exit-tier2.png": { - "frame": {"x":107,"y":500,"w":48,"h":38}, + "frame": {"x":211,"y":542,"w":48,"h":38}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":38}, @@ -602,7 +602,7 @@ }, "sprites/blueprints/underground_belt_exit.png": { - "frame": {"x":159,"y":523,"w":48,"h":38}, + "frame": {"x":263,"y":546,"w":48,"h":38}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":38}, @@ -618,7 +618,7 @@ }, "sprites/blueprints/wire-split.png": { - "frame": {"x":55,"y":542,"w":48,"h":28}, + "frame": {"x":315,"y":567,"w":48,"h":28}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":20,"w":48,"h":28}, @@ -634,7 +634,7 @@ }, "sprites/blueprints/wire.png": { - "frame": {"x":357,"y":282,"w":8,"h":48}, + "frame": {"x":357,"y":286,"w":8,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":20,"y":0,"w":8,"h":48}, @@ -642,7 +642,7 @@ }, "sprites/blueprints/wire_tunnel-coating.png": { - "frame": {"x":253,"y":478,"w":13,"h":47}, + "frame": {"x":235,"y":458,"w":13,"h":47}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":17,"y":0,"w":13,"h":47}, @@ -650,7 +650,7 @@ }, "sprites/blueprints/wire_tunnel.png": { - "frame": {"x":263,"y":542,"w":48,"h":47}, + "frame": {"x":384,"y":515,"w":48,"h":47}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":47}, @@ -658,7 +658,7 @@ }, "sprites/buildings/belt_left.png": { - "frame": {"x":157,"y":639,"w":44,"h":44}, + "frame": {"x":3,"y":667,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":4,"w":44,"h":44}, @@ -666,7 +666,7 @@ }, "sprites/buildings/belt_right.png": { - "frame": {"x":99,"y":758,"w":44,"h":44}, + "frame": {"x":198,"y":732,"w":44,"h":44}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":4,"w":44,"h":44}, @@ -706,7 +706,7 @@ }, "sprites/buildings/display.png": { - "frame": {"x":208,"y":613,"w":44,"h":46}, + "frame": {"x":54,"y":628,"w":44,"h":46}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":2,"y":2,"w":44,"h":46}, @@ -738,7 +738,7 @@ }, "sprites/buildings/logic_gate-not.png": { - "frame": {"x":147,"y":831,"w":43,"h":48}, + "frame": {"x":466,"y":653,"w":43,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":3,"y":0,"w":43,"h":48}, @@ -746,7 +746,7 @@ }, "sprites/buildings/logic_gate-or.png": { - "frame": {"x":3,"y":500,"w":48,"h":42}, + "frame": {"x":107,"y":500,"w":48,"h":42}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":42}, @@ -770,7 +770,7 @@ }, "sprites/buildings/logic_gate.png": { - "frame": {"x":374,"y":566,"w":48,"h":45}, + "frame": {"x":436,"y":604,"w":48,"h":45}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":45}, @@ -778,7 +778,7 @@ }, "sprites/buildings/miner-chainable.png": { - "frame": {"x":314,"y":614,"w":47,"h":48}, + "frame": {"x":262,"y":588,"w":47,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":0,"w":47,"h":48}, @@ -786,7 +786,7 @@ }, "sprites/buildings/miner.png": { - "frame": {"x":365,"y":615,"w":47,"h":48}, + "frame": {"x":313,"y":599,"w":47,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":0,"w":47,"h":48}, @@ -850,7 +850,7 @@ }, "sprites/buildings/rotater.png": { - "frame": {"x":275,"y":438,"w":48,"h":48}, + "frame": {"x":275,"y":442,"w":48,"h":48}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":48}, @@ -858,7 +858,7 @@ }, "sprites/buildings/splitter-compact-inverse.png": { - "frame": {"x":374,"y":515,"w":48,"h":47}, + "frame": {"x":436,"y":553,"w":48,"h":47}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":47}, @@ -866,7 +866,7 @@ }, "sprites/buildings/splitter-compact.png": { - "frame": {"x":55,"y":574,"w":47,"h":47}, + "frame": {"x":415,"y":653,"w":47,"h":47}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":0,"w":47,"h":47}, @@ -906,7 +906,7 @@ }, "sprites/buildings/underground_belt_entry-tier2.png": { - "frame": {"x":106,"y":574,"w":47,"h":42}, + "frame": {"x":3,"y":579,"w":47,"h":42}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":6,"w":47,"h":42}, @@ -914,7 +914,7 @@ }, "sprites/buildings/underground_belt_entry.png": { - "frame": {"x":157,"y":597,"w":47,"h":38}, + "frame": {"x":3,"y":625,"w":47,"h":38}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":10,"w":47,"h":38}, @@ -922,7 +922,7 @@ }, "sprites/buildings/underground_belt_exit-tier2.png": { - "frame": {"x":106,"y":620,"w":47,"h":38}, + "frame": {"x":106,"y":578,"w":47,"h":38}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":0,"w":47,"h":38}, @@ -930,7 +930,7 @@ }, "sprites/buildings/underground_belt_exit.png": { - "frame": {"x":54,"y":625,"w":47,"h":38}, + "frame": {"x":157,"y":597,"w":47,"h":38}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":0,"w":47,"h":38}, @@ -938,7 +938,7 @@ }, "sprites/buildings/wire-cross.png": { - "frame": {"x":270,"y":490,"w":48,"h":48}, + "frame": {"x":268,"y":494,"w":48,"h":48}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":48}, @@ -946,7 +946,7 @@ }, "sprites/buildings/wire-split.png": { - "frame": {"x":3,"y":546,"w":48,"h":28}, + "frame": {"x":55,"y":546,"w":48,"h":28}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":20,"w":48,"h":28}, @@ -962,7 +962,7 @@ }, "sprites/buildings/wire.png": { - "frame": {"x":327,"y":453,"w":8,"h":48}, + "frame": {"x":327,"y":457,"w":8,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":20,"y":0,"w":8,"h":48}, @@ -970,7 +970,7 @@ }, "sprites/buildings/wire_tunnel-coating.png": { - "frame": {"x":235,"y":498,"w":12,"h":46}, + "frame": {"x":252,"y":492,"w":12,"h":46}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":18,"y":1,"w":12,"h":46}, @@ -978,7 +978,7 @@ }, "sprites/buildings/wire_tunnel.png": { - "frame": {"x":3,"y":578,"w":47,"h":46}, + "frame": {"x":55,"y":578,"w":47,"h":46}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":1,"w":47,"h":46}, @@ -1010,7 +1010,7 @@ }, "sprites/misc/slot_bad_arrow.png": { - "frame": {"x":278,"y":315,"w":13,"h":13}, + "frame": {"x":252,"y":458,"w":13,"h":13}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":13,"h":13}, @@ -1018,7 +1018,7 @@ }, "sprites/misc/slot_good_arrow.png": { - "frame": {"x":295,"y":315,"w":13,"h":13}, + "frame": {"x":252,"y":475,"w":13,"h":13}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":13,"h":13}, @@ -1034,7 +1034,7 @@ }, "sprites/misc/waypoint.png": { - "frame": {"x":235,"y":478,"w":14,"h":16}, + "frame": {"x":349,"y":437,"w":14,"h":16}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":0,"w":14,"h":16}, @@ -1042,18 +1042,18 @@ }, "sprites/wires/boolean_false.png": { - "frame": {"x":357,"y":267,"w":9,"h":11}, + "frame": {"x":235,"y":509,"w":12,"h":15}, "rotated": false, "trimmed": true, - "spriteSourceSize": {"x":4,"y":3,"w":9,"h":11}, + "spriteSourceSize": {"x":2,"y":1,"w":12,"h":15}, "sourceSize": {"w":16,"h":16} }, "sprites/wires/boolean_true.png": { - "frame": {"x":312,"y":315,"w":7,"h":12}, + "frame": {"x":357,"y":267,"w":9,"h":15}, "rotated": false, "trimmed": true, - "spriteSourceSize": {"x":4,"y":2,"w":7,"h":12}, + "spriteSourceSize": {"x":3,"y":1,"w":9,"h":15}, "sourceSize": {"w":16,"h":16} }, "sprites/wires/display/blue.png": @@ -1106,7 +1106,7 @@ }, "sprites/wires/display/yellow.png": { - "frame": {"x":329,"y":433,"w":16,"h":16}, + "frame": {"x":278,"y":315,"w":16,"h":16}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":16,"h":16}, @@ -1138,7 +1138,7 @@ }, "sprites/wires/network_conflict.png": { - "frame": {"x":349,"y":433,"w":16,"h":16}, + "frame": {"x":298,"y":315,"w":16,"h":16}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":16,"h":16}, @@ -1146,7 +1146,7 @@ }, "sprites/wires/network_empty.png": { - "frame": {"x":255,"y":458,"w":15,"h":16}, + "frame": {"x":318,"y":315,"w":15,"h":16}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":0,"w":15,"h":16}, @@ -1170,7 +1170,7 @@ }, "sprites/wires/sets/color_forward.png": { - "frame": {"x":251,"y":529,"w":8,"h":48}, + "frame": {"x":339,"y":457,"w":8,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":20,"y":0,"w":8,"h":48}, @@ -1178,7 +1178,7 @@ }, "sprites/wires/sets/color_split.png": { - "frame": {"x":107,"y":542,"w":48,"h":28}, + "frame": {"x":3,"y":547,"w":48,"h":28}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":20,"w":48,"h":28}, @@ -1202,7 +1202,7 @@ }, "sprites/wires/sets/conflict_forward.png": { - "frame": {"x":339,"y":453,"w":8,"h":48}, + "frame": {"x":351,"y":457,"w":8,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":20,"y":0,"w":8,"h":48}, @@ -1210,7 +1210,7 @@ }, "sprites/wires/sets/conflict_split.png": { - "frame": {"x":159,"y":565,"w":48,"h":28}, + "frame": {"x":107,"y":546,"w":48,"h":28}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":20,"w":48,"h":28}, @@ -1226,7 +1226,7 @@ }, "sprites/wires/sets/regular_cross.png": { - "frame": {"x":270,"y":490,"w":48,"h":48}, + "frame": {"x":268,"y":494,"w":48,"h":48}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":48}, @@ -1234,7 +1234,7 @@ }, "sprites/wires/sets/regular_forward.png": { - "frame": {"x":327,"y":453,"w":8,"h":48}, + "frame": {"x":327,"y":457,"w":8,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":20,"y":0,"w":8,"h":48}, @@ -1242,7 +1242,7 @@ }, "sprites/wires/sets/regular_split.png": { - "frame": {"x":3,"y":546,"w":48,"h":28}, + "frame": {"x":55,"y":546,"w":48,"h":28}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":20,"w":48,"h":28}, @@ -1258,7 +1258,7 @@ }, "sprites/wires/sets/shape_cross.png": { - "frame": {"x":322,"y":515,"w":48,"h":48}, + "frame": {"x":332,"y":515,"w":48,"h":48}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":48,"h":48}, @@ -1266,7 +1266,7 @@ }, "sprites/wires/sets/shape_forward.png": { - "frame": {"x":351,"y":453,"w":8,"h":48}, + "frame": {"x":320,"y":509,"w":8,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":20,"y":0,"w":8,"h":48}, @@ -1274,7 +1274,7 @@ }, "sprites/wires/sets/shape_split.png": { - "frame": {"x":211,"y":581,"w":48,"h":28}, + "frame": {"x":159,"y":565,"w":48,"h":28}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":20,"w":48,"h":28}, @@ -1290,7 +1290,7 @@ }, "sprites/wires/wires_preview.png": { - "frame": {"x":235,"y":458,"w":16,"h":16}, + "frame": {"x":329,"y":437,"w":16,"h":16}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":16,"h":16}, @@ -1303,6 +1303,6 @@ "format": "RGBA8888", "size": {"w":512,"h":1024}, "scale": "0.25", - "smartupdate": "$TexturePacker:SmartUpdate:9bd368ae0b2aae72402b6bf839999ece:a43ffc40e72c7a025dd537be932491bf:908b89f5ca8ff73e331a35a3b14d0604$" + "smartupdate": "$TexturePacker:SmartUpdate:876f0711b44fa7bbab8d2539e9651766:ff01f850e086ef31c114b036c3a32e6d:908b89f5ca8ff73e331a35a3b14d0604$" } } diff --git a/res_built/atlas/atlas0_lq.png b/res_built/atlas/atlas0_lq.png index 661c7df9..c6b4be55 100644 Binary files a/res_built/atlas/atlas0_lq.png and b/res_built/atlas/atlas0_lq.png differ diff --git a/res_built/atlas/atlas0_mq.json b/res_built/atlas/atlas0_mq.json index 2ad91ab0..89809854 100644 --- a/res_built/atlas/atlas0_mq.json +++ b/res_built/atlas/atlas0_mq.json @@ -2,7 +2,7 @@ "sprites/belt/built/forward_0.png": { - "frame": {"x":940,"y":816,"w":78,"h":96}, + "frame": {"x":943,"y":816,"w":78,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, @@ -10,7 +10,7 @@ }, "sprites/belt/built/forward_1.png": { - "frame": {"x":560,"y":1376,"w":78,"h":96}, + "frame": {"x":439,"y":803,"w":78,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, @@ -18,7 +18,7 @@ }, "sprites/belt/built/forward_2.png": { - "frame": {"x":94,"y":1598,"w":78,"h":96}, + "frame": {"x":850,"y":1402,"w":78,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, @@ -26,7 +26,7 @@ }, "sprites/belt/built/forward_3.png": { - "frame": {"x":3,"y":1668,"w":78,"h":96}, + "frame": {"x":932,"y":1402,"w":78,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, @@ -34,7 +34,7 @@ }, "sprites/belt/built/forward_4.png": { - "frame": {"x":843,"y":1305,"w":78,"h":96}, + "frame": {"x":751,"y":1431,"w":78,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, @@ -42,7 +42,7 @@ }, "sprites/belt/built/forward_5.png": { - "frame": {"x":743,"y":1402,"w":78,"h":96}, + "frame": {"x":650,"y":1480,"w":78,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, @@ -50,7 +50,7 @@ }, "sprites/belt/built/forward_6.png": { - "frame": {"x":925,"y":1305,"w":78,"h":96}, + "frame": {"x":551,"y":1494,"w":78,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, @@ -58,7 +58,7 @@ }, "sprites/belt/built/forward_7.png": { - "frame": {"x":642,"y":1458,"w":78,"h":96}, + "frame": {"x":454,"y":1522,"w":78,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, @@ -66,7 +66,7 @@ }, "sprites/belt/built/forward_8.png": { - "frame": {"x":545,"y":1476,"w":78,"h":96}, + "frame": {"x":358,"y":1553,"w":78,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, @@ -74,7 +74,7 @@ }, "sprites/belt/built/forward_9.png": { - "frame": {"x":449,"y":1553,"w":78,"h":96}, + "frame": {"x":267,"y":1554,"w":78,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, @@ -82,7 +82,7 @@ }, "sprites/belt/built/forward_10.png": { - "frame": {"x":463,"y":1453,"w":78,"h":96}, + "frame": {"x":276,"y":1454,"w":78,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, @@ -90,7 +90,7 @@ }, "sprites/belt/built/forward_11.png": { - "frame": {"x":367,"y":1514,"w":78,"h":96}, + "frame": {"x":185,"y":1499,"w":78,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, @@ -98,7 +98,7 @@ }, "sprites/belt/built/forward_12.png": { - "frame": {"x":276,"y":1553,"w":78,"h":96}, + "frame": {"x":94,"y":1514,"w":78,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, @@ -106,7 +106,7 @@ }, "sprites/belt/built/forward_13.png": { - "frame": {"x":185,"y":1594,"w":78,"h":96}, + "frame": {"x":3,"y":1585,"w":78,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, @@ -114,7 +114,7 @@ }, "sprites/belt/built/left_0.png": { - "frame": {"x":392,"y":1150,"w":87,"h":87}, + "frame": {"x":196,"y":1135,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, @@ -122,7 +122,7 @@ }, "sprites/belt/built/left_1.png": { - "frame": {"x":293,"y":1189,"w":87,"h":87}, + "frame": {"x":99,"y":1150,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, @@ -130,7 +130,7 @@ }, "sprites/belt/built/left_2.png": { - "frame": {"x":483,"y":1180,"w":87,"h":87}, + "frame": {"x":287,"y":1181,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, @@ -138,7 +138,7 @@ }, "sprites/belt/built/left_3.png": { - "frame": {"x":384,"y":1241,"w":87,"h":87}, + "frame": {"x":190,"y":1226,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, @@ -146,7 +146,7 @@ }, "sprites/belt/built/left_4.png": { - "frame": {"x":287,"y":1280,"w":87,"h":87}, + "frame": {"x":94,"y":1241,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, @@ -154,7 +154,7 @@ }, "sprites/belt/built/left_5.png": { - "frame": {"x":190,"y":1321,"w":87,"h":87}, + "frame": {"x":3,"y":1312,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, @@ -162,7 +162,7 @@ }, "sprites/belt/built/left_6.png": { - "frame": {"x":94,"y":1325,"w":87,"h":87}, + "frame": {"x":674,"y":1207,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, @@ -170,7 +170,7 @@ }, "sprites/belt/built/left_7.png": { - "frame": {"x":3,"y":1395,"w":87,"h":87}, + "frame": {"x":577,"y":1217,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, @@ -178,7 +178,7 @@ }, "sprites/belt/built/left_8.png": { - "frame": {"x":679,"y":1176,"w":87,"h":87}, + "frame": {"x":478,"y":1246,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, @@ -186,7 +186,7 @@ }, "sprites/belt/built/left_9.png": { - "frame": {"x":574,"y":1194,"w":87,"h":87}, + "frame": {"x":378,"y":1271,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, @@ -194,7 +194,7 @@ }, "sprites/belt/built/left_10.png": { - "frame": {"x":196,"y":1230,"w":87,"h":87}, + "frame": {"x":3,"y":1221,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, @@ -202,7 +202,7 @@ }, "sprites/belt/built/left_11.png": { - "frame": {"x":99,"y":1234,"w":87,"h":87}, + "frame": {"x":583,"y":1126,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, @@ -210,7 +210,7 @@ }, "sprites/belt/built/left_12.png": { - "frame": {"x":3,"y":1304,"w":87,"h":87}, + "frame": {"x":486,"y":1155,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, @@ -218,7 +218,7 @@ }, "sprites/belt/built/left_13.png": { - "frame": {"x":588,"y":1103,"w":87,"h":87}, + "frame": {"x":387,"y":1180,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, @@ -226,7 +226,7 @@ }, "sprites/belt/built/right_0.png": { - "frame": {"x":475,"y":1271,"w":87,"h":87}, + "frame": {"x":281,"y":1272,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, @@ -234,7 +234,7 @@ }, "sprites/belt/built/right_1.png": { - "frame": {"x":378,"y":1332,"w":87,"h":87}, + "frame": {"x":185,"y":1317,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, @@ -242,7 +242,7 @@ }, "sprites/belt/built/right_2.png": { - "frame": {"x":770,"y":1211,"w":87,"h":87}, + "frame": {"x":569,"y":1308,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, @@ -250,7 +250,7 @@ }, "sprites/belt/built/right_3.png": { - "frame": {"x":665,"y":1267,"w":87,"h":87}, + "frame": {"x":469,"y":1337,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, @@ -258,7 +258,7 @@ }, "sprites/belt/built/right_4.png": { - "frame": {"x":566,"y":1285,"w":87,"h":87}, + "frame": {"x":372,"y":1362,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, @@ -266,7 +266,7 @@ }, "sprites/belt/built/right_5.png": { - "frame": {"x":469,"y":1362,"w":87,"h":87}, + "frame": {"x":276,"y":1363,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, @@ -274,7 +274,7 @@ }, "sprites/belt/built/right_6.png": { - "frame": {"x":372,"y":1423,"w":87,"h":87}, + "frame": {"x":185,"y":1408,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, @@ -282,7 +282,7 @@ }, "sprites/belt/built/right_7.png": { - "frame": {"x":276,"y":1462,"w":87,"h":87}, + "frame": {"x":94,"y":1423,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, @@ -290,7 +290,7 @@ }, "sprites/belt/built/right_8.png": { - "frame": {"x":185,"y":1503,"w":87,"h":87}, + "frame": {"x":3,"y":1494,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, @@ -298,7 +298,7 @@ }, "sprites/belt/built/right_9.png": { - "frame": {"x":94,"y":1507,"w":87,"h":87}, + "frame": {"x":856,"y":1311,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, @@ -306,7 +306,7 @@ }, "sprites/belt/built/right_10.png": { - "frame": {"x":281,"y":1371,"w":87,"h":87}, + "frame": {"x":94,"y":1332,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, @@ -314,7 +314,7 @@ }, "sprites/belt/built/right_11.png": { - "frame": {"x":185,"y":1412,"w":87,"h":87}, + "frame": {"x":3,"y":1403,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, @@ -322,7 +322,7 @@ }, "sprites/belt/built/right_12.png": { - "frame": {"x":94,"y":1416,"w":87,"h":87}, + "frame": {"x":765,"y":1249,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, @@ -330,7 +330,7 @@ }, "sprites/belt/built/right_13.png": { - "frame": {"x":3,"y":1486,"w":87,"h":87}, + "frame": {"x":668,"y":1298,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, @@ -338,7 +338,7 @@ }, "sprites/blueprints/belt_left.png": { - "frame": {"x":3,"y":1577,"w":87,"h":87}, + "frame": {"x":759,"y":1340,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, @@ -346,7 +346,7 @@ }, "sprites/blueprints/belt_right.png": { - "frame": {"x":861,"y":1214,"w":87,"h":87}, + "frame": {"x":660,"y":1389,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, @@ -354,7 +354,7 @@ }, "sprites/blueprints/belt_top.png": { - "frame": {"x":358,"y":1614,"w":78,"h":96}, + "frame": {"x":176,"y":1599,"w":78,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, @@ -386,7 +386,7 @@ }, "sprites/blueprints/display.png": { - "frame": {"x":640,"y":914,"w":86,"h":91}, + "frame": {"x":560,"y":1399,"w":86,"h":91}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":5,"y":5,"w":86,"h":91}, @@ -410,7 +410,7 @@ }, "sprites/blueprints/logic_gate-not.png": { - "frame": {"x":756,"y":1302,"w":83,"h":96}, + "frame": {"x":367,"y":1453,"w":83,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":7,"y":0,"w":83,"h":96}, @@ -418,7 +418,7 @@ }, "sprites/blueprints/logic_gate-or.png": { - "frame": {"x":730,"y":990,"w":96,"h":82}, + "frame": {"x":521,"y":991,"w":96,"h":82}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":0,"w":96,"h":82}, @@ -442,7 +442,7 @@ }, "sprites/blueprints/logic_gate.png": { - "frame": {"x":440,"y":899,"w":96,"h":89}, + "frame": {"x":335,"y":902,"w":96,"h":89}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":0,"w":96,"h":89}, @@ -450,7 +450,7 @@ }, "sprites/blueprints/miner-chainable.png": { - "frame": {"x":396,"y":1050,"w":92,"h":96}, + "frame": {"x":929,"y":916,"w":92,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":3,"y":0,"w":92,"h":96}, @@ -458,7 +458,7 @@ }, "sprites/blueprints/miner.png": { - "frame": {"x":296,"y":1089,"w":92,"h":96}, + "frame": {"x":100,"y":1050,"w":92,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":3,"y":0,"w":92,"h":96}, @@ -514,7 +514,7 @@ }, "sprites/blueprints/rotater-fl.png": { - "frame": {"x":728,"y":1076,"w":95,"h":96}, + "frame": {"x":921,"y":1016,"w":95,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":0,"w":95,"h":96}, @@ -530,7 +530,7 @@ }, "sprites/blueprints/splitter-compact-inverse.png": { - "frame": {"x":102,"y":874,"w":95,"h":93}, + "frame": {"x":820,"y":1152,"w":95,"h":93}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":1,"w":95,"h":93}, @@ -538,7 +538,7 @@ }, "sprites/blueprints/splitter-compact.png": { - "frame": {"x":102,"y":971,"w":93,"h":93}, + "frame": {"x":101,"y":874,"w":93,"h":93}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":3,"y":1,"w":93,"h":93}, @@ -578,7 +578,7 @@ }, "sprites/blueprints/underground_belt_entry-tier2.png": { - "frame": {"x":199,"y":1048,"w":93,"h":84}, + "frame": {"x":198,"y":969,"w":93,"h":84}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":2,"y":12,"w":93,"h":84}, @@ -586,7 +586,7 @@ }, "sprites/blueprints/underground_belt_entry.png": { - "frame": {"x":100,"y":1068,"w":93,"h":75}, + "frame": {"x":100,"y":971,"w":93,"h":75}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":2,"y":21,"w":93,"h":75}, @@ -594,7 +594,7 @@ }, "sprites/blueprints/underground_belt_exit-tier2.png": { - "frame": {"x":201,"y":969,"w":94,"h":75}, + "frame": {"x":3,"y":874,"w":94,"h":75}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":2,"y":0,"w":94,"h":75}, @@ -602,7 +602,7 @@ }, "sprites/blueprints/underground_belt_exit.png": { - "frame": {"x":3,"y":1069,"w":93,"h":75}, + "frame": {"x":3,"y":1048,"w":93,"h":75}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":2,"y":0,"w":93,"h":75}, @@ -618,7 +618,7 @@ }, "sprites/blueprints/wire-split.png": { - "frame": {"x":830,"y":994,"w":96,"h":55}, + "frame": {"x":721,"y":990,"w":96,"h":55}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":41,"w":96,"h":55}, @@ -650,7 +650,7 @@ }, "sprites/blueprints/wire_tunnel.png": { - "frame": {"x":3,"y":974,"w":93,"h":91}, + "frame": {"x":3,"y":953,"w":93,"h":91}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":2,"y":2,"w":93,"h":91}, @@ -658,7 +658,7 @@ }, "sprites/buildings/belt_left.png": { - "frame": {"x":392,"y":1150,"w":87,"h":87}, + "frame": {"x":196,"y":1135,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":9,"w":87,"h":87}, @@ -666,7 +666,7 @@ }, "sprites/buildings/belt_right.png": { - "frame": {"x":475,"y":1271,"w":87,"h":87}, + "frame": {"x":281,"y":1272,"w":87,"h":87}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":9,"w":87,"h":87}, @@ -674,7 +674,7 @@ }, "sprites/buildings/belt_top.png": { - "frame": {"x":940,"y":816,"w":78,"h":96}, + "frame": {"x":943,"y":816,"w":78,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":0,"w":78,"h":96}, @@ -706,7 +706,7 @@ }, "sprites/buildings/display.png": { - "frame": {"x":640,"y":1009,"w":84,"h":90}, + "frame": {"x":463,"y":1428,"w":84,"h":90}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":6,"y":6,"w":84,"h":90}, @@ -738,7 +738,7 @@ }, "sprites/buildings/logic_gate-not.png": { - "frame": {"x":657,"y":1358,"w":82,"h":96}, + "frame": {"x":435,"y":903,"w":82,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":8,"y":0,"w":82,"h":96}, @@ -746,7 +746,7 @@ }, "sprites/buildings/logic_gate-or.png": { - "frame": {"x":540,"y":899,"w":96,"h":83}, + "frame": {"x":621,"y":923,"w":96,"h":83}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":0,"w":96,"h":83}, @@ -762,7 +762,7 @@ }, "sprites/buildings/logic_gate-xor.png": { - "frame": {"x":340,"y":803,"w":96,"h":95}, + "frame": {"x":339,"y":803,"w":96,"h":95}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":0,"w":96,"h":95}, @@ -770,7 +770,7 @@ }, "sprites/buildings/logic_gate.png": { - "frame": {"x":339,"y":902,"w":96,"h":88}, + "frame": {"x":521,"y":899,"w":96,"h":88}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":0,"w":96,"h":88}, @@ -778,7 +778,7 @@ }, "sprites/buildings/miner-chainable.png": { - "frame": {"x":930,"y":916,"w":91,"h":95}, + "frame": {"x":391,"y":1081,"w":91,"h":95}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":3,"y":0,"w":91,"h":95}, @@ -786,7 +786,7 @@ }, "sprites/buildings/miner.png": { - "frame": {"x":930,"y":1015,"w":91,"h":95}, + "frame": {"x":292,"y":1082,"w":91,"h":95}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":3,"y":0,"w":91,"h":95}, @@ -834,7 +834,7 @@ }, "sprites/buildings/rotater-ccw.png": { - "frame": {"x":827,"y":1111,"w":95,"h":96}, + "frame": {"x":821,"y":1052,"w":95,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":0,"w":95,"h":96}, @@ -842,7 +842,7 @@ }, "sprites/buildings/rotater-fl.png": { - "frame": {"x":926,"y":1114,"w":95,"h":96}, + "frame": {"x":721,"y":1107,"w":95,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":0,"w":95,"h":96}, @@ -850,7 +850,7 @@ }, "sprites/buildings/rotater.png": { - "frame": {"x":3,"y":874,"w":95,"h":96}, + "frame": {"x":920,"y":1116,"w":95,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":0,"w":95,"h":96}, @@ -858,7 +858,7 @@ }, "sprites/buildings/splitter-compact-inverse.png": { - "frame": {"x":201,"y":874,"w":94,"h":91}, + "frame": {"x":919,"y":1216,"w":94,"h":91}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":2,"w":94,"h":91}, @@ -866,7 +866,7 @@ }, "sprites/buildings/splitter-compact.png": { - "frame": {"x":299,"y":994,"w":93,"h":91}, + "frame": {"x":198,"y":874,"w":93,"h":91}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":3,"y":2,"w":93,"h":91}, @@ -890,7 +890,7 @@ }, "sprites/buildings/trash-storage.png": { - "frame": {"x":733,"y":694,"w":166,"h":192}, + "frame": {"x":736,"y":694,"w":166,"h":192}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":0,"w":166,"h":192}, @@ -898,7 +898,7 @@ }, "sprites/buildings/trash.png": { - "frame": {"x":730,"y":890,"w":96,"h":96}, + "frame": {"x":729,"y":890,"w":96,"h":96}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":96,"h":96}, @@ -906,7 +906,7 @@ }, "sprites/buildings/underground_belt_entry-tier2.png": { - "frame": {"x":100,"y":1147,"w":92,"h":83}, + "frame": {"x":295,"y":995,"w":92,"h":83}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":3,"y":13,"w":92,"h":83}, @@ -914,7 +914,7 @@ }, "sprites/buildings/underground_belt_entry.png": { - "frame": {"x":3,"y":1148,"w":92,"h":74}, + "frame": {"x":196,"y":1057,"w":92,"h":74}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":3,"y":22,"w":92,"h":74}, @@ -922,7 +922,7 @@ }, "sprites/buildings/underground_belt_exit-tier2.png": { - "frame": {"x":3,"y":1226,"w":92,"h":74}, + "frame": {"x":391,"y":1003,"w":92,"h":74}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":3,"y":0,"w":92,"h":74}, @@ -930,7 +930,7 @@ }, "sprites/buildings/underground_belt_exit.png": { - "frame": {"x":492,"y":1102,"w":92,"h":74}, + "frame": {"x":487,"y":1077,"w":92,"h":74}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":3,"y":0,"w":92,"h":74}, @@ -938,7 +938,7 @@ }, "sprites/buildings/wire-cross.png": { - "frame": {"x":830,"y":894,"w":96,"h":96}, + "frame": {"x":829,"y":894,"w":96,"h":96}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":96,"h":96}, @@ -946,7 +946,7 @@ }, "sprites/buildings/wire-split.png": { - "frame": {"x":830,"y":1053,"w":96,"h":54}, + "frame": {"x":621,"y":1010,"w":96,"h":54}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":42,"w":96,"h":54}, @@ -978,7 +978,7 @@ }, "sprites/buildings/wire_tunnel.png": { - "frame": {"x":197,"y":1136,"w":92,"h":90}, + "frame": {"x":3,"y":1127,"w":92,"h":90}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":3,"y":3,"w":92,"h":90}, @@ -1002,7 +1002,7 @@ }, "sprites/misc/hub_direction_indicator.png": { - "frame": {"x":303,"y":835,"w":32,"h":32}, + "frame": {"x":693,"y":851,"w":32,"h":32}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32}, @@ -1042,23 +1042,23 @@ }, "sprites/wires/boolean_false.png": { - "frame": {"x":717,"y":633,"w":15,"h":20}, + "frame": {"x":717,"y":633,"w":21,"h":28}, "rotated": false, "trimmed": true, - "spriteSourceSize": {"x":9,"y":7,"w":15,"h":20}, + "spriteSourceSize": {"x":6,"y":3,"w":21,"h":28}, "sourceSize": {"w":32,"h":32} }, "sprites/wires/boolean_true.png": { - "frame": {"x":715,"y":757,"w":12,"h":21}, + "frame": {"x":717,"y":665,"w":15,"h":28}, "rotated": false, "trimmed": true, - "spriteSourceSize": {"x":9,"y":6,"w":12,"h":21}, + "spriteSourceSize": {"x":7,"y":3,"w":15,"h":28}, "sourceSize": {"w":32,"h":32} }, "sprites/wires/display/blue.png": { - "frame": {"x":903,"y":783,"w":33,"h":33}, + "frame": {"x":699,"y":703,"w":33,"h":33}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":33,"h":33}, @@ -1066,7 +1066,7 @@ }, "sprites/wires/display/cyan.png": { - "frame": {"x":903,"y":820,"w":33,"h":33}, + "frame": {"x":699,"y":740,"w":33,"h":33}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":33,"h":33}, @@ -1074,7 +1074,7 @@ }, "sprites/wires/display/green.png": { - "frame": {"x":903,"y":857,"w":33,"h":33}, + "frame": {"x":699,"y":777,"w":33,"h":33}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":33,"h":33}, @@ -1082,7 +1082,7 @@ }, "sprites/wires/display/purple.png": { - "frame": {"x":693,"y":803,"w":33,"h":33}, + "frame": {"x":906,"y":783,"w":33,"h":33}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":33,"h":33}, @@ -1090,7 +1090,7 @@ }, "sprites/wires/display/red.png": { - "frame": {"x":693,"y":840,"w":33,"h":33}, + "frame": {"x":906,"y":820,"w":33,"h":33}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":33,"h":33}, @@ -1098,7 +1098,7 @@ }, "sprites/wires/display/white.png": { - "frame": {"x":693,"y":877,"w":33,"h":33}, + "frame": {"x":906,"y":857,"w":33,"h":33}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":33,"h":33}, @@ -1106,7 +1106,7 @@ }, "sprites/wires/display/yellow.png": { - "frame": {"x":303,"y":798,"w":33,"h":33}, + "frame": {"x":693,"y":814,"w":33,"h":33}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":33,"h":33}, @@ -1138,7 +1138,7 @@ }, "sprites/wires/network_conflict.png": { - "frame": {"x":440,"y":803,"w":32,"h":30}, + "frame": {"x":303,"y":798,"w":32,"h":30}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":1,"w":32,"h":30}, @@ -1178,7 +1178,7 @@ }, "sprites/wires/sets/color_split.png": { - "frame": {"x":540,"y":986,"w":96,"h":54}, + "frame": {"x":821,"y":994,"w":96,"h":54}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":42,"w":96,"h":54}, @@ -1202,7 +1202,7 @@ }, "sprites/wires/sets/conflict_forward.png": { - "frame": {"x":717,"y":657,"w":12,"h":96}, + "frame": {"x":303,"y":832,"w":12,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":42,"y":0,"w":12,"h":96}, @@ -1210,7 +1210,7 @@ }, "sprites/wires/sets/conflict_split.png": { - "frame": {"x":439,"y":992,"w":96,"h":54}, + "frame": {"x":721,"y":1049,"w":96,"h":54}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":42,"w":96,"h":54}, @@ -1226,7 +1226,7 @@ }, "sprites/wires/sets/regular_cross.png": { - "frame": {"x":830,"y":894,"w":96,"h":96}, + "frame": {"x":829,"y":894,"w":96,"h":96}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":96,"h":96}, @@ -1242,7 +1242,7 @@ }, "sprites/wires/sets/regular_split.png": { - "frame": {"x":830,"y":1053,"w":96,"h":54}, + "frame": {"x":621,"y":1010,"w":96,"h":54}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":42,"w":96,"h":54}, @@ -1266,7 +1266,7 @@ }, "sprites/wires/sets/shape_forward.png": { - "frame": {"x":699,"y":703,"w":12,"h":96}, + "frame": {"x":319,"y":832,"w":12,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":42,"y":0,"w":12,"h":96}, @@ -1274,7 +1274,7 @@ }, "sprites/wires/sets/shape_split.png": { - "frame": {"x":539,"y":1044,"w":96,"h":54}, + "frame": {"x":621,"y":1068,"w":96,"h":54}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":42,"w":96,"h":54}, @@ -1290,7 +1290,7 @@ }, "sprites/wires/wires_preview.png": { - "frame": {"x":303,"y":871,"w":32,"h":32}, + "frame": {"x":693,"y":887,"w":32,"h":32}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32}, @@ -1303,6 +1303,6 @@ "format": "RGBA8888", "size": {"w":1024,"h":2048}, "scale": "0.5", - "smartupdate": "$TexturePacker:SmartUpdate:9bd368ae0b2aae72402b6bf839999ece:a43ffc40e72c7a025dd537be932491bf:908b89f5ca8ff73e331a35a3b14d0604$" + "smartupdate": "$TexturePacker:SmartUpdate:876f0711b44fa7bbab8d2539e9651766:ff01f850e086ef31c114b036c3a32e6d:908b89f5ca8ff73e331a35a3b14d0604$" } } diff --git a/res_built/atlas/atlas0_mq.png b/res_built/atlas/atlas0_mq.png index ef78077e..e05b73e3 100644 Binary files a/res_built/atlas/atlas0_mq.png and b/res_built/atlas/atlas0_mq.png differ diff --git a/res_raw/sprites/wires/boolean_false.png b/res_raw/sprites/wires/boolean_false.png index 796c1f83..757b6cd9 100644 Binary files a/res_raw/sprites/wires/boolean_false.png and b/res_raw/sprites/wires/boolean_false.png differ diff --git a/res_raw/sprites/wires/boolean_true.png b/res_raw/sprites/wires/boolean_true.png index dca45273..f63bae3f 100644 Binary files a/res_raw/sprites/wires/boolean_true.png and b/res_raw/sprites/wires/boolean_true.png differ diff --git a/src/js/core/draw_parameters.js b/src/js/core/draw_parameters.js index 649c89b0..71971ed1 100644 --- a/src/js/core/draw_parameters.js +++ b/src/js/core/draw_parameters.js @@ -22,9 +22,5 @@ export class DrawParameters { // FIXME: Not really nice /** @type {GameRoot} */ this.root = root; - - if (G_IS_DEV && globalConfig.debug.testClipping) { - this.visibleRect = this.visibleRect.expandedInAllDirections(-100); - } } } diff --git a/src/js/core/draw_utils.js b/src/js/core/draw_utils.js index ea5b70c2..d5183cfb 100644 --- a/src/js/core/draw_utils.js +++ b/src/js/core/draw_utils.js @@ -3,6 +3,12 @@ * @typedef {import("./draw_parameters").DrawParameters} DrawParameters */ +import { globalConfig } from "./config"; +import { createLogger } from "./logging"; +import { Rectangle } from "./rectangle"; + +const logger = createLogger("draw_utils"); + export function initDrawUtils() { CanvasRenderingContext2D.prototype.beginRoundedRect = function (x, y, w, h, r) { this.beginPath(); @@ -52,9 +58,64 @@ export function initDrawUtils() { * @param {number=} param0.offsetY */ export function drawRotatedSprite({ parameters, sprite, x, y, angle, size, offsetX = 0, offsetY = 0 }) { + if (angle === 0) { + sprite.drawCachedCentered(parameters, x + offsetX, y + offsetY, size); + return; + } + parameters.context.translate(x, y); parameters.context.rotate(angle); sprite.drawCachedCentered(parameters, offsetX, offsetY, size, false); parameters.context.rotate(-angle); parameters.context.translate(-x, -y); } + +let warningsShown = 0; + +/** + * Draws a sprite with clipping + * @param {object} param0 + * @param {DrawParameters} param0.parameters + * @param {HTMLCanvasElement} param0.sprite + * @param {number} param0.x + * @param {number} param0.y + * @param {number} param0.w + * @param {number} param0.h + * @param {number} param0.originalW + * @param {number} param0.originalH + */ +export function drawSpriteClipped({ parameters, sprite, x, y, w, h, originalW, originalH }) { + const rect = new Rectangle(x, y, w, h); + const intersection = rect.getIntersection(parameters.visibleRect); + if (!intersection) { + // Clipped + if (++warningsShown % 200 === 1) { + logger.warn( + "Sprite drawn clipped but it's not on screen - perform culling before (", + warningsShown, + "warnings)" + ); + } + if (G_IS_DEV && globalConfig.debug.testClipping) { + parameters.context.fillStyle = "yellow"; + parameters.context.fillRect(x, y, w, h); + } + return; + } + + parameters.context.drawImage( + sprite, + + // src pos and size + ((intersection.x - x) / w) * originalW, + ((intersection.y - y) / h) * originalH, + (originalW * intersection.w) / w, + (originalH * intersection.h) / h, + + // dest pos and size + intersection.x, + intersection.y, + intersection.w, + intersection.h + ); +} diff --git a/src/js/core/rectangle.js b/src/js/core/rectangle.js index 84fe05e5..1cbfdc27 100644 --- a/src/js/core/rectangle.js +++ b/src/js/core/rectangle.js @@ -395,22 +395,14 @@ export class Rectangle { /** * Returns a new recangle in tile space which includes all tiles which are visible in this rect - * @param {boolean=} includeHalfTiles * @returns {Rectangle} */ - toTileCullRectangle(includeHalfTiles = true) { - let scaled = this.allScaled(1.0 / globalConfig.tileSize); - - if (includeHalfTiles) { - // Increase rectangle size - scaled = Rectangle.fromTRBL( - Math.floor(scaled.y), - Math.ceil(scaled.right()), - Math.ceil(scaled.bottom()), - Math.floor(scaled.x) - ); - } - - return scaled; + toTileCullRectangle() { + return new Rectangle( + Math.floor(this.x / globalConfig.tileSize), + Math.floor(this.y / globalConfig.tileSize), + Math.ceil(this.w / globalConfig.tileSize), + Math.ceil(this.h / globalConfig.tileSize) + ); } } diff --git a/src/js/game/base_item.js b/src/js/game/base_item.js index 09389b32..061681c0 100644 --- a/src/js/game/base_item.js +++ b/src/js/game/base_item.js @@ -59,9 +59,9 @@ export class BaseItem extends BasicSerializableObject { * @param {number} x * @param {number} y * @param {DrawParameters} parameters - * @param {number=} size + * @param {number=} diameter */ - draw(x, y, parameters, size) {} + drawCentered(x, y, parameters, diameter) {} getBackgroundColorAsResource() { abstract; diff --git a/src/js/game/belt_path.js b/src/js/game/belt_path.js index 99511d5a..fc062bcc 100644 --- a/src/js/game/belt_path.js +++ b/src/js/game/belt_path.js @@ -1195,7 +1195,7 @@ export class BeltPath extends BasicSerializableObject { const distanceAndItem = this.items[currentItemIndex]; if (parameters.visibleRect.containsCircle(worldPos.x, worldPos.y, 10)) { - distanceAndItem[_item].draw(worldPos.x, worldPos.y, parameters); + distanceAndItem[_item].drawCentered(worldPos.x, worldPos.y, parameters); } // Check for the next item diff --git a/src/js/game/components/static_map_entity.js b/src/js/game/components/static_map_entity.js index 32104c51..db4c834e 100644 --- a/src/js/game/components/static_map_entity.js +++ b/src/js/game/components/static_map_entity.js @@ -255,8 +255,7 @@ export class StaticMapEntityComponent extends Component { worldX - extrudePixels * size.x, worldY - extrudePixels * size.y, globalConfig.tileSize * size.x + 2 * extrudePixels * size.x, - globalConfig.tileSize * size.y + 2 * extrudePixels * size.y, - false + globalConfig.tileSize * size.y + 2 * extrudePixels * size.y ); } else { const rotationCenterX = worldX + globalConfig.halfTileSize; @@ -264,16 +263,14 @@ export class StaticMapEntityComponent extends Component { parameters.context.translate(rotationCenterX, rotationCenterY); parameters.context.rotate(Math.radians(this.rotation)); - sprite.drawCached( parameters, -globalConfig.halfTileSize - extrudePixels * size.x, -globalConfig.halfTileSize - extrudePixels * size.y, globalConfig.tileSize * size.x + 2 * extrudePixels * size.x, globalConfig.tileSize * size.y + 2 * extrudePixels * size.y, - false + false // no clipping possible here ); - parameters.context.rotate(-Math.radians(this.rotation)); parameters.context.translate(-rotationCenterX, -rotationCenterY); } diff --git a/src/js/game/core.js b/src/js/game/core.js index 7f28e638..0a8aaf7a 100644 --- a/src/js/game/core.js +++ b/src/js/game/core.js @@ -369,6 +369,13 @@ export class GameCore { } // Transform to world space + + if (G_IS_DEV && globalConfig.debug.testClipping) { + params.visibleRect = params.visibleRect.expandedInAllDirections( + -200 / this.root.camera.zoomLevel + ); + } + root.camera.transform(context); assert(context.globalAlpha === 1.0, "Global alpha not 1 on frame start"); @@ -385,9 +392,6 @@ export class GameCore { } else { root.map.drawBackground(params); - // Underlays for splitters / balancers - systems.beltUnderlays.drawUnderlays(params); - // Belt items systems.belt.drawBeltItems(params); @@ -439,6 +443,9 @@ export class GameCore { params.zoomLevel = 1; params.desiredAtlasScale = ORIGINAL_SPRITE_SCALE; params.visibleRect = new Rectangle(0, 0, this.root.gameWidth, this.root.gameHeight); + if (G_IS_DEV && globalConfig.debug.testClipping) { + params.visibleRect = params.visibleRect.expandedInAllDirections(-200); + } // Draw overlays, those are screen space root.hud.drawOverlays(params); @@ -469,5 +476,13 @@ export class GameCore { 20 ); } + + if (G_IS_DEV && globalConfig.debug.testClipping) { + context.strokeStyle = "red"; + context.lineWidth = 1; + context.beginPath(); + context.rect(200, 200, this.root.gameWidth - 400, this.root.gameHeight - 400); + context.stroke(); + } } } diff --git a/src/js/game/hud/parts/wire_info.js b/src/js/game/hud/parts/wire_info.js index 6f57fe17..a4e03fbb 100644 --- a/src/js/game/hud/parts/wire_info.js +++ b/src/js/game/hud/parts/wire_info.js @@ -69,7 +69,7 @@ export class HUDWireInfo extends BaseHUDPart { } else if (!network.currentValue) { this.spriteEmpty.draw(parameters.context, mousePos.x + 10, mousePos.y - 10, 40, 40); } else { - network.currentValue.draw(mousePos.x + 20, mousePos.y, parameters, 40); + network.currentValue.drawCentered(mousePos.x + 20, mousePos.y, parameters, 40); } } } diff --git a/src/js/game/items/boolean_item.js b/src/js/game/items/boolean_item.js index 8da1d449..971defc5 100644 --- a/src/js/game/items/boolean_item.js +++ b/src/js/game/items/boolean_item.js @@ -42,17 +42,17 @@ export class BooleanItem extends BaseItem { /** * @param {number} x * @param {number} y - * @param {number} size + * @param {number} diameter * @param {DrawParameters} parameters */ - draw(x, y, parameters, size = 12) { + drawCentered(x, y, parameters, diameter = 12) { let sprite; if (this.value) { sprite = Loader.getSprite("sprites/wires/boolean_true.png"); } else { sprite = Loader.getSprite("sprites/wires/boolean_false.png"); } - sprite.drawCachedCentered(parameters, x, y, size * 1.5); + sprite.drawCachedCentered(parameters, x, y, diameter); } } diff --git a/src/js/game/items/color_item.js b/src/js/game/items/color_item.js index 009b310b..c62e6f6b 100644 --- a/src/js/game/items/color_item.js +++ b/src/js/game/items/color_item.js @@ -50,26 +50,26 @@ export class ColorItem extends BaseItem { /** * @param {number} x * @param {number} y - * @param {number} size + * @param {number} diameter * @param {DrawParameters} parameters */ - draw(x, y, parameters, size = 12) { + drawCentered(x, y, parameters, diameter = 12) { if (!this.bufferGenerator) { this.bufferGenerator = this.internalGenerateColorBuffer.bind(this); } const dpi = smoothenDpi(globalConfig.shapesSharpness * parameters.zoomLevel); - const key = size + "/" + dpi; + const key = diameter + "/" + dpi; const canvas = parameters.root.buffers.getForKey({ key, subKey: this.color, - w: size, - h: size, + w: diameter, + h: diameter, dpi, redrawMethod: this.bufferGenerator, }); - parameters.context.drawImage(canvas, x - size / 2, y - size / 2, size, size); + parameters.context.drawImage(canvas, x - diameter / 2, y - diameter / 2, diameter, diameter); } /** * diff --git a/src/js/game/items/shape_item.js b/src/js/game/items/shape_item.js index 44a0a3ad..7248c581 100644 --- a/src/js/game/items/shape_item.js +++ b/src/js/game/items/shape_item.js @@ -52,9 +52,9 @@ export class ShapeItem extends BaseItem { * @param {number} x * @param {number} y * @param {DrawParameters} parameters - * @param {number=} size + * @param {number=} diameter */ - draw(x, y, parameters, size) { - this.definition.draw(x, y, parameters, size); + drawCentered(x, y, parameters, diameter) { + this.definition.drawCentered(x, y, parameters, diameter); } } diff --git a/src/js/game/map.js b/src/js/game/map.js index b0992627..f818bc46 100644 --- a/src/js/game/map.js +++ b/src/js/game/map.js @@ -1,13 +1,10 @@ -import { GameRoot, enumLayer } from "./root"; import { globalConfig } from "../core/config"; import { Vector } from "../core/vector"; -import { Entity } from "./entity"; -import { createLogger } from "../core/logging"; +import { BasicSerializableObject, types } from "../savegame/serialization"; import { BaseItem } from "./base_item"; +import { Entity } from "./entity"; import { MapChunkView } from "./map_chunk_view"; -import { BasicSerializableObject, types } from "../savegame/serialization"; - -const logger = createLogger("map"); +import { enumLayer, GameRoot } from "./root"; export class BaseMap extends BasicSerializableObject { static getId() { diff --git a/src/js/game/map_chunk.js b/src/js/game/map_chunk.js index e6e76b13..19fd73b4 100644 --- a/src/js/game/map_chunk.js +++ b/src/js/game/map_chunk.js @@ -9,6 +9,7 @@ import { Entity } from "./entity"; import { COLOR_ITEM_SINGLETONS } from "./items/color_item"; import { enumLayer, GameRoot } from "./root"; import { enumSubShape } from "./shape_definition"; +import { Rectangle } from "../core/rectangle"; const logger = createLogger("map_chunk"); @@ -26,18 +27,47 @@ export class MapChunk { this.tileX = x * globalConfig.mapChunkSize; this.tileY = y * globalConfig.mapChunkSize; - /** @type {Array>} */ + /** + * Stores the contents of the lower (= map resources) layer + * @type {Array>} + */ + this.lowerLayer = make2DUndefinedArray(globalConfig.mapChunkSize, globalConfig.mapChunkSize); + + /** + * Stores the contents of the regular layer + * @type {Array>} + */ this.contents = make2DUndefinedArray(globalConfig.mapChunkSize, globalConfig.mapChunkSize); - /** @type {Array>} */ + /** + * Stores the contents of the wires layer + * @type {Array>} + */ this.wireContents = make2DUndefinedArray(globalConfig.mapChunkSize, globalConfig.mapChunkSize); - /** @type {Array>} */ - this.lowerLayer = make2DUndefinedArray(globalConfig.mapChunkSize, globalConfig.mapChunkSize); - /** @type {Array} */ this.containedEntities = []; + /** + * World space rectangle, can be used for culling + */ + this.worldSpaceRectangle = new Rectangle( + this.tileX * globalConfig.tileSize, + this.tileY * globalConfig.tileSize, + globalConfig.mapChunkWorldSize, + globalConfig.mapChunkWorldSize + ); + + /** + * Tile space rectangle, can be used for culling + */ + this.tileSpaceRectangle = new Rectangle( + this.tileX, + this.tileY, + globalConfig.mapChunkSize, + globalConfig.mapChunkSize + ); + /** * Which entities this chunk contains, sorted by layer * @type {Object>} diff --git a/src/js/game/map_chunk_view.js b/src/js/game/map_chunk_view.js index 94389abc..f7ce1064 100644 --- a/src/js/game/map_chunk_view.js +++ b/src/js/game/map_chunk_view.js @@ -5,6 +5,7 @@ import { Entity } from "./entity"; import { MapChunk } from "./map_chunk"; import { enumLayer, GameRoot } from "./root"; import { THEME } from "./theme"; +import { drawSpriteClipped } from "../core/draw_utils"; export const CHUNK_OVERLAY_RES = 3; @@ -41,6 +42,7 @@ export class MapChunkView extends MapChunk { drawBackgroundLayer(parameters) { const systems = this.root.systemMgr.systems; systems.mapResources.drawChunk(parameters, this); + systems.beltUnderlays.drawChunk(parameters, this); systems.belt.drawChunk(parameters, this); } @@ -61,11 +63,12 @@ export class MapChunkView extends MapChunk { * @param {DrawParameters} parameters */ drawOverlay(parameters) { + const overlaySize = globalConfig.mapChunkSize * CHUNK_OVERLAY_RES; const sprite = this.root.buffers.getForKey({ key: "chunk@" + this.root.currentLayer, subKey: this.renderKey, - w: globalConfig.mapChunkSize * CHUNK_OVERLAY_RES, - h: globalConfig.mapChunkSize * CHUNK_OVERLAY_RES, + w: overlaySize, + h: overlaySize, dpi: 1, redrawMethod: this.generateOverlayBuffer.bind(this), }); @@ -74,7 +77,17 @@ export class MapChunkView extends MapChunk { // Draw chunk "pixel" art parameters.context.imageSmoothingEnabled = false; - parameters.context.drawImage(sprite, this.x * dims, this.y * dims, dims, dims); + drawSpriteClipped({ + parameters, + sprite, + x: this.x * dims, + y: this.y * dims, + w: dims, + h: dims, + originalW: overlaySize, + originalH: overlaySize, + }); + parameters.context.imageSmoothingEnabled = true; // Draw patch items @@ -82,12 +95,13 @@ export class MapChunkView extends MapChunk { for (let i = 0; i < this.patches.length; ++i) { const patch = this.patches[i]; - patch.item.draw( - this.x * dims + patch.pos.x * globalConfig.tileSize, - this.y * dims + patch.pos.y * globalConfig.tileSize, - parameters, - Math.min(80, 30 / parameters.zoomLevel) - ); + const destX = this.x * dims + patch.pos.x * globalConfig.tileSize; + const destY = this.y * dims + patch.pos.y * globalConfig.tileSize; + const destSize = Math.min(80, 30 / parameters.zoomLevel); + + if (parameters.visibleRect.containsCircle(destX, destY, destSize)) { + patch.item.drawCentered(destX, destY, parameters, destSize); + } } } } diff --git a/src/js/game/map_view.js b/src/js/game/map_view.js index c98e7c4b..178344a7 100644 --- a/src/js/game/map_view.js +++ b/src/js/game/map_view.js @@ -140,23 +140,23 @@ export class MapView extends BaseMap { * @param {function} method */ drawVisibleChunks(parameters, method) { - const cullRange = parameters.visibleRect.toTileCullRectangle(); + const cullRange = parameters.visibleRect.allScaled(1 / globalConfig.tileSize); const top = cullRange.top(); const right = cullRange.right(); const bottom = cullRange.bottom(); const left = cullRange.left(); - const border = 1; + const border = 0; const minY = top - border; const maxY = bottom + border; const minX = left - border; - const maxX = right + border - 1; + const maxX = right + border; const chunkStartX = Math.floor(minX / globalConfig.mapChunkSize); const chunkStartY = Math.floor(minY / globalConfig.mapChunkSize); - const chunkEndX = Math.ceil(maxX / globalConfig.mapChunkSize); - const chunkEndY = Math.ceil(maxY / globalConfig.mapChunkSize); + const chunkEndX = Math.floor(maxX / globalConfig.mapChunkSize); + const chunkEndY = Math.floor(maxY / globalConfig.mapChunkSize); // Render y from top down for proper blending for (let chunkX = chunkStartX; chunkX <= chunkEndX; ++chunkX) { @@ -230,7 +230,6 @@ export class MapView extends BaseMap { const chunkEndX = Math.ceil(maxX / globalConfig.mapChunkSize); const chunkEndY = Math.ceil(maxY / globalConfig.mapChunkSize); - // Render y from top down for proper blending for (let chunkX = chunkStartX; chunkX <= chunkEndX; ++chunkX) { for (let chunkY = chunkStartY; chunkY <= chunkEndY; ++chunkY) { parameters.context.fillStyle = "#ffaaaa"; diff --git a/src/js/game/shape_definition.js b/src/js/game/shape_definition.js index a016d23e..4279c9fa 100644 --- a/src/js/game/shape_definition.js +++ b/src/js/game/shape_definition.js @@ -280,24 +280,25 @@ export class ShapeDefinition extends BasicSerializableObject { * @param {number} x * @param {number} y * @param {DrawParameters} parameters + * @param {number=} diameter */ - draw(x, y, parameters, size = 20) { + drawCentered(x, y, parameters, diameter = 20) { const dpi = smoothenDpi(globalConfig.shapesSharpness * parameters.zoomLevel); if (!this.bufferGenerator) { this.bufferGenerator = this.internalGenerateShapeBuffer.bind(this); } - const key = size + "/" + dpi; + const key = diameter + "/" + dpi; const canvas = parameters.root.buffers.getForKey({ key, subKey: this.cachedHash, - w: size, - h: size, + w: diameter, + h: diameter, dpi, redrawMethod: this.bufferGenerator, }); - parameters.context.drawImage(canvas, x - size / 2, y - size / 2, size, size); + parameters.context.drawImage(canvas, x - diameter / 2, y - diameter / 2, diameter, diameter); } /** diff --git a/src/js/game/systems/belt.js b/src/js/game/systems/belt.js index 042dddfb..420e0604 100644 --- a/src/js/game/systems/belt.js +++ b/src/js/game/systems/belt.js @@ -14,6 +14,7 @@ import { GameSystemWithFilter } from "../game_system_with_filter"; import { MapChunkView } from "../map_chunk_view"; import { defaultBuildingVariant } from "../meta_building"; import { getCodeFromBuildingData } from "../building_codes"; +import { enumLayer } from "../root"; export const BELT_ANIM_COUNT = 14; @@ -495,17 +496,13 @@ export class BeltSystem extends GameSystemWithFilter { ((this.root.time.realtimeNow() * speedMultiplier * BELT_ANIM_COUNT * 126) / 42) * globalConfig.itemSpacingOnBelts ); - const contents = chunk.contents; - for (let y = 0; y < globalConfig.mapChunkSize; ++y) { - for (let x = 0; x < globalConfig.mapChunkSize; ++x) { - const entity = contents[x][y]; - - if (entity && entity.components.Belt) { - const direction = entity.components.Belt.direction; - const sprite = this.beltAnimations[direction][animationIndex % BELT_ANIM_COUNT]; - - entity.components.StaticMapEntity.drawSpriteOnFullEntityBounds(parameters, sprite, 0); - } + const contents = chunk.containedEntitiesByLayer[enumLayer.regular]; + for (let i = 0; i < contents.length; ++i) { + const entity = contents[i]; + if (entity.components.Belt) { + const direction = entity.components.Belt.direction; + const sprite = this.beltAnimations[direction][animationIndex % BELT_ANIM_COUNT]; + entity.components.StaticMapEntity.drawSpriteOnFullEntityBounds(parameters, sprite, 0); } } } diff --git a/src/js/game/systems/belt_underlays.js b/src/js/game/systems/belt_underlays.js index 7964a1f0..c20801f0 100644 --- a/src/js/game/systems/belt_underlays.js +++ b/src/js/game/systems/belt_underlays.js @@ -3,9 +3,11 @@ import { drawRotatedSprite } from "../../core/draw_utils"; import { Loader } from "../../core/loader"; import { enumDirectionToAngle } from "../../core/vector"; import { BeltUnderlaysComponent } from "../components/belt_underlays"; -import { Entity } from "../entity"; import { GameSystemWithFilter } from "../game_system_with_filter"; import { BELT_ANIM_COUNT } from "./belt"; +import { MapChunkView } from "../map_chunk_view"; +import { DrawParameters } from "../../core/draw_parameters"; +import { enumLayer } from "../root"; export class BeltUnderlaysSystem extends GameSystemWithFilter { constructor(root) { @@ -19,49 +21,47 @@ export class BeltUnderlaysSystem extends GameSystemWithFilter { } /** - * Draws the acceptor underlays - * @param {import("../../core/draw_utils").DrawParameters} parameters + * Draws a given chunk + * @param {DrawParameters} parameters + * @param {MapChunkView} chunk */ - drawUnderlays(parameters) { - this.forEachMatchingEntityOnScreen(parameters, this.drawEntityUnderlays.bind(this)); - } - - /** - * @param {import("../../core/draw_utils").DrawParameters} parameters - * @param {Entity} entity - */ - drawEntityUnderlays(parameters, entity) { - const staticComp = entity.components.StaticMapEntity; - const underlayComp = entity.components.BeltUnderlays; - - if (!staticComp.shouldBeDrawn(parameters)) { - return; - } - + drawChunk(parameters, chunk) { // Limit speed to avoid belts going backwards const speedMultiplier = Math.min(this.root.hubGoals.getBeltBaseSpeed(), 10); - const underlays = underlayComp.underlays; - for (let i = 0; i < underlays.length; ++i) { - const { pos, direction } = underlays[i]; + const contents = chunk.containedEntitiesByLayer[enumLayer.regular]; + for (let i = 0; i < contents.length; ++i) { + const entity = contents[i]; + const underlayComp = entity.components.BeltUnderlays; + if (underlayComp) { + const staticComp = entity.components.StaticMapEntity; + const underlays = underlayComp.underlays; + for (let i = 0; i < underlays.length; ++i) { + const { pos, direction } = underlays[i]; + const transformedPos = staticComp.localTileToWorld(pos); + + if (!chunk.tileSpaceRectangle.containsPoint(transformedPos.x, transformedPos.y)) { + continue; + } - const transformedPos = staticComp.localTileToWorld(pos); - const angle = enumDirectionToAngle[staticComp.localDirectionToWorld(direction)]; + const angle = enumDirectionToAngle[staticComp.localDirectionToWorld(direction)]; - // SYNC with systems/belt.js:drawSingleEntity! - const animationIndex = Math.floor( - ((this.root.time.realtimeNow() * speedMultiplier * BELT_ANIM_COUNT * 126) / 42) * - globalConfig.itemSpacingOnBelts - ); + // SYNC with systems/belt.js:drawSingleEntity! + const animationIndex = Math.floor( + ((this.root.time.realtimeNow() * speedMultiplier * BELT_ANIM_COUNT * 126) / 42) * + globalConfig.itemSpacingOnBelts + ); - drawRotatedSprite({ - parameters, - sprite: this.underlayBeltSprites[animationIndex % this.underlayBeltSprites.length], - x: (transformedPos.x + 0.5) * globalConfig.tileSize, - y: (transformedPos.y + 0.5) * globalConfig.tileSize, - angle: Math.radians(angle), - size: globalConfig.tileSize, - }); + drawRotatedSprite({ + parameters, + sprite: this.underlayBeltSprites[animationIndex % this.underlayBeltSprites.length], + x: (transformedPos.x + 0.5) * globalConfig.tileSize, + y: (transformedPos.y + 0.5) * globalConfig.tileSize, + angle: Math.radians(angle), + size: globalConfig.tileSize, + }); + } + } } } } diff --git a/src/js/game/systems/display.js b/src/js/game/systems/display.js index 805c1ad8..dd3493c1 100644 --- a/src/js/game/systems/display.js +++ b/src/js/game/systems/display.js @@ -85,8 +85,7 @@ export class DisplaySystem extends GameSystemWithFilter { globalConfig.tileSize ); } else if (value.getItemType() === enumItemType.shape) { - // @todo - value.draw( + value.drawCentered( (origin.x + 0.5) * globalConfig.tileSize, (origin.y + 0.5) * globalConfig.tileSize, parameters, diff --git a/src/js/game/systems/hub.js b/src/js/game/systems/hub.js index b8968655..3641d9d6 100644 --- a/src/js/game/systems/hub.js +++ b/src/js/game/systems/hub.js @@ -47,7 +47,7 @@ export class HubSystem extends GameSystemWithFilter { const definition = this.root.hubGoals.currentGoal.definition; - definition.draw(pos.x - 25, pos.y - 10, parameters, 40); + definition.drawCentered(pos.x - 25, pos.y - 10, parameters, 40); const goals = this.root.hubGoals.currentGoal; diff --git a/src/js/game/systems/item_acceptor.js b/src/js/game/systems/item_acceptor.js index 1caf14c6..4d06f17e 100644 --- a/src/js/game/systems/item_acceptor.js +++ b/src/js/game/systems/item_acceptor.js @@ -71,7 +71,7 @@ export class ItemAcceptorSystem extends GameSystemWithFilter { fadeOutDirection.x * (animProgress / 2 - 0.5), fadeOutDirection.y * (animProgress / 2 - 0.5) ); - item.draw( + item.drawCentered( (finalTile.x + 0.5) * globalConfig.tileSize, (finalTile.y + 0.5) * globalConfig.tileSize, parameters diff --git a/src/js/game/systems/item_ejector.js b/src/js/game/systems/item_ejector.js index ed824d46..130c87f0 100644 --- a/src/js/game/systems/item_ejector.js +++ b/src/js/game/systems/item_ejector.js @@ -379,7 +379,7 @@ export class ItemEjectorSystem extends GameSystemWithFilter { const worldX = tileX * globalConfig.tileSize; const worldY = tileY * globalConfig.tileSize; - ejectedItem.draw(worldX, worldY, parameters); + ejectedItem.drawCentered(worldX, worldY, parameters); } } } diff --git a/src/js/game/systems/map_resources.js b/src/js/game/systems/map_resources.js index ba898813..8a005a21 100644 --- a/src/js/game/systems/map_resources.js +++ b/src/js/game/systems/map_resources.js @@ -3,6 +3,7 @@ import { DrawParameters } from "../../core/draw_parameters"; import { GameSystem } from "../game_system"; import { MapChunkView } from "../map_chunk_view"; import { THEME } from "../theme"; +import { drawSpriteClipped } from "../../core/draw_utils"; export class MapResourcesSystem extends GameSystem { /** @@ -21,13 +22,16 @@ export class MapResourcesSystem extends GameSystem { }); parameters.context.imageSmoothingEnabled = false; - parameters.context.drawImage( - basicChunkBackground, - chunk.tileX * globalConfig.tileSize, - chunk.tileY * globalConfig.tileSize, - globalConfig.mapChunkWorldSize, - globalConfig.mapChunkWorldSize - ); + drawSpriteClipped({ + parameters, + sprite: basicChunkBackground, + x: chunk.tileX * globalConfig.tileSize, + y: chunk.tileY * globalConfig.tileSize, + w: globalConfig.mapChunkWorldSize, + h: globalConfig.mapChunkWorldSize, + originalW: globalConfig.mapChunkSize, + originalH: globalConfig.mapChunkSize, + }); parameters.context.imageSmoothingEnabled = true; parameters.context.globalAlpha = 0.5; @@ -36,13 +40,12 @@ export class MapResourcesSystem extends GameSystem { // LOW QUALITY: Draw patch items only for (let i = 0; i < chunk.patches.length; ++i) { const patch = chunk.patches[i]; - - patch.item.draw( - chunk.x * globalConfig.mapChunkWorldSize + patch.pos.x * globalConfig.tileSize, - chunk.y * globalConfig.mapChunkWorldSize + patch.pos.y * globalConfig.tileSize, - parameters, - Math.min(80, 40 / parameters.zoomLevel) - ); + const destX = chunk.x * globalConfig.mapChunkWorldSize + patch.pos.x * globalConfig.tileSize; + const destY = chunk.y * globalConfig.mapChunkWorldSize + patch.pos.y * globalConfig.tileSize; + const destSize = Math.min(80, 40 / parameters.zoomLevel); + if (parameters.visibleRect.containsCircle(destX, destY, destSize / 2)) { + patch.item.drawCentered(destX, destY, parameters, destSize); + } } } else { // HIGH QUALITY: Draw all items @@ -55,25 +58,12 @@ export class MapResourcesSystem extends GameSystem { if (lowerItem) { const worldY = (chunk.tileY + y) * globalConfig.tileSize; - if ( - !parameters.visibleRect.containsRect4Params( - worldX, - worldY, - globalConfig.tileSize, - globalConfig.tileSize - ) - ) { - // Clipped - continue; - } + const destX = worldX + globalConfig.halfTileSize; + const destY = worldY + globalConfig.halfTileSize; - // parameters.context.fillStyle = lowerItem.getBackgroundColorAsResource(); - // parameters.context.fillRect(worldX, worldY, globalConfig.tileSize, globalConfig.tileSize); - lowerItem.draw( - worldX + globalConfig.halfTileSize, - worldY + globalConfig.halfTileSize, - parameters - ); + if (parameters.visibleRect.containsCircle(destX, destY, globalConfig.tileSize / 2)) { + lowerItem.drawCentered(destX, destY, parameters); + } } } } @@ -93,7 +83,6 @@ export class MapResourcesSystem extends GameSystem { generateChunkBackground(chunk, canvas, context, w, h, dpi) { if (this.root.app.settings.getAllSettings().disableTileGrid) { // The map doesn't draw a background, so we have to - context.fillStyle = THEME.map.background; context.fillRect(0, 0, w, h); } else { diff --git a/src/js/game/systems/miner.js b/src/js/game/systems/miner.js index f317d0d1..b8fd6b5a 100644 --- a/src/js/game/systems/miner.js +++ b/src/js/game/systems/miner.js @@ -130,7 +130,7 @@ export class MinerSystem extends GameSystemWithFilter { } if (minerComp.cachedMinedItem) { - minerComp.cachedMinedItem.draw( + minerComp.cachedMinedItem.drawCentered( (0.5 + staticComp.origin.x) * globalConfig.tileSize, (0.5 + staticComp.origin.y) * globalConfig.tileSize, parameters diff --git a/src/js/game/systems/storage.js b/src/js/game/systems/storage.js index 51857348..5da8c9a4 100644 --- a/src/js/game/systems/storage.js +++ b/src/js/game/systems/storage.js @@ -65,7 +65,7 @@ export class StorageSystem extends GameSystemWithFilter { if (storedItem !== null) { context.globalAlpha = storageComp.overlayOpacity; const center = staticComp.getTileSpaceBounds().getCenter().toWorldSpace(); - storedItem.draw(center.x, center.y, parameters, 30); + storedItem.drawCentered(center.x, center.y, parameters, 30); this.storageOverlaySprite.drawCached(parameters, center.x - 15, center.y + 15, 30, 15); diff --git a/src/js/game/systems/wired_pins.js b/src/js/game/systems/wired_pins.js index 8b1d5b5e..c4ef1b6e 100644 --- a/src/js/game/systems/wired_pins.js +++ b/src/js/game/systems/wired_pins.js @@ -190,7 +190,7 @@ export class WiredPinsSystem extends GameSystemWithFilter { const value = slot.value; if (value) { const offset = new Vector(0, -9).rotated(effectiveRotation); - value.draw(worldPos.x + offset.x, worldPos.y + offset.y, parameters, 9); + value.drawCentered(worldPos.x + offset.x, worldPos.y + offset.y, parameters, 9); } // Debug view