Add virtual stacker and painter, fix css

This commit is contained in:
tobspr 2020-09-19 15:33:24 +02:00
parent 8fa348ef30
commit 3e93681ce6
19 changed files with 666 additions and 524 deletions

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@ -10,7 +10,7 @@
},
"sprites/belt/built/forward_1.png":
{
"frame": {"x":946,"y":567,"w":40,"h":48},
"frame": {"x":897,"y":516,"w":40,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -18,7 +18,7 @@
},
"sprites/belt/built/forward_2.png":
{
"frame": {"x":810,"y":628,"w":40,"h":48},
"frame": {"x":893,"y":572,"w":40,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -26,7 +26,7 @@
},
"sprites/belt/built/forward_3.png":
{
"frame": {"x":858,"y":628,"w":40,"h":48},
"frame": {"x":836,"y":624,"w":40,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -34,7 +34,7 @@
},
"sprites/belt/built/forward_4.png":
{
"frame": {"x":906,"y":679,"w":40,"h":48},
"frame": {"x":759,"y":634,"w":40,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -42,7 +42,7 @@
},
"sprites/belt/built/forward_5.png":
{
"frame": {"x":954,"y":707,"w":40,"h":48},
"frame": {"x":626,"y":602,"w":40,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -50,7 +50,7 @@
},
"sprites/belt/built/forward_6.png":
{
"frame": {"x":577,"y":546,"w":40,"h":48},
"frame": {"x":570,"y":604,"w":40,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -58,7 +58,7 @@
},
"sprites/belt/built/forward_7.png":
{
"frame": {"x":521,"y":550,"w":40,"h":48},
"frame": {"x":674,"y":655,"w":40,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -66,7 +66,7 @@
},
"sprites/belt/built/forward_8.png":
{
"frame": {"x":625,"y":546,"w":40,"h":48},
"frame": {"x":618,"y":658,"w":40,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -74,7 +74,7 @@
},
"sprites/belt/built/forward_9.png":
{
"frame": {"x":673,"y":599,"w":40,"h":48},
"frame": {"x":941,"y":623,"w":40,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -82,7 +82,7 @@
},
"sprites/belt/built/forward_10.png":
{
"frame": {"x":839,"y":572,"w":40,"h":48},
"frame": {"x":845,"y":568,"w":40,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -90,7 +90,7 @@
},
"sprites/belt/built/forward_11.png":
{
"frame": {"x":887,"y":572,"w":40,"h":48},
"frame": {"x":788,"y":578,"w":40,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -98,7 +98,7 @@
},
"sprites/belt/built/forward_12.png":
{
"frame": {"x":762,"y":582,"w":40,"h":48},
"frame": {"x":711,"y":599,"w":40,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -106,7 +106,7 @@
},
"sprites/belt/built/forward_13.png":
{
"frame": {"x":935,"y":623,"w":40,"h":48},
"frame": {"x":945,"y":567,"w":40,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -114,7 +114,7 @@
},
"sprites/belt/built/left_0.png":
{
"frame": {"x":397,"y":363,"w":44,"h":44},
"frame": {"x":689,"y":338,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -122,7 +122,7 @@
},
"sprites/belt/built/left_1.png":
{
"frame": {"x":638,"y":338,"w":44,"h":44},
"frame": {"x":741,"y":387,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -130,7 +130,7 @@
},
"sprites/belt/built/left_2.png":
{
"frame": {"x":638,"y":390,"w":44,"h":44},
"frame": {"x":793,"y":422,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -138,7 +138,7 @@
},
"sprites/belt/built/left_3.png":
{
"frame": {"x":690,"y":390,"w":44,"h":44},
"frame": {"x":741,"y":439,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -146,7 +146,7 @@
},
"sprites/belt/built/left_4.png":
{
"frame": {"x":742,"y":439,"w":44,"h":44},
"frame": {"x":689,"y":442,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -154,7 +154,7 @@
},
"sprites/belt/built/left_5.png":
{
"frame": {"x":794,"y":474,"w":44,"h":44},
"frame": {"x":793,"y":474,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -162,7 +162,7 @@
},
"sprites/belt/built/left_6.png":
{
"frame": {"x":581,"y":394,"w":44,"h":44},
"frame": {"x":741,"y":491,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -170,7 +170,7 @@
},
"sprites/belt/built/left_7.png":
{
"frame": {"x":505,"y":414,"w":44,"h":44},
"frame": {"x":881,"y":464,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -178,7 +178,7 @@
},
"sprites/belt/built/left_8.png":
{
"frame": {"x":633,"y":442,"w":44,"h":44},
"frame": {"x":633,"y":444,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -186,7 +186,7 @@
},
"sprites/belt/built/left_9.png":
{
"frame": {"x":685,"y":442,"w":44,"h":44},
"frame": {"x":685,"y":494,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -194,7 +194,7 @@
},
"sprites/belt/built/left_10.png":
{
"frame": {"x":690,"y":338,"w":44,"h":44},
"frame": {"x":689,"y":390,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -202,7 +202,7 @@
},
"sprites/belt/built/left_11.png":
{
"frame": {"x":742,"y":387,"w":44,"h":44},
"frame": {"x":637,"y":392,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -210,7 +210,7 @@
},
"sprites/belt/built/left_12.png":
{
"frame": {"x":794,"y":422,"w":44,"h":44},
"frame": {"x":581,"y":394,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -218,7 +218,7 @@
},
"sprites/belt/built/left_13.png":
{
"frame": {"x":882,"y":464,"w":44,"h":44},
"frame": {"x":505,"y":416,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -226,7 +226,7 @@
},
"sprites/belt/built/right_0.png":
{
"frame": {"x":737,"y":491,"w":44,"h":44},
"frame": {"x":557,"y":446,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -234,7 +234,7 @@
},
"sprites/belt/built/right_1.png":
{
"frame": {"x":557,"y":446,"w":44,"h":44},
"frame": {"x":609,"y":496,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -242,7 +242,7 @@
},
"sprites/belt/built/right_2.png":
{
"frame": {"x":317,"y":377,"w":44,"h":44},
"frame": {"x":421,"y":417,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -250,7 +250,7 @@
},
"sprites/belt/built/right_3.png":
{
"frame": {"x":369,"y":415,"w":44,"h":44},
"frame": {"x":473,"y":468,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -258,7 +258,7 @@
},
"sprites/belt/built/right_4.png":
{
"frame": {"x":421,"y":415,"w":44,"h":44},
"frame": {"x":525,"y":498,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -266,7 +266,7 @@
},
"sprites/belt/built/right_5.png":
{
"frame": {"x":473,"y":466,"w":44,"h":44},
"frame": {"x":261,"y":429,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -274,7 +274,7 @@
},
"sprites/belt/built/right_6.png":
{
"frame": {"x":525,"y":498,"w":44,"h":44},
"frame": {"x":313,"y":429,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -282,7 +282,7 @@
},
"sprites/belt/built/right_7.png":
{
"frame": {"x":261,"y":429,"w":44,"h":44},
"frame": {"x":365,"y":469,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -290,7 +290,7 @@
},
"sprites/belt/built/right_8.png":
{
"frame": {"x":313,"y":429,"w":44,"h":44},
"frame": {"x":417,"y":469,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -298,7 +298,7 @@
},
"sprites/belt/built/right_9.png":
{
"frame": {"x":365,"y":467,"w":44,"h":44},
"frame": {"x":469,"y":520,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -306,7 +306,7 @@
},
"sprites/belt/built/right_10.png":
{
"frame": {"x":609,"y":494,"w":44,"h":44},
"frame": {"x":265,"y":377,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -314,7 +314,7 @@
},
"sprites/belt/built/right_11.png":
{
"frame": {"x":661,"y":494,"w":44,"h":44},
"frame": {"x":209,"y":391,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -322,7 +322,7 @@
},
"sprites/belt/built/right_12.png":
{
"frame": {"x":265,"y":377,"w":44,"h":44},
"frame": {"x":317,"y":377,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -330,7 +330,7 @@
},
"sprites/belt/built/right_13.png":
{
"frame": {"x":209,"y":391,"w":44,"h":44},
"frame": {"x":369,"y":417,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -338,7 +338,7 @@
},
"sprites/blueprints/belt_left.png":
{
"frame": {"x":417,"y":467,"w":44,"h":44},
"frame": {"x":845,"y":516,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -346,7 +346,7 @@
},
"sprites/blueprints/belt_right.png":
{
"frame": {"x":469,"y":518,"w":44,"h":44},
"frame": {"x":793,"y":526,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -354,7 +354,7 @@
},
"sprites/blueprints/belt_top.png":
{
"frame": {"x":721,"y":638,"w":40,"h":48},
"frame": {"x":884,"y":628,"w":40,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":40,"h":48},
@ -362,7 +362,7 @@
},
"sprites/blueprints/constant_signal.png":
{
"frame": {"x":946,"y":516,"w":36,"h":43},
"frame": {"x":945,"y":516,"w":36,"h":43},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":6,"y":0,"w":36,"h":43},
@ -386,7 +386,7 @@
},
"sprites/blueprints/display.png":
{
"frame": {"x":509,"y":360,"w":44,"h":46},
"frame": {"x":397,"y":363,"w":44,"h":46},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":2,"w":44,"h":46},
@ -410,7 +410,7 @@
},
"sprites/blueprints/logic_gate-not.png":
{
"frame": {"x":789,"y":526,"w":42,"h":48},
"frame": {"x":661,"y":546,"w":42,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":42,"h":48},
@ -426,7 +426,7 @@
},
"sprites/blueprints/logic_gate-transistor.png":
{
"frame": {"x":615,"y":602,"w":35,"h":48},
"frame": {"x":932,"y":679,"w":35,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":35,"h":48},
@ -640,9 +640,17 @@
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
"sourceSize": {"w":48,"h":48}
},
"sprites/blueprints/virtual_processor-painter.png":
{
"frame": {"x":937,"y":460,"w":44,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":44,"h":48},
"sourceSize": {"w":48,"h":48}
},
"sprites/blueprints/virtual_processor-rotater.png":
{
"frame": {"x":713,"y":543,"w":41,"h":48},
"frame": {"x":577,"y":548,"w":41,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":41,"h":48},
@ -658,10 +666,10 @@
},
"sprites/blueprints/virtual_processor-stacker.png":
{
"frame": {"x":937,"y":460,"w":45,"h":48},
"frame": {"x":585,"y":338,"w":44,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":45,"h":48},
"spriteSourceSize": {"x":4,"y":0,"w":44,"h":48},
"sourceSize": {"w":48,"h":48}
},
"sprites/blueprints/virtual_processor-unstacker.png":
@ -730,7 +738,7 @@
},
"sprites/buildings/belt_left.png":
{
"frame": {"x":397,"y":363,"w":44,"h":44},
"frame": {"x":689,"y":338,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":44,"h":44},
@ -738,7 +746,7 @@
},
"sprites/buildings/belt_right.png":
{
"frame": {"x":737,"y":491,"w":44,"h":44},
"frame": {"x":557,"y":446,"w":44,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":44,"h":44},
@ -754,7 +762,7 @@
},
"sprites/buildings/constant_signal.png":
{
"frame": {"x":983,"y":623,"w":36,"h":43},
"frame": {"x":722,"y":690,"w":36,"h":43},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":6,"y":0,"w":36,"h":43},
@ -778,7 +786,7 @@
},
"sprites/buildings/display.png":
{
"frame": {"x":453,"y":361,"w":44,"h":46},
"frame": {"x":637,"y":338,"w":44,"h":46},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":2,"w":44,"h":46},
@ -810,7 +818,7 @@
},
"sprites/buildings/logic_gate-not.png":
{
"frame": {"x":846,"y":516,"w":43,"h":48},
"frame": {"x":737,"y":543,"w":43,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":43,"h":48},
@ -826,7 +834,7 @@
},
"sprites/buildings/logic_gate-transistor.png":
{
"frame": {"x":658,"y":655,"w":35,"h":48},
"frame": {"x":975,"y":679,"w":35,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":35,"h":48},
@ -1040,9 +1048,17 @@
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
"sourceSize": {"w":48,"h":48}
},
"sprites/buildings/virtual_processor-painter.png":
{
"frame": {"x":509,"y":360,"w":44,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":44,"h":48},
"sourceSize": {"w":48,"h":48}
},
"sprites/buildings/virtual_processor-rotater.png":
{
"frame": {"x":897,"y":516,"w":41,"h":48},
"frame": {"x":521,"y":550,"w":41,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":41,"h":48},
@ -1058,10 +1074,10 @@
},
"sprites/buildings/virtual_processor-stacker.png":
{
"frame": {"x":585,"y":338,"w":45,"h":48},
"frame": {"x":453,"y":361,"w":44,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":45,"h":48},
"spriteSourceSize": {"x":4,"y":0,"w":44,"h":48},
"sourceSize": {"w":48,"h":48}
},
"sprites/buildings/virtual_processor-unstacker.png":
@ -1098,7 +1114,7 @@
},
"sprites/buildings/wire-turn.png":
{
"frame": {"x":990,"y":468,"w":28,"h":28},
"frame": {"x":989,"y":468,"w":28,"h":28},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":20,"y":20,"w":28,"h":28},
@ -1170,7 +1186,7 @@
},
"sprites/misc/reader_overlay.png":
{
"frame": {"x":983,"y":674,"w":36,"h":25},
"frame": {"x":666,"y":711,"w":36,"h":25},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":6,"y":12,"w":36,"h":25},
@ -1282,7 +1298,7 @@
},
"sprites/wires/lever_on.png":
{
"frame": {"x":569,"y":602,"w":38,"h":44},
"frame": {"x":807,"y":680,"w":38,"h":44},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":5,"y":1,"w":38,"h":44},
@ -1354,7 +1370,7 @@
},
"sprites/wires/sets/color_turn.png":
{
"frame": {"x":990,"y":504,"w":28,"h":28},
"frame": {"x":989,"y":504,"w":28,"h":28},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":20,"y":20,"w":28,"h":28},
@ -1386,7 +1402,7 @@
},
"sprites/wires/sets/conflict_turn.png":
{
"frame": {"x":846,"y":422,"w":28,"h":28},
"frame": {"x":845,"y":422,"w":28,"h":28},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":20,"y":20,"w":28,"h":28},
@ -1418,7 +1434,7 @@
},
"sprites/wires/sets/regular_turn.png":
{
"frame": {"x":990,"y":468,"w":28,"h":28},
"frame": {"x":989,"y":468,"w":28,"h":28},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":20,"y":20,"w":28,"h":28},
@ -1450,7 +1466,7 @@
},
"sprites/wires/sets/shape_turn.png":
{
"frame": {"x":846,"y":458,"w":28,"h":28},
"frame": {"x":845,"y":458,"w":28,"h":28},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":20,"y":20,"w":28,"h":28},
@ -1471,6 +1487,6 @@
"format": "RGBA8888",
"size": {"w":1024,"h":1024},
"scale": "0.25",
"smartupdate": "$TexturePacker:SmartUpdate:604557e03fa42226ddc62b672c751ccf:2a9399f9a7c16dc686a4fb0941b02e6b:908b89f5ca8ff73e331a35a3b14d0604$"
"smartupdate": "$TexturePacker:SmartUpdate:c38df9b4e442ab7ca6aca0b780d0839e:99e8394e24df838bd0f576e1caf16c3d:908b89f5ca8ff73e331a35a3b14d0604$"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 276 KiB

After

Width:  |  Height:  |  Size: 279 KiB

View File

@ -10,7 +10,7 @@
},
"sprites/belt/built/forward_1.png":
{
"frame": {"x":273,"y":1925,"w":78,"h":96},
"frame": {"x":273,"y":1938,"w":78,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -18,7 +18,7 @@
},
"sprites/belt/built/forward_2.png":
{
"frame": {"x":531,"y":1886,"w":78,"h":96},
"frame": {"x":531,"y":1815,"w":78,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -26,7 +26,7 @@
},
"sprites/belt/built/forward_3.png":
{
"frame": {"x":532,"y":1706,"w":78,"h":96},
"frame": {"x":531,"y":1919,"w":78,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -34,7 +34,7 @@
},
"sprites/belt/built/forward_4.png":
{
"frame": {"x":694,"y":1691,"w":78,"h":96},
"frame": {"x":532,"y":1667,"w":78,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -42,7 +42,7 @@
},
"sprites/belt/built/forward_5.png":
{
"frame": {"x":893,"y":1665,"w":78,"h":96},
"frame": {"x":617,"y":1784,"w":78,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -50,7 +50,7 @@
},
"sprites/belt/built/forward_6.png":
{
"frame": {"x":780,"y":1764,"w":78,"h":96},
"frame": {"x":617,"y":1888,"w":78,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -58,7 +58,7 @@
},
"sprites/belt/built/forward_7.png":
{
"frame": {"x":694,"y":1795,"w":78,"h":96},
"frame": {"x":703,"y":1784,"w":78,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -66,7 +66,7 @@
},
"sprites/belt/built/forward_8.png":
{
"frame": {"x":617,"y":1907,"w":78,"h":96},
"frame": {"x":703,"y":1888,"w":78,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -74,7 +74,7 @@
},
"sprites/belt/built/forward_9.png":
{
"frame": {"x":703,"y":1899,"w":78,"h":96},
"frame": {"x":883,"y":1743,"w":78,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -82,7 +82,7 @@
},
"sprites/belt/built/forward_10.png":
{
"frame": {"x":359,"y":1925,"w":78,"h":96},
"frame": {"x":359,"y":1938,"w":78,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -90,7 +90,7 @@
},
"sprites/belt/built/forward_11.png":
{
"frame": {"x":360,"y":1821,"w":78,"h":96},
"frame": {"x":360,"y":1785,"w":78,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -98,7 +98,7 @@
},
"sprites/belt/built/forward_12.png":
{
"frame": {"x":445,"y":1925,"w":78,"h":96},
"frame": {"x":445,"y":1889,"w":78,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -106,7 +106,7 @@
},
"sprites/belt/built/forward_13.png":
{
"frame": {"x":446,"y":1782,"w":78,"h":96},
"frame": {"x":446,"y":1711,"w":78,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -114,7 +114,7 @@
},
"sprites/belt/built/left_0.png":
{
"frame": {"x":469,"y":1039,"w":87,"h":87},
"frame": {"x":830,"y":1268,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -122,7 +122,7 @@
},
"sprites/belt/built/left_1.png":
{
"frame": {"x":105,"y":1573,"w":87,"h":87},
"frame": {"x":925,"y":1268,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -130,7 +130,7 @@
},
"sprites/belt/built/left_2.png":
{
"frame": {"x":620,"y":1414,"w":87,"h":87},
"frame": {"x":305,"y":1595,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -138,7 +138,7 @@
},
"sprites/belt/built/left_3.png":
{
"frame": {"x":514,"y":1421,"w":87,"h":87},
"frame": {"x":200,"y":1644,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -146,7 +146,7 @@
},
"sprites/belt/built/left_4.png":
{
"frame": {"x":409,"y":1497,"w":87,"h":87},
"frame": {"x":100,"y":1676,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -154,7 +154,7 @@
},
"sprites/belt/built/left_5.png":
{
"frame": {"x":305,"y":1536,"w":87,"h":87},
"frame": {"x":5,"y":1700,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -162,7 +162,7 @@
},
"sprites/belt/built/left_6.png":
{
"frame": {"x":200,"y":1582,"w":87,"h":87},
"frame": {"x":817,"y":1363,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -170,7 +170,7 @@
},
"sprites/belt/built/left_7.png":
{
"frame": {"x":100,"y":1668,"w":87,"h":87},
"frame": {"x":713,"y":1404,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -178,7 +178,7 @@
},
"sprites/belt/built/left_8.png":
{
"frame": {"x":5,"y":1689,"w":87,"h":87},
"frame": {"x":609,"y":1477,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -186,7 +186,7 @@
},
"sprites/belt/built/left_9.png":
{
"frame": {"x":819,"y":1475,"w":87,"h":87},
"frame": {"x":503,"y":1556,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -194,7 +194,7 @@
},
"sprites/belt/built/left_10.png":
{
"frame": {"x":5,"y":1594,"w":87,"h":87},
"frame": {"x":722,"y":1309,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -202,7 +202,7 @@
},
"sprites/belt/built/left_11.png":
{
"frame": {"x":829,"y":1380,"w":87,"h":87},
"frame": {"x":618,"y":1382,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -210,7 +210,7 @@
},
"sprites/belt/built/left_12.png":
{
"frame": {"x":924,"y":1380,"w":87,"h":87},
"frame": {"x":514,"y":1461,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -218,7 +218,7 @@
},
"sprites/belt/built/left_13.png":
{
"frame": {"x":724,"y":1406,"w":87,"h":87},
"frame": {"x":408,"y":1521,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -226,7 +226,7 @@
},
"sprites/belt/built/right_0.png":
{
"frame": {"x":715,"y":1501,"w":87,"h":87},
"frame": {"x":400,"y":1616,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -234,7 +234,7 @@
},
"sprites/belt/built/right_1.png":
{
"frame": {"x":609,"y":1509,"w":87,"h":87},
"frame": {"x":295,"y":1690,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -242,7 +242,7 @@
},
"sprites/belt/built/right_2.png":
{
"frame": {"x":100,"y":1763,"w":87,"h":87},
"frame": {"x":808,"y":1458,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -250,7 +250,7 @@
},
"sprites/belt/built/right_3.png":
{
"frame": {"x":5,"y":1784,"w":87,"h":87},
"frame": {"x":704,"y":1499,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -258,7 +258,7 @@
},
"sprites/belt/built/right_4.png":
{
"frame": {"x":914,"y":1475,"w":87,"h":87},
"frame": {"x":598,"y":1572,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -266,7 +266,7 @@
},
"sprites/belt/built/right_5.png":
{
"frame": {"x":810,"y":1570,"w":87,"h":87},
"frame": {"x":903,"y":1458,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -274,7 +274,7 @@
},
"sprites/belt/built/right_6.png":
{
"frame": {"x":704,"y":1596,"w":87,"h":87},
"frame": {"x":799,"y":1553,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -282,7 +282,7 @@
},
"sprites/belt/built/right_7.png":
{
"frame": {"x":599,"y":1604,"w":87,"h":87},
"frame": {"x":693,"y":1594,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -290,7 +290,7 @@
},
"sprites/belt/built/right_8.png":
{
"frame": {"x":495,"y":1611,"w":87,"h":87},
"frame": {"x":894,"y":1553,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -298,7 +298,7 @@
},
"sprites/belt/built/right_9.png":
{
"frame": {"x":390,"y":1687,"w":87,"h":87},
"frame": {"x":788,"y":1648,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -306,7 +306,7 @@
},
"sprites/belt/built/right_10.png":
{
"frame": {"x":504,"y":1516,"w":87,"h":87},
"frame": {"x":195,"y":1739,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -314,7 +314,7 @@
},
"sprites/belt/built/right_11.png":
{
"frame": {"x":400,"y":1592,"w":87,"h":87},
"frame": {"x":100,"y":1771,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -322,7 +322,7 @@
},
"sprites/belt/built/right_12.png":
{
"frame": {"x":295,"y":1631,"w":87,"h":87},
"frame": {"x":5,"y":1795,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -330,7 +330,7 @@
},
"sprites/belt/built/right_13.png":
{
"frame": {"x":195,"y":1677,"w":87,"h":87},
"frame": {"x":912,"y":1363,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -338,7 +338,7 @@
},
"sprites/blueprints/belt_left.png":
{
"frame": {"x":290,"y":1726,"w":87,"h":87},
"frame": {"x":883,"y":1648,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -346,7 +346,7 @@
},
"sprites/blueprints/belt_right.png":
{
"frame": {"x":905,"y":1570,"w":87,"h":87},
"frame": {"x":618,"y":1689,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -354,7 +354,7 @@
},
"sprites/blueprints/belt_top.png":
{
"frame": {"x":866,"y":1769,"w":78,"h":96},
"frame": {"x":789,"y":1842,"w":78,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":78,"h":96},
@ -362,7 +362,7 @@
},
"sprites/blueprints/constant_signal.png":
{
"frame": {"x":838,"y":1028,"w":71,"h":85},
"frame": {"x":839,"y":1028,"w":71,"h":85},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":13,"y":0,"w":71,"h":85},
@ -386,7 +386,7 @@
},
"sprites/blueprints/display.png":
{
"frame": {"x":799,"y":1665,"w":86,"h":91},
"frame": {"x":789,"y":1743,"w":86,"h":91},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":5,"y":5,"w":86,"h":91},
@ -410,7 +410,7 @@
},
"sprites/blueprints/logic_gate-not.png":
{
"frame": {"x":5,"y":1879,"w":83,"h":96},
"frame": {"x":5,"y":1890,"w":83,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":7,"y":0,"w":83,"h":96},
@ -418,7 +418,7 @@
},
"sprites/blueprints/logic_gate-or.png":
{
"frame": {"x":421,"y":1134,"w":96,"h":82},
"frame": {"x":918,"y":1074,"w":96,"h":82},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":82},
@ -426,7 +426,7 @@
},
"sprites/blueprints/logic_gate-transistor.png":
{
"frame": {"x":618,"y":1699,"w":68,"h":96},
"frame": {"x":471,"y":733,"w":68,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":68,"h":96},
@ -442,7 +442,7 @@
},
"sprites/blueprints/logic_gate.png":
{
"frame": {"x":5,"y":1099,"w":96,"h":89},
"frame": {"x":317,"y":1045,"w":96,"h":89},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":89},
@ -450,7 +450,7 @@
},
"sprites/blueprints/miner-chainable.png":
{
"frame": {"x":106,"y":1469,"w":92,"h":96},
"frame": {"x":209,"y":1437,"w":92,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":92,"h":96},
@ -458,7 +458,7 @@
},
"sprites/blueprints/miner.png":
{
"frame": {"x":5,"y":1490,"w":92,"h":96},
"frame": {"x":106,"y":1468,"w":92,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":92,"h":96},
@ -522,7 +522,7 @@
},
"sprites/blueprints/rotater-fl.png":
{
"frame": {"x":109,"y":1264,"w":95,"h":96},
"frame": {"x":525,"y":1100,"w":95,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":95,"h":96},
@ -538,7 +538,7 @@
},
"sprites/blueprints/splitter-compact-inverse.png":
{
"frame": {"x":669,"y":1132,"w":95,"h":93},
"frame": {"x":5,"y":1298,"w":95,"h":93},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":1,"w":95,"h":93},
@ -546,7 +546,7 @@
},
"sprites/blueprints/splitter-compact-merge-inverse.png":
{
"frame": {"x":772,"y":1214,"w":95,"h":93},
"frame": {"x":628,"y":1100,"w":95,"h":93},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":1,"w":95,"h":93},
@ -554,7 +554,7 @@
},
"sprites/blueprints/splitter-compact-merge.png":
{
"frame": {"x":212,"y":1295,"w":93,"h":93},
"frame": {"x":420,"y":1255,"w":93,"h":93},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":1,"w":93,"h":93},
@ -562,7 +562,7 @@
},
"sprites/blueprints/splitter-compact.png":
{
"frame": {"x":108,"y":1368,"w":93,"h":93},
"frame": {"x":316,"y":1308,"w":93,"h":93},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":1,"w":93,"h":93},
@ -602,7 +602,7 @@
},
"sprites/blueprints/underground_belt_entry-tier2.png":
{
"frame": {"x":419,"y":1323,"w":93,"h":84},
"frame": {"x":521,"y":1287,"w":93,"h":84},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":12,"w":93,"h":84},
@ -610,7 +610,7 @@
},
"sprites/blueprints/underground_belt_entry.png":
{
"frame": {"x":313,"y":1350,"w":93,"h":75},
"frame": {"x":417,"y":1356,"w":93,"h":75},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":21,"w":93,"h":75},
@ -618,7 +618,7 @@
},
"sprites/blueprints/underground_belt_exit-tier2.png":
{
"frame": {"x":317,"y":1267,"w":94,"h":75},
"frame": {"x":524,"y":1204,"w":94,"h":75},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":0,"w":94,"h":75},
@ -626,7 +626,7 @@
},
"sprites/blueprints/underground_belt_exit.png":
{
"frame": {"x":209,"y":1396,"w":93,"h":75},
"frame": {"x":313,"y":1409,"w":93,"h":75},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":0,"w":93,"h":75},
@ -640,9 +640,17 @@
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
"sourceSize": {"w":96,"h":96}
},
"sprites/blueprints/virtual_processor-painter.png":
{
"frame": {"x":469,"y":985,"w":87,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":87,"h":96},
"sourceSize": {"w":96,"h":96}
},
"sprites/blueprints/virtual_processor-rotater.png":
{
"frame": {"x":186,"y":1858,"w":79,"h":96},
"frame": {"x":186,"y":1866,"w":79,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":79,"h":96},
@ -650,7 +658,7 @@
},
"sprites/blueprints/virtual_processor-shapecompare.png":
{
"frame": {"x":317,"y":1045,"w":96,"h":89},
"frame": {"x":213,"y":1075,"w":96,"h":89},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":89},
@ -658,10 +666,10 @@
},
"sprites/blueprints/virtual_processor-stacker.png":
{
"frame": {"x":471,"y":831,"w":88,"h":96},
"frame": {"x":105,"y":1572,"w":87,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":88,"h":96},
"spriteSourceSize": {"x":9,"y":0,"w":87,"h":96},
"sourceSize": {"w":96,"h":96}
},
"sprites/blueprints/virtual_processor-unstacker.png":
@ -674,7 +682,7 @@
},
"sprites/blueprints/virtual_processor.png":
{
"frame": {"x":213,"y":972,"w":96,"h":94},
"frame": {"x":109,"y":1004,"w":96,"h":94},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":2,"w":96,"h":94},
@ -690,7 +698,7 @@
},
"sprites/blueprints/wire-split.png":
{
"frame": {"x":317,"y":1142,"w":96,"h":55},
"frame": {"x":564,"y":1037,"w":96,"h":55},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":41,"w":96,"h":55},
@ -722,7 +730,7 @@
},
"sprites/blueprints/wire_tunnel.png":
{
"frame": {"x":5,"y":1391,"w":93,"h":91},
"frame": {"x":212,"y":1338,"w":93,"h":91},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":2,"w":93,"h":91},
@ -730,7 +738,7 @@
},
"sprites/buildings/belt_left.png":
{
"frame": {"x":469,"y":1039,"w":87,"h":87},
"frame": {"x":830,"y":1268,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":87,"h":87},
@ -738,7 +746,7 @@
},
"sprites/buildings/belt_right.png":
{
"frame": {"x":715,"y":1501,"w":87,"h":87},
"frame": {"x":400,"y":1616,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":87,"h":87},
@ -754,7 +762,7 @@
},
"sprites/buildings/constant_signal.png":
{
"frame": {"x":838,"y":1121,"w":70,"h":85},
"frame": {"x":469,"y":837,"w":70,"h":85},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":13,"y":0,"w":70,"h":85},
@ -810,7 +818,7 @@
},
"sprites/buildings/logic_gate-not.png":
{
"frame": {"x":96,"y":1879,"w":82,"h":96},
"frame": {"x":96,"y":1890,"w":82,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":8,"y":0,"w":82,"h":96},
@ -818,7 +826,7 @@
},
"sprites/buildings/logic_gate-or.png":
{
"frame": {"x":5,"y":1196,"w":96,"h":83},
"frame": {"x":735,"y":1028,"w":96,"h":83},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":83},
@ -826,7 +834,7 @@
},
"sprites/buildings/logic_gate-transistor.png":
{
"frame": {"x":618,"y":1803,"w":68,"h":96},
"frame": {"x":834,"y":1121,"w":68,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":68,"h":96},
@ -834,7 +842,7 @@
},
"sprites/buildings/logic_gate-xor.png":
{
"frame": {"x":5,"y":996,"w":96,"h":95},
"frame": {"x":213,"y":972,"w":96,"h":95},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":95},
@ -842,7 +850,7 @@
},
"sprites/buildings/logic_gate.png":
{
"frame": {"x":109,"y":1106,"w":96,"h":88},
"frame": {"x":5,"y":1202,"w":96,"h":88},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":88},
@ -850,7 +858,7 @@
},
"sprites/buildings/miner-chainable.png":
{
"frame": {"x":310,"y":1433,"w":91,"h":95},
"frame": {"x":309,"y":1492,"w":91,"h":95},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":91,"h":95},
@ -858,7 +866,7 @@
},
"sprites/buildings/miner.png":
{
"frame": {"x":206,"y":1479,"w":91,"h":95},
"frame": {"x":206,"y":1541,"w":91,"h":95},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":91,"h":95},
@ -906,7 +914,7 @@
},
"sprites/buildings/reader.png":
{
"frame": {"x":5,"y":1287,"w":95,"h":96},
"frame": {"x":421,"y":1151,"w":95,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":95,"h":96},
@ -914,7 +922,7 @@
},
"sprites/buildings/rotater-ccw.png":
{
"frame": {"x":735,"y":1028,"w":95,"h":96},
"frame": {"x":317,"y":1204,"w":95,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":95,"h":96},
@ -922,7 +930,7 @@
},
"sprites/buildings/rotater-fl.png":
{
"frame": {"x":917,"y":1074,"w":95,"h":96},
"frame": {"x":213,"y":1234,"w":95,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":95,"h":96},
@ -930,7 +938,7 @@
},
"sprites/buildings/rotater.png":
{
"frame": {"x":916,"y":1178,"w":95,"h":96},
"frame": {"x":109,"y":1265,"w":95,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":95,"h":96},
@ -938,7 +946,7 @@
},
"sprites/buildings/splitter-compact-inverse.png":
{
"frame": {"x":421,"y":1224,"w":94,"h":91},
"frame": {"x":628,"y":1201,"w":94,"h":91},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":2,"w":94,"h":91},
@ -946,7 +954,7 @@
},
"sprites/buildings/splitter-compact-merge-inverse.png":
{
"frame": {"x":525,"y":1141,"w":95,"h":91},
"frame": {"x":731,"y":1119,"w":95,"h":91},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":2,"w":95,"h":91},
@ -954,7 +962,7 @@
},
"sprites/buildings/splitter-compact-merge.png":
{
"frame": {"x":628,"y":1233,"w":93,"h":91},
"frame": {"x":108,"y":1369,"w":93,"h":91},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":2,"w":93,"h":91},
@ -962,7 +970,7 @@
},
"sprites/buildings/splitter-compact.png":
{
"frame": {"x":523,"y":1240,"w":93,"h":91},
"frame": {"x":5,"y":1399,"w":93,"h":91},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":2,"w":93,"h":91},
@ -1002,7 +1010,7 @@
},
"sprites/buildings/underground_belt_entry-tier2.png":
{
"frame": {"x":729,"y":1315,"w":92,"h":83},
"frame": {"x":730,"y":1218,"w":92,"h":83},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":13,"w":92,"h":83},
@ -1010,7 +1018,7 @@
},
"sprites/buildings/underground_belt_entry.png":
{
"frame": {"x":624,"y":1332,"w":92,"h":74},
"frame": {"x":622,"y":1300,"w":92,"h":74},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":22,"w":92,"h":74},
@ -1018,7 +1026,7 @@
},
"sprites/buildings/underground_belt_exit-tier2.png":
{
"frame": {"x":520,"y":1339,"w":92,"h":74},
"frame": {"x":518,"y":1379,"w":92,"h":74},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":92,"h":74},
@ -1026,7 +1034,7 @@
},
"sprites/buildings/underground_belt_exit.png":
{
"frame": {"x":414,"y":1415,"w":92,"h":74},
"frame": {"x":414,"y":1439,"w":92,"h":74},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":92,"h":74},
@ -1040,9 +1048,17 @@
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
"sourceSize": {"w":96,"h":96}
},
"sprites/buildings/virtual_processor-painter.png":
{
"frame": {"x":5,"y":1596,"w":87,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":87,"h":96},
"sourceSize": {"w":96,"h":96}
},
"sprites/buildings/virtual_processor-rotater.png":
{
"frame": {"x":273,"y":1821,"w":79,"h":96},
"frame": {"x":273,"y":1834,"w":79,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":79,"h":96},
@ -1050,7 +1066,7 @@
},
"sprites/buildings/virtual_processor-shapecompare.png":
{
"frame": {"x":213,"y":1074,"w":96,"h":89},
"frame": {"x":109,"y":1106,"w":96,"h":89},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":89},
@ -1058,15 +1074,15 @@
},
"sprites/buildings/virtual_processor-stacker.png":
{
"frame": {"x":469,"y":935,"w":88,"h":96},
"frame": {"x":910,"y":1164,"w":87,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":88,"h":96},
"spriteSourceSize": {"x":9,"y":0,"w":87,"h":96},
"sourceSize": {"w":96,"h":96}
},
"sprites/buildings/virtual_processor-unstacker.png":
{
"frame": {"x":365,"y":837,"w":96,"h":96},
"frame": {"x":5,"y":892,"w":96,"h":96},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
@ -1074,7 +1090,7 @@
},
"sprites/buildings/virtual_processor.png":
{
"frame": {"x":109,"y":1004,"w":96,"h":94},
"frame": {"x":5,"y":1100,"w":96,"h":94},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":2,"w":96,"h":94},
@ -1082,7 +1098,7 @@
},
"sprites/buildings/wire-cross.png":
{
"frame": {"x":365,"y":941,"w":96,"h":96},
"frame": {"x":365,"y":837,"w":96,"h":96},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
@ -1090,7 +1106,7 @@
},
"sprites/buildings/wire-split.png":
{
"frame": {"x":213,"y":1171,"w":96,"h":54},
"frame": {"x":421,"y":1089,"w":96,"h":54},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":42,"w":96,"h":54},
@ -1122,7 +1138,7 @@
},
"sprites/buildings/wire_tunnel.png":
{
"frame": {"x":875,"y":1282,"w":92,"h":90},
"frame": {"x":5,"y":1498,"w":92,"h":90},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":3,"w":92,"h":90},
@ -1170,7 +1186,7 @@
},
"sprites/misc/reader_overlay.png":
{
"frame": {"x":5,"y":1983,"w":70,"h":47},
"frame": {"x":469,"y":930,"w":70,"h":47},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":13,"y":25,"w":70,"h":47},
@ -1330,7 +1346,7 @@
},
"sprites/wires/sets/color_cross.png":
{
"frame": {"x":565,"y":1037,"w":96,"h":96},
"frame": {"x":365,"y":941,"w":96,"h":96},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
@ -1346,7 +1362,7 @@
},
"sprites/wires/sets/color_split.png":
{
"frame": {"x":317,"y":1205,"w":96,"h":54},
"frame": {"x":317,"y":1142,"w":96,"h":54},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":42,"w":96,"h":54},
@ -1362,7 +1378,7 @@
},
"sprites/wires/sets/conflict_cross.png":
{
"frame": {"x":5,"y":892,"w":96,"h":96},
"frame": {"x":109,"y":900,"w":96,"h":96},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
@ -1378,7 +1394,7 @@
},
"sprites/wires/sets/conflict_split.png":
{
"frame": {"x":109,"y":1202,"w":96,"h":54},
"frame": {"x":213,"y":1172,"w":96,"h":54},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":42,"w":96,"h":54},
@ -1394,7 +1410,7 @@
},
"sprites/wires/sets/regular_cross.png":
{
"frame": {"x":365,"y":941,"w":96,"h":96},
"frame": {"x":365,"y":837,"w":96,"h":96},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
@ -1410,7 +1426,7 @@
},
"sprites/wires/sets/regular_split.png":
{
"frame": {"x":213,"y":1171,"w":96,"h":54},
"frame": {"x":421,"y":1089,"w":96,"h":54},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":42,"w":96,"h":54},
@ -1426,7 +1442,7 @@
},
"sprites/wires/sets/shape_cross.png":
{
"frame": {"x":109,"y":900,"w":96,"h":96},
"frame": {"x":5,"y":996,"w":96,"h":96},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
@ -1434,7 +1450,7 @@
},
"sprites/wires/sets/shape_forward.png":
{
"frame": {"x":671,"y":1018,"w":12,"h":96},
"frame": {"x":547,"y":831,"w":12,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":42,"y":0,"w":12,"h":96},
@ -1442,7 +1458,7 @@
},
"sprites/wires/sets/shape_split.png":
{
"frame": {"x":213,"y":1233,"w":96,"h":54},
"frame": {"x":109,"y":1203,"w":96,"h":54},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":42,"w":96,"h":54},
@ -1471,6 +1487,6 @@
"format": "RGBA8888",
"size": {"w":1024,"h":2048},
"scale": "0.5",
"smartupdate": "$TexturePacker:SmartUpdate:604557e03fa42226ddc62b672c751ccf:2a9399f9a7c16dc686a4fb0941b02e6b:908b89f5ca8ff73e331a35a3b14d0604$"
"smartupdate": "$TexturePacker:SmartUpdate:c38df9b4e442ab7ca6aca0b780d0839e:99e8394e24df838bd0f576e1caf16c3d:908b89f5ca8ff73e331a35a3b14d0604$"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 688 KiB

After

Width:  |  Height:  |  Size: 705 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,50 +1,50 @@
#ingame_HUD_SandboxController {
position: absolute;
background: $ingameHudBg;
@include S(padding, 5px);
@include S(bottom, 10px);
@include S(left, 10px);
@include SuperSmallText;
color: #eee;
display: flex;
flex-direction: column;
> label {
text-transform: uppercase;
}
.hint {
color: #aaa;
}
.plusMinus {
@include S(margin-top, 4px);
display: grid;
grid-template-columns: 1fr auto auto;
align-items: center;
@include S(grid-gap, 4px);
button {
@include PlainText;
@include S(padding, 0);
display: flex;
align-items: center;
justify-content: center;
@include S(width, 15px);
@include S(height, 15px);
@include IncreasedClickArea(0px);
}
}
.additionalOptions {
display: flex;
flex-direction: column;
@include S(margin-top, 10px);
button {
@include S(margin-bottom, 2px);
@include IncreasedClickArea(0px);
@include SuperSmallText;
}
}
}
#ingame_HUD_SandboxController {
position: absolute;
background: $ingameHudBg;
@include S(padding, 5px);
@include S(bottom, 10px);
@include S(left, 10px);
@include SuperSmallText;
color: #eee;
display: flex;
flex-direction: column;
> label {
text-transform: uppercase;
}
.sandboxHint {
color: #aaa;
}
.plusMinus {
@include S(margin-top, 4px);
display: grid;
grid-template-columns: 1fr auto auto;
align-items: center;
@include S(grid-gap, 4px);
button {
@include PlainText;
@include S(padding, 0);
display: flex;
align-items: center;
justify-content: center;
@include S(width, 15px);
@include S(height, 15px);
@include IncreasedClickArea(0px);
}
}
.additionalOptions {
display: flex;
flex-direction: column;
@include S(margin-top, 10px);
button {
@include S(margin-bottom, 2px);
@include IncreasedClickArea(0px);
@include SuperSmallText;
}
}
}

View File

@ -11,6 +11,8 @@ export const enumVirtualProcessorVariants = {
rotater: "rotater",
unstacker: "unstacker",
shapecompare: "shapecompare",
stacker: "stacker",
painter: "painter",
};
/** @enum {string} */
@ -20,6 +22,8 @@ export const enumVariantToGate = {
[enumVirtualProcessorVariants.rotater]: enumLogicGateType.rotater,
[enumVirtualProcessorVariants.unstacker]: enumLogicGateType.unstacker,
[enumVirtualProcessorVariants.shapecompare]: enumLogicGateType.shapecompare,
[enumVirtualProcessorVariants.stacker]: enumLogicGateType.stacker,
[enumVirtualProcessorVariants.painter]: enumLogicGateType.painter,
};
export class MetaVirtualProcessorBuilding extends MetaBuilding {
@ -54,6 +58,8 @@ export class MetaVirtualProcessorBuilding extends MetaBuilding {
enumVirtualProcessorVariants.rotater,
enumVirtualProcessorVariants.unstacker,
enumVirtualProcessorVariants.analyzer,
enumVirtualProcessorVariants.stacker,
enumVirtualProcessorVariants.painter,
enumVirtualProcessorVariants.shapecompare,
];
}
@ -130,6 +136,27 @@ export class MetaVirtualProcessorBuilding extends MetaBuilding {
]);
break;
}
case enumLogicGateType.stacker:
case enumLogicGateType.painter: {
pinComp.setSlots([
{
pos: new Vector(0, 0),
direction: enumDirection.top,
type: enumPinSlotType.logicalEjector,
},
{
pos: new Vector(0, 0),
direction: enumDirection.bottom,
type: enumPinSlotType.logicalAcceptor,
},
{
pos: new Vector(0, 0),
direction: enumDirection.right,
type: enumPinSlotType.logicalAcceptor,
},
]);
break;
}
default:
assertAlways("unknown logic gate type: " + gateType);
}

View File

@ -13,6 +13,8 @@ export const enumLogicGateType = {
unstacker: "unstacker",
cutter: "cutter",
shapecompare: "shapecompare",
stacker: "stacker",
painter: "painter",
};
export class LogicGateComponent extends Component {

View File

@ -1,158 +1,158 @@
import { BaseHUDPart } from "../base_hud_part";
import { makeDiv } from "../../../core/utils";
import { DynamicDomAttach } from "../dynamic_dom_attach";
import { blueprintShape, UPGRADES } from "../../upgrades";
import { enumNotificationType } from "./notifications";
import { tutorialGoals } from "../../tutorial_goals";
export class HUDSandboxController extends BaseHUDPart {
createElements(parent) {
this.element = makeDiv(
parent,
"ingame_HUD_SandboxController",
[],
`
<label>Sandbox Options</label>
<span class="hint">Use F6 to toggle this overlay</span>
<div class="buttons">
<div class="levelToggle plusMinus">
<label>Level</label>
<button class="styledButton minus">-</button>
<button class="styledButton plus">+</button>
</div>
<div class="upgradesBelt plusMinus">
<label>Upgrades &rarr; Belt</label>
<button class="styledButton minus">-</button>
<button class="styledButton plus">+</button>
</div>
<div class="upgradesExtraction plusMinus">
<label>Upgrades &rarr; Extraction</label>
<button class="styledButton minus">-</button>
<button class="styledButton plus">+</button>
</div>
<div class="upgradesProcessing plusMinus">
<label>Upgrades &rarr; Processing</label>
<button class="styledButton minus">-</button>
<button class="styledButton plus">+</button>
</div>
<div class="upgradesPainting plusMinus">
<label>Upgrades &rarr; Painting</label>
<button class="styledButton minus">-</button>
<button class="styledButton plus">+</button>
</div>
<div class="additionalOptions">
<button class="styledButton giveBlueprints">Fill blueprint shapes</button>
<button class="styledButton maxOutAll">Max out all</button>
</div>
</div>
`
);
const bind = (selector, handler) => this.trackClicks(this.element.querySelector(selector), handler);
bind(".giveBlueprints", this.giveBlueprints);
bind(".maxOutAll", this.maxOutAll);
bind(".levelToggle .minus", () => this.modifyLevel(-1));
bind(".levelToggle .plus", () => this.modifyLevel(1));
bind(".upgradesBelt .minus", () => this.modifyUpgrade("belt", -1));
bind(".upgradesBelt .plus", () => this.modifyUpgrade("belt", 1));
bind(".upgradesExtraction .minus", () => this.modifyUpgrade("miner", -1));
bind(".upgradesExtraction .plus", () => this.modifyUpgrade("miner", 1));
bind(".upgradesProcessing .minus", () => this.modifyUpgrade("processors", -1));
bind(".upgradesProcessing .plus", () => this.modifyUpgrade("processors", 1));
bind(".upgradesPainting .minus", () => this.modifyUpgrade("painting", -1));
bind(".upgradesPainting .plus", () => this.modifyUpgrade("painting", 1));
}
giveBlueprints() {
if (!this.root.hubGoals.storedShapes[blueprintShape]) {
this.root.hubGoals.storedShapes[blueprintShape] = 0;
}
this.root.hubGoals.storedShapes[blueprintShape] += 1e9;
}
maxOutAll() {
this.modifyUpgrade("belt", 100);
this.modifyUpgrade("miner", 100);
this.modifyUpgrade("processors", 100);
this.modifyUpgrade("painting", 100);
}
modifyUpgrade(id, amount) {
const handle = UPGRADES[id];
const maxLevel = handle.tiers.length;
this.root.hubGoals.upgradeLevels[id] = Math.max(
0,
Math.min(maxLevel, (this.root.hubGoals.upgradeLevels[id] || 0) + amount)
);
// Compute improvement
let improvement = 1;
for (let i = 0; i < this.root.hubGoals.upgradeLevels[id]; ++i) {
improvement += handle.tiers[i].improvement;
}
this.root.hubGoals.upgradeImprovements[id] = improvement;
this.root.signals.upgradePurchased.dispatch(id);
this.root.hud.signals.notification.dispatch(
"Upgrade '" + id + "' is now at tier " + (this.root.hubGoals.upgradeLevels[id] + 1),
enumNotificationType.upgrade
);
}
modifyLevel(amount) {
const hubGoals = this.root.hubGoals;
hubGoals.level = Math.max(1, hubGoals.level + amount);
hubGoals.createNextGoal();
// Clear all shapes of this level
hubGoals.storedShapes[hubGoals.currentGoal.definition.getHash()] = 0;
this.root.hud.parts.pinnedShapes.rerenderFull();
// Compute gained rewards
hubGoals.gainedRewards = {};
for (let i = 0; i < hubGoals.level - 1; ++i) {
if (i < tutorialGoals.length) {
const reward = tutorialGoals[i].reward;
hubGoals.gainedRewards[reward] = (hubGoals.gainedRewards[reward] || 0) + 1;
}
}
this.root.hud.signals.notification.dispatch(
"Changed level to " + hubGoals.level,
enumNotificationType.upgrade
);
}
initialize() {
// Allow toggling the controller overlay
this.root.gameState.inputReciever.keydown.add(key => {
if (key.keyCode === 117) {
// F6
this.toggle();
}
});
this.visible = !G_IS_DEV;
this.domAttach = new DynamicDomAttach(this.root, this.element);
}
toggle() {
this.visible = !this.visible;
}
update() {
this.domAttach.update(this.visible);
}
}
import { BaseHUDPart } from "../base_hud_part";
import { makeDiv } from "../../../core/utils";
import { DynamicDomAttach } from "../dynamic_dom_attach";
import { blueprintShape, UPGRADES } from "../../upgrades";
import { enumNotificationType } from "./notifications";
import { tutorialGoals } from "../../tutorial_goals";
export class HUDSandboxController extends BaseHUDPart {
createElements(parent) {
this.element = makeDiv(
parent,
"ingame_HUD_SandboxController",
[],
`
<label>Sandbox Options</label>
<span class="sandboxHint">Use F6 to toggle this overlay</span>
<div class="buttons">
<div class="levelToggle plusMinus">
<label>Level</label>
<button class="styledButton minus">-</button>
<button class="styledButton plus">+</button>
</div>
<div class="upgradesBelt plusMinus">
<label>Upgrades &rarr; Belt</label>
<button class="styledButton minus">-</button>
<button class="styledButton plus">+</button>
</div>
<div class="upgradesExtraction plusMinus">
<label>Upgrades &rarr; Extraction</label>
<button class="styledButton minus">-</button>
<button class="styledButton plus">+</button>
</div>
<div class="upgradesProcessing plusMinus">
<label>Upgrades &rarr; Processing</label>
<button class="styledButton minus">-</button>
<button class="styledButton plus">+</button>
</div>
<div class="upgradesPainting plusMinus">
<label>Upgrades &rarr; Painting</label>
<button class="styledButton minus">-</button>
<button class="styledButton plus">+</button>
</div>
<div class="additionalOptions">
<button class="styledButton giveBlueprints">Fill blueprint shapes</button>
<button class="styledButton maxOutAll">Max out all</button>
</div>
</div>
`
);
const bind = (selector, handler) => this.trackClicks(this.element.querySelector(selector), handler);
bind(".giveBlueprints", this.giveBlueprints);
bind(".maxOutAll", this.maxOutAll);
bind(".levelToggle .minus", () => this.modifyLevel(-1));
bind(".levelToggle .plus", () => this.modifyLevel(1));
bind(".upgradesBelt .minus", () => this.modifyUpgrade("belt", -1));
bind(".upgradesBelt .plus", () => this.modifyUpgrade("belt", 1));
bind(".upgradesExtraction .minus", () => this.modifyUpgrade("miner", -1));
bind(".upgradesExtraction .plus", () => this.modifyUpgrade("miner", 1));
bind(".upgradesProcessing .minus", () => this.modifyUpgrade("processors", -1));
bind(".upgradesProcessing .plus", () => this.modifyUpgrade("processors", 1));
bind(".upgradesPainting .minus", () => this.modifyUpgrade("painting", -1));
bind(".upgradesPainting .plus", () => this.modifyUpgrade("painting", 1));
}
giveBlueprints() {
if (!this.root.hubGoals.storedShapes[blueprintShape]) {
this.root.hubGoals.storedShapes[blueprintShape] = 0;
}
this.root.hubGoals.storedShapes[blueprintShape] += 1e9;
}
maxOutAll() {
this.modifyUpgrade("belt", 100);
this.modifyUpgrade("miner", 100);
this.modifyUpgrade("processors", 100);
this.modifyUpgrade("painting", 100);
}
modifyUpgrade(id, amount) {
const handle = UPGRADES[id];
const maxLevel = handle.tiers.length;
this.root.hubGoals.upgradeLevels[id] = Math.max(
0,
Math.min(maxLevel, (this.root.hubGoals.upgradeLevels[id] || 0) + amount)
);
// Compute improvement
let improvement = 1;
for (let i = 0; i < this.root.hubGoals.upgradeLevels[id]; ++i) {
improvement += handle.tiers[i].improvement;
}
this.root.hubGoals.upgradeImprovements[id] = improvement;
this.root.signals.upgradePurchased.dispatch(id);
this.root.hud.signals.notification.dispatch(
"Upgrade '" + id + "' is now at tier " + (this.root.hubGoals.upgradeLevels[id] + 1),
enumNotificationType.upgrade
);
}
modifyLevel(amount) {
const hubGoals = this.root.hubGoals;
hubGoals.level = Math.max(1, hubGoals.level + amount);
hubGoals.createNextGoal();
// Clear all shapes of this level
hubGoals.storedShapes[hubGoals.currentGoal.definition.getHash()] = 0;
this.root.hud.parts.pinnedShapes.rerenderFull();
// Compute gained rewards
hubGoals.gainedRewards = {};
for (let i = 0; i < hubGoals.level - 1; ++i) {
if (i < tutorialGoals.length) {
const reward = tutorialGoals[i].reward;
hubGoals.gainedRewards[reward] = (hubGoals.gainedRewards[reward] || 0) + 1;
}
}
this.root.hud.signals.notification.dispatch(
"Changed level to " + hubGoals.level,
enumNotificationType.upgrade
);
}
initialize() {
// Allow toggling the controller overlay
this.root.gameState.inputReciever.keydown.add(key => {
if (key.keyCode === 117) {
// F6
this.toggle();
}
});
this.visible = !G_IS_DEV;
this.domAttach = new DynamicDomAttach(this.root, this.element);
}
toggle() {
this.visible = !this.visible;
}
update() {
this.domAttach.update(this.visible);
}
}

View File

@ -132,6 +132,8 @@ export function initMetaBuildingRegistry() {
registerBuildingVariant(44, MetaVirtualProcessorBuilding, enumVirtualProcessorVariants.rotater);
registerBuildingVariant(45, MetaVirtualProcessorBuilding, enumVirtualProcessorVariants.unstacker);
registerBuildingVariant(46, MetaVirtualProcessorBuilding, enumVirtualProcessorVariants.shapecompare);
registerBuildingVariant(50, MetaVirtualProcessorBuilding, enumVirtualProcessorVariants.stacker);
registerBuildingVariant(51, MetaVirtualProcessorBuilding, enumVirtualProcessorVariants.painter);
// Reader
registerBuildingVariant(49, MetaReaderBuilding);

View File

@ -7,6 +7,7 @@ import { BOOL_FALSE_SINGLETON, BOOL_TRUE_SINGLETON, isTruthyItem, BooleanItem }
import { COLOR_ITEM_SINGLETONS, ColorItem } from "../items/color_item";
import { ShapeDefinition } from "../shape_definition";
import { ShapeItem } from "../items/shape_item";
import { enumInvertedDirections } from "../../core/vector";
export class LogicGateSystem extends GameSystemWithFilter {
constructor(root) {
@ -24,6 +25,8 @@ export class LogicGateSystem extends GameSystemWithFilter {
[enumLogicGateType.cutter]: this.compute_CUT.bind(this),
[enumLogicGateType.unstacker]: this.compute_UNSTACK.bind(this),
[enumLogicGateType.shapecompare]: this.compute_SHAPECOMPARE.bind(this),
[enumLogicGateType.stacker]: this.compute_STACKER.bind(this),
[enumLogicGateType.painter]: this.compute_PAINTER.bind(this),
};
}
@ -259,6 +262,58 @@ export class LogicGateSystem extends GameSystemWithFilter {
];
}
/**
* @param {Array<BaseItem|null>} parameters
* @returns {BaseItem}
*/
compute_STACKER(parameters) {
const lowerItem = parameters[0];
const upperItem = parameters[1];
if (!lowerItem || !upperItem) {
// Empty
return null;
}
if (lowerItem.getItemType() !== "shape" || upperItem.getItemType() !== "shape") {
// Bad type
return null;
}
const stackedShape = this.root.shapeDefinitionMgr.shapeActionStack(
/** @type {ShapeItem} */ (lowerItem).definition,
/** @type {ShapeItem} */ (upperItem).definition
);
return this.root.shapeDefinitionMgr.getShapeItemFromDefinition(stackedShape);
}
/**
* @param {Array<BaseItem|null>} parameters
* @returns {BaseItem}
*/
compute_PAINTER(parameters) {
const shape = parameters[0];
const color = parameters[1];
if (!shape || !color) {
// Empty
return null;
}
if (shape.getItemType() !== "shape" || color.getItemType() !== "color") {
// Bad type
return null;
}
const coloredShape = this.root.shapeDefinitionMgr.shapeActionPaintWith(
/** @type {ShapeItem} */ (shape).definition,
/** @type {ColorItem} */ (color).color
);
return this.root.shapeDefinitionMgr.getShapeItemFromDefinition(coloredShape);
}
/**
* @param {Array<BaseItem|null>} parameters
* @returns {BaseItem}
@ -269,7 +324,7 @@ export class LogicGateSystem extends GameSystemWithFilter {
if (!itemA || !itemB) {
// Empty
return BOOL_FALSE_SINGLETON;
return null;
}
if (itemA.getItemType() !== itemB.getItemType()) {

View File

@ -639,6 +639,14 @@ buildings:
name: Compare
description: Returns true if both items are exactly equal. Can compare shapes, items and booleans.
stacker:
name: Virtual Stacker
description: Virtually stacks the right shape onto the left.
painter:
name: Virtual Painter
description: Virtually paints the shape from the bottom input with the shape on the right input.
storyRewards:
# Those are the rewards gained from completing the store
reward_cutter_and_trash: