Improve information when hovering wires

This commit is contained in:
tobspr 2020-08-15 17:51:28 +02:00
parent 61e7481c8f
commit 7279b75187
20 changed files with 487 additions and 255 deletions

View File

@ -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$"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

@ -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$"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 235 KiB

After

Width:  |  Height:  |  Size: 237 KiB

View File

@ -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$"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 566 KiB

After

Width:  |  Height:  |  Size: 570 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@ -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 {
/**

View File

@ -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;
}

View File

@ -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

View File

@ -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<WireNetwork>}
*/
this.linkedNetworks = [];
}
}

View File

@ -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,
});
}
}
}

View File

@ -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
);
if (!entity) {
// No entity
return;
}
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 (
!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;
}
}

View File

@ -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<WireNetwork>|null} Null if the entity is never able to be connected at the given tile
*/
getEntityWireNetworks(entity, tile) {
let canConnectAtAll = false;
/** @type {Set<WireNetwork>} */
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

View File

@ -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) {

View File

@ -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;
}
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;
// Check for the right types
if (param1 && param1.getItemType() !== enumItemType.boolean) {
return BOOL_FALSE_SINGLETON;
}
return BOOL_FALSE_SINGLETON;
if (param2 && param2.getItemType() !== enumItemType.boolean) {
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;
}
/**

View File

@ -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<Entity>}
*/
this.tunnels = [];
/**
* Which wires are in this network
* @type {Array<Entity>}
@ -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<enumDirection>} directions
* @param {WireNetwork} network
* @returns {Array<any>}
*/
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);

View File

@ -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)"
}
},

View File

@ -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)"
}
},