Add belt reader building
BIN
res/ui/building_icons/reader.png
Normal file
After Width: | Height: | Size: 7.8 KiB |
@ -10,7 +10,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_1.png":
|
"sprites/belt/built/forward_1.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1545,"y":991,"w":116,"h":144},
|
"frame": {"x":433,"y":1038,"w":116,"h":144},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
||||||
@ -18,7 +18,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_2.png":
|
"sprites/belt/built/forward_2.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":428,"y":1186,"w":116,"h":144},
|
"frame": {"x":433,"y":1186,"w":116,"h":144},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
||||||
@ -26,7 +26,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_3.png":
|
"sprites/belt/built/forward_3.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":427,"y":1334,"w":116,"h":144},
|
"frame": {"x":430,"y":1334,"w":116,"h":144},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
||||||
@ -34,7 +34,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_4.png":
|
"sprites/belt/built/forward_4.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":421,"y":1482,"w":116,"h":144},
|
"frame": {"x":426,"y":1482,"w":116,"h":144},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
||||||
@ -42,7 +42,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_5.png":
|
"sprites/belt/built/forward_5.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":3,"y":1870,"w":116,"h":144},
|
"frame": {"x":3,"y":1860,"w":116,"h":144},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
||||||
@ -50,7 +50,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_6.png":
|
"sprites/belt/built/forward_6.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":123,"y":1870,"w":116,"h":144},
|
"frame": {"x":123,"y":1860,"w":116,"h":144},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
||||||
@ -66,7 +66,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_8.png":
|
"sprites/belt/built/forward_8.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":971,"y":1297,"w":116,"h":144},
|
"frame": {"x":420,"y":1630,"w":116,"h":144},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
||||||
@ -74,7 +74,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_9.png":
|
"sprites/belt/built/forward_9.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":420,"y":1630,"w":116,"h":144},
|
"frame": {"x":363,"y":1861,"w":116,"h":144},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
||||||
@ -82,7 +82,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_10.png":
|
"sprites/belt/built/forward_10.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1545,"y":1139,"w":116,"h":144},
|
"frame": {"x":1545,"y":991,"w":116,"h":144},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
||||||
@ -90,7 +90,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_11.png":
|
"sprites/belt/built/forward_11.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1534,"y":1287,"w":116,"h":144},
|
"frame": {"x":1544,"y":1139,"w":116,"h":144},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
||||||
@ -98,7 +98,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_12.png":
|
"sprites/belt/built/forward_12.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1532,"y":1435,"w":116,"h":144},
|
"frame": {"x":1540,"y":1287,"w":116,"h":144},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
||||||
@ -106,7 +106,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_13.png":
|
"sprites/belt/built/forward_13.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":433,"y":1038,"w":116,"h":144},
|
"frame": {"x":1533,"y":1435,"w":116,"h":144},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
||||||
@ -130,7 +130,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/left_2.png":
|
"sprites/belt/built/left_2.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":541,"y":1525,"w":130,"h":130},
|
"frame": {"x":981,"y":1456,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
|
||||||
@ -138,7 +138,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/left_3.png":
|
"sprites/belt/built/left_3.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1091,"y":1363,"w":130,"h":130},
|
"frame": {"x":835,"y":1545,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
|
||||||
@ -146,7 +146,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/left_4.png":
|
"sprites/belt/built/left_4.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":675,"y":1557,"w":130,"h":130},
|
"frame": {"x":690,"y":1578,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
|
||||||
@ -154,7 +154,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/left_5.png":
|
"sprites/belt/built/left_5.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":540,"y":1659,"w":130,"h":130},
|
"frame": {"x":546,"y":1593,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
|
||||||
@ -162,7 +162,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/left_6.png":
|
"sprites/belt/built/left_6.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":809,"y":1590,"w":130,"h":130},
|
"frame": {"x":1115,"y":1458,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
|
||||||
@ -170,7 +170,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/left_7.png":
|
"sprites/belt/built/left_7.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":674,"y":1691,"w":130,"h":130},
|
"frame": {"x":969,"y":1590,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
|
||||||
@ -178,7 +178,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/left_8.png":
|
"sprites/belt/built/left_8.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1225,"y":1404,"w":130,"h":130},
|
"frame": {"x":824,"y":1679,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
|
||||||
@ -186,7 +186,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/left_9.png":
|
"sprites/belt/built/left_9.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1088,"y":1497,"w":130,"h":130},
|
"frame": {"x":680,"y":1712,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
|
||||||
@ -202,7 +202,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/left_11.png":
|
"sprites/belt/built/left_11.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":146,"y":1437,"w":130,"h":130},
|
"frame": {"x":151,"y":1437,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
|
||||||
@ -210,7 +210,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/left_12.png":
|
"sprites/belt/built/left_12.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":145,"y":1571,"w":130,"h":130},
|
"frame": {"x":146,"y":1571,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
|
||||||
@ -226,7 +226,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_0.png":
|
"sprites/belt/built/right_0.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":943,"y":1593,"w":130,"h":130},
|
"frame": {"x":540,"y":1727,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
||||||
@ -234,7 +234,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_1.png":
|
"sprites/belt/built/right_1.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":808,"y":1724,"w":130,"h":130},
|
"frame": {"x":735,"y":1846,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
||||||
@ -242,7 +242,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_2.png":
|
"sprites/belt/built/right_2.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":363,"y":1778,"w":130,"h":130},
|
"frame": {"x":1137,"y":1808,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
||||||
@ -250,7 +250,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_3.png":
|
"sprites/belt/built/right_3.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":363,"y":1912,"w":130,"h":130},
|
"frame": {"x":1271,"y":1674,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
||||||
@ -258,7 +258,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_4.png":
|
"sprites/belt/built/right_4.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":497,"y":1793,"w":130,"h":130},
|
"frame": {"x":1271,"y":1808,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
||||||
@ -266,7 +266,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_5.png":
|
"sprites/belt/built/right_5.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":631,"y":1825,"w":130,"h":130},
|
"frame": {"x":1405,"y":1583,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
||||||
@ -274,7 +274,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_6.png":
|
"sprites/belt/built/right_6.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":765,"y":1858,"w":130,"h":130},
|
"frame": {"x":1539,"y":1606,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
||||||
@ -282,7 +282,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_7.png":
|
"sprites/belt/built/right_7.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1031,"y":1861,"w":130,"h":130},
|
"frame": {"x":1405,"y":1717,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
||||||
@ -290,7 +290,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_8.png":
|
"sprites/belt/built/right_8.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1165,"y":1765,"w":130,"h":130},
|
"frame": {"x":1405,"y":1851,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
||||||
@ -298,7 +298,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_9.png":
|
"sprites/belt/built/right_9.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1165,"y":1899,"w":130,"h":130},
|
"frame": {"x":1673,"y":1618,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
||||||
@ -306,7 +306,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_10.png":
|
"sprites/belt/built/right_10.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1359,"y":1449,"w":130,"h":130},
|
"frame": {"x":869,"y":1813,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
||||||
@ -314,7 +314,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_11.png":
|
"sprites/belt/built/right_11.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1222,"y":1538,"w":130,"h":130},
|
"frame": {"x":1003,"y":1724,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
||||||
@ -322,7 +322,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_12.png":
|
"sprites/belt/built/right_12.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1077,"y":1631,"w":130,"h":130},
|
"frame": {"x":1003,"y":1858,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
||||||
@ -330,7 +330,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_13.png":
|
"sprites/belt/built/right_13.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":942,"y":1727,"w":130,"h":130},
|
"frame": {"x":1137,"y":1674,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
||||||
@ -338,7 +338,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/belt_left.png":
|
"sprites/blueprints/belt_left.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1356,"y":1583,"w":130,"h":130},
|
"frame": {"x":1539,"y":1740,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":0,"y":14,"w":130,"h":130},
|
||||||
@ -346,7 +346,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/belt_right.png":
|
"sprites/blueprints/belt_right.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1490,"y":1583,"w":130,"h":130},
|
"frame": {"x":1539,"y":1874,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
||||||
@ -354,7 +354,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/belt_top.png":
|
"sprites/blueprints/belt_top.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":968,"y":1445,"w":116,"h":144},
|
"frame": {"x":483,"y":1861,"w":116,"h":144},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
"spriteSourceSize": {"x":14,"y":0,"w":116,"h":144},
|
||||||
@ -386,7 +386,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/display.png":
|
"sprites/blueprints/display.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":899,"y":1861,"w":128,"h":136},
|
"frame": {"x":603,"y":1861,"w":128,"h":136},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":8,"y":8,"w":128,"h":136},
|
"spriteSourceSize": {"x":8,"y":8,"w":128,"h":136},
|
||||||
@ -418,7 +418,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/logic_gate-or.png":
|
"sprites/blueprints/logic_gate-or.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1249,"y":989,"w":144,"h":123},
|
"frame": {"x":3,"y":1317,"w":144,"h":123},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":123},
|
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":123},
|
||||||
@ -442,7 +442,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/logic_gate.png":
|
"sprites/blueprints/logic_gate.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1249,"y":852,"w":144,"h":133},
|
"frame": {"x":3,"y":1180,"w":144,"h":133},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":133},
|
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":133},
|
||||||
@ -450,7 +450,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/miner-chainable.png":
|
"sprites/blueprints/miner-chainable.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":3,"y":1723,"w":136,"h":143},
|
"frame": {"x":695,"y":1431,"w":136,"h":143},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":5,"y":0,"w":136,"h":143},
|
"spriteSourceSize": {"x":5,"y":0,"w":136,"h":143},
|
||||||
@ -458,7 +458,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/miner.png":
|
"sprites/blueprints/miner.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":831,"y":1297,"w":136,"h":143},
|
"frame": {"x":550,"y":1446,"w":136,"h":143},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":5,"y":0,"w":136,"h":143},
|
"spriteSourceSize": {"x":5,"y":0,"w":136,"h":143},
|
||||||
@ -504,9 +504,17 @@
|
|||||||
"spriteSourceSize": {"x":0,"y":0,"w":288,"h":144},
|
"spriteSourceSize": {"x":0,"y":0,"w":288,"h":144},
|
||||||
"sourceSize": {"w":288,"h":144}
|
"sourceSize": {"w":288,"h":144}
|
||||||
},
|
},
|
||||||
|
"sprites/blueprints/reader.png":
|
||||||
|
{
|
||||||
|
"frame": {"x":1660,"y":1311,"w":142,"h":144},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": true,
|
||||||
|
"spriteSourceSize": {"x":2,"y":0,"w":142,"h":144},
|
||||||
|
"sourceSize": {"w":144,"h":144}
|
||||||
|
},
|
||||||
"sprites/blueprints/rotater-ccw.png":
|
"sprites/blueprints/rotater-ccw.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1665,"y":1198,"w":143,"h":144},
|
"frame": {"x":1397,"y":1022,"w":143,"h":144},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":0,"w":143,"h":144},
|
"spriteSourceSize": {"x":1,"y":0,"w":143,"h":144},
|
||||||
@ -514,7 +522,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/rotater-fl.png":
|
"sprites/blueprints/rotater-fl.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1242,"y":1116,"w":142,"h":144},
|
"frame": {"x":1891,"y":1384,"w":142,"h":144},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":142,"h":144},
|
"spriteSourceSize": {"x":0,"y":0,"w":142,"h":144},
|
||||||
@ -522,7 +530,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/rotater.png":
|
"sprites/blueprints/rotater.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1897,"y":1257,"w":143,"h":144},
|
"frame": {"x":1246,"y":1023,"w":143,"h":144},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":0,"w":143,"h":144},
|
"spriteSourceSize": {"x":1,"y":0,"w":143,"h":144},
|
||||||
@ -530,7 +538,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/splitter-compact-inverse.png":
|
"sprites/blueprints/splitter-compact-inverse.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1095,"y":1221,"w":142,"h":138},
|
"frame": {"x":1891,"y":1532,"w":142,"h":138},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":2,"w":142,"h":138},
|
"spriteSourceSize": {"x":0,"y":2,"w":142,"h":138},
|
||||||
@ -538,7 +546,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/splitter-compact-merge-inverse.png":
|
"sprites/blueprints/splitter-compact-merge-inverse.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1388,"y":1160,"w":142,"h":138},
|
"frame": {"x":808,"y":1033,"w":142,"h":138},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":2,"w":142,"h":138},
|
"spriteSourceSize": {"x":0,"y":2,"w":142,"h":138},
|
||||||
@ -546,7 +554,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/splitter-compact-merge.png":
|
"sprites/blueprints/splitter-compact-merge.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1881,"y":1552,"w":139,"h":138},
|
"frame": {"x":954,"y":1033,"w":139,"h":138},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":5,"y":2,"w":139,"h":138},
|
"spriteSourceSize": {"x":5,"y":2,"w":139,"h":138},
|
||||||
@ -554,7 +562,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/splitter-compact.png":
|
"sprites/blueprints/splitter-compact.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":559,"y":1036,"w":139,"h":138},
|
"frame": {"x":3,"y":1444,"w":139,"h":138},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":5,"y":2,"w":139,"h":138},
|
"spriteSourceSize": {"x":5,"y":2,"w":139,"h":138},
|
||||||
@ -594,7 +602,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/underground_belt_entry-tier2.png":
|
"sprites/blueprints/underground_belt_entry-tier2.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":3,"y":1466,"w":138,"h":125},
|
"frame": {"x":1329,"y":1454,"w":138,"h":125},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":19,"w":138,"h":125},
|
"spriteSourceSize": {"x":4,"y":19,"w":138,"h":125},
|
||||||
@ -602,7 +610,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/underground_belt_entry.png":
|
"sprites/blueprints/underground_belt_entry.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":696,"y":1180,"w":138,"h":112},
|
"frame": {"x":698,"y":1315,"w":138,"h":112},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":32,"w":138,"h":112},
|
"spriteSourceSize": {"x":4,"y":32,"w":138,"h":112},
|
||||||
@ -610,7 +618,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/underground_belt_exit-tier2.png":
|
"sprites/blueprints/underground_belt_exit-tier2.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":553,"y":1178,"w":139,"h":112},
|
"frame": {"x":1044,"y":1225,"w":139,"h":112},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":0,"w":139,"h":112},
|
"spriteSourceSize": {"x":4,"y":0,"w":139,"h":112},
|
||||||
@ -618,7 +626,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/underground_belt_exit.png":
|
"sprites/blueprints/underground_belt_exit.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":548,"y":1294,"w":138,"h":112},
|
"frame": {"x":553,"y":1330,"w":138,"h":112},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":0,"w":138,"h":112},
|
"spriteSourceSize": {"x":4,"y":0,"w":138,"h":112},
|
||||||
@ -642,7 +650,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/virtual_processor-shapecompare.png":
|
"sprites/blueprints/virtual_processor-shapecompare.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1397,"y":852,"w":144,"h":133},
|
"frame": {"x":285,"y":1181,"w":144,"h":133},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":133},
|
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":133},
|
||||||
@ -658,7 +666,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/virtual_processor.png":
|
"sprites/blueprints/virtual_processor.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":285,"y":1037,"w":144,"h":141},
|
"frame": {"x":3,"y":1035,"w":144,"h":141},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":3,"w":144,"h":141},
|
"spriteSourceSize": {"x":0,"y":3,"w":144,"h":141},
|
||||||
@ -674,7 +682,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/wire-split.png":
|
"sprites/blueprints/wire-split.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1397,"y":989,"w":144,"h":82},
|
"frame": {"x":1249,"y":852,"w":144,"h":82},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":62,"w":144,"h":82},
|
"spriteSourceSize": {"x":0,"y":62,"w":144,"h":82},
|
||||||
@ -682,7 +690,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/wire-turn.png":
|
"sprites/blueprints/wire-turn.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1813,"y":1144,"w":82,"h":82},
|
"frame": {"x":1811,"y":1192,"w":82,"h":82},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":62,"y":62,"w":82,"h":82},
|
"spriteSourceSize": {"x":62,"y":62,"w":82,"h":82},
|
||||||
@ -706,7 +714,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/wire_tunnel.png":
|
"sprites/blueprints/wire_tunnel.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":285,"y":1322,"w":138,"h":135},
|
"frame": {"x":1187,"y":1319,"w":138,"h":135},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":4,"w":138,"h":135},
|
"spriteSourceSize": {"x":4,"y":4,"w":138,"h":135},
|
||||||
@ -722,7 +730,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/belt_right.png":
|
"sprites/buildings/belt_right.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":943,"y":1593,"w":130,"h":130},
|
"frame": {"x":540,"y":1727,"w":130,"h":130},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
"spriteSourceSize": {"x":14,"y":14,"w":130,"h":130},
|
||||||
@ -802,7 +810,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/logic_gate-or.png":
|
"sprites/buildings/logic_gate-or.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":948,"y":1170,"w":143,"h":123},
|
"frame": {"x":1897,"y":1257,"w":143,"h":123},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":0,"w":143,"h":123},
|
"spriteSourceSize": {"x":1,"y":0,"w":143,"h":123},
|
||||||
@ -818,7 +826,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/logic_gate-xor.png":
|
"sprites/buildings/logic_gate-xor.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":801,"y":1033,"w":143,"h":143},
|
"frame": {"x":1665,"y":1028,"w":143,"h":143},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":0,"w":143,"h":143},
|
"spriteSourceSize": {"x":1,"y":0,"w":143,"h":143},
|
||||||
@ -826,7 +834,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/logic_gate.png":
|
"sprites/buildings/logic_gate.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1095,"y":1085,"w":143,"h":132},
|
"frame": {"x":1664,"y":1175,"w":143,"h":132},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":0,"w":143,"h":132},
|
"spriteSourceSize": {"x":1,"y":0,"w":143,"h":132},
|
||||||
@ -834,7 +842,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/miner-chainable.png":
|
"sprites/buildings/miner-chainable.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":688,"y":1411,"w":136,"h":142},
|
"frame": {"x":280,"y":1596,"w":136,"h":142},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":5,"y":0,"w":136,"h":142},
|
"spriteSourceSize": {"x":5,"y":0,"w":136,"h":142},
|
||||||
@ -842,7 +850,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/miner.png":
|
"sprites/buildings/miner.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":828,"y":1444,"w":136,"h":142},
|
"frame": {"x":3,"y":1714,"w":136,"h":142},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":5,"y":0,"w":136,"h":142},
|
"spriteSourceSize": {"x":5,"y":0,"w":136,"h":142},
|
||||||
@ -888,9 +896,17 @@
|
|||||||
"spriteSourceSize": {"x":0,"y":0,"w":288,"h":144},
|
"spriteSourceSize": {"x":0,"y":0,"w":288,"h":144},
|
||||||
"sourceSize": {"w":288,"h":144}
|
"sourceSize": {"w":288,"h":144}
|
||||||
},
|
},
|
||||||
|
"sprites/buildings/reader.png":
|
||||||
|
{
|
||||||
|
"frame": {"x":1243,"y":1171,"w":141,"h":144},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": true,
|
||||||
|
"spriteSourceSize": {"x":2,"y":0,"w":141,"h":144},
|
||||||
|
"sourceSize": {"w":144,"h":144}
|
||||||
|
},
|
||||||
"sprites/buildings/rotater-ccw.png":
|
"sprites/buildings/rotater-ccw.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1387,"y":1302,"w":141,"h":143},
|
"frame": {"x":1388,"y":1307,"w":141,"h":143},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":2,"y":0,"w":141,"h":143},
|
"spriteSourceSize": {"x":2,"y":0,"w":141,"h":143},
|
||||||
@ -898,7 +914,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/rotater-fl.png":
|
"sprites/buildings/rotater-fl.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1654,"y":1346,"w":141,"h":143},
|
"frame": {"x":1653,"y":1459,"w":141,"h":143},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":0,"w":141,"h":143},
|
"spriteSourceSize": {"x":1,"y":0,"w":141,"h":143},
|
||||||
@ -906,7 +922,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/rotater.png":
|
"sprites/buildings/rotater.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1884,"y":1405,"w":141,"h":143},
|
"frame": {"x":553,"y":1183,"w":141,"h":143},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":2,"y":0,"w":141,"h":143},
|
"spriteSourceSize": {"x":2,"y":0,"w":141,"h":143},
|
||||||
@ -914,7 +930,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/splitter-compact-inverse.png":
|
"sprites/buildings/splitter-compact-inverse.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1652,"y":1493,"w":141,"h":136},
|
"frame": {"x":285,"y":1318,"w":141,"h":136},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":3,"w":141,"h":136},
|
"spriteSourceSize": {"x":0,"y":3,"w":141,"h":136},
|
||||||
@ -922,7 +938,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/splitter-compact-merge-inverse.png":
|
"sprites/buildings/splitter-compact-merge-inverse.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1241,"y":1264,"w":142,"h":136},
|
"frame": {"x":1097,"y":1085,"w":142,"h":136},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":3,"w":142,"h":136},
|
"spriteSourceSize": {"x":0,"y":3,"w":142,"h":136},
|
||||||
@ -930,7 +946,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/splitter-compact-merge.png":
|
"sprites/buildings/splitter-compact-merge.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":285,"y":1182,"w":139,"h":136},
|
"frame": {"x":758,"y":1175,"w":139,"h":136},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":5,"y":3,"w":139,"h":136},
|
"spriteSourceSize": {"x":5,"y":3,"w":139,"h":136},
|
||||||
@ -938,7 +954,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/splitter-compact.png":
|
"sprites/buildings/splitter-compact.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":3,"y":1326,"w":139,"h":136},
|
"frame": {"x":901,"y":1175,"w":139,"h":136},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":5,"y":3,"w":139,"h":136},
|
"spriteSourceSize": {"x":5,"y":3,"w":139,"h":136},
|
||||||
@ -978,7 +994,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/underground_belt_entry-tier2.png":
|
"sprites/buildings/underground_belt_entry-tier2.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":3,"y":1595,"w":137,"h":124},
|
"frame": {"x":3,"y":1586,"w":137,"h":124},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":5,"y":20,"w":137,"h":124},
|
"spriteSourceSize": {"x":5,"y":20,"w":137,"h":124},
|
||||||
@ -986,7 +1002,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/underground_belt_entry.png":
|
"sprites/buildings/underground_belt_entry.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":690,"y":1296,"w":137,"h":111},
|
"frame": {"x":840,"y":1315,"w":137,"h":111},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":5,"y":33,"w":137,"h":111},
|
"spriteSourceSize": {"x":5,"y":33,"w":137,"h":111},
|
||||||
@ -994,7 +1010,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/underground_belt_exit-tier2.png":
|
"sprites/buildings/underground_belt_exit-tier2.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":547,"y":1410,"w":137,"h":111},
|
"frame": {"x":981,"y":1341,"w":137,"h":111},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":5,"y":0,"w":137,"h":111},
|
"spriteSourceSize": {"x":5,"y":0,"w":137,"h":111},
|
||||||
@ -1002,7 +1018,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/underground_belt_exit.png":
|
"sprites/buildings/underground_belt_exit.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":279,"y":1599,"w":137,"h":111},
|
"frame": {"x":840,"y":1430,"w":137,"h":111},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":5,"y":0,"w":137,"h":111},
|
"spriteSourceSize": {"x":5,"y":0,"w":137,"h":111},
|
||||||
@ -1026,7 +1042,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/virtual_processor-shapecompare.png":
|
"sprites/buildings/virtual_processor-shapecompare.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":948,"y":1033,"w":143,"h":133},
|
"frame": {"x":1393,"y":1170,"w":143,"h":133},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":0,"w":143,"h":133},
|
"spriteSourceSize": {"x":1,"y":0,"w":143,"h":133},
|
||||||
@ -1034,7 +1050,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/virtual_processor-unstacker.png":
|
"sprites/buildings/virtual_processor-unstacker.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":3,"y":1035,"w":144,"h":143},
|
"frame": {"x":559,"y":1036,"w":144,"h":143},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":1,"w":144,"h":143},
|
"spriteSourceSize": {"x":0,"y":1,"w":144,"h":143},
|
||||||
@ -1042,7 +1058,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/virtual_processor.png":
|
"sprites/buildings/virtual_processor.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":3,"y":1182,"w":144,"h":140},
|
"frame": {"x":285,"y":1037,"w":144,"h":140},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":4,"w":144,"h":140},
|
"spriteSourceSize": {"x":0,"y":4,"w":144,"h":140},
|
||||||
@ -1058,7 +1074,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/wire-split.png":
|
"sprites/buildings/wire-split.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1098,"y":1000,"w":144,"h":81},
|
"frame": {"x":1397,"y":852,"w":144,"h":81},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":63,"w":144,"h":81},
|
"spriteSourceSize": {"x":0,"y":63,"w":144,"h":81},
|
||||||
@ -1090,7 +1106,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/wire_tunnel.png":
|
"sprites/buildings/wire_tunnel.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":280,"y":1461,"w":137,"h":134},
|
"frame": {"x":285,"y":1458,"w":137,"h":134},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":5,"y":5,"w":137,"h":134},
|
"spriteSourceSize": {"x":5,"y":5,"w":137,"h":134},
|
||||||
@ -1122,7 +1138,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/misc/processor_disabled.png":
|
"sprites/misc/processor_disabled.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1799,"y":1485,"w":78,"h":81},
|
"frame": {"x":1798,"y":1533,"w":78,"h":81},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":10,"y":10,"w":78,"h":81},
|
"spriteSourceSize": {"x":10,"y":10,"w":78,"h":81},
|
||||||
@ -1136,6 +1152,14 @@
|
|||||||
"spriteSourceSize": {"x":17,"y":8,"w":65,"h":84},
|
"spriteSourceSize": {"x":17,"y":8,"w":65,"h":84},
|
||||||
"sourceSize": {"w":96,"h":96}
|
"sourceSize": {"w":96,"h":96}
|
||||||
},
|
},
|
||||||
|
"sprites/misc/reader_overlay.png":
|
||||||
|
{
|
||||||
|
"frame": {"x":708,"y":888,"w":98,"h":70},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": true,
|
||||||
|
"spriteSourceSize": {"x":22,"y":38,"w":98,"h":70},
|
||||||
|
"sourceSize": {"w":144,"h":144}
|
||||||
|
},
|
||||||
"sprites/misc/slot_bad_arrow.png":
|
"sprites/misc/slot_bad_arrow.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":255,"y":638,"w":35,"h":35},
|
"frame": {"x":255,"y":638,"w":35,"h":35},
|
||||||
@ -1154,7 +1178,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/misc/storage_overlay.png":
|
"sprites/misc/storage_overlay.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":708,"y":988,"w":89,"h":44},
|
"frame": {"x":1812,"y":1144,"w":89,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":1,"w":89,"h":44},
|
"spriteSourceSize": {"x":1,"y":1,"w":89,"h":44},
|
||||||
@ -1162,7 +1186,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/misc/waypoint.png":
|
"sprites/misc/waypoint.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":702,"y":1084,"w":38,"h":48},
|
"frame": {"x":758,"y":1114,"w":38,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":5,"y":0,"w":38,"h":48},
|
"spriteSourceSize": {"x":5,"y":0,"w":38,"h":48},
|
||||||
@ -1226,7 +1250,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/display/white.png":
|
"sprites/wires/display/white.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1797,"y":1570,"w":47,"h":47},
|
"frame": {"x":707,"y":1062,"w":47,"h":47},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":1,"w":47,"h":47},
|
"spriteSourceSize": {"x":1,"y":1,"w":47,"h":47},
|
||||||
@ -1234,7 +1258,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/display/yellow.png":
|
"sprites/wires/display/yellow.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1797,"y":1621,"w":47,"h":47},
|
"frame": {"x":707,"y":1113,"w":47,"h":47},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":1,"w":47,"h":47},
|
"spriteSourceSize": {"x":1,"y":1,"w":47,"h":47},
|
||||||
@ -1266,7 +1290,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/network_conflict.png":
|
"sprites/wires/network_conflict.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":702,"y":1036,"w":47,"h":44},
|
"frame": {"x":707,"y":1164,"w":47,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":2,"w":47,"h":44},
|
"spriteSourceSize": {"x":1,"y":2,"w":47,"h":44},
|
||||||
@ -1274,7 +1298,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/network_empty.png":
|
"sprites/wires/network_empty.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":753,"y":1036,"w":41,"h":48},
|
"frame": {"x":758,"y":1062,"w":41,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":5,"y":0,"w":41,"h":48},
|
"spriteSourceSize": {"x":5,"y":0,"w":41,"h":48},
|
||||||
@ -1282,7 +1306,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/overlay_tile.png":
|
"sprites/wires/overlay_tile.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":708,"y":888,"w":96,"h":96},
|
"frame": {"x":708,"y":962,"w":96,"h":96},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": false,
|
"trimmed": false,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
|
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
|
||||||
@ -1306,7 +1330,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/sets/color_split.png":
|
"sprites/wires/sets/color_split.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1397,"y":1075,"w":144,"h":81},
|
"frame": {"x":1397,"y":937,"w":144,"h":81},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":63,"w":144,"h":81},
|
"spriteSourceSize": {"x":0,"y":63,"w":144,"h":81},
|
||||||
@ -1314,7 +1338,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/sets/color_turn.png":
|
"sprites/wires/sets/color_turn.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1812,"y":1230,"w":81,"h":81},
|
"frame": {"x":1811,"y":1278,"w":81,"h":81},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":63,"y":63,"w":81,"h":81},
|
"spriteSourceSize": {"x":63,"y":63,"w":81,"h":81},
|
||||||
@ -1338,7 +1362,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/sets/conflict_split.png":
|
"sprites/wires/sets/conflict_split.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1665,"y":1028,"w":144,"h":81},
|
"frame": {"x":1249,"y":938,"w":144,"h":81},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":63,"w":144,"h":81},
|
"spriteSourceSize": {"x":0,"y":63,"w":144,"h":81},
|
||||||
@ -1346,7 +1370,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/sets/conflict_turn.png":
|
"sprites/wires/sets/conflict_turn.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1812,"y":1315,"w":81,"h":81},
|
"frame": {"x":1806,"y":1363,"w":81,"h":81},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":63,"y":63,"w":81,"h":81},
|
"spriteSourceSize": {"x":63,"y":63,"w":81,"h":81},
|
||||||
@ -1370,7 +1394,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/sets/regular_split.png":
|
"sprites/wires/sets/regular_split.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1098,"y":1000,"w":144,"h":81},
|
"frame": {"x":1397,"y":852,"w":144,"h":81},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":63,"w":144,"h":81},
|
"spriteSourceSize": {"x":0,"y":63,"w":144,"h":81},
|
||||||
@ -1402,7 +1426,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/sets/shape_split.png":
|
"sprites/wires/sets/shape_split.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1665,"y":1113,"w":144,"h":81},
|
"frame": {"x":1098,"y":1000,"w":144,"h":81},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":63,"w":144,"h":81},
|
"spriteSourceSize": {"x":0,"y":63,"w":144,"h":81},
|
||||||
@ -1410,7 +1434,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/sets/shape_turn.png":
|
"sprites/wires/sets/shape_turn.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":1799,"y":1400,"w":81,"h":81},
|
"frame": {"x":1806,"y":1448,"w":81,"h":81},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":63,"y":63,"w":81,"h":81},
|
"spriteSourceSize": {"x":63,"y":63,"w":81,"h":81},
|
||||||
@ -1431,6 +1455,6 @@
|
|||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {"w":2048,"h":2048},
|
"size": {"w":2048,"h":2048},
|
||||||
"scale": "0.75",
|
"scale": "0.75",
|
||||||
"smartupdate": "$TexturePacker:SmartUpdate:1923b9c910205fb09957b67f92de02b9:0d87df06f18965307bf9d18b414f603d:908b89f5ca8ff73e331a35a3b14d0604$"
|
"smartupdate": "$TexturePacker:SmartUpdate:3b1717ceee14135311380de9706938d5:e834c7745e235246a53bcb721a2e3be3:908b89f5ca8ff73e331a35a3b14d0604$"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.3 MiB |
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
"sprites/belt/built/forward_0.png":
|
"sprites/belt/built/forward_0.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":3,"y":957,"w":40,"h":48},
|
"frame": {"x":405,"y":817,"w":40,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
||||||
@ -10,7 +10,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_1.png":
|
"sprites/belt/built/forward_1.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":47,"y":957,"w":40,"h":48},
|
"frame": {"x":252,"y":893,"w":40,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
||||||
@ -18,7 +18,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_2.png":
|
"sprites/belt/built/forward_2.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":448,"y":821,"w":40,"h":48},
|
"frame": {"x":3,"y":930,"w":40,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
||||||
@ -26,7 +26,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_3.png":
|
"sprites/belt/built/forward_3.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":135,"y":938,"w":40,"h":48},
|
"frame": {"x":95,"y":960,"w":40,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
||||||
@ -34,7 +34,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_4.png":
|
"sprites/belt/built/forward_4.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":179,"y":938,"w":40,"h":48},
|
"frame": {"x":139,"y":960,"w":40,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
||||||
@ -42,7 +42,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_5.png":
|
"sprites/belt/built/forward_5.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":223,"y":937,"w":40,"h":48},
|
"frame": {"x":183,"y":954,"w":40,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
||||||
@ -50,7 +50,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_6.png":
|
"sprites/belt/built/forward_6.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":349,"y":867,"w":40,"h":48},
|
"frame": {"x":449,"y":819,"w":40,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
||||||
@ -58,7 +58,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_7.png":
|
"sprites/belt/built/forward_7.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":393,"y":867,"w":40,"h":48},
|
"frame": {"x":400,"y":869,"w":40,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
||||||
@ -66,7 +66,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_8.png":
|
"sprites/belt/built/forward_8.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":293,"y":877,"w":40,"h":48},
|
"frame": {"x":352,"y":913,"w":40,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
||||||
@ -74,7 +74,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_9.png":
|
"sprites/belt/built/forward_9.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":437,"y":873,"w":40,"h":48},
|
"frame": {"x":227,"y":965,"w":40,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
||||||
@ -82,7 +82,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_10.png":
|
"sprites/belt/built/forward_10.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":91,"y":933,"w":40,"h":48},
|
"frame": {"x":201,"y":901,"w":40,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
||||||
@ -90,7 +90,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_11.png":
|
"sprites/belt/built/forward_11.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":249,"y":847,"w":40,"h":48},
|
"frame": {"x":150,"y":902,"w":40,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
||||||
@ -98,7 +98,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_12.png":
|
"sprites/belt/built/forward_12.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":198,"y":885,"w":40,"h":48},
|
"frame": {"x":99,"y":908,"w":40,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
||||||
@ -106,7 +106,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/forward_13.png":
|
"sprites/belt/built/forward_13.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":147,"y":886,"w":40,"h":48},
|
"frame": {"x":51,"y":927,"w":40,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
||||||
@ -130,7 +130,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/left_2.png":
|
"sprites/belt/built/left_2.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":208,"y":741,"w":44,"h":44},
|
"frame": {"x":324,"y":643,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
|
||||||
@ -138,7 +138,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/left_3.png":
|
"sprites/belt/built/left_3.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":157,"y":742,"w":44,"h":44},
|
"frame": {"x":223,"y":611,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
|
||||||
@ -146,7 +146,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/left_4.png":
|
"sprites/belt/built/left_4.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":105,"y":749,"w":44,"h":44},
|
"frame": {"x":275,"y":659,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
|
||||||
@ -154,7 +154,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/left_5.png":
|
"sprites/belt/built/left_5.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":54,"y":789,"w":44,"h":44},
|
"frame": {"x":323,"y":691,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
|
||||||
@ -162,7 +162,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/left_6.png":
|
"sprites/belt/built/left_6.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":3,"y":813,"w":44,"h":44},
|
"frame": {"x":261,"y":749,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
|
||||||
@ -170,7 +170,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/left_7.png":
|
"sprites/belt/built/left_7.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":364,"y":723,"w":44,"h":44},
|
"frame": {"x":208,"y":757,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
|
||||||
@ -178,7 +178,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/left_8.png":
|
"sprites/belt/built/left_8.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":311,"y":733,"w":44,"h":44},
|
"frame": {"x":363,"y":769,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
|
||||||
@ -186,7 +186,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/left_9.png":
|
"sprites/belt/built/left_9.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":256,"y":751,"w":44,"h":44},
|
"frame": {"x":309,"y":781,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
|
||||||
@ -218,7 +218,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/left_13.png":
|
"sprites/belt/built/left_13.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":324,"y":643,"w":44,"h":44},
|
"frame": {"x":464,"y":615,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
|
||||||
@ -226,7 +226,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_0.png":
|
"sprites/belt/built/right_0.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":205,"y":789,"w":44,"h":44},
|
"frame": {"x":256,"y":797,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
||||||
@ -234,7 +234,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_1.png":
|
"sprites/belt/built/right_1.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":153,"y":790,"w":44,"h":44},
|
"frame": {"x":208,"y":805,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
||||||
@ -242,7 +242,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_2.png":
|
"sprites/belt/built/right_2.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":304,"y":781,"w":44,"h":44},
|
"frame": {"x":357,"y":817,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
||||||
@ -250,7 +250,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_3.png":
|
"sprites/belt/built/right_3.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":253,"y":799,"w":44,"h":44},
|
"frame": {"x":304,"y":829,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
||||||
@ -258,7 +258,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_4.png":
|
"sprites/belt/built/right_4.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":201,"y":837,"w":44,"h":44},
|
"frame": {"x":256,"y":845,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
||||||
@ -266,7 +266,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_5.png":
|
"sprites/belt/built/right_5.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":150,"y":838,"w":44,"h":44},
|
"frame": {"x":204,"y":853,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
||||||
@ -274,7 +274,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_6.png":
|
"sprites/belt/built/right_6.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":99,"y":845,"w":44,"h":44},
|
"frame": {"x":153,"y":854,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
||||||
@ -282,7 +282,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_7.png":
|
"sprites/belt/built/right_7.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":51,"y":885,"w":44,"h":44},
|
"frame": {"x":102,"y":860,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
||||||
@ -290,7 +290,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_8.png":
|
"sprites/belt/built/right_8.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":3,"y":909,"w":44,"h":44},
|
"frame": {"x":51,"y":879,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
||||||
@ -298,7 +298,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_9.png":
|
"sprites/belt/built/right_9.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":352,"y":819,"w":44,"h":44},
|
"frame": {"x":3,"y":882,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
||||||
@ -306,7 +306,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_10.png":
|
"sprites/belt/built/right_10.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":102,"y":797,"w":44,"h":44},
|
"frame": {"x":156,"y":806,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
||||||
@ -314,7 +314,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_11.png":
|
"sprites/belt/built/right_11.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":51,"y":837,"w":44,"h":44},
|
"frame": {"x":105,"y":812,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
||||||
@ -322,7 +322,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_12.png":
|
"sprites/belt/built/right_12.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":3,"y":861,"w":44,"h":44},
|
"frame": {"x":54,"y":831,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
||||||
@ -330,7 +330,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/belt/built/right_13.png":
|
"sprites/belt/built/right_13.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":359,"y":771,"w":44,"h":44},
|
"frame": {"x":3,"y":834,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
||||||
@ -338,7 +338,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/belt_left.png":
|
"sprites/blueprints/belt_left.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":400,"y":819,"w":44,"h":44},
|
"frame": {"x":352,"y":865,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
|
||||||
@ -346,7 +346,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/belt_right.png":
|
"sprites/blueprints/belt_right.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":301,"y":829,"w":44,"h":44},
|
"frame": {"x":304,"y":877,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
||||||
@ -354,7 +354,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/belt_top.png":
|
"sprites/blueprints/belt_top.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":267,"y":929,"w":40,"h":48},
|
"frame": {"x":271,"y":965,"w":40,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
||||||
@ -418,7 +418,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/logic_gate-or.png":
|
"sprites/blueprints/logic_gate-or.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":159,"y":571,"w":48,"h":42},
|
"frame": {"x":371,"y":723,"w":48,"h":42},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":42},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":42},
|
||||||
@ -442,7 +442,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/logic_gate.png":
|
"sprites/blueprints/logic_gate.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":55,"y":504,"w":48,"h":45},
|
"frame": {"x":55,"y":555,"w":48,"h":45},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":45},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":45},
|
||||||
@ -450,7 +450,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/miner-chainable.png":
|
"sprites/blueprints/miner-chainable.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":107,"y":646,"w":47,"h":48},
|
"frame": {"x":55,"y":682,"w":47,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":48},
|
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":48},
|
||||||
@ -458,7 +458,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/miner.png":
|
"sprites/blueprints/miner.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":55,"y":686,"w":47,"h":48},
|
"frame": {"x":3,"y":689,"w":47,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":48},
|
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":48},
|
||||||
@ -504,7 +504,7 @@
|
|||||||
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":48},
|
||||||
"sourceSize": {"w":96,"h":48}
|
"sourceSize": {"w":96,"h":48}
|
||||||
},
|
},
|
||||||
"sprites/blueprints/rotater-ccw.png":
|
"sprites/blueprints/reader.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":291,"y":211,"w":48,"h":48},
|
"frame": {"x":291,"y":211,"w":48,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
@ -512,7 +512,7 @@
|
|||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
"sourceSize": {"w":48,"h":48}
|
"sourceSize": {"w":48,"h":48}
|
||||||
},
|
},
|
||||||
"sprites/blueprints/rotater-fl.png":
|
"sprites/blueprints/rotater-ccw.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":274,"y":399,"w":48,"h":48},
|
"frame": {"x":274,"y":399,"w":48,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
@ -520,7 +520,7 @@
|
|||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
"sourceSize": {"w":48,"h":48}
|
"sourceSize": {"w":48,"h":48}
|
||||||
},
|
},
|
||||||
"sprites/blueprints/rotater.png":
|
"sprites/blueprints/rotater-fl.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":374,"y":411,"w":48,"h":48},
|
"frame": {"x":374,"y":411,"w":48,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
@ -528,7 +528,7 @@
|
|||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
"sourceSize": {"w":48,"h":48}
|
"sourceSize": {"w":48,"h":48}
|
||||||
},
|
},
|
||||||
"sprites/blueprints/splitter-compact-inverse.png":
|
"sprites/blueprints/rotater.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":274,"y":451,"w":48,"h":48},
|
"frame": {"x":274,"y":451,"w":48,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
@ -536,7 +536,7 @@
|
|||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
"sourceSize": {"w":48,"h":48}
|
"sourceSize": {"w":48,"h":48}
|
||||||
},
|
},
|
||||||
"sprites/blueprints/splitter-compact-merge-inverse.png":
|
"sprites/blueprints/splitter-compact-inverse.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":374,"y":463,"w":48,"h":48},
|
"frame": {"x":374,"y":463,"w":48,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
@ -544,9 +544,17 @@
|
|||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
"sourceSize": {"w":48,"h":48}
|
"sourceSize": {"w":48,"h":48}
|
||||||
},
|
},
|
||||||
|
"sprites/blueprints/splitter-compact-merge-inverse.png":
|
||||||
|
{
|
||||||
|
"frame": {"x":374,"y":515,"w":48,"h":48},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
|
"sourceSize": {"w":48,"h":48}
|
||||||
|
},
|
||||||
"sprites/blueprints/splitter-compact-merge.png":
|
"sprites/blueprints/splitter-compact-merge.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":158,"y":649,"w":47,"h":47},
|
"frame": {"x":54,"y":734,"w":47,"h":47},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":47},
|
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":47},
|
||||||
@ -554,7 +562,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/splitter-compact.png":
|
"sprites/blueprints/splitter-compact.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":106,"y":698,"w":47,"h":47},
|
"frame": {"x":3,"y":741,"w":47,"h":47},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":47},
|
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":47},
|
||||||
@ -586,7 +594,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/trash.png":
|
"sprites/blueprints/trash.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":374,"y":515,"w":48,"h":48},
|
"frame": {"x":3,"y":400,"w":48,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": false,
|
"trimmed": false,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
@ -594,7 +602,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/underground_belt_entry-tier2.png":
|
"sprites/blueprints/underground_belt_entry-tier2.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":107,"y":553,"w":48,"h":43},
|
"frame": {"x":223,"y":659,"w":48,"h":43},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":5,"w":48,"h":43},
|
"spriteSourceSize": {"x":0,"y":5,"w":48,"h":43},
|
||||||
@ -602,7 +610,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/underground_belt_entry.png":
|
"sprites/blueprints/underground_belt_entry.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":55,"y":602,"w":48,"h":38},
|
"frame": {"x":3,"y":605,"w":48,"h":38},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":10,"w":48,"h":38},
|
"spriteSourceSize": {"x":0,"y":10,"w":48,"h":38},
|
||||||
@ -610,7 +618,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/underground_belt_exit-tier2.png":
|
"sprites/blueprints/underground_belt_exit-tier2.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":3,"y":604,"w":48,"h":38},
|
"frame": {"x":3,"y":647,"w":48,"h":38},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":38},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":38},
|
||||||
@ -618,7 +626,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/underground_belt_exit.png":
|
"sprites/blueprints/underground_belt_exit.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":55,"y":644,"w":48,"h":38},
|
"frame": {"x":107,"y":604,"w":48,"h":38},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":38},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":38},
|
||||||
@ -626,7 +634,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/virtual_processor-analyzer.png":
|
"sprites/blueprints/virtual_processor-analyzer.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":3,"y":400,"w":48,"h":48},
|
"frame": {"x":55,"y":400,"w":48,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": false,
|
"trimmed": false,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
@ -642,7 +650,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/virtual_processor-shapecompare.png":
|
"sprites/blueprints/virtual_processor-shapecompare.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":107,"y":504,"w":48,"h":45},
|
"frame": {"x":3,"y":556,"w":48,"h":45},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":45},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":45},
|
||||||
@ -650,7 +658,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/virtual_processor-unstacker.png":
|
"sprites/blueprints/virtual_processor-unstacker.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":55,"y":400,"w":48,"h":48},
|
"frame": {"x":107,"y":400,"w":48,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": false,
|
"trimmed": false,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
@ -658,7 +666,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/virtual_processor.png":
|
"sprites/blueprints/virtual_processor.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":107,"y":400,"w":48,"h":48},
|
"frame": {"x":3,"y":452,"w":48,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": false,
|
"trimmed": false,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
@ -666,7 +674,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/wire-cross.png":
|
"sprites/blueprints/wire-cross.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":3,"y":452,"w":48,"h":48},
|
"frame": {"x":55,"y":452,"w":48,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": false,
|
"trimmed": false,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
@ -690,7 +698,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/wire.png":
|
"sprites/blueprints/wire.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":437,"y":693,"w":8,"h":48},
|
"frame": {"x":437,"y":722,"w":8,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":20,"y":0,"w":8,"h":48},
|
"spriteSourceSize": {"x":20,"y":0,"w":8,"h":48},
|
||||||
@ -698,7 +706,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/wire_tunnel-coating.png":
|
"sprites/blueprints/wire_tunnel-coating.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":425,"y":609,"w":13,"h":47},
|
"frame": {"x":425,"y":638,"w":13,"h":47},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":17,"y":0,"w":13,"h":47},
|
"spriteSourceSize": {"x":17,"y":0,"w":13,"h":47},
|
||||||
@ -706,7 +714,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/blueprints/wire_tunnel.png":
|
"sprites/blueprints/wire_tunnel.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":449,"y":719,"w":48,"h":47},
|
"frame": {"x":55,"y":504,"w":48,"h":47},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":47},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":47},
|
||||||
@ -722,7 +730,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/belt_right.png":
|
"sprites/buildings/belt_right.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":205,"y":789,"w":44,"h":44},
|
"frame": {"x":256,"y":797,"w":44,"h":44},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
|
||||||
@ -730,7 +738,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/belt_top.png":
|
"sprites/buildings/belt_top.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":3,"y":957,"w":40,"h":48},
|
"frame": {"x":405,"y":817,"w":40,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
|
||||||
@ -802,7 +810,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/logic_gate-or.png":
|
"sprites/buildings/logic_gate-or.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":107,"y":600,"w":48,"h":42},
|
"frame": {"x":55,"y":604,"w":48,"h":42},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":42},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":42},
|
||||||
@ -818,7 +826,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/logic_gate-xor.png":
|
"sprites/buildings/logic_gate-xor.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":55,"y":452,"w":48,"h":48},
|
"frame": {"x":107,"y":452,"w":48,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": false,
|
"trimmed": false,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
@ -826,7 +834,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/logic_gate.png":
|
"sprites/buildings/logic_gate.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":55,"y":553,"w":48,"h":45},
|
"frame": {"x":107,"y":555,"w":48,"h":45},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":45},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":45},
|
||||||
@ -834,7 +842,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/miner-chainable.png":
|
"sprites/buildings/miner-chainable.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":3,"y":710,"w":47,"h":48},
|
"frame": {"x":159,"y":703,"w":47,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":48},
|
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":48},
|
||||||
@ -842,7 +850,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/miner.png":
|
"sprites/buildings/miner.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":211,"y":643,"w":47,"h":48},
|
"frame": {"x":106,"y":710,"w":47,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":48},
|
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":48},
|
||||||
@ -888,15 +896,7 @@
|
|||||||
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":48},
|
||||||
"sourceSize": {"w":96,"h":48}
|
"sourceSize": {"w":96,"h":48}
|
||||||
},
|
},
|
||||||
"sprites/buildings/rotater-ccw.png":
|
"sprites/buildings/reader.png":
|
||||||
{
|
|
||||||
"frame": {"x":107,"y":452,"w":48,"h":48},
|
|
||||||
"rotated": false,
|
|
||||||
"trimmed": false,
|
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
|
||||||
"sourceSize": {"w":48,"h":48}
|
|
||||||
},
|
|
||||||
"sprites/buildings/rotater-fl.png":
|
|
||||||
{
|
{
|
||||||
"frame": {"x":179,"y":467,"w":48,"h":48},
|
"frame": {"x":179,"y":467,"w":48,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
@ -904,7 +904,7 @@
|
|||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
"sourceSize": {"w":48,"h":48}
|
"sourceSize": {"w":48,"h":48}
|
||||||
},
|
},
|
||||||
"sprites/buildings/rotater.png":
|
"sprites/buildings/rotater-ccw.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":273,"y":503,"w":48,"h":48},
|
"frame": {"x":273,"y":503,"w":48,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
@ -912,9 +912,25 @@
|
|||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
"sourceSize": {"w":48,"h":48}
|
"sourceSize": {"w":48,"h":48}
|
||||||
},
|
},
|
||||||
|
"sprites/buildings/rotater-fl.png":
|
||||||
|
{
|
||||||
|
"frame": {"x":273,"y":555,"w":48,"h":48},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
|
"sourceSize": {"w":48,"h":48}
|
||||||
|
},
|
||||||
|
"sprites/buildings/rotater.png":
|
||||||
|
{
|
||||||
|
"frame": {"x":373,"y":567,"w":48,"h":48},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": false,
|
||||||
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
|
"sourceSize": {"w":48,"h":48}
|
||||||
|
},
|
||||||
"sprites/buildings/splitter-compact-inverse.png":
|
"sprites/buildings/splitter-compact-inverse.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":448,"y":770,"w":48,"h":47},
|
"frame": {"x":107,"y":504,"w":48,"h":47},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":47},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":47},
|
||||||
@ -922,7 +938,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/splitter-compact-merge-inverse.png":
|
"sprites/buildings/splitter-compact-merge-inverse.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":3,"y":504,"w":48,"h":47},
|
"frame": {"x":171,"y":571,"w":48,"h":47},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":47},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":47},
|
||||||
@ -930,7 +946,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/splitter-compact-merge.png":
|
"sprites/buildings/splitter-compact-merge.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":54,"y":738,"w":47,"h":47},
|
"frame": {"x":210,"y":706,"w":47,"h":47},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":47},
|
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":47},
|
||||||
@ -938,7 +954,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/splitter-compact.png":
|
"sprites/buildings/splitter-compact.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":3,"y":762,"w":47,"h":47},
|
"frame": {"x":157,"y":755,"w":47,"h":47},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":47},
|
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":47},
|
||||||
@ -970,7 +986,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/trash.png":
|
"sprites/buildings/trash.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":273,"y":555,"w":48,"h":48},
|
"frame": {"x":373,"y":619,"w":48,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": false,
|
"trimmed": false,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
@ -978,7 +994,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/underground_belt_entry-tier2.png":
|
"sprites/buildings/underground_belt_entry-tier2.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":209,"y":695,"w":47,"h":42},
|
"frame": {"x":54,"y":785,"w":47,"h":42},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":6,"w":47,"h":42},
|
"spriteSourceSize": {"x":1,"y":6,"w":47,"h":42},
|
||||||
@ -986,7 +1002,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/underground_belt_entry.png":
|
"sprites/buildings/underground_belt_entry.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":157,"y":700,"w":47,"h":38},
|
"frame": {"x":3,"y":792,"w":47,"h":38},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":10,"w":47,"h":38},
|
"spriteSourceSize": {"x":1,"y":10,"w":47,"h":38},
|
||||||
@ -994,7 +1010,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/underground_belt_exit-tier2.png":
|
"sprites/buildings/underground_belt_exit-tier2.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":313,"y":691,"w":47,"h":38},
|
"frame": {"x":261,"y":707,"w":47,"h":38},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":38},
|
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":38},
|
||||||
@ -1002,7 +1018,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/underground_belt_exit.png":
|
"sprites/buildings/underground_belt_exit.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":260,"y":709,"w":47,"h":38},
|
"frame": {"x":312,"y":739,"w":47,"h":38},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":38},
|
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":38},
|
||||||
@ -1010,7 +1026,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/virtual_processor-analyzer.png":
|
"sprites/buildings/virtual_processor-analyzer.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":373,"y":567,"w":48,"h":48},
|
"frame": {"x":178,"y":519,"w":48,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": false,
|
"trimmed": false,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
@ -1026,7 +1042,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/virtual_processor-shapecompare.png":
|
"sprites/buildings/virtual_processor-shapecompare.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":3,"y":555,"w":48,"h":45},
|
"frame": {"x":171,"y":622,"w":48,"h":45},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":45},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":45},
|
||||||
@ -1034,7 +1050,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/virtual_processor-unstacker.png":
|
"sprites/buildings/virtual_processor-unstacker.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":178,"y":519,"w":48,"h":48},
|
"frame": {"x":272,"y":607,"w":48,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": false,
|
"trimmed": false,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
@ -1042,7 +1058,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/virtual_processor.png":
|
"sprites/buildings/virtual_processor.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":272,"y":607,"w":48,"h":48},
|
"frame": {"x":372,"y":671,"w":48,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": false,
|
"trimmed": false,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
@ -1050,7 +1066,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/wire-cross.png":
|
"sprites/buildings/wire-cross.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":373,"y":619,"w":48,"h":48},
|
"frame": {"x":459,"y":663,"w":48,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": false,
|
"trimmed": false,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
@ -1058,7 +1074,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/wire-split.png":
|
"sprites/buildings/wire-split.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":3,"y":646,"w":48,"h":28},
|
"frame": {"x":107,"y":646,"w":48,"h":28},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":20,"w":48,"h":28},
|
"spriteSourceSize": {"x":0,"y":20,"w":48,"h":28},
|
||||||
@ -1074,7 +1090,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/wire.png":
|
"sprites/buildings/wire.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":424,"y":698,"w":8,"h":48},
|
"frame": {"x":501,"y":767,"w":8,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":20,"y":0,"w":8,"h":48},
|
"spriteSourceSize": {"x":20,"y":0,"w":8,"h":48},
|
||||||
@ -1082,7 +1098,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/wire_tunnel-coating.png":
|
"sprites/buildings/wire_tunnel-coating.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":442,"y":643,"w":12,"h":46},
|
"frame": {"x":442,"y":672,"w":12,"h":46},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":18,"y":1,"w":12,"h":46},
|
"spriteSourceSize": {"x":18,"y":1,"w":12,"h":46},
|
||||||
@ -1090,7 +1106,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/buildings/wire_tunnel.png":
|
"sprites/buildings/wire_tunnel.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":262,"y":659,"w":47,"h":46},
|
"frame": {"x":105,"y":762,"w":47,"h":46},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":1,"y":1,"w":47,"h":46},
|
"spriteSourceSize": {"x":1,"y":1,"w":47,"h":46},
|
||||||
@ -1136,9 +1152,17 @@
|
|||||||
"spriteSourceSize": {"x":5,"y":2,"w":23,"h":29},
|
"spriteSourceSize": {"x":5,"y":2,"w":23,"h":29},
|
||||||
"sourceSize": {"w":32,"h":32}
|
"sourceSize": {"w":32,"h":32}
|
||||||
},
|
},
|
||||||
|
"sprites/misc/reader_overlay.png":
|
||||||
|
{
|
||||||
|
"frame": {"x":425,"y":609,"w":35,"h":25},
|
||||||
|
"rotated": false,
|
||||||
|
"trimmed": true,
|
||||||
|
"spriteSourceSize": {"x":6,"y":12,"w":35,"h":25},
|
||||||
|
"sourceSize": {"w":48,"h":48}
|
||||||
|
},
|
||||||
"sprites/misc/slot_bad_arrow.png":
|
"sprites/misc/slot_bad_arrow.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":442,"y":609,"w":13,"h":13},
|
"frame": {"x":442,"y":638,"w":13,"h":13},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": false,
|
"trimmed": false,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
|
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
|
||||||
@ -1146,7 +1170,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/misc/slot_good_arrow.png":
|
"sprites/misc/slot_good_arrow.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":442,"y":626,"w":13,"h":13},
|
"frame": {"x":442,"y":655,"w":13,"h":13},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": false,
|
"trimmed": false,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
|
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
|
||||||
@ -1170,7 +1194,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/boolean_false.png":
|
"sprites/wires/boolean_false.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":425,"y":660,"w":12,"h":15},
|
"frame": {"x":424,"y":689,"w":12,"h":15},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":2,"y":1,"w":12,"h":15},
|
"spriteSourceSize": {"x":2,"y":1,"w":12,"h":15},
|
||||||
@ -1178,7 +1202,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/boolean_true.png":
|
"sprites/wires/boolean_true.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":424,"y":679,"w":9,"h":15},
|
"frame": {"x":424,"y":708,"w":9,"h":15},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":3,"y":1,"w":9,"h":15},
|
"spriteSourceSize": {"x":3,"y":1,"w":9,"h":15},
|
||||||
@ -1290,7 +1314,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/sets/color_cross.png":
|
"sprites/wires/sets/color_cross.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":459,"y":615,"w":48,"h":48},
|
"frame": {"x":458,"y":715,"w":48,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": false,
|
"trimmed": false,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
@ -1298,7 +1322,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/sets/color_forward.png":
|
"sprites/wires/sets/color_forward.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":501,"y":719,"w":8,"h":48},
|
"frame": {"x":159,"y":520,"w":8,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":20,"y":0,"w":8,"h":48},
|
"spriteSourceSize": {"x":20,"y":0,"w":8,"h":48},
|
||||||
@ -1306,7 +1330,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/sets/color_split.png":
|
"sprites/wires/sets/color_split.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":3,"y":678,"w":48,"h":28},
|
"frame": {"x":55,"y":650,"w":48,"h":28},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":20,"w":48,"h":28},
|
"spriteSourceSize": {"x":0,"y":20,"w":48,"h":28},
|
||||||
@ -1322,7 +1346,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/sets/conflict_cross.png":
|
"sprites/wires/sets/conflict_cross.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":372,"y":671,"w":48,"h":48},
|
"frame": {"x":449,"y":767,"w":48,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": false,
|
"trimmed": false,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
@ -1330,7 +1354,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/sets/conflict_forward.png":
|
"sprites/wires/sets/conflict_forward.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":436,"y":745,"w":8,"h":48},
|
"frame": {"x":159,"y":572,"w":8,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":20,"y":0,"w":8,"h":48},
|
"spriteSourceSize": {"x":20,"y":0,"w":8,"h":48},
|
||||||
@ -1338,7 +1362,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/sets/conflict_split.png":
|
"sprites/wires/sets/conflict_split.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":211,"y":611,"w":48,"h":28},
|
"frame": {"x":159,"y":671,"w":48,"h":28},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":20,"w":48,"h":28},
|
"spriteSourceSize": {"x":0,"y":20,"w":48,"h":28},
|
||||||
@ -1354,7 +1378,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/sets/regular_cross.png":
|
"sprites/wires/sets/regular_cross.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":373,"y":619,"w":48,"h":48},
|
"frame": {"x":459,"y":663,"w":48,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": false,
|
"trimmed": false,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
@ -1362,7 +1386,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/sets/regular_forward.png":
|
"sprites/wires/sets/regular_forward.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":424,"y":698,"w":8,"h":48},
|
"frame": {"x":501,"y":767,"w":8,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":20,"y":0,"w":8,"h":48},
|
"spriteSourceSize": {"x":20,"y":0,"w":8,"h":48},
|
||||||
@ -1370,7 +1394,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/sets/regular_split.png":
|
"sprites/wires/sets/regular_split.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":3,"y":646,"w":48,"h":28},
|
"frame": {"x":107,"y":646,"w":48,"h":28},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":20,"w":48,"h":28},
|
"spriteSourceSize": {"x":0,"y":20,"w":48,"h":28},
|
||||||
@ -1386,7 +1410,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/sets/shape_cross.png":
|
"sprites/wires/sets/shape_cross.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":458,"y":667,"w":48,"h":48},
|
"frame": {"x":3,"y":504,"w":48,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": false,
|
"trimmed": false,
|
||||||
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
|
||||||
@ -1394,7 +1418,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/sets/shape_forward.png":
|
"sprites/wires/sets/shape_forward.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":500,"y":771,"w":8,"h":48},
|
"frame": {"x":423,"y":727,"w":8,"h":48},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":20,"y":0,"w":8,"h":48},
|
"spriteSourceSize": {"x":20,"y":0,"w":8,"h":48},
|
||||||
@ -1402,7 +1426,7 @@
|
|||||||
},
|
},
|
||||||
"sprites/wires/sets/shape_split.png":
|
"sprites/wires/sets/shape_split.png":
|
||||||
{
|
{
|
||||||
"frame": {"x":159,"y":617,"w":48,"h":28},
|
"frame": {"x":107,"y":678,"w":48,"h":28},
|
||||||
"rotated": false,
|
"rotated": false,
|
||||||
"trimmed": true,
|
"trimmed": true,
|
||||||
"spriteSourceSize": {"x":0,"y":20,"w":48,"h":28},
|
"spriteSourceSize": {"x":0,"y":20,"w":48,"h":28},
|
||||||
@ -1431,6 +1455,6 @@
|
|||||||
"format": "RGBA8888",
|
"format": "RGBA8888",
|
||||||
"size": {"w":512,"h":1024},
|
"size": {"w":512,"h":1024},
|
||||||
"scale": "0.25",
|
"scale": "0.25",
|
||||||
"smartupdate": "$TexturePacker:SmartUpdate:1923b9c910205fb09957b67f92de02b9:0d87df06f18965307bf9d18b414f603d:908b89f5ca8ff73e331a35a3b14d0604$"
|
"smartupdate": "$TexturePacker:SmartUpdate:3b1717ceee14135311380de9706938d5:e834c7745e235246a53bcb721a2e3be3:908b89f5ca8ff73e331a35a3b14d0604$"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Before Width: | Height: | Size: 269 KiB After Width: | Height: | Size: 272 KiB |
Before Width: | Height: | Size: 653 KiB After Width: | Height: | Size: 659 KiB |
BIN
res_raw/sprites/blueprints/reader.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
res_raw/sprites/buildings/reader.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
res_raw/sprites/misc/reader_overlay.png
Normal file
After Width: | Height: | Size: 4.9 KiB |
@ -1,5 +1,5 @@
|
|||||||
$buildings: belt, cutter, miner, mixer, painter, rotater, splitter, stacker, trash, underground_belt, wire,
|
$buildings: belt, cutter, miner, mixer, painter, rotater, splitter, stacker, trash, underground_belt, wire,
|
||||||
constant_signal, logic_gate, lever, filter, wire_tunnel, display, virtual_processor;
|
constant_signal, logic_gate, lever, filter, wire_tunnel, display, virtual_processor, reader;
|
||||||
|
|
||||||
@each $building in $buildings {
|
@each $building in $buildings {
|
||||||
[data-icon="building_icons/#{$building}.png"] {
|
[data-icon="building_icons/#{$building}.png"] {
|
||||||
|
@ -18,6 +18,7 @@ export const CHANGELOG = [
|
|||||||
"Updated and added new translations (Thanks to all contributors!)",
|
"Updated and added new translations (Thanks to all contributors!)",
|
||||||
"Added setting to be able to delete buildings while placing (inspired by hexy)",
|
"Added setting to be able to delete buildings while placing (inspired by hexy)",
|
||||||
"Mark pinned shapes in statistics dialog and show them first (inspired by davidburhans)",
|
"Mark pinned shapes in statistics dialog and show them first (inspired by davidburhans)",
|
||||||
|
"Quad painters have been reworked! They now are integrated with the wires, and only paint the shape when the value is 1 (inspired by dengr1605)",
|
||||||
"There are now compact 1x1 splitters available to be unlocked!",
|
"There are now compact 1x1 splitters available to be unlocked!",
|
||||||
"Allow editing waypoints (by isaisstillalive)",
|
"Allow editing waypoints (by isaisstillalive)",
|
||||||
"Show confirmation when cutting area which is too expensive to get pasted again (by isaisstillalive)",
|
"Show confirmation when cutting area which is too expensive to get pasted again (by isaisstillalive)",
|
||||||
|
@ -1,136 +1,136 @@
|
|||||||
import { queryParamOptions } from "./query_parameters";
|
import { queryParamOptions } from "./query_parameters";
|
||||||
|
|
||||||
export const IS_DEBUG =
|
export const IS_DEBUG =
|
||||||
G_IS_DEV &&
|
G_IS_DEV &&
|
||||||
typeof window !== "undefined" &&
|
typeof window !== "undefined" &&
|
||||||
window.location.port === "3005" &&
|
window.location.port === "3005" &&
|
||||||
(window.location.host.indexOf("localhost:") >= 0 || window.location.host.indexOf("192.168.0.") >= 0) &&
|
(window.location.host.indexOf("localhost:") >= 0 || window.location.host.indexOf("192.168.0.") >= 0) &&
|
||||||
window.location.search.indexOf("nodebug") < 0;
|
window.location.search.indexOf("nodebug") < 0;
|
||||||
|
|
||||||
export const IS_DEMO = queryParamOptions.fullVersion
|
export const IS_DEMO = queryParamOptions.fullVersion
|
||||||
? false
|
? false
|
||||||
: (!G_IS_DEV && !G_IS_STANDALONE) ||
|
: (!G_IS_DEV && !G_IS_STANDALONE) ||
|
||||||
(typeof window !== "undefined" && window.location.search.indexOf("demo") >= 0);
|
(typeof window !== "undefined" && window.location.search.indexOf("demo") >= 0);
|
||||||
|
|
||||||
export const SUPPORT_TOUCH = false;
|
export const SUPPORT_TOUCH = false;
|
||||||
|
|
||||||
const smoothCanvas = true;
|
const smoothCanvas = true;
|
||||||
|
|
||||||
export const THIRDPARTY_URLS = {
|
export const THIRDPARTY_URLS = {
|
||||||
discord: "https://discord.gg/HN7EVzV",
|
discord: "https://discord.gg/HN7EVzV",
|
||||||
github: "https://github.com/tobspr/shapez.io",
|
github: "https://github.com/tobspr/shapez.io",
|
||||||
reddit: "https://www.reddit.com/r/shapezio",
|
reddit: "https://www.reddit.com/r/shapezio",
|
||||||
|
|
||||||
standaloneStorePage: "https://store.steampowered.com/app/1318690/shapezio/",
|
standaloneStorePage: "https://store.steampowered.com/app/1318690/shapezio/",
|
||||||
};
|
};
|
||||||
|
|
||||||
export const globalConfig = {
|
export const globalConfig = {
|
||||||
// Size of a single tile in Pixels.
|
// Size of a single tile in Pixels.
|
||||||
// NOTICE: Update webpack.production.config too!
|
// NOTICE: Update webpack.production.config too!
|
||||||
tileSize: 32,
|
tileSize: 32,
|
||||||
halfTileSize: 16,
|
halfTileSize: 16,
|
||||||
|
|
||||||
// Which dpi the assets have
|
// Which dpi the assets have
|
||||||
assetsDpi: 192 / 32,
|
assetsDpi: 192 / 32,
|
||||||
assetsSharpness: 1.5,
|
assetsSharpness: 1.5,
|
||||||
shapesSharpness: 1.4,
|
shapesSharpness: 1.4,
|
||||||
|
|
||||||
// Production analytics
|
// Production analytics
|
||||||
statisticsGraphDpi: 2.5,
|
statisticsGraphDpi: 2.5,
|
||||||
statisticsGraphSlices: 100,
|
statisticsGraphSlices: 100,
|
||||||
analyticsSliceDurationSeconds: G_IS_DEV ? 1 : 10,
|
analyticsSliceDurationSeconds: G_IS_DEV ? 1 : 10,
|
||||||
|
|
||||||
minimumTickRate: 25,
|
minimumTickRate: 25,
|
||||||
maximumTickRate: 500,
|
maximumTickRate: 500,
|
||||||
|
|
||||||
// Map
|
// Map
|
||||||
mapChunkSize: 16,
|
mapChunkSize: 16,
|
||||||
mapChunkOverviewMinZoom: 0.9,
|
mapChunkOverviewMinZoom: 0.9,
|
||||||
mapChunkWorldSize: null, // COMPUTED
|
mapChunkWorldSize: null, // COMPUTED
|
||||||
|
|
||||||
// Belt speeds
|
// Belt speeds
|
||||||
// NOTICE: Update webpack.production.config too!
|
// NOTICE: Update webpack.production.config too!
|
||||||
beltSpeedItemsPerSecond: 2,
|
beltSpeedItemsPerSecond: 2,
|
||||||
minerSpeedItemsPerSecond: 0, // COMPUTED
|
minerSpeedItemsPerSecond: 0, // COMPUTED
|
||||||
|
|
||||||
defaultItemDiameter: 20,
|
defaultItemDiameter: 20,
|
||||||
|
|
||||||
itemSpacingOnBelts: 0.63,
|
itemSpacingOnBelts: 0.63,
|
||||||
|
|
||||||
wiresSpeedItemsPerSecond: 6,
|
wiresSpeedItemsPerSecond: 6,
|
||||||
|
|
||||||
undergroundBeltMaxTilesByTier: [5, 8],
|
undergroundBeltMaxTilesByTier: [5, 8],
|
||||||
|
|
||||||
buildingSpeeds: {
|
readerAnalyzeIntervalSeconds: 10,
|
||||||
cutter: 1 / 4,
|
|
||||||
cutterQuad: 1 / 4,
|
buildingSpeeds: {
|
||||||
rotater: 1 / 1,
|
cutter: 1 / 4,
|
||||||
rotaterCCW: 1 / 1,
|
cutterQuad: 1 / 4,
|
||||||
rotaterFL: 1 / 1,
|
rotater: 1 / 1,
|
||||||
painter: 1 / 6,
|
rotaterCCW: 1 / 1,
|
||||||
painterDouble: 1 / 8,
|
rotaterFL: 1 / 1,
|
||||||
painterQuad: 1 / 8,
|
painter: 1 / 6,
|
||||||
mixer: 1 / 5,
|
painterDouble: 1 / 8,
|
||||||
stacker: 1 / 6,
|
painterQuad: 1 / 8,
|
||||||
advancedProcessor: 1 / 3,
|
mixer: 1 / 5,
|
||||||
filter: 1,
|
stacker: 1 / 6,
|
||||||
},
|
},
|
||||||
|
|
||||||
// Zooming
|
// Zooming
|
||||||
initialZoom: 1.9,
|
initialZoom: 1.9,
|
||||||
minZoomLevel: 0.1,
|
minZoomLevel: 0.1,
|
||||||
maxZoomLevel: 3,
|
maxZoomLevel: 3,
|
||||||
|
|
||||||
// Global game speed
|
// Global game speed
|
||||||
gameSpeed: 1,
|
gameSpeed: 1,
|
||||||
|
|
||||||
warmupTimeSecondsFast: 0.1,
|
warmupTimeSecondsFast: 0.1,
|
||||||
warmupTimeSecondsRegular: 1,
|
warmupTimeSecondsRegular: 1,
|
||||||
|
|
||||||
smoothing: {
|
smoothing: {
|
||||||
smoothMainCanvas: smoothCanvas && true,
|
smoothMainCanvas: smoothCanvas && true,
|
||||||
quality: "low", // Low is CRUCIAL for mobile performance!
|
quality: "low", // Low is CRUCIAL for mobile performance!
|
||||||
},
|
},
|
||||||
|
|
||||||
rendering: {},
|
rendering: {},
|
||||||
debug: require("./config.local").default,
|
debug: require("./config.local").default,
|
||||||
|
|
||||||
// Secret vars
|
// Secret vars
|
||||||
info: {
|
info: {
|
||||||
// Binary file salt
|
// Binary file salt
|
||||||
file: "Ec'])@^+*9zMevK3uMV4432x9%iK'=",
|
file: "Ec'])@^+*9zMevK3uMV4432x9%iK'=",
|
||||||
|
|
||||||
// Savegame salt
|
// Savegame salt
|
||||||
sgSalt: "}95Q3%8/.837Lqym_BJx%q7)pAHJbF",
|
sgSalt: "}95Q3%8/.837Lqym_BJx%q7)pAHJbF",
|
||||||
|
|
||||||
// Analytics key
|
// Analytics key
|
||||||
analyticsApiKey: "baf6a50f0cc7dfdec5a0e21c88a1c69a4b34bc4a",
|
analyticsApiKey: "baf6a50f0cc7dfdec5a0e21c88a1c69a4b34bc4a",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export const IS_MOBILE = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);
|
export const IS_MOBILE = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);
|
||||||
|
|
||||||
// Automatic calculations
|
// Automatic calculations
|
||||||
globalConfig.minerSpeedItemsPerSecond = globalConfig.beltSpeedItemsPerSecond / 5;
|
globalConfig.minerSpeedItemsPerSecond = globalConfig.beltSpeedItemsPerSecond / 5;
|
||||||
|
|
||||||
globalConfig.mapChunkWorldSize = globalConfig.mapChunkSize * globalConfig.tileSize;
|
globalConfig.mapChunkWorldSize = globalConfig.mapChunkSize * globalConfig.tileSize;
|
||||||
|
|
||||||
// Dynamic calculations
|
// Dynamic calculations
|
||||||
if (globalConfig.debug.disableMapOverview) {
|
if (globalConfig.debug.disableMapOverview) {
|
||||||
globalConfig.mapChunkOverviewMinZoom = 0;
|
globalConfig.mapChunkOverviewMinZoom = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stuff for making the trailer
|
// Stuff for making the trailer
|
||||||
if (G_IS_DEV && globalConfig.debug.renderForTrailer) {
|
if (G_IS_DEV && globalConfig.debug.renderForTrailer) {
|
||||||
globalConfig.debug.framePausesBetweenTicks = 32;
|
globalConfig.debug.framePausesBetweenTicks = 32;
|
||||||
// globalConfig.mapChunkOverviewMinZoom = 0.0;
|
// globalConfig.mapChunkOverviewMinZoom = 0.0;
|
||||||
// globalConfig.debug.instantBelts = true;
|
// globalConfig.debug.instantBelts = true;
|
||||||
// globalConfig.debug.instantProcessors = true;
|
// globalConfig.debug.instantProcessors = true;
|
||||||
// globalConfig.debug.instantMiners = true;
|
// globalConfig.debug.instantMiners = true;
|
||||||
globalConfig.debug.disableSavegameWrite = true;
|
globalConfig.debug.disableSavegameWrite = true;
|
||||||
// globalConfig.beltSpeedItemsPerSecond *= 2;
|
// globalConfig.beltSpeedItemsPerSecond *= 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (globalConfig.debug.fastGameEnter) {
|
if (globalConfig.debug.fastGameEnter) {
|
||||||
globalConfig.debug.noArtificalDelays = true;
|
globalConfig.debug.noArtificalDelays = true;
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,15 @@
|
|||||||
import { enumDirection, Vector } from "../../core/vector";
|
import { enumDirection, Vector } from "../../core/vector";
|
||||||
|
import { ItemAcceptorComponent } from "../components/item_acceptor";
|
||||||
|
import { ItemEjectorComponent } from "../components/item_ejector";
|
||||||
|
import {
|
||||||
|
enumItemProcessorRequirements,
|
||||||
|
enumItemProcessorTypes,
|
||||||
|
ItemProcessorComponent,
|
||||||
|
} from "../components/item_processor";
|
||||||
import { enumPinSlotType, WiredPinsComponent } from "../components/wired_pins";
|
import { enumPinSlotType, WiredPinsComponent } from "../components/wired_pins";
|
||||||
import { Entity } from "../entity";
|
import { Entity } from "../entity";
|
||||||
import { MetaBuilding } from "../meta_building";
|
import { MetaBuilding } from "../meta_building";
|
||||||
import { GameRoot } from "../root";
|
import { GameRoot } from "../root";
|
||||||
import { LeverComponent } from "../components/lever";
|
|
||||||
import { ItemAcceptorComponent } from "../components/item_acceptor";
|
|
||||||
import { ItemEjectorComponent } from "../components/item_ejector";
|
|
||||||
import {
|
|
||||||
ItemProcessorComponent,
|
|
||||||
enumItemProcessorTypes,
|
|
||||||
enumItemProcessorRequirements,
|
|
||||||
} from "../components/item_processor";
|
|
||||||
|
|
||||||
export class MetaFilterBuilding extends MetaBuilding {
|
export class MetaFilterBuilding extends MetaBuilding {
|
||||||
constructor() {
|
constructor() {
|
||||||
|
101
src/js/game/buildings/reader.js
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
import { enumDirection, Vector } from "../../core/vector";
|
||||||
|
import { ItemAcceptorComponent } from "../components/item_acceptor";
|
||||||
|
import { ItemEjectorComponent } from "../components/item_ejector";
|
||||||
|
import { enumItemProcessorTypes, ItemProcessorComponent } from "../components/item_processor";
|
||||||
|
import { enumPinSlotType, WiredPinsComponent } from "../components/wired_pins";
|
||||||
|
import { Entity } from "../entity";
|
||||||
|
import { MetaBuilding } from "../meta_building";
|
||||||
|
import { GameRoot } from "../root";
|
||||||
|
import { BeltUnderlaysComponent } from "../components/belt_underlays";
|
||||||
|
import { BeltReaderComponent } from "../components/belt_reader";
|
||||||
|
|
||||||
|
export class MetaReaderBuilding extends MetaBuilding {
|
||||||
|
constructor() {
|
||||||
|
super("reader");
|
||||||
|
}
|
||||||
|
|
||||||
|
getSilhouetteColor() {
|
||||||
|
return "#25fff2";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {GameRoot} root
|
||||||
|
*/
|
||||||
|
getIsUnlocked(root) {
|
||||||
|
// @todo
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
getDimensions() {
|
||||||
|
return new Vector(1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
getShowWiresLayerPreview() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates the entity at the given location
|
||||||
|
* @param {Entity} entity
|
||||||
|
*/
|
||||||
|
setupEntityComponents(entity) {
|
||||||
|
entity.addComponent(
|
||||||
|
new WiredPinsComponent({
|
||||||
|
slots: [
|
||||||
|
{
|
||||||
|
pos: new Vector(0, 0),
|
||||||
|
direction: enumDirection.right,
|
||||||
|
type: enumPinSlotType.logicalEjector,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pos: new Vector(0, 0),
|
||||||
|
direction: enumDirection.left,
|
||||||
|
type: enumPinSlotType.logicalEjector,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
entity.addComponent(
|
||||||
|
new ItemAcceptorComponent({
|
||||||
|
slots: [
|
||||||
|
{
|
||||||
|
pos: new Vector(0, 0),
|
||||||
|
directions: [enumDirection.bottom],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
entity.addComponent(
|
||||||
|
new ItemEjectorComponent({
|
||||||
|
slots: [
|
||||||
|
{
|
||||||
|
pos: new Vector(0, 0),
|
||||||
|
direction: enumDirection.top,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
entity.addComponent(
|
||||||
|
new ItemProcessorComponent({
|
||||||
|
processorType: enumItemProcessorTypes.reader,
|
||||||
|
inputsPerCharge: 1,
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
entity.addComponent(
|
||||||
|
new BeltUnderlaysComponent({
|
||||||
|
underlays: [
|
||||||
|
{
|
||||||
|
pos: new Vector(0, 0),
|
||||||
|
direction: enumDirection.top,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
entity.addComponent(new BeltReaderComponent());
|
||||||
|
}
|
||||||
|
}
|
@ -16,6 +16,7 @@ import { LogicGateComponent } from "./components/logic_gate";
|
|||||||
import { LeverComponent } from "./components/lever";
|
import { LeverComponent } from "./components/lever";
|
||||||
import { WireTunnelComponent } from "./components/wire_tunnel";
|
import { WireTunnelComponent } from "./components/wire_tunnel";
|
||||||
import { DisplayComponent } from "./components/display";
|
import { DisplayComponent } from "./components/display";
|
||||||
|
import { BeltReaderComponent } from "./components/belt_reader";
|
||||||
|
|
||||||
export function initComponentRegistry() {
|
export function initComponentRegistry() {
|
||||||
gComponentRegistry.register(StaticMapEntityComponent);
|
gComponentRegistry.register(StaticMapEntityComponent);
|
||||||
@ -35,6 +36,7 @@ export function initComponentRegistry() {
|
|||||||
gComponentRegistry.register(LeverComponent);
|
gComponentRegistry.register(LeverComponent);
|
||||||
gComponentRegistry.register(WireTunnelComponent);
|
gComponentRegistry.register(WireTunnelComponent);
|
||||||
gComponentRegistry.register(DisplayComponent);
|
gComponentRegistry.register(DisplayComponent);
|
||||||
|
gComponentRegistry.register(BeltReaderComponent);
|
||||||
|
|
||||||
// IMPORTANT ^^^^^ UPDATE ENTITY COMPONENT STORAGE AFTERWARDS
|
// IMPORTANT ^^^^^ UPDATE ENTITY COMPONENT STORAGE AFTERWARDS
|
||||||
|
|
||||||
|
40
src/js/game/components/belt_reader.js
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
import { Component } from "../component";
|
||||||
|
import { BaseItem } from "../base_item";
|
||||||
|
|
||||||
|
export class BeltReaderComponent extends Component {
|
||||||
|
static getId() {
|
||||||
|
return "BeltReader";
|
||||||
|
}
|
||||||
|
|
||||||
|
duplicateWithoutContents() {
|
||||||
|
return new BeltReaderComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Which items went through the reader, we only store the time
|
||||||
|
* @type {Array<number>}
|
||||||
|
*/
|
||||||
|
this.lastItemTimes = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Which item passed the reader last
|
||||||
|
* @type {BaseItem}
|
||||||
|
*/
|
||||||
|
this.lastItem = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stores the last throughput we computed
|
||||||
|
* @type {number}
|
||||||
|
*/
|
||||||
|
this.lastThroughput = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stores when we last computed the throughput
|
||||||
|
* @type {number}
|
||||||
|
*/
|
||||||
|
this.lastThroughputComputation = 0;
|
||||||
|
}
|
||||||
|
}
|
@ -20,6 +20,7 @@ export const enumItemProcessorTypes = {
|
|||||||
painterQuad: "painterQuad",
|
painterQuad: "painterQuad",
|
||||||
hub: "hub",
|
hub: "hub",
|
||||||
filter: "filter",
|
filter: "filter",
|
||||||
|
reader: "reader",
|
||||||
};
|
};
|
||||||
|
|
||||||
/** @enum {string} */
|
/** @enum {string} */
|
||||||
|
@ -1,82 +1,86 @@
|
|||||||
/* typehints:start */
|
/* typehints:start */
|
||||||
import { BeltComponent } from "./components/belt";
|
import { BeltComponent } from "./components/belt";
|
||||||
import { BeltUnderlaysComponent } from "./components/belt_underlays";
|
import { BeltUnderlaysComponent } from "./components/belt_underlays";
|
||||||
import { HubComponent } from "./components/hub";
|
import { HubComponent } from "./components/hub";
|
||||||
import { ItemAcceptorComponent } from "./components/item_acceptor";
|
import { ItemAcceptorComponent } from "./components/item_acceptor";
|
||||||
import { ItemEjectorComponent } from "./components/item_ejector";
|
import { ItemEjectorComponent } from "./components/item_ejector";
|
||||||
import { ItemProcessorComponent } from "./components/item_processor";
|
import { ItemProcessorComponent } from "./components/item_processor";
|
||||||
import { MinerComponent } from "./components/miner";
|
import { MinerComponent } from "./components/miner";
|
||||||
import { StaticMapEntityComponent } from "./components/static_map_entity";
|
import { StaticMapEntityComponent } from "./components/static_map_entity";
|
||||||
import { StorageComponent } from "./components/storage";
|
import { StorageComponent } from "./components/storage";
|
||||||
import { UndergroundBeltComponent } from "./components/underground_belt";
|
import { UndergroundBeltComponent } from "./components/underground_belt";
|
||||||
import { WiredPinsComponent } from "./components/wired_pins";
|
import { WiredPinsComponent } from "./components/wired_pins";
|
||||||
import { WireComponent } from "./components/wire";
|
import { WireComponent } from "./components/wire";
|
||||||
import { ConstantSignalComponent } from "./components/constant_signal";
|
import { ConstantSignalComponent } from "./components/constant_signal";
|
||||||
import { LogicGateComponent } from "./components/logic_gate";
|
import { LogicGateComponent } from "./components/logic_gate";
|
||||||
import { LeverComponent } from "./components/lever";
|
import { LeverComponent } from "./components/lever";
|
||||||
import { WireTunnelComponent } from "./components/wire_tunnel";
|
import { WireTunnelComponent } from "./components/wire_tunnel";
|
||||||
import { DisplayComponent } from "./components/display";
|
import { DisplayComponent } from "./components/display";
|
||||||
/* typehints:end */
|
import { BeltReaderComponent } from "./components/belt_reader";
|
||||||
|
/* typehints:end */
|
||||||
/**
|
|
||||||
* Typedefs for all entity components. These are not actually present on the entity,
|
/**
|
||||||
* thus they are undefined by default
|
* Typedefs for all entity components. These are not actually present on the entity,
|
||||||
*/
|
* thus they are undefined by default
|
||||||
export class EntityComponentStorage {
|
*/
|
||||||
constructor() {
|
export class EntityComponentStorage {
|
||||||
/* typehints:start */
|
constructor() {
|
||||||
|
/* typehints:start */
|
||||||
/** @type {StaticMapEntityComponent} */
|
|
||||||
this.StaticMapEntity;
|
/** @type {StaticMapEntityComponent} */
|
||||||
|
this.StaticMapEntity;
|
||||||
/** @type {BeltComponent} */
|
|
||||||
this.Belt;
|
/** @type {BeltComponent} */
|
||||||
|
this.Belt;
|
||||||
/** @type {ItemEjectorComponent} */
|
|
||||||
this.ItemEjector;
|
/** @type {ItemEjectorComponent} */
|
||||||
|
this.ItemEjector;
|
||||||
/** @type {ItemAcceptorComponent} */
|
|
||||||
this.ItemAcceptor;
|
/** @type {ItemAcceptorComponent} */
|
||||||
|
this.ItemAcceptor;
|
||||||
/** @type {MinerComponent} */
|
|
||||||
this.Miner;
|
/** @type {MinerComponent} */
|
||||||
|
this.Miner;
|
||||||
/** @type {ItemProcessorComponent} */
|
|
||||||
this.ItemProcessor;
|
/** @type {ItemProcessorComponent} */
|
||||||
|
this.ItemProcessor;
|
||||||
/** @type {UndergroundBeltComponent} */
|
|
||||||
this.UndergroundBelt;
|
/** @type {UndergroundBeltComponent} */
|
||||||
|
this.UndergroundBelt;
|
||||||
/** @type {HubComponent} */
|
|
||||||
this.Hub;
|
/** @type {HubComponent} */
|
||||||
|
this.Hub;
|
||||||
/** @type {StorageComponent} */
|
|
||||||
this.Storage;
|
/** @type {StorageComponent} */
|
||||||
|
this.Storage;
|
||||||
/** @type {WiredPinsComponent} */
|
|
||||||
this.WiredPins;
|
/** @type {WiredPinsComponent} */
|
||||||
|
this.WiredPins;
|
||||||
/** @type {BeltUnderlaysComponent} */
|
|
||||||
this.BeltUnderlays;
|
/** @type {BeltUnderlaysComponent} */
|
||||||
|
this.BeltUnderlays;
|
||||||
/** @type {WireComponent} */
|
|
||||||
this.Wire;
|
/** @type {WireComponent} */
|
||||||
|
this.Wire;
|
||||||
/** @type {ConstantSignalComponent} */
|
|
||||||
this.ConstantSignal;
|
/** @type {ConstantSignalComponent} */
|
||||||
|
this.ConstantSignal;
|
||||||
/** @type {LogicGateComponent} */
|
|
||||||
this.LogicGate;
|
/** @type {LogicGateComponent} */
|
||||||
|
this.LogicGate;
|
||||||
/** @type {LeverComponent} */
|
|
||||||
this.Lever;
|
/** @type {LeverComponent} */
|
||||||
|
this.Lever;
|
||||||
/** @type {WireTunnelComponent} */
|
|
||||||
this.WireTunnel;
|
/** @type {WireTunnelComponent} */
|
||||||
|
this.WireTunnel;
|
||||||
/** @type {DisplayComponent} */
|
|
||||||
this.Display;
|
/** @type {DisplayComponent} */
|
||||||
|
this.Display;
|
||||||
/* typehints:end */
|
|
||||||
}
|
/** @type {BeltReaderComponent} */
|
||||||
}
|
this.BeltReader;
|
||||||
|
|
||||||
|
/* typehints:end */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -21,6 +21,7 @@ import { LogicGateSystem } from "./systems/logic_gate";
|
|||||||
import { LeverSystem } from "./systems/lever";
|
import { LeverSystem } from "./systems/lever";
|
||||||
import { DisplaySystem } from "./systems/display";
|
import { DisplaySystem } from "./systems/display";
|
||||||
import { ItemProcessorOverlaysSystem } from "./systems/item_processor_overlays";
|
import { ItemProcessorOverlaysSystem } from "./systems/item_processor_overlays";
|
||||||
|
import { BeltReaderSystem } from "./systems/belt_reader";
|
||||||
|
|
||||||
const logger = createLogger("game_system_manager");
|
const logger = createLogger("game_system_manager");
|
||||||
|
|
||||||
@ -88,6 +89,9 @@ export class GameSystemManager {
|
|||||||
/** @type {ItemProcessorOverlaysSystem} */
|
/** @type {ItemProcessorOverlaysSystem} */
|
||||||
itemProcessorOverlays: null,
|
itemProcessorOverlays: null,
|
||||||
|
|
||||||
|
/** @type {BeltReaderSystem} */
|
||||||
|
beltReader: null,
|
||||||
|
|
||||||
/* typehints:end */
|
/* typehints:end */
|
||||||
};
|
};
|
||||||
this.systemUpdateOrder = [];
|
this.systemUpdateOrder = [];
|
||||||
@ -141,6 +145,7 @@ export class GameSystemManager {
|
|||||||
// IMPORTANT: We have 2 phases: In phase 1 we compute the output values of all gates,
|
// IMPORTANT: We have 2 phases: In phase 1 we compute the output values of all gates,
|
||||||
// processors etc. In phase 2 we propagate it through the wires network
|
// processors etc. In phase 2 we propagate it through the wires network
|
||||||
add("logicGate", LogicGateSystem);
|
add("logicGate", LogicGateSystem);
|
||||||
|
add("beltReader", BeltReaderSystem);
|
||||||
|
|
||||||
// Wires must be after all gate, signal etc logic!
|
// Wires must be after all gate, signal etc logic!
|
||||||
add("wire", WireSystem);
|
add("wire", WireSystem);
|
||||||
|
@ -1,447 +1,448 @@
|
|||||||
import { globalConfig } from "../core/config";
|
import { globalConfig } from "../core/config";
|
||||||
import { clamp, findNiceIntegerValue, randomChoice, randomInt } from "../core/utils";
|
import { clamp, findNiceIntegerValue, randomChoice, randomInt } from "../core/utils";
|
||||||
import { BasicSerializableObject, types } from "../savegame/serialization";
|
import { BasicSerializableObject, types } from "../savegame/serialization";
|
||||||
import { enumColors } from "./colors";
|
import { enumColors } from "./colors";
|
||||||
import { enumItemProcessorTypes } from "./components/item_processor";
|
import { enumItemProcessorTypes } from "./components/item_processor";
|
||||||
import { GameRoot } from "./root";
|
import { GameRoot } from "./root";
|
||||||
import { enumSubShape, ShapeDefinition } from "./shape_definition";
|
import { enumSubShape, ShapeDefinition } from "./shape_definition";
|
||||||
import { enumHubGoalRewards, tutorialGoals } from "./tutorial_goals";
|
import { enumHubGoalRewards, tutorialGoals } from "./tutorial_goals";
|
||||||
import { UPGRADES } from "./upgrades";
|
import { UPGRADES } from "./upgrades";
|
||||||
|
|
||||||
export class HubGoals extends BasicSerializableObject {
|
export class HubGoals extends BasicSerializableObject {
|
||||||
static getId() {
|
static getId() {
|
||||||
return "HubGoals";
|
return "HubGoals";
|
||||||
}
|
}
|
||||||
|
|
||||||
static getSchema() {
|
static getSchema() {
|
||||||
return {
|
return {
|
||||||
level: types.uint,
|
level: types.uint,
|
||||||
storedShapes: types.keyValueMap(types.uint),
|
storedShapes: types.keyValueMap(types.uint),
|
||||||
upgradeLevels: types.keyValueMap(types.uint),
|
upgradeLevels: types.keyValueMap(types.uint),
|
||||||
|
|
||||||
currentGoal: types.structured({
|
currentGoal: types.structured({
|
||||||
definition: types.knownType(ShapeDefinition),
|
definition: types.knownType(ShapeDefinition),
|
||||||
required: types.uint,
|
required: types.uint,
|
||||||
reward: types.nullable(types.enum(enumHubGoalRewards)),
|
reward: types.nullable(types.enum(enumHubGoalRewards)),
|
||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
deserialize(data) {
|
deserialize(data) {
|
||||||
const errorCode = super.deserialize(data);
|
const errorCode = super.deserialize(data);
|
||||||
if (errorCode) {
|
if (errorCode) {
|
||||||
return errorCode;
|
return errorCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compute gained rewards
|
// Compute gained rewards
|
||||||
for (let i = 0; i < this.level - 1; ++i) {
|
for (let i = 0; i < this.level - 1; ++i) {
|
||||||
if (i < tutorialGoals.length) {
|
if (i < tutorialGoals.length) {
|
||||||
const reward = tutorialGoals[i].reward;
|
const reward = tutorialGoals[i].reward;
|
||||||
this.gainedRewards[reward] = (this.gainedRewards[reward] || 0) + 1;
|
this.gainedRewards[reward] = (this.gainedRewards[reward] || 0) + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compute upgrade improvements
|
// Compute upgrade improvements
|
||||||
for (const upgradeId in UPGRADES) {
|
for (const upgradeId in UPGRADES) {
|
||||||
const upgradeHandle = UPGRADES[upgradeId];
|
const upgradeHandle = UPGRADES[upgradeId];
|
||||||
const level = this.upgradeLevels[upgradeId] || 0;
|
const level = this.upgradeLevels[upgradeId] || 0;
|
||||||
let totalImprovement = upgradeHandle.baseValue || 1;
|
let totalImprovement = upgradeHandle.baseValue || 1;
|
||||||
for (let i = 0; i < level; ++i) {
|
for (let i = 0; i < level; ++i) {
|
||||||
totalImprovement += upgradeHandle.tiers[i].improvement;
|
totalImprovement += upgradeHandle.tiers[i].improvement;
|
||||||
}
|
}
|
||||||
this.upgradeImprovements[upgradeId] = totalImprovement;
|
this.upgradeImprovements[upgradeId] = totalImprovement;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compute current goal
|
// Compute current goal
|
||||||
const goal = tutorialGoals[this.level - 1];
|
const goal = tutorialGoals[this.level - 1];
|
||||||
if (goal) {
|
if (goal) {
|
||||||
this.currentGoal = {
|
this.currentGoal = {
|
||||||
/** @type {ShapeDefinition} */
|
/** @type {ShapeDefinition} */
|
||||||
definition: this.root.shapeDefinitionMgr.getShapeFromShortKey(goal.shape),
|
definition: this.root.shapeDefinitionMgr.getShapeFromShortKey(goal.shape),
|
||||||
required: goal.required,
|
required: goal.required,
|
||||||
reward: goal.reward,
|
reward: goal.reward,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {GameRoot} root
|
* @param {GameRoot} root
|
||||||
*/
|
*/
|
||||||
constructor(root) {
|
constructor(root) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
this.root = root;
|
this.root = root;
|
||||||
|
|
||||||
this.level = 1;
|
this.level = 1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Which story rewards we already gained
|
* Which story rewards we already gained
|
||||||
* @type {Object.<string, number>}
|
* @type {Object.<string, number>}
|
||||||
*/
|
*/
|
||||||
this.gainedRewards = {};
|
this.gainedRewards = {};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mapping from shape hash -> amount
|
* Mapping from shape hash -> amount
|
||||||
* @type {Object<string, number>}
|
* @type {Object<string, number>}
|
||||||
*/
|
*/
|
||||||
this.storedShapes = {};
|
this.storedShapes = {};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stores the levels for all upgrades
|
* Stores the levels for all upgrades
|
||||||
* @type {Object<string, number>}
|
* @type {Object<string, number>}
|
||||||
*/
|
*/
|
||||||
this.upgradeLevels = {};
|
this.upgradeLevels = {};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stores the improvements for all upgrades
|
* Stores the improvements for all upgrades
|
||||||
* @type {Object<string, number>}
|
* @type {Object<string, number>}
|
||||||
*/
|
*/
|
||||||
this.upgradeImprovements = {};
|
this.upgradeImprovements = {};
|
||||||
for (const key in UPGRADES) {
|
for (const key in UPGRADES) {
|
||||||
this.upgradeImprovements[key] = UPGRADES[key].baseValue || 1;
|
this.upgradeImprovements[key] = UPGRADES[key].baseValue || 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.createNextGoal();
|
this.createNextGoal();
|
||||||
|
|
||||||
// Allow quickly switching goals in dev mode
|
// Allow quickly switching goals in dev mode
|
||||||
if (G_IS_DEV) {
|
if (G_IS_DEV) {
|
||||||
window.addEventListener("keydown", ev => {
|
window.addEventListener("keydown", ev => {
|
||||||
if (ev.key === "b") {
|
if (ev.key === "b") {
|
||||||
// root is not guaranteed to exist within ~0.5s after loading in
|
// root is not guaranteed to exist within ~0.5s after loading in
|
||||||
if (this.root && this.root.app && this.root.app.gameAnalytics) {
|
if (this.root && this.root.app && this.root.app.gameAnalytics) {
|
||||||
this.onGoalCompleted();
|
this.onGoalCompleted();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns how much of the current shape is stored
|
* Returns how much of the current shape is stored
|
||||||
* @param {ShapeDefinition} definition
|
* @param {ShapeDefinition} definition
|
||||||
* @returns {number}
|
* @returns {number}
|
||||||
*/
|
*/
|
||||||
getShapesStored(definition) {
|
getShapesStored(definition) {
|
||||||
return this.storedShapes[definition.getHash()] || 0;
|
return this.storedShapes[definition.getHash()] || 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string} key
|
* @param {string} key
|
||||||
* @param {number} amount
|
* @param {number} amount
|
||||||
*/
|
*/
|
||||||
takeShapeByKey(key, amount) {
|
takeShapeByKey(key, amount) {
|
||||||
assert(this.getShapesStoredByKey(key) >= amount, "Can not afford: " + key + " x " + amount);
|
assert(this.getShapesStoredByKey(key) >= amount, "Can not afford: " + key + " x " + amount);
|
||||||
assert(amount >= 0, "Amount < 0 for " + key);
|
assert(amount >= 0, "Amount < 0 for " + key);
|
||||||
assert(Number.isInteger(amount), "Invalid amount: " + amount);
|
assert(Number.isInteger(amount), "Invalid amount: " + amount);
|
||||||
this.storedShapes[key] = (this.storedShapes[key] || 0) - amount;
|
this.storedShapes[key] = (this.storedShapes[key] || 0) - amount;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns how much of the current shape is stored
|
* Returns how much of the current shape is stored
|
||||||
* @param {string} key
|
* @param {string} key
|
||||||
* @returns {number}
|
* @returns {number}
|
||||||
*/
|
*/
|
||||||
getShapesStoredByKey(key) {
|
getShapesStoredByKey(key) {
|
||||||
return this.storedShapes[key] || 0;
|
return this.storedShapes[key] || 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns how much of the current goal was already delivered
|
* Returns how much of the current goal was already delivered
|
||||||
*/
|
*/
|
||||||
getCurrentGoalDelivered() {
|
getCurrentGoalDelivered() {
|
||||||
return this.getShapesStored(this.currentGoal.definition);
|
return this.getShapesStored(this.currentGoal.definition);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the current level of a given upgrade
|
* Returns the current level of a given upgrade
|
||||||
* @param {string} upgradeId
|
* @param {string} upgradeId
|
||||||
*/
|
*/
|
||||||
getUpgradeLevel(upgradeId) {
|
getUpgradeLevel(upgradeId) {
|
||||||
return this.upgradeLevels[upgradeId] || 0;
|
return this.upgradeLevels[upgradeId] || 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns whether the given reward is already unlocked
|
* Returns whether the given reward is already unlocked
|
||||||
* @param {enumHubGoalRewards} reward
|
* @param {enumHubGoalRewards} reward
|
||||||
*/
|
*/
|
||||||
isRewardUnlocked(reward) {
|
isRewardUnlocked(reward) {
|
||||||
if (G_IS_DEV && globalConfig.debug.allBuildingsUnlocked) {
|
if (G_IS_DEV && globalConfig.debug.allBuildingsUnlocked) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return !!this.gainedRewards[reward];
|
return !!this.gainedRewards[reward];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles the given definition, by either accounting it towards the
|
* Handles the given definition, by either accounting it towards the
|
||||||
* goal or otherwise granting some points
|
* goal or otherwise granting some points
|
||||||
* @param {ShapeDefinition} definition
|
* @param {ShapeDefinition} definition
|
||||||
*/
|
*/
|
||||||
handleDefinitionDelivered(definition) {
|
handleDefinitionDelivered(definition) {
|
||||||
const hash = definition.getHash();
|
const hash = definition.getHash();
|
||||||
this.storedShapes[hash] = (this.storedShapes[hash] || 0) + 1;
|
this.storedShapes[hash] = (this.storedShapes[hash] || 0) + 1;
|
||||||
|
|
||||||
this.root.signals.shapeDelivered.dispatch(definition);
|
this.root.signals.shapeDelivered.dispatch(definition);
|
||||||
|
|
||||||
// Check if we have enough for the next level
|
// Check if we have enough for the next level
|
||||||
const targetHash = this.currentGoal.definition.getHash();
|
const targetHash = this.currentGoal.definition.getHash();
|
||||||
if (
|
if (
|
||||||
this.storedShapes[targetHash] >= this.currentGoal.required ||
|
this.storedShapes[targetHash] >= this.currentGoal.required ||
|
||||||
(G_IS_DEV && globalConfig.debug.rewardsInstant)
|
(G_IS_DEV && globalConfig.debug.rewardsInstant)
|
||||||
) {
|
) {
|
||||||
this.onGoalCompleted();
|
this.onGoalCompleted();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates the next goal
|
* Creates the next goal
|
||||||
*/
|
*/
|
||||||
createNextGoal() {
|
createNextGoal() {
|
||||||
const storyIndex = this.level - 1;
|
const storyIndex = this.level - 1;
|
||||||
if (storyIndex < tutorialGoals.length) {
|
if (storyIndex < tutorialGoals.length) {
|
||||||
const { shape, required, reward } = tutorialGoals[storyIndex];
|
const { shape, required, reward } = tutorialGoals[storyIndex];
|
||||||
this.currentGoal = {
|
this.currentGoal = {
|
||||||
/** @type {ShapeDefinition} */
|
/** @type {ShapeDefinition} */
|
||||||
definition: this.root.shapeDefinitionMgr.getShapeFromShortKey(shape),
|
definition: this.root.shapeDefinitionMgr.getShapeFromShortKey(shape),
|
||||||
required,
|
required,
|
||||||
reward,
|
reward,
|
||||||
};
|
};
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.currentGoal = {
|
this.currentGoal = {
|
||||||
/** @type {ShapeDefinition} */
|
/** @type {ShapeDefinition} */
|
||||||
definition: this.createRandomShape(),
|
definition: this.createRandomShape(),
|
||||||
required: 10000 + findNiceIntegerValue(this.level * 2000),
|
required: 10000 + findNiceIntegerValue(this.level * 2000),
|
||||||
reward: enumHubGoalRewards.no_reward_freeplay,
|
reward: enumHubGoalRewards.no_reward_freeplay,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when the level was completed
|
* Called when the level was completed
|
||||||
*/
|
*/
|
||||||
onGoalCompleted() {
|
onGoalCompleted() {
|
||||||
const reward = this.currentGoal.reward;
|
const reward = this.currentGoal.reward;
|
||||||
this.gainedRewards[reward] = (this.gainedRewards[reward] || 0) + 1;
|
this.gainedRewards[reward] = (this.gainedRewards[reward] || 0) + 1;
|
||||||
|
|
||||||
this.root.app.gameAnalytics.handleLevelCompleted(this.level);
|
this.root.app.gameAnalytics.handleLevelCompleted(this.level);
|
||||||
++this.level;
|
++this.level;
|
||||||
this.createNextGoal();
|
this.createNextGoal();
|
||||||
|
|
||||||
this.root.signals.storyGoalCompleted.dispatch(this.level - 1, reward);
|
this.root.signals.storyGoalCompleted.dispatch(this.level - 1, reward);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns whether we are playing in free-play
|
* Returns whether we are playing in free-play
|
||||||
*/
|
*/
|
||||||
isFreePlay() {
|
isFreePlay() {
|
||||||
return this.level >= tutorialGoals.length;
|
return this.level >= tutorialGoals.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns whether a given upgrade can be unlocked
|
* Returns whether a given upgrade can be unlocked
|
||||||
* @param {string} upgradeId
|
* @param {string} upgradeId
|
||||||
*/
|
*/
|
||||||
canUnlockUpgrade(upgradeId) {
|
canUnlockUpgrade(upgradeId) {
|
||||||
const handle = UPGRADES[upgradeId];
|
const handle = UPGRADES[upgradeId];
|
||||||
const currentLevel = this.getUpgradeLevel(upgradeId);
|
const currentLevel = this.getUpgradeLevel(upgradeId);
|
||||||
|
|
||||||
if (currentLevel >= handle.tiers.length) {
|
if (currentLevel >= handle.tiers.length) {
|
||||||
// Max level
|
// Max level
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (G_IS_DEV && globalConfig.debug.upgradesNoCost) {
|
if (G_IS_DEV && globalConfig.debug.upgradesNoCost) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
const tierData = handle.tiers[currentLevel];
|
const tierData = handle.tiers[currentLevel];
|
||||||
|
|
||||||
for (let i = 0; i < tierData.required.length; ++i) {
|
for (let i = 0; i < tierData.required.length; ++i) {
|
||||||
const requirement = tierData.required[i];
|
const requirement = tierData.required[i];
|
||||||
if ((this.storedShapes[requirement.shape] || 0) < requirement.amount) {
|
if ((this.storedShapes[requirement.shape] || 0) < requirement.amount) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the number of available upgrades
|
* Returns the number of available upgrades
|
||||||
* @returns {number}
|
* @returns {number}
|
||||||
*/
|
*/
|
||||||
getAvailableUpgradeCount() {
|
getAvailableUpgradeCount() {
|
||||||
let count = 0;
|
let count = 0;
|
||||||
for (const upgradeId in UPGRADES) {
|
for (const upgradeId in UPGRADES) {
|
||||||
if (this.canUnlockUpgrade(upgradeId)) {
|
if (this.canUnlockUpgrade(upgradeId)) {
|
||||||
++count;
|
++count;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tries to unlock the given upgrade
|
* Tries to unlock the given upgrade
|
||||||
* @param {string} upgradeId
|
* @param {string} upgradeId
|
||||||
* @returns {boolean}
|
* @returns {boolean}
|
||||||
*/
|
*/
|
||||||
tryUnlockUpgrade(upgradeId) {
|
tryUnlockUpgrade(upgradeId) {
|
||||||
if (!this.canUnlockUpgrade(upgradeId)) {
|
if (!this.canUnlockUpgrade(upgradeId)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const handle = UPGRADES[upgradeId];
|
const handle = UPGRADES[upgradeId];
|
||||||
const currentLevel = this.getUpgradeLevel(upgradeId);
|
const currentLevel = this.getUpgradeLevel(upgradeId);
|
||||||
|
|
||||||
const tierData = handle.tiers[currentLevel];
|
const tierData = handle.tiers[currentLevel];
|
||||||
if (!tierData) {
|
if (!tierData) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (G_IS_DEV && globalConfig.debug.upgradesNoCost) {
|
if (G_IS_DEV && globalConfig.debug.upgradesNoCost) {
|
||||||
// Dont take resources
|
// Dont take resources
|
||||||
} else {
|
} else {
|
||||||
for (let i = 0; i < tierData.required.length; ++i) {
|
for (let i = 0; i < tierData.required.length; ++i) {
|
||||||
const requirement = tierData.required[i];
|
const requirement = tierData.required[i];
|
||||||
|
|
||||||
// Notice: Don't have to check for hash here
|
// Notice: Don't have to check for hash here
|
||||||
this.storedShapes[requirement.shape] -= requirement.amount;
|
this.storedShapes[requirement.shape] -= requirement.amount;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.upgradeLevels[upgradeId] = (this.upgradeLevels[upgradeId] || 0) + 1;
|
this.upgradeLevels[upgradeId] = (this.upgradeLevels[upgradeId] || 0) + 1;
|
||||||
this.upgradeImprovements[upgradeId] += tierData.improvement;
|
this.upgradeImprovements[upgradeId] += tierData.improvement;
|
||||||
|
|
||||||
this.root.signals.upgradePurchased.dispatch(upgradeId);
|
this.root.signals.upgradePurchased.dispatch(upgradeId);
|
||||||
|
|
||||||
this.root.app.gameAnalytics.handleUpgradeUnlocked(upgradeId, currentLevel);
|
this.root.app.gameAnalytics.handleUpgradeUnlocked(upgradeId, currentLevel);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @returns {ShapeDefinition}
|
* @returns {ShapeDefinition}
|
||||||
*/
|
*/
|
||||||
createRandomShape() {
|
createRandomShape() {
|
||||||
const layerCount = clamp(this.level / 25, 2, 4);
|
const layerCount = clamp(this.level / 25, 2, 4);
|
||||||
/** @type {Array<import("./shape_definition").ShapeLayer>} */
|
/** @type {Array<import("./shape_definition").ShapeLayer>} */
|
||||||
let layers = [];
|
let layers = [];
|
||||||
|
|
||||||
const randomColor = () => randomChoice(Object.values(enumColors));
|
const randomColor = () => randomChoice(Object.values(enumColors));
|
||||||
const randomShape = () => randomChoice(Object.values(enumSubShape));
|
const randomShape = () => randomChoice(Object.values(enumSubShape));
|
||||||
|
|
||||||
let anyIsMissingTwo = false;
|
let anyIsMissingTwo = false;
|
||||||
|
|
||||||
for (let i = 0; i < layerCount; ++i) {
|
for (let i = 0; i < layerCount; ++i) {
|
||||||
/** @type {import("./shape_definition").ShapeLayer} */
|
/** @type {import("./shape_definition").ShapeLayer} */
|
||||||
const layer = [null, null, null, null];
|
const layer = [null, null, null, null];
|
||||||
|
|
||||||
for (let quad = 0; quad < 4; ++quad) {
|
for (let quad = 0; quad < 4; ++quad) {
|
||||||
layer[quad] = {
|
layer[quad] = {
|
||||||
subShape: randomShape(),
|
subShape: randomShape(),
|
||||||
color: randomColor(),
|
color: randomColor(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sometimes shapes are missing
|
// Sometimes shapes are missing
|
||||||
if (Math.random() > 0.85) {
|
if (Math.random() > 0.85) {
|
||||||
layer[randomInt(0, 3)] = null;
|
layer[randomInt(0, 3)] = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sometimes they actually are missing *two* ones!
|
// Sometimes they actually are missing *two* ones!
|
||||||
// Make sure at max only one layer is missing it though, otherwise we could
|
// Make sure at max only one layer is missing it though, otherwise we could
|
||||||
// create an uncreateable shape
|
// create an uncreateable shape
|
||||||
if (Math.random() > 0.95 && !anyIsMissingTwo) {
|
if (Math.random() > 0.95 && !anyIsMissingTwo) {
|
||||||
layer[randomInt(0, 3)] = null;
|
layer[randomInt(0, 3)] = null;
|
||||||
anyIsMissingTwo = true;
|
anyIsMissingTwo = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
layers.push(layer);
|
layers.push(layer);
|
||||||
}
|
}
|
||||||
|
|
||||||
const definition = new ShapeDefinition({ layers });
|
const definition = new ShapeDefinition({ layers });
|
||||||
return this.root.shapeDefinitionMgr.registerOrReturnHandle(definition);
|
return this.root.shapeDefinitionMgr.registerOrReturnHandle(definition);
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////// HELPERS
|
////////////// HELPERS
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Belt speed
|
* Belt speed
|
||||||
* @returns {number} items / sec
|
* @returns {number} items / sec
|
||||||
*/
|
*/
|
||||||
getBeltBaseSpeed() {
|
getBeltBaseSpeed() {
|
||||||
return globalConfig.beltSpeedItemsPerSecond * this.upgradeImprovements.belt;
|
return globalConfig.beltSpeedItemsPerSecond * this.upgradeImprovements.belt;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Underground belt speed
|
* Underground belt speed
|
||||||
* @returns {number} items / sec
|
* @returns {number} items / sec
|
||||||
*/
|
*/
|
||||||
getUndergroundBeltBaseSpeed() {
|
getUndergroundBeltBaseSpeed() {
|
||||||
return globalConfig.beltSpeedItemsPerSecond * this.upgradeImprovements.belt;
|
return globalConfig.beltSpeedItemsPerSecond * this.upgradeImprovements.belt;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Miner speed
|
* Miner speed
|
||||||
* @returns {number} items / sec
|
* @returns {number} items / sec
|
||||||
*/
|
*/
|
||||||
getMinerBaseSpeed() {
|
getMinerBaseSpeed() {
|
||||||
return globalConfig.minerSpeedItemsPerSecond * this.upgradeImprovements.miner;
|
return globalConfig.minerSpeedItemsPerSecond * this.upgradeImprovements.miner;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Processor speed
|
* Processor speed
|
||||||
* @param {enumItemProcessorTypes} processorType
|
* @param {enumItemProcessorTypes} processorType
|
||||||
* @returns {number} items / sec
|
* @returns {number} items / sec
|
||||||
*/
|
*/
|
||||||
getProcessorBaseSpeed(processorType) {
|
getProcessorBaseSpeed(processorType) {
|
||||||
switch (processorType) {
|
switch (processorType) {
|
||||||
case enumItemProcessorTypes.splitterWires:
|
case enumItemProcessorTypes.splitterWires:
|
||||||
return globalConfig.wiresSpeedItemsPerSecond * 2;
|
return globalConfig.wiresSpeedItemsPerSecond * 2;
|
||||||
|
|
||||||
case enumItemProcessorTypes.trash:
|
case enumItemProcessorTypes.trash:
|
||||||
case enumItemProcessorTypes.hub:
|
case enumItemProcessorTypes.hub:
|
||||||
return 1e30;
|
return 1e30;
|
||||||
case enumItemProcessorTypes.splitter:
|
case enumItemProcessorTypes.splitter:
|
||||||
return globalConfig.beltSpeedItemsPerSecond * this.upgradeImprovements.belt * 2;
|
return globalConfig.beltSpeedItemsPerSecond * this.upgradeImprovements.belt * 2;
|
||||||
case enumItemProcessorTypes.filter:
|
case enumItemProcessorTypes.filter:
|
||||||
return globalConfig.beltSpeedItemsPerSecond * this.upgradeImprovements.belt;
|
case enumItemProcessorTypes.reader:
|
||||||
|
return globalConfig.beltSpeedItemsPerSecond * this.upgradeImprovements.belt;
|
||||||
case enumItemProcessorTypes.mixer:
|
|
||||||
case enumItemProcessorTypes.painter:
|
case enumItemProcessorTypes.mixer:
|
||||||
case enumItemProcessorTypes.painterDouble:
|
case enumItemProcessorTypes.painter:
|
||||||
case enumItemProcessorTypes.painterQuad: {
|
case enumItemProcessorTypes.painterDouble:
|
||||||
assert(
|
case enumItemProcessorTypes.painterQuad: {
|
||||||
globalConfig.buildingSpeeds[processorType],
|
assert(
|
||||||
"Processor type has no speed set in globalConfig.buildingSpeeds: " + processorType
|
globalConfig.buildingSpeeds[processorType],
|
||||||
);
|
"Processor type has no speed set in globalConfig.buildingSpeeds: " + processorType
|
||||||
return (
|
);
|
||||||
globalConfig.beltSpeedItemsPerSecond *
|
return (
|
||||||
this.upgradeImprovements.painting *
|
globalConfig.beltSpeedItemsPerSecond *
|
||||||
globalConfig.buildingSpeeds[processorType]
|
this.upgradeImprovements.painting *
|
||||||
);
|
globalConfig.buildingSpeeds[processorType]
|
||||||
}
|
);
|
||||||
|
}
|
||||||
case enumItemProcessorTypes.cutter:
|
|
||||||
case enumItemProcessorTypes.cutterQuad:
|
case enumItemProcessorTypes.cutter:
|
||||||
case enumItemProcessorTypes.rotater:
|
case enumItemProcessorTypes.cutterQuad:
|
||||||
case enumItemProcessorTypes.rotaterCCW:
|
case enumItemProcessorTypes.rotater:
|
||||||
case enumItemProcessorTypes.rotaterFL:
|
case enumItemProcessorTypes.rotaterCCW:
|
||||||
case enumItemProcessorTypes.stacker: {
|
case enumItemProcessorTypes.rotaterFL:
|
||||||
assert(
|
case enumItemProcessorTypes.stacker: {
|
||||||
globalConfig.buildingSpeeds[processorType],
|
assert(
|
||||||
"Processor type has no speed set in globalConfig.buildingSpeeds: " + processorType
|
globalConfig.buildingSpeeds[processorType],
|
||||||
);
|
"Processor type has no speed set in globalConfig.buildingSpeeds: " + processorType
|
||||||
return (
|
);
|
||||||
globalConfig.beltSpeedItemsPerSecond *
|
return (
|
||||||
this.upgradeImprovements.processors *
|
globalConfig.beltSpeedItemsPerSecond *
|
||||||
globalConfig.buildingSpeeds[processorType]
|
this.upgradeImprovements.processors *
|
||||||
);
|
globalConfig.buildingSpeeds[processorType]
|
||||||
}
|
);
|
||||||
default:
|
}
|
||||||
assertAlways(false, "invalid processor type: " + processorType);
|
default:
|
||||||
}
|
assertAlways(false, "invalid processor type: " + processorType);
|
||||||
|
}
|
||||||
return 1 / globalConfig.beltSpeedItemsPerSecond;
|
|
||||||
}
|
return 1 / globalConfig.beltSpeedItemsPerSecond;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
@ -1,41 +1,43 @@
|
|||||||
import { MetaBeltBaseBuilding } from "../../buildings/belt_base";
|
import { MetaBeltBaseBuilding } from "../../buildings/belt_base";
|
||||||
import { MetaCutterBuilding } from "../../buildings/cutter";
|
import { MetaCutterBuilding } from "../../buildings/cutter";
|
||||||
import { MetaMinerBuilding } from "../../buildings/miner";
|
import { MetaMinerBuilding } from "../../buildings/miner";
|
||||||
import { MetaMixerBuilding } from "../../buildings/mixer";
|
import { MetaMixerBuilding } from "../../buildings/mixer";
|
||||||
import { MetaPainterBuilding } from "../../buildings/painter";
|
import { MetaPainterBuilding } from "../../buildings/painter";
|
||||||
import { MetaRotaterBuilding } from "../../buildings/rotater";
|
import { MetaRotaterBuilding } from "../../buildings/rotater";
|
||||||
import { MetaSplitterBuilding } from "../../buildings/splitter";
|
import { MetaSplitterBuilding } from "../../buildings/splitter";
|
||||||
import { MetaStackerBuilding } from "../../buildings/stacker";
|
import { MetaStackerBuilding } from "../../buildings/stacker";
|
||||||
import { MetaTrashBuilding } from "../../buildings/trash";
|
import { MetaTrashBuilding } from "../../buildings/trash";
|
||||||
import { MetaUndergroundBeltBuilding } from "../../buildings/underground_belt";
|
import { MetaUndergroundBeltBuilding } from "../../buildings/underground_belt";
|
||||||
import { HUDBaseToolbar } from "./base_toolbar";
|
import { HUDBaseToolbar } from "./base_toolbar";
|
||||||
import { MetaLeverBuilding } from "../../buildings/lever";
|
import { MetaLeverBuilding } from "../../buildings/lever";
|
||||||
import { MetaFilterBuilding } from "../../buildings/filter";
|
import { MetaFilterBuilding } from "../../buildings/filter";
|
||||||
import { MetaDisplayBuilding } from "../../buildings/display";
|
import { MetaDisplayBuilding } from "../../buildings/display";
|
||||||
|
import { MetaReaderBuilding } from "../../buildings/reader";
|
||||||
const supportedBuildings = [
|
|
||||||
MetaBeltBaseBuilding,
|
const supportedBuildings = [
|
||||||
MetaSplitterBuilding,
|
MetaBeltBaseBuilding,
|
||||||
MetaUndergroundBeltBuilding,
|
MetaSplitterBuilding,
|
||||||
MetaMinerBuilding,
|
MetaUndergroundBeltBuilding,
|
||||||
MetaCutterBuilding,
|
MetaMinerBuilding,
|
||||||
MetaRotaterBuilding,
|
MetaCutterBuilding,
|
||||||
MetaStackerBuilding,
|
MetaRotaterBuilding,
|
||||||
MetaMixerBuilding,
|
MetaStackerBuilding,
|
||||||
MetaPainterBuilding,
|
MetaMixerBuilding,
|
||||||
MetaTrashBuilding,
|
MetaPainterBuilding,
|
||||||
MetaLeverBuilding,
|
MetaTrashBuilding,
|
||||||
MetaFilterBuilding,
|
MetaLeverBuilding,
|
||||||
MetaDisplayBuilding,
|
MetaFilterBuilding,
|
||||||
];
|
MetaDisplayBuilding,
|
||||||
|
MetaReaderBuilding,
|
||||||
export class HUDBuildingsToolbar extends HUDBaseToolbar {
|
];
|
||||||
constructor(root) {
|
|
||||||
super(root, {
|
export class HUDBuildingsToolbar extends HUDBaseToolbar {
|
||||||
supportedBuildings,
|
constructor(root) {
|
||||||
visibilityCondition: () =>
|
super(root, {
|
||||||
!this.root.camera.getIsMapOverlayActive() && this.root.currentLayer === "regular",
|
supportedBuildings,
|
||||||
htmlElementId: "ingame_HUD_buildings_toolbar",
|
visibilityCondition: () =>
|
||||||
});
|
!this.root.camera.getIsMapOverlayActive() && this.root.currentLayer === "regular",
|
||||||
}
|
htmlElementId: "ingame_HUD_buildings_toolbar",
|
||||||
}
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -58,6 +58,7 @@ export const KEYMAPPINGS = {
|
|||||||
lever: { keyCode: key("L") },
|
lever: { keyCode: key("L") },
|
||||||
filter: { keyCode: key("B") },
|
filter: { keyCode: key("B") },
|
||||||
display: { keyCode: key("N") },
|
display: { keyCode: key("N") },
|
||||||
|
reader: { keyCode: key("J") },
|
||||||
|
|
||||||
wire: { keyCode: key("1") },
|
wire: { keyCode: key("1") },
|
||||||
wire_tunnel: { keyCode: key("2") },
|
wire_tunnel: { keyCode: key("2") },
|
||||||
|
@ -22,6 +22,7 @@ import { MetaFilterBuilding } from "./buildings/filter";
|
|||||||
import { MetaWireTunnelBuilding, enumWireTunnelVariants } from "./buildings/wire_tunnel";
|
import { MetaWireTunnelBuilding, enumWireTunnelVariants } from "./buildings/wire_tunnel";
|
||||||
import { MetaDisplayBuilding } from "./buildings/display";
|
import { MetaDisplayBuilding } from "./buildings/display";
|
||||||
import { MetaVirtualProcessorBuilding, enumVirtualProcessorVariants } from "./buildings/virtual_processor";
|
import { MetaVirtualProcessorBuilding, enumVirtualProcessorVariants } from "./buildings/virtual_processor";
|
||||||
|
import { MetaReaderBuilding } from "./buildings/reader";
|
||||||
|
|
||||||
const logger = createLogger("building_registry");
|
const logger = createLogger("building_registry");
|
||||||
|
|
||||||
@ -45,6 +46,7 @@ export function initMetaBuildingRegistry() {
|
|||||||
gMetaBuildingRegistry.register(MetaWireTunnelBuilding);
|
gMetaBuildingRegistry.register(MetaWireTunnelBuilding);
|
||||||
gMetaBuildingRegistry.register(MetaDisplayBuilding);
|
gMetaBuildingRegistry.register(MetaDisplayBuilding);
|
||||||
gMetaBuildingRegistry.register(MetaVirtualProcessorBuilding);
|
gMetaBuildingRegistry.register(MetaVirtualProcessorBuilding);
|
||||||
|
gMetaBuildingRegistry.register(MetaReaderBuilding);
|
||||||
|
|
||||||
// Belt
|
// Belt
|
||||||
registerBuildingVariant(1, MetaBeltBaseBuilding, defaultBuildingVariant, 0);
|
registerBuildingVariant(1, MetaBeltBaseBuilding, defaultBuildingVariant, 0);
|
||||||
@ -132,6 +134,9 @@ export function initMetaBuildingRegistry() {
|
|||||||
registerBuildingVariant(45, MetaVirtualProcessorBuilding, enumVirtualProcessorVariants.unstacker);
|
registerBuildingVariant(45, MetaVirtualProcessorBuilding, enumVirtualProcessorVariants.unstacker);
|
||||||
registerBuildingVariant(46, MetaVirtualProcessorBuilding, enumVirtualProcessorVariants.shapecompare);
|
registerBuildingVariant(46, MetaVirtualProcessorBuilding, enumVirtualProcessorVariants.shapecompare);
|
||||||
|
|
||||||
|
// Reader
|
||||||
|
registerBuildingVariant(49, MetaReaderBuilding);
|
||||||
|
|
||||||
// Propagate instances
|
// Propagate instances
|
||||||
for (const key in gBuildingVariants) {
|
for (const key in gBuildingVariants) {
|
||||||
gBuildingVariants[key].metaInstance = gMetaBuildingRegistry.findByClass(
|
gBuildingVariants[key].metaInstance = gMetaBuildingRegistry.findByClass(
|
||||||
|
40
src/js/game/systems/belt_reader.js
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
import { GameSystemWithFilter } from "../game_system_with_filter";
|
||||||
|
import { BeltReaderComponent } from "../components/belt_reader";
|
||||||
|
import { globalConfig } from "../../core/config";
|
||||||
|
import { BOOL_TRUE_SINGLETON, BOOL_FALSE_SINGLETON } from "../items/boolean_item";
|
||||||
|
|
||||||
|
export class BeltReaderSystem extends GameSystemWithFilter {
|
||||||
|
constructor(root) {
|
||||||
|
super(root, [BeltReaderComponent]);
|
||||||
|
}
|
||||||
|
|
||||||
|
update() {
|
||||||
|
const now = this.root.time.now();
|
||||||
|
const minimumTime = now - globalConfig.readerAnalyzeIntervalSeconds;
|
||||||
|
const minimumTimeForThroughput = now - 1;
|
||||||
|
for (let i = 0; i < this.allEntities.length; ++i) {
|
||||||
|
const entity = this.allEntities[i];
|
||||||
|
|
||||||
|
const readerComp = entity.components.BeltReader;
|
||||||
|
const pinsComp = entity.components.WiredPins;
|
||||||
|
|
||||||
|
// Remove outdated items
|
||||||
|
while (readerComp.lastItemTimes[0] < minimumTime) {
|
||||||
|
readerComp.lastItemTimes.shift();
|
||||||
|
}
|
||||||
|
|
||||||
|
pinsComp.slots[1].value = readerComp.lastItem;
|
||||||
|
pinsComp.slots[0].value =
|
||||||
|
(readerComp.lastItemTimes[readerComp.lastItemTimes.length - 1] || 0) >
|
||||||
|
minimumTimeForThroughput
|
||||||
|
? BOOL_TRUE_SINGLETON
|
||||||
|
: BOOL_FALSE_SINGLETON;
|
||||||
|
|
||||||
|
if (now - readerComp.lastThroughputComputation > 0.5) {
|
||||||
|
readerComp.lastThroughputComputation = now;
|
||||||
|
readerComp.lastThroughput =
|
||||||
|
readerComp.lastItemTimes.length / globalConfig.readerAnalyzeIntervalSeconds;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -8,7 +8,7 @@ import {
|
|||||||
} from "../components/item_processor";
|
} from "../components/item_processor";
|
||||||
import { Entity } from "../entity";
|
import { Entity } from "../entity";
|
||||||
import { GameSystemWithFilter } from "../game_system_with_filter";
|
import { GameSystemWithFilter } from "../game_system_with_filter";
|
||||||
import { BOOL_TRUE_SINGLETON, isTrueItem } from "../items/boolean_item";
|
import { BOOL_TRUE_SINGLETON, isTrueItem, BooleanItem } from "../items/boolean_item";
|
||||||
import { ColorItem, COLOR_ITEM_SINGLETONS } from "../items/color_item";
|
import { ColorItem, COLOR_ITEM_SINGLETONS } from "../items/color_item";
|
||||||
import { ShapeItem } from "../items/shape_item";
|
import { ShapeItem } from "../items/shape_item";
|
||||||
|
|
||||||
@ -506,8 +506,20 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// HUB
|
// READER
|
||||||
|
case enumItemProcessorTypes.reader: {
|
||||||
|
// Pass through the item
|
||||||
|
const item = itemsBySlot[0].item;
|
||||||
|
outItems.push({ item });
|
||||||
|
|
||||||
|
// Track the item
|
||||||
|
const readerComp = entity.components.BeltReader;
|
||||||
|
readerComp.lastItemTimes.push(this.root.time.now());
|
||||||
|
readerComp.lastItem = item;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// HUB
|
||||||
case enumItemProcessorTypes.hub: {
|
case enumItemProcessorTypes.hub: {
|
||||||
trackProduction = false;
|
trackProduction = false;
|
||||||
|
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
import { GameSystem } from "../game_system";
|
|
||||||
import { MapChunkView } from "../map_chunk_view";
|
|
||||||
import { enumItemProcessorRequirements } from "../components/item_processor";
|
|
||||||
import { Entity } from "../entity";
|
|
||||||
import { isTrueItem } from "../items/boolean_item";
|
|
||||||
import { globalConfig } from "../../core/config";
|
import { globalConfig } from "../../core/config";
|
||||||
import { Loader } from "../../core/loader";
|
import { Loader } from "../../core/loader";
|
||||||
import { smoothPulse } from "../../core/utils";
|
import { smoothPulse } from "../../core/utils";
|
||||||
|
import { enumItemProcessorRequirements, enumItemProcessorTypes } from "../components/item_processor";
|
||||||
|
import { Entity } from "../entity";
|
||||||
|
import { GameSystem } from "../game_system";
|
||||||
|
import { isTrueItem } from "../items/boolean_item";
|
||||||
|
import { MapChunkView } from "../map_chunk_view";
|
||||||
|
|
||||||
export class ItemProcessorOverlaysSystem extends GameSystem {
|
export class ItemProcessorOverlaysSystem extends GameSystem {
|
||||||
constructor(root) {
|
constructor(root) {
|
||||||
@ -14,6 +14,8 @@ export class ItemProcessorOverlaysSystem extends GameSystem {
|
|||||||
this.spriteDisabled = Loader.getSprite("sprites/misc/processor_disabled.png");
|
this.spriteDisabled = Loader.getSprite("sprites/misc/processor_disabled.png");
|
||||||
this.spriteDisconnected = Loader.getSprite("sprites/misc/processor_disconnected.png");
|
this.spriteDisconnected = Loader.getSprite("sprites/misc/processor_disconnected.png");
|
||||||
|
|
||||||
|
this.readerOverlaySprite = Loader.getSprite("sprites/misc/reader_overlay.png");
|
||||||
|
|
||||||
this.drawnUids = new Set();
|
this.drawnUids = new Set();
|
||||||
|
|
||||||
this.root.signals.gameFrameStarted.add(this.clearDrawnUids, this);
|
this.root.signals.gameFrameStarted.add(this.clearDrawnUids, this);
|
||||||
@ -38,7 +40,8 @@ export class ItemProcessorOverlaysSystem extends GameSystem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const requirement = processorComp.processingRequirement;
|
const requirement = processorComp.processingRequirement;
|
||||||
if (!requirement) {
|
|
||||||
|
if (!requirement && processorComp.type !== enumItemProcessorTypes.reader) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,9 +61,41 @@ export class ItemProcessorOverlaysSystem extends GameSystem {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (processorComp.type === enumItemProcessorTypes.reader) {
|
||||||
|
this.drawReaderOverlays(parameters, entity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {import("../../core/draw_utils").DrawParameters} parameters
|
||||||
|
* @param {Entity} entity
|
||||||
|
*/
|
||||||
|
drawReaderOverlays(parameters, entity) {
|
||||||
|
const staticComp = entity.components.StaticMapEntity;
|
||||||
|
const readerComp = entity.components.BeltReader;
|
||||||
|
|
||||||
|
this.readerOverlaySprite.drawCachedCentered(
|
||||||
|
parameters,
|
||||||
|
(staticComp.origin.x + 0.5) * globalConfig.tileSize,
|
||||||
|
(staticComp.origin.y + 0.5) * globalConfig.tileSize,
|
||||||
|
globalConfig.tileSize
|
||||||
|
);
|
||||||
|
|
||||||
|
parameters.context.fillStyle = "#333439";
|
||||||
|
parameters.context.textAlign = "center";
|
||||||
|
parameters.context.font = "bold 10px GameFont";
|
||||||
|
parameters.context.fillText(
|
||||||
|
"" + Math.round(readerComp.lastThroughput * 10) / 10,
|
||||||
|
(staticComp.origin.x + 0.5) * globalConfig.tileSize,
|
||||||
|
(staticComp.origin.y + 0.62) * globalConfig.tileSize
|
||||||
|
);
|
||||||
|
|
||||||
|
parameters.context.textAlign = "left";
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param {import("../../core/draw_utils").DrawParameters} parameters
|
* @param {import("../../core/draw_utils").DrawParameters} parameters
|
||||||
|
@ -604,6 +604,12 @@ buildings:
|
|||||||
# TEMP
|
# TEMP
|
||||||
description: Can be connected on the wires layer to show a color or shape. When inputting a boolean item, the display will be white if the value is 1.
|
description: Can be connected on the wires layer to show a color or shape. When inputting a boolean item, the display will be white if the value is 1.
|
||||||
|
|
||||||
|
reader:
|
||||||
|
default:
|
||||||
|
name: &reader Belt Reader
|
||||||
|
# TEMP
|
||||||
|
description: Allows to read the current item from a belt, as well as measuring the throughput.
|
||||||
|
|
||||||
virtual_processor:
|
virtual_processor:
|
||||||
default:
|
default:
|
||||||
name: &virtual_processor Virtual Cutter
|
name: &virtual_processor Virtual Cutter
|
||||||
@ -921,6 +927,7 @@ keybindings:
|
|||||||
filter: *filter
|
filter: *filter
|
||||||
wire_tunnel: *wire_tunnel
|
wire_tunnel: *wire_tunnel
|
||||||
display: *display
|
display: *display
|
||||||
|
reader: *reader
|
||||||
# ---
|
# ---
|
||||||
|
|
||||||
pipette: Pipette
|
pipette: Pipette
|
||||||
|