diff --git a/res_built/atlas/atlas0_hq.json b/res_built/atlas/atlas0_hq.json index 93e5417c..f343cd86 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":3,"y":1506,"w":116,"h":144}, + "frame": {"x":123,"y":1854,"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":123,"y":1853,"w":116,"h":144}, + "frame": {"x":243,"y":1854,"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":123,"y":1674,"w":116,"h":144}, + "frame": {"x":363,"y":1854,"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":123,"y":1506,"w":116,"h":144}, + "frame": {"x":483,"y":1854,"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":235,"y":1355,"w":116,"h":144}, + "frame": {"x":603,"y":1854,"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":243,"y":1853,"w":116,"h":144}, + "frame": {"x":807,"y":1248,"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":243,"y":1674,"w":116,"h":144}, + "frame": {"x":807,"y":1396,"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":243,"y":1506,"w":116,"h":144}, + "frame": {"x":807,"y":1544,"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":1923,"y":1437,"w":116,"h":144}, + "frame": {"x":1918,"y":1156,"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":3,"y":1853,"w":116,"h":144}, + "frame": {"x":1924,"y":1438,"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":1674,"w":116,"h":144}, + "frame": {"x":3,"y":1854,"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":1357,"y":1369,"w":130,"h":130}, + "frame": {"x":1811,"y":1304,"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":1810,"y":1303,"w":130,"h":130}, + "frame": {"x":1656,"y":1313,"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":1625,"y":1455,"w":130,"h":130}, + "frame": {"x":1763,"y":1572,"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":1491,"y":1540,"w":130,"h":130}, + "frame": {"x":1629,"y":1581,"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":1759,"y":1571,"w":130,"h":130}, + "frame": {"x":1897,"y":1586,"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":1625,"y":1589,"w":130,"h":130}, + "frame": {"x":1763,"y":1706,"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":1893,"y":1585,"w":130,"h":130}, + "frame": {"x":1897,"y":1720,"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":1759,"y":1705,"w":130,"h":130}, + "frame": {"x":3,"y":1715,"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":1893,"y":1719,"w":130,"h":130}, + "frame": {"x":137,"y":1715,"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":363,"y":1853,"w":130,"h":130}, + "frame": {"x":271,"y":1715,"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":1655,"y":1321,"w":130,"h":130}, + "frame": {"x":1495,"y":1375,"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":1491,"y":1406,"w":130,"h":130}, + "frame": {"x":1790,"y":1438,"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":1357,"y":1503,"w":130,"h":130}, + "frame": {"x":1629,"y":1447,"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":1789,"y":1437,"w":130,"h":130}, + "frame": {"x":1495,"y":1509,"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":363,"y":1674,"w":130,"h":130}, + "frame": {"x":405,"y":1715,"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":363,"y":1506,"w":130,"h":130}, + "frame": {"x":539,"y":1715,"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":765,"y":1248,"w":130,"h":130}, + "frame": {"x":1195,"y":1492,"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":631,"y":1248,"w":130,"h":130}, + "frame": {"x":1061,"y":1548,"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":475,"y":1250,"w":130,"h":130}, + "frame": {"x":927,"y":1590,"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":899,"y":1290,"w":130,"h":130}, + "frame": {"x":1329,"y":1515,"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":765,"y":1382,"w":130,"h":130}, + "frame": {"x":1195,"y":1626,"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":631,"y":1382,"w":130,"h":130}, + "frame": {"x":1061,"y":1682,"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":631,"y":1674,"w":130,"h":130}, + "frame": {"x":927,"y":1724,"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":631,"y":1516,"w":130,"h":130}, + "frame": {"x":1463,"y":1643,"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":497,"y":1853,"w":130,"h":130}, + "frame": {"x":673,"y":1715,"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":497,"y":1674,"w":130,"h":130}, + "frame": {"x":927,"y":1322,"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":497,"y":1506,"w":130,"h":130}, + "frame": {"x":1061,"y":1414,"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":631,"y":1853,"w":130,"h":130}, + "frame": {"x":927,"y":1456,"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":1033,"y":1392,"w":130,"h":130}, + "frame": {"x":1329,"y":1649,"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":899,"y":1424,"w":130,"h":130}, + "frame": {"x":1195,"y":1760,"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":355,"y":1355,"w":116,"h":144}, + "frame": {"x":807,"y":1692,"w":116,"h":144}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":0,"w":116,"h":144}, @@ -450,7 +450,7 @@ }, "sprites/blueprints/miner-chainable.png": { - "frame": {"x":1909,"y":1156,"w":136,"h":143}, + "frame": {"x":935,"y":1175,"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":1217,"y":1359,"w":136,"h":143}, + "frame": {"x":1075,"y":1267,"w":136,"h":143}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":5,"y":0,"w":136,"h":143}, @@ -658,7 +658,7 @@ }, "sprites/buildings/belt_left.png": { - "frame": {"x":1357,"y":1369,"w":130,"h":130}, + "frame": {"x":1811,"y":1304,"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":363,"y":1674,"w":130,"h":130}, + "frame": {"x":405,"y":1715,"w":130,"h":130}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":14,"y":14,"w":130,"h":130}, @@ -778,7 +778,7 @@ }, "sprites/buildings/miner-chainable.png": { - "frame": {"x":1670,"y":1175,"w":136,"h":142}, + "frame": {"x":1215,"y":1346,"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":1515,"y":1260,"w":136,"h":142}, + "frame": {"x":1355,"y":1369,"w":136,"h":142}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":5,"y":0,"w":136,"h":142}, @@ -906,7 +906,7 @@ }, "sprites/buildings/underground_belt_entry-tier2.png": { - "frame": {"x":1233,"y":1231,"w":137,"h":124}, + "frame": {"x":1092,"y":1139,"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":1374,"y":1254,"w":137,"h":111}, + "frame": {"x":1233,"y":1231,"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":935,"y":1175,"w":137,"h":111}, + "frame": {"x":1374,"y":1254,"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":1076,"y":1277,"w":137,"h":111}, + "frame": {"x":1515,"y":1260,"w":137,"h":111}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":5,"y":0,"w":137,"h":111}, @@ -978,7 +978,7 @@ }, "sprites/buildings/wire_tunnel.png": { - "frame": {"x":1092,"y":1139,"w":137,"h":134}, + "frame": {"x":1670,"y":1175,"w":137,"h":134}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":5,"y":5,"w":137,"h":134}, @@ -1034,7 +1034,7 @@ }, "sprites/misc/waypoint.png": { - "frame": {"x":1867,"y":1118,"w":38,"h":48}, + "frame": {"x":1816,"y":1169,"w":38,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":5,"y":0,"w":38,"h":48}, @@ -1136,6 +1136,22 @@ "spriteSourceSize": {"x":44,"y":0,"w":60,"h":67}, "sourceSize": {"w":144,"h":144} }, +"sprites/wires/network_conflict.png": +{ + "frame": {"x":1867,"y":1118,"w":47,"h":44}, + "rotated": false, + "trimmed": true, + "spriteSourceSize": {"x":1,"y":2,"w":47,"h":44}, + "sourceSize": {"w":48,"h":48} +}, +"sprites/wires/network_empty.png": +{ + "frame": {"x":1867,"y":1166,"w":41,"h":48}, + "rotated": false, + "trimmed": true, + "spriteSourceSize": {"x":5,"y":0,"w":41,"h":48}, + "sourceSize": {"w":48,"h":48} +}, "sprites/wires/overlay_tile.png": { "frame": {"x":708,"y":888,"w":96,"h":96}, @@ -1287,6 +1303,6 @@ "format": "RGBA8888", "size": {"w":2048,"h":2048}, "scale": "0.75", - "smartupdate": "$TexturePacker:SmartUpdate:2d1cf13d72f57d35286eff6ea2dc4baf:37ea54415549690e46769bf06ba5be07:908b89f5ca8ff73e331a35a3b14d0604$" + "smartupdate": "$TexturePacker:SmartUpdate:9bd368ae0b2aae72402b6bf839999ece:a43ffc40e72c7a025dd537be932491bf:908b89f5ca8ff73e331a35a3b14d0604$" } } diff --git a/res_built/atlas/atlas0_hq.png b/res_built/atlas/atlas0_hq.png index a284f4c9..2f323aba 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 bbe3cc6f..88e793a9 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":337,"y":762,"w":40,"h":48}, + "frame": {"x":99,"y":854,"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":147,"y":833,"w":40,"h":48}, + "frame": {"x":345,"y":763,"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":99,"y":850,"w":40,"h":48}, + "frame": {"x":291,"y":810,"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":51,"y":864,"w":40,"h":48}, + "frame": {"x":243,"y":837,"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":3,"y":866,"w":40,"h":48}, + "frame": {"x":194,"y":855,"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":239,"y":789,"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}, @@ -58,7 +58,7 @@ }, "sprites/belt/built/forward_7.png": { - "frame": {"x":283,"y":814,"w":40,"h":48}, + "frame": {"x":95,"y":906,"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":327,"y":814,"w":40,"h":48}, + "frame": {"x":47,"y":911,"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":371,"y":847,"w":40,"h":48}, + "frame": {"x":3,"y":922,"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":381,"y":795,"w":40,"h":48}, + "frame": {"x":51,"y":859,"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":425,"y":796,"w":40,"h":48}, + "frame": {"x":3,"y":870,"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":469,"y":796,"w":40,"h":48}, + "frame": {"x":448,"y":700,"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":195,"y":789,"w":40,"h":48}, + "frame": {"x":397,"y":747,"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":51,"y":624,"w":44,"h":44}, + "frame": {"x":157,"y":639,"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":99,"y":658,"w":44,"h":44}, + "frame": {"x":105,"y":662,"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":99,"y":706,"w":44,"h":44}, + "frame": {"x":153,"y":687,"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":51,"y":720,"w":44,"h":44}, + "frame": {"x":99,"y":710,"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":3,"y":722,"w":44,"h":44}, + "frame": {"x":51,"y":715,"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":253,"y":645,"w":44,"h":44}, + "frame": {"x":3,"y":726,"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":301,"y":666,"w":44,"h":44}, + "frame": {"x":304,"y":666,"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":349,"y":666,"w":44,"h":44}, + "frame": {"x":253,"y":693,"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":397,"y":699,"w":44,"h":44}, + "frame": {"x":201,"y":711,"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":445,"y":700,"w":44,"h":44}, + "frame": {"x":147,"y":735,"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":672,"w":44,"h":44}, + "frame": {"x":51,"y":667,"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":674,"w":44,"h":44}, + "frame": {"x":3,"y":678,"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":205,"y":645,"w":44,"h":44}, + "frame": {"x":256,"y":645,"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":147,"y":689,"w":44,"h":44}, + "frame": {"x":205,"y":663,"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":195,"y":693,"w":44,"h":44}, + "frame": {"x":99,"y":758,"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":147,"y":737,"w":44,"h":44}, + "frame": {"x":51,"y":763,"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":291,"y":714,"w":44,"h":44}, + "frame": {"x":195,"y":759,"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":339,"y":714,"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}, @@ -258,7 +258,7 @@ }, "sprites/belt/built/right_4.png": { - "frame": {"x":387,"y":747,"w":44,"h":44}, + "frame": {"x":99,"y":806,"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":435,"y":748,"w":44,"h":44}, + "frame": {"x":51,"y":811,"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":195,"y":741,"w":44,"h":44}, + "frame": {"x":3,"y":822,"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":147,"y":785,"w":44,"h":44}, + "frame": {"x":400,"y":699,"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":99,"y":802,"w":44,"h":44}, + "frame": {"x":349,"y":715,"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":51,"y":816,"w":44,"h":44}, + "frame": {"x":297,"y":762,"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":99,"y":754,"w":44,"h":44}, + "frame": {"x":3,"y":774,"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":51,"y":768,"w":44,"h":44}, + "frame": {"x":352,"y":667,"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":3,"y":770,"w":44,"h":44}, + "frame": {"x":301,"y":714,"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":243,"y":693,"w":44,"h":44}, + "frame": {"x":249,"y":741,"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":3,"y":818,"w":44,"h":44}, + "frame": {"x":243,"y":789,"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":243,"y":741,"w":44,"h":44}, + "frame": {"x":195,"y":807,"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":191,"y":841,"w":40,"h":48}, + "frame": {"x":47,"y":963,"w":40,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":4,"y":0,"w":40,"h":48}, @@ -386,7 +386,7 @@ }, "sprites/blueprints/display.png": { - "frame": {"x":157,"y":639,"w":44,"h":46}, + "frame": {"x":3,"y":628,"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":291,"y":762,"w":42,"h":48}, + "frame": {"x":467,"y":648,"w":42,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":3,"y":0,"w":42,"h":48}, @@ -458,7 +458,7 @@ }, "sprites/blueprints/miner.png": { - "frame": {"x":211,"y":593,"w":47,"h":48}, + "frame": {"x":263,"y":593,"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":364,"y":615,"w":47,"h":47}, + "frame": {"x":416,"y":648,"w":47,"h":47}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":0,"w":47,"h":47}, @@ -618,7 +618,7 @@ }, "sprites/blueprints/wire-split.png": { - "frame": {"x":211,"y":561,"w":48,"h":28}, + "frame": {"x":55,"y":542,"w":48,"h":28}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":20,"w":48,"h":28}, @@ -642,7 +642,7 @@ }, "sprites/blueprints/wire_tunnel-coating.png": { - "frame": {"x":253,"y":458,"w":13,"h":47}, + "frame": {"x":253,"y":478,"w":13,"h":47}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":17,"y":0,"w":13,"h":47}, @@ -658,7 +658,7 @@ }, "sprites/buildings/belt_left.png": { - "frame": {"x":51,"y":624,"w":44,"h":44}, + "frame": {"x":157,"y":639,"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":195,"y":693,"w":44,"h":44}, + "frame": {"x":99,"y":758,"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":3,"y":624,"w":44,"h":46}, + "frame": {"x":208,"y":613,"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":466,"y":648,"w":43,"h":48}, + "frame": {"x":147,"y":831,"w":43,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":3,"y":0,"w":43,"h":48}, @@ -778,7 +778,7 @@ }, "sprites/buildings/miner-chainable.png": { - "frame": {"x":262,"y":593,"w":47,"h":48}, + "frame": {"x":314,"y":614,"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":313,"y":614,"w":47,"h":48}, + "frame": {"x":365,"y":615,"w":47,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":0,"w":47,"h":48}, @@ -866,7 +866,7 @@ }, "sprites/buildings/splitter-compact.png": { - "frame": {"x":415,"y":648,"w":47,"h":47}, + "frame": {"x":55,"y":574,"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":3,"y":578,"w":47,"h":42}, + "frame": {"x":106,"y":574,"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":106,"y":574,"w":47,"h":38}, + "frame": {"x":157,"y":597,"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":157,"y":597,"w":47,"h":38}, + "frame": {"x":106,"y":620,"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":106,"y":616,"w":47,"h":38}, + "frame": {"x":54,"y":625,"w":47,"h":38}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":0,"w":47,"h":38}, @@ -946,7 +946,7 @@ }, "sprites/buildings/wire-split.png": { - "frame": {"x":55,"y":542,"w":48,"h":28}, + "frame": {"x":3,"y":546,"w":48,"h":28}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":20,"w":48,"h":28}, @@ -970,7 +970,7 @@ }, "sprites/buildings/wire_tunnel-coating.png": { - "frame": {"x":235,"y":478,"w":12,"h":46}, + "frame": {"x":235,"y":498,"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":55,"y":574,"w":47,"h":46}, + "frame": {"x":3,"y":578,"w":47,"h":46}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":1,"w":47,"h":46}, @@ -1034,7 +1034,7 @@ }, "sprites/misc/waypoint.png": { - "frame": {"x":235,"y":458,"w":14,"h":16}, + "frame": {"x":235,"y":478,"w":14,"h":16}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":0,"w":14,"h":16}, @@ -1136,6 +1136,22 @@ "spriteSourceSize": {"x":14,"y":0,"w":22,"h":23}, "sourceSize": {"w":48,"h":48} }, +"sprites/wires/network_conflict.png": +{ + "frame": {"x":349,"y":433,"w":16,"h":16}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":16,"h":16}, + "sourceSize": {"w":16,"h":16} +}, +"sprites/wires/network_empty.png": +{ + "frame": {"x":255,"y":458,"w":15,"h":16}, + "rotated": false, + "trimmed": true, + "spriteSourceSize": {"x":1,"y":0,"w":15,"h":16}, + "sourceSize": {"w":16,"h":16} +}, "sprites/wires/overlay_tile.png": { "frame": {"x":343,"y":159,"w":32,"h":32}, @@ -1154,7 +1170,7 @@ }, "sprites/wires/sets/color_forward.png": { - "frame": {"x":251,"y":509,"w":8,"h":48}, + "frame": {"x":251,"y":529,"w":8,"h":48}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":20,"y":0,"w":8,"h":48}, @@ -1162,7 +1178,7 @@ }, "sprites/wires/sets/color_split.png": { - "frame": {"x":3,"y":546,"w":48,"h":28}, + "frame": {"x":107,"y":542,"w":48,"h":28}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":20,"w":48,"h":28}, @@ -1194,7 +1210,7 @@ }, "sprites/wires/sets/conflict_split.png": { - "frame": {"x":107,"y":542,"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}, @@ -1226,7 +1242,7 @@ }, "sprites/wires/sets/regular_split.png": { - "frame": {"x":55,"y":542,"w":48,"h":28}, + "frame": {"x":3,"y":546,"w":48,"h":28}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":20,"w":48,"h":28}, @@ -1258,7 +1274,7 @@ }, "sprites/wires/sets/shape_split.png": { - "frame": {"x":159,"y":565,"w":48,"h":28}, + "frame": {"x":211,"y":581,"w":48,"h":28}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":0,"y":20,"w":48,"h":28}, @@ -1274,7 +1290,7 @@ }, "sprites/wires/wires_preview.png": { - "frame": {"x":349,"y":433,"w":16,"h":16}, + "frame": {"x":235,"y":458,"w":16,"h":16}, "rotated": false, "trimmed": false, "spriteSourceSize": {"x":0,"y":0,"w":16,"h":16}, @@ -1287,6 +1303,6 @@ "format": "RGBA8888", "size": {"w":512,"h":1024}, "scale": "0.25", - "smartupdate": "$TexturePacker:SmartUpdate:2d1cf13d72f57d35286eff6ea2dc4baf:37ea54415549690e46769bf06ba5be07:908b89f5ca8ff73e331a35a3b14d0604$" + "smartupdate": "$TexturePacker:SmartUpdate:9bd368ae0b2aae72402b6bf839999ece:a43ffc40e72c7a025dd537be932491bf:908b89f5ca8ff73e331a35a3b14d0604$" } } diff --git a/res_built/atlas/atlas0_lq.png b/res_built/atlas/atlas0_lq.png index dfd0dad7..661c7df9 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 ccd1535b..2ad91ab0 100644 --- a/res_built/atlas/atlas0_mq.json +++ b/res_built/atlas/atlas0_mq.json @@ -1010,7 +1010,7 @@ }, "sprites/misc/slot_bad_arrow.png": { - "frame": {"x":717,"y":569,"w":24,"h":24}, + "frame": {"x":717,"y":605,"w":24,"h":24}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":1,"w":24,"h":24}, @@ -1018,7 +1018,7 @@ }, "sprites/misc/slot_good_arrow.png": { - "frame": {"x":717,"y":539,"w":24,"h":26}, + "frame": {"x":717,"y":575,"w":24,"h":26}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":1,"y":0,"w":24,"h":26}, @@ -1034,7 +1034,7 @@ }, "sprites/misc/waypoint.png": { - "frame": {"x":717,"y":503,"w":26,"h":32}, + "frame": {"x":717,"y":539,"w":26,"h":32}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":3,"y":0,"w":26,"h":32}, @@ -1042,7 +1042,7 @@ }, "sprites/wires/boolean_false.png": { - "frame": {"x":717,"y":597,"w":15,"h":20}, + "frame": {"x":717,"y":633,"w":15,"h":20}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":7,"w":15,"h":20}, @@ -1050,7 +1050,7 @@ }, "sprites/wires/boolean_true.png": { - "frame": {"x":715,"y":721,"w":12,"h":21}, + "frame": {"x":715,"y":757,"w":12,"h":21}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":9,"y":6,"w":12,"h":21}, @@ -1136,6 +1136,22 @@ "spriteSourceSize": {"x":29,"y":0,"w":41,"h":45}, "sourceSize": {"w":96,"h":96} }, +"sprites/wires/network_conflict.png": +{ + "frame": {"x":440,"y":803,"w":32,"h":30}, + "rotated": false, + "trimmed": true, + "spriteSourceSize": {"x":0,"y":1,"w":32,"h":30}, + "sourceSize": {"w":32,"h":32} +}, +"sprites/wires/network_empty.png": +{ + "frame": {"x":717,"y":503,"w":28,"h":32}, + "rotated": false, + "trimmed": true, + "spriteSourceSize": {"x":3,"y":0,"w":28,"h":32}, + "sourceSize": {"w":32,"h":32} +}, "sprites/wires/overlay_tile.png": { "frame": {"x":955,"y":3,"w":64,"h":64}, @@ -1186,7 +1202,7 @@ }, "sprites/wires/sets/conflict_forward.png": { - "frame": {"x":717,"y":621,"w":12,"h":96}, + "frame": {"x":717,"y":657,"w":12,"h":96}, "rotated": false, "trimmed": true, "spriteSourceSize": {"x":42,"y":0,"w":12,"h":96}, @@ -1287,6 +1303,6 @@ "format": "RGBA8888", "size": {"w":1024,"h":2048}, "scale": "0.5", - "smartupdate": "$TexturePacker:SmartUpdate:2d1cf13d72f57d35286eff6ea2dc4baf:37ea54415549690e46769bf06ba5be07:908b89f5ca8ff73e331a35a3b14d0604$" + "smartupdate": "$TexturePacker:SmartUpdate:9bd368ae0b2aae72402b6bf839999ece:a43ffc40e72c7a025dd537be932491bf:908b89f5ca8ff73e331a35a3b14d0604$" } } diff --git a/res_built/atlas/atlas0_mq.png b/res_built/atlas/atlas0_mq.png index 95701326..ef78077e 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/network_conflict.png b/res_raw/sprites/wires/network_conflict.png new file mode 100644 index 00000000..4b941bc0 Binary files /dev/null and b/res_raw/sprites/wires/network_conflict.png differ diff --git a/res_raw/sprites/wires/network_empty.png b/res_raw/sprites/wires/network_empty.png new file mode 100644 index 00000000..1f8d1c36 Binary files /dev/null and b/res_raw/sprites/wires/network_empty.png differ diff --git a/src/js/core/sprites.js b/src/js/core/sprites.js index 6d9ed5af..bdcc65b4 100644 --- a/src/js/core/sprites.js +++ b/src/js/core/sprites.js @@ -4,7 +4,7 @@ import { round3Digits } from "./utils"; const floorSpriteCoordinates = false; -export const ORIGINAL_SPRITE_SCALE = "0.5"; +export const ORIGINAL_SPRITE_SCALE = "0.75"; export class BaseSprite { /** diff --git a/src/js/core/utils.js b/src/js/core/utils.js index 51198df3..4cb41087 100644 --- a/src/js/core/utils.js +++ b/src/js/core/utils.js @@ -713,3 +713,12 @@ export function rotateDirectionalObject(obj, rotation) { left: queue[3], }; } + +/** + * Modulo which works for negative numbers + * @param {number} n + * @param {number} m + */ +export function safeModulo(n, m) { + return ((n % m) + m) % m; +} diff --git a/src/js/core/vector.js b/src/js/core/vector.js index 4c624c8a..50fa9433 100644 --- a/src/js/core/vector.js +++ b/src/js/core/vector.js @@ -1,4 +1,5 @@ import { globalConfig } from "./config"; +import { safeModulo } from "./utils"; const tileSize = globalConfig.tileSize; const halfTileSize = globalConfig.halfTileSize; @@ -287,6 +288,15 @@ export class Vector { return dx * dx + dy * dy; } + /** + * Returns x % f, y % f + * @param {number} f + * @returns {Vector} new vector + */ + modScalar(f) { + return new Vector(safeModulo(this.x, f), safeModulo(this.y, f)); + } + /** * Computes and returns the center between both points * @param {Vector} v diff --git a/src/js/game/components/wire_tunnel.js b/src/js/game/components/wire_tunnel.js index c365c680..e2e513ae 100644 --- a/src/js/game/components/wire_tunnel.js +++ b/src/js/game/components/wire_tunnel.js @@ -1,4 +1,5 @@ import { Component } from "../component"; +import { WireNetwork } from "../systems/wire"; export class WireTunnelComponent extends Component { static getId() { @@ -16,5 +17,11 @@ export class WireTunnelComponent extends Component { constructor({ multipleDirections = true }) { super(); this.multipleDirections = multipleDirections; + + /** + * Linked network, only if its not multiple directions + * @type {Array} + */ + this.linkedNetworks = []; } } diff --git a/src/js/game/hud/parts/layer_preview.js b/src/js/game/hud/parts/layer_preview.js index a6692332..cc66a817 100644 --- a/src/js/game/hud/parts/layer_preview.js +++ b/src/js/game/hud/parts/layer_preview.js @@ -78,13 +78,13 @@ export class HUDLayerPreview extends BaseHUDPart { const content = this.root.map.getLayerContentXY(tileX, tileY, enumLayer.wires); if (content) { - MapChunkView.drawSingleWiresOverviewTile( - this.context, - dx * globalConfig.tileSize, - dy * globalConfig.tileSize, - content, - globalConfig.tileSize - ); + MapChunkView.drawSingleWiresOverviewTile({ + context: this.context, + x: dx * globalConfig.tileSize, + y: dy * globalConfig.tileSize, + entity: content, + tileSizePixels: globalConfig.tileSize, + }); } } } diff --git a/src/js/game/hud/parts/wire_info.js b/src/js/game/hud/parts/wire_info.js index b15804a0..ebc448ac 100644 --- a/src/js/game/hud/parts/wire_info.js +++ b/src/js/game/hud/parts/wire_info.js @@ -1,9 +1,16 @@ -import { BaseHUDPart } from "../base_hud_part"; -import { enumLayer } from "../../root"; import { globalConfig } from "../../../core/config"; +import { MapChunkView } from "../../map_chunk_view"; +import { enumLayer } from "../../root"; +import { WireNetwork } from "../../systems/wire"; +import { THEME } from "../../theme"; +import { BaseHUDPart } from "../base_hud_part"; +import { Loader } from "../../../core/loader"; export class HUDWireInfo extends BaseHUDPart { - initialize() {} + initialize() { + this.spriteEmpty = Loader.getSprite("sprites/wires/network_empty.png"); + this.spriteConflict = Loader.getSprite("sprites/wires/network_conflict.png"); + } /** * @@ -21,38 +28,90 @@ export class HUDWireInfo extends BaseHUDPart { return; } - const tile = this.root.camera.screenToWorld(mousePos).toTileSpace(); + const worldPos = this.root.camera.screenToWorld(mousePos); + const tile = worldPos.toTileSpace(); const entity = this.root.map.getLayerContentXY(tile.x, tile.y, enumLayer.wires); - if (entity) { - const wireComp = entity.components.Wire; - if (wireComp) { - const screenTile = this.root.camera.worldToScreen(tile.toWorldSpace()); - parameters.context.fillStyle = "rgba(0, 0, 0, 0.1)"; - parameters.context.fillRect( - screenTile.x, - screenTile.y, - globalConfig.tileSize * this.root.camera.zoomLevel, - globalConfig.tileSize * this.root.camera.zoomLevel - ); - - parameters.context.font = "25px GameFont"; - const network = wireComp.linkedNetwork; - if (!network) { - parameters.context.fillStyle = "#333"; - parameters.context.fillText("empty", mousePos.x, mousePos.y); - } else { - if (network.valueConflict) { - parameters.context.fillStyle = "#a10"; - parameters.context.fillText("conflict", mousePos.x, mousePos.y); - } else if (!network.currentValue) { - parameters.context.fillStyle = "#333"; - parameters.context.fillText("empty", mousePos.x, mousePos.y); - } else { - network.currentValue.draw(mousePos.x + 20, mousePos.y, parameters, 40); - } - } + if (!entity) { + // No entity + return; + } + + if ( + !this.root.camera.getIsMapOverlayActive() && + !this.root.logic.getIsEntityIntersectedWithMatrix(entity, worldPos) + ) { + // Detailed intersection check + return; + } + + const networks = this.root.logic.getEntityWireNetworks(entity, tile); + if (networks === null) { + // This entity will never be able to be connected + return; + } + + if (networks.length === 0) { + // No network at all + parameters.context.fillStyle = "#333"; + this.spriteEmpty.draw(parameters.context, mousePos.x + 10, mousePos.y - 10, 40, 40); + return; + } + + for (let i = 0; i < networks.length; ++i) { + const network = networks[i]; + this.drawHighlightedNetwork(parameters, network); + } + + if (networks.length === 1) { + const network = networks[0]; + + if (network.valueConflict) { + this.spriteConflict.draw(parameters.context, mousePos.x + 10, mousePos.y - 10, 40, 40); + } 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); } } } + + /** + * + * + * @param {import("../../../core/draw_utils").DrawParameters} parameters + * @param {WireNetwork} network + */ + drawHighlightedNetwork(parameters, network) { + parameters.context.globalAlpha = 0.5; + + for (let i = 0; i < network.wires.length; ++i) { + const wire = network.wires[i]; + const staticComp = wire.components.StaticMapEntity; + const screenTile = this.root.camera.worldToScreen(staticComp.origin.toWorldSpace()); + MapChunkView.drawSingleWiresOverviewTile({ + context: parameters.context, + x: screenTile.x, + y: screenTile.y, + entity: wire, + tileSizePixels: globalConfig.tileSize * this.root.camera.zoomLevel, + overrideColor: THEME.map.wires.highlightColor, + }); + } + + for (let i = 0; i < network.tunnels.length; ++i) { + const tunnel = network.tunnels[i]; + const staticComp = tunnel.components.StaticMapEntity; + const screenTile = this.root.camera.worldToScreen(staticComp.origin.toWorldSpace()); + MapChunkView.drawSingleWiresOverviewTile({ + context: parameters.context, + x: screenTile.x, + y: screenTile.y, + entity: tunnel, + tileSizePixels: globalConfig.tileSize * this.root.camera.zoomLevel, + overrideColor: THEME.map.wires.highlightColor, + }); + } + parameters.context.globalAlpha = 1; + } } diff --git a/src/js/game/logic.js b/src/js/game/logic.js index fe2bb5bb..48e47c3a 100644 --- a/src/js/game/logic.js +++ b/src/js/game/logic.js @@ -2,9 +2,13 @@ import { createLogger } from "../core/logging"; import { STOP_PROPAGATION } from "../core/signal"; import { round2Digits } from "../core/utils"; import { enumDirection, enumDirectionToVector, enumInvertedDirections, Vector } from "../core/vector"; +import { getBuildingDataFromCode } from "./building_codes"; import { Entity } from "./entity"; import { MetaBuilding } from "./meta_building"; import { enumLayer, GameRoot } from "./root"; +import { WireNetwork } from "./systems/wire"; +import { globalConfig } from "../core/config"; +import { CHUNK_OVERLAY_RES } from "./map_chunk_view"; const logger = createLogger("ingame/logic"); @@ -213,6 +217,92 @@ export class GameLogic { } } + /** + * Returns all wire networks this entity participates in on the given tile + * @param {Entity} entity + * @param {Vector} tile + * @returns {Array|null} Null if the entity is never able to be connected at the given tile + */ + getEntityWireNetworks(entity, tile) { + let canConnectAtAll = false; + + /** @type {Set} */ + const networks = new Set(); + + const staticComp = entity.components.StaticMapEntity; + const wireComp = entity.components.Wire; + if (wireComp) { + canConnectAtAll = true; + if (wireComp.linkedNetwork) { + networks.add(wireComp.linkedNetwork); + } + } + + const tunnelComp = entity.components.WireTunnel; + if (tunnelComp) { + canConnectAtAll = true; + for (let i = 0; i < tunnelComp.linkedNetworks.length; ++i) { + networks.add(tunnelComp.linkedNetworks[i]); + } + } + + const pinsComp = entity.components.WiredPins; + if (pinsComp) { + const slots = pinsComp.slots; + for (let i = 0; i < slots.length; ++i) { + const slot = slots[i]; + const slotLocalPos = staticComp.localTileToWorld(slot.pos); + if (slotLocalPos.equals(tile)) { + canConnectAtAll = true; + if (slot.linkedNetwork) { + networks.add(slot.linkedNetwork); + } + } + } + } + + if (!canConnectAtAll) { + return null; + } + + return Array.from(networks); + } + + /** + * Returns if the entities tile *and* his overlay matrix is intersected + * @param {Entity} entity + * @param {Vector} worldPos + */ + getIsEntityIntersectedWithMatrix(entity, worldPos) { + const staticComp = entity.components.StaticMapEntity; + const tile = worldPos.toTileSpace(); + + if (!staticComp.getTileSpaceBounds().containsPoint(tile.x, tile.y)) { + // No intersection at all + return; + } + + const data = getBuildingDataFromCode(staticComp.code); + const overlayMatrix = data.metaInstance.getSpecialOverlayRenderMatrix( + staticComp.rotation, + data.rotationVariant, + data.variant, + entity + ); + // Always the same + if (!overlayMatrix) { + return true; + } + + const localPosition = worldPos + .divideScalar(globalConfig.tileSize) + .modScalar(1) + .multiplyScalar(CHUNK_OVERLAY_RES) + .floor(); + + return !!overlayMatrix[localPosition.x + localPosition.y * 3]; + } + /** * Gets the flag at the given tile * @param {Vector} tile diff --git a/src/js/game/map_chunk_view.js b/src/js/game/map_chunk_view.js index a932726c..94389abc 100644 --- a/src/js/game/map_chunk_view.js +++ b/src/js/game/map_chunk_view.js @@ -192,26 +192,28 @@ export class MapChunkView extends MapChunk { if (!content) { continue; } - MapChunkView.drawSingleWiresOverviewTile( + MapChunkView.drawSingleWiresOverviewTile({ context, - x * CHUNK_OVERLAY_RES, - y * CHUNK_OVERLAY_RES, - content, - CHUNK_OVERLAY_RES - ); + x: x * CHUNK_OVERLAY_RES, + y: y * CHUNK_OVERLAY_RES, + entity: content, + tileSizePixels: CHUNK_OVERLAY_RES, + }); } } } } /** - * @param {CanvasRenderingContext2D} context - * @param {number} x - * @param {number} y - * @param {Entity} entity - * @param {number} tileSizePixels + * @param {object} param0 + * @param {CanvasRenderingContext2D} param0.context + * @param {number} param0.x + * @param {number} param0.y + * @param {Entity} param0.entity + * @param {number} param0.tileSizePixels + * @param {string=} param0.overrideColor Optionally override the color to be rendered */ - static drawSingleWiresOverviewTile(context, x, y, entity, tileSizePixels) { + static drawSingleWiresOverviewTile({ context, x, y, entity, tileSizePixels, overrideColor = null }) { const staticComp = entity.components.StaticMapEntity; const data = getBuildingDataFromCode(staticComp.code); const metaBuilding = data.metaInstance; @@ -221,7 +223,7 @@ export class MapChunkView extends MapChunk { data.variant, entity ); - context.fillStyle = metaBuilding.getSilhouetteColor(); + context.fillStyle = overrideColor || metaBuilding.getSilhouetteColor(); if (overlayMatrix) { for (let dx = 0; dx < 3; ++dx) { for (let dy = 0; dy < 3; ++dy) { diff --git a/src/js/game/systems/logic_gate.js b/src/js/game/systems/logic_gate.js index 03cf672f..ed20ea69 100644 --- a/src/js/game/systems/logic_gate.js +++ b/src/js/game/systems/logic_gate.js @@ -62,7 +62,7 @@ export class LogicGateSystem extends GameSystemWithFilter { const param2 = parameters[1]; if (!param1 || !param2) { // Not enough params - return null; + return BOOL_FALSE_SINGLETON; } const itemType = param1.getItemType(); @@ -88,7 +88,7 @@ export class LogicGateSystem extends GameSystemWithFilter { compute_NOT(parameters) { const item = parameters[0]; if (!item) { - return BOOL_FALSE_SINGLETON; + return BOOL_TRUE_SINGLETON; } if (item.getItemType() !== enumItemType.boolean) { @@ -109,25 +109,24 @@ export class LogicGateSystem extends GameSystemWithFilter { const param1 = parameters[0]; const param2 = parameters[1]; - if (!param1 || !param2) { + if (!param1 && !param2) { // Not enough params - return null; + return BOOL_FALSE_SINGLETON; } - const itemType = param1.getItemType(); - - if (itemType !== param2.getItemType()) { - // Differing type + // Check for the right types + if (param1 && param1.getItemType() !== enumItemType.boolean) { return BOOL_FALSE_SINGLETON; } - if (itemType === enumItemType.boolean) { - return /** @type {BooleanItem} */ (param1).value ^ /** @type {BooleanItem} */ (param2).value - ? BOOL_TRUE_SINGLETON - : BOOL_FALSE_SINGLETON; + if (param2 && param2.getItemType() !== enumItemType.boolean) { + return BOOL_FALSE_SINGLETON; } - return BOOL_FALSE_SINGLETON; + const valueParam1 = param1 ? /** @type {BooleanItem} */ (param1).value : 0; + const valueParam2 = param2 ? /** @type {BooleanItem} */ (param2).value : 0; + + return valueParam1 ^ valueParam2 ? BOOL_TRUE_SINGLETON : BOOL_FALSE_SINGLETON; } /** @@ -139,25 +138,21 @@ export class LogicGateSystem extends GameSystemWithFilter { const param1 = parameters[0]; const param2 = parameters[1]; - if (!param1 || !param2) { + if (!param1 && !param2) { // Not enough params - return null; - } - - const itemType = param1.getItemType(); - - if (itemType !== param2.getItemType()) { - // Differing type return BOOL_FALSE_SINGLETON; } - if (itemType === enumItemType.boolean) { - return /** @type {BooleanItem} */ (param1).value || /** @type {BooleanItem} */ (param2).value - ? BOOL_TRUE_SINGLETON - : BOOL_FALSE_SINGLETON; - } + const valueParam1 = + param1 && param1.getItemType() === enumItemType.boolean + ? /** @type {BooleanItem} */ (param1).value + : 0; + const valueParam2 = + param2 && param2.getItemType() === enumItemType.boolean + ? /** @type {BooleanItem} */ (param2).value + : 0; - return BOOL_FALSE_SINGLETON; + return valueParam1 || valueParam2 ? BOOL_TRUE_SINGLETON : BOOL_FALSE_SINGLETON; } /** diff --git a/src/js/game/systems/wire.js b/src/js/game/systems/wire.js index dfc2e193..40852cca 100644 --- a/src/js/game/systems/wire.js +++ b/src/js/game/systems/wire.js @@ -1,23 +1,25 @@ -import { GameSystemWithFilter } from "../game_system_with_filter"; -import { WireComponent, enumWireType } from "../components/wire"; -import { MapChunkView } from "../map_chunk_view"; import { globalConfig } from "../../core/config"; -import { Loader } from "../../core/loader"; -import { Entity } from "../entity"; import { gMetaBuildingRegistry } from "../../core/global_registries"; -import { MetaWireBuilding, arrayWireRotationVariantToType } from "../buildings/wire"; +import { Loader } from "../../core/loader"; +import { createLogger } from "../../core/logging"; import { - Vector, + arrayAllDirections, enumDirection, enumDirectionToVector, - arrayAllDirections, enumInvertedDirections, + Vector, } from "../../core/vector"; -import { defaultBuildingVariant } from "../meta_building"; -import { createLogger } from "../../core/logging"; -import { WiredPinsComponent, enumPinSlotType } from "../components/wired_pins"; -import { getCodeFromBuildingData } from "../building_codes"; import { BaseItem, enumItemType } from "../base_item"; +import { arrayWireRotationVariantToType, MetaWireBuilding } from "../buildings/wire"; +import { getCodeFromBuildingData } from "../building_codes"; +import { enumWireType, WireComponent } from "../components/wire"; +import { enumPinSlotType, WiredPinsComponent } from "../components/wired_pins"; +import { Entity } from "../entity"; +import { GameSystemWithFilter } from "../game_system_with_filter"; +import { MapChunkView } from "../map_chunk_view"; +import { defaultBuildingVariant } from "../meta_building"; +import { WireTunnelComponent } from "../components/wire_tunnel"; +import { fastArrayDeleteValueIfContained } from "../../core/utils"; import { BooleanItem } from "../items/boolean_item"; const logger = createLogger("wires"); @@ -44,6 +46,12 @@ export class WireNetwork { */ this.allSlots = []; + /** + * All connected tunnels + * @type {Array} + */ + this.tunnels = []; + /** * Which wires are in this network * @type {Array} @@ -125,6 +133,7 @@ export class WireSystem extends GameSystemWithFilter { if (!this.root.gameInitialized) { return; } + if (entity.components.Wire || entity.components.WiredPins || entity.components.WireTunnel) { this.needsRecompute = true; this.networks = []; @@ -146,6 +155,11 @@ export class WireSystem extends GameSystemWithFilter { wireEntities[i].components.Wire.linkedNetwork = null; } + const tunnelEntities = this.root.entityMgr.getAllWithComponent(WireTunnelComponent); + for (let i = 0; i < tunnelEntities.length; ++i) { + tunnelEntities[i].components.WireTunnel.linkedNetworks = []; + } + const pinEntities = this.root.entityMgr.getAllWithComponent(WiredPinsComponent); for (let i = 0; i < pinEntities.length; ++i) { const slots = pinEntities[i].components.WiredPins.slots; @@ -280,7 +294,11 @@ export class WireSystem extends GameSystemWithFilter { if (newSearchTile) { // Find new surrounding wire targets - const newTargets = this.findSurroundingWireTargets(newSearchTile, newSearchDirections); + const newTargets = this.findSurroundingWireTargets( + newSearchTile, + newSearchDirections, + currentNetwork + ); VERBOSE_WIRES && logger.log(" Found", newTargets, "new targets to visit!"); for (let i = 0; i < newTargets.length; ++i) { @@ -301,6 +319,13 @@ export class WireSystem extends GameSystemWithFilter { currentNetwork.wires[i].components.Wire.linkedNetwork = null; } + for (let i = 0; i < currentNetwork.tunnels.length; ++i) { + fastArrayDeleteValueIfContained( + currentNetwork.tunnels[i].components.WireTunnel.linkedNetworks, + currentNetwork + ); + } + for (let i = 0; i < currentNetwork.allSlots.length; ++i) { currentNetwork.allSlots[i].slot.linkedNetwork = null; } @@ -311,9 +336,10 @@ export class WireSystem extends GameSystemWithFilter { * Finds surrounding entities which are not yet assigned to a network * @param {Vector} initialTile * @param {Array} directions + * @param {WireNetwork} network * @returns {Array} */ - findSurroundingWireTargets(initialTile, directions) { + findSurroundingWireTargets(initialTile, directions, network) { let result = []; VERBOSE_WIRES && @@ -436,6 +462,14 @@ export class WireSystem extends GameSystemWithFilter { }); } + // Add the tunnel to the network + if (tunnelComp.linkedNetworks.indexOf(network) < 0) { + tunnelComp.linkedNetworks.push(network); + } + if (network.tunnels.indexOf(entity) < 0) { + network.tunnels.push(entity); + } + // Remember this tunnel visitedTunnels.add(entity.uid); } @@ -572,33 +606,9 @@ export class WireSystem extends GameSystemWithFilter { if (entity && entity.components.Wire) { const wireComp = entity.components.Wire; const wireType = wireComp.type; - const network = wireComp.linkedNetwork; const { opacity, spriteSet } = this.getSpriteSetAndOpacityForWire(wireComp); - // if (!network) { - // opacity = 0.3; - // } else { - // if (network.valueConflict) { - // opacity = 1; - // // TODO - // } else { - // if (network.currentValue) { - // if ( - // network.currentValue.getItemType() === enumItemType.boolean && - // // @ts-ignore - // network.currentValue.value === 0 - // ) { - // opacity = 0.5; - // } else { - // opacity = 1; - // } - // } else { - // opacity = 0.5; - // } - // } - // } - const sprite = spriteSet[wireType]; assert(sprite, "Unknown wire type: " + wireType); diff --git a/src/js/game/themes/dark.json b/src/js/game/themes/dark.json index 6be36442..39debd98 100644 --- a/src/js/game/themes/dark.json +++ b/src/js/game/themes/dark.json @@ -35,7 +35,8 @@ "wires": { "overlayColor": "rgba(97, 161, 152, 0.75)", - "previewColor": "rgb(97, 161, 152, 0.5)" + "previewColor": "rgb(97, 161, 152, 0.5)", + "highlightColor": "rgba(0, 0, 255, 0.5)" } }, diff --git a/src/js/game/themes/light.json b/src/js/game/themes/light.json index 29745004..28742282 100644 --- a/src/js/game/themes/light.json +++ b/src/js/game/themes/light.json @@ -36,7 +36,8 @@ "wires": { "overlayColor": "rgba(97, 161, 152, 0.75)", - "previewColor": "rgb(97, 161, 152, 0.4)" + "previewColor": "rgb(97, 161, 152, 0.4)", + "highlightColor": "rgba(72, 137, 255, 0.8)" } },