Add support for different building variants

This commit is contained in:
tobspr 2020-05-16 22:45:40 +02:00
parent 436f700606
commit 5e3c28c150
66 changed files with 1196 additions and 466 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 940 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -2,7 +2,7 @@
"sprites/belt/forward_0.png":
{
"frame": {"x":67,"y":115,"w":13,"h":13},
"frame": {"x":231,"y":23,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -10,7 +10,7 @@
},
"sprites/belt/forward_1.png":
{
"frame": {"x":90,"y":95,"w":13,"h":13},
"frame": {"x":215,"y":69,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -18,7 +18,7 @@
},
"sprites/belt/forward_2.png":
{
"frame": {"x":67,"y":132,"w":13,"h":13},
"frame": {"x":250,"y":3,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -26,7 +26,7 @@
},
"sprites/belt/forward_3.png":
{
"frame": {"x":67,"y":149,"w":13,"h":13},
"frame": {"x":267,"y":3,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -34,7 +34,7 @@
},
"sprites/belt/forward_4.png":
{
"frame": {"x":67,"y":166,"w":13,"h":13},
"frame": {"x":250,"y":20,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -42,7 +42,7 @@
},
"sprites/belt/forward_5.png":
{
"frame": {"x":67,"y":183,"w":13,"h":13},
"frame": {"x":267,"y":20,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -50,7 +50,7 @@
},
"sprites/belt/left_0.png":
{
"frame": {"x":67,"y":200,"w":13,"h":13},
"frame": {"x":248,"y":37,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -58,7 +58,7 @@
},
"sprites/belt/left_1.png":
{
"frame": {"x":72,"y":217,"w":13,"h":13},
"frame": {"x":265,"y":37,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -66,7 +66,7 @@
},
"sprites/belt/left_2.png":
{
"frame": {"x":84,"y":115,"w":13,"h":13},
"frame": {"x":217,"y":86,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -74,7 +74,7 @@
},
"sprites/belt/left_3.png":
{
"frame": {"x":84,"y":132,"w":13,"h":13},
"frame": {"x":232,"y":69,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -82,7 +82,7 @@
},
"sprites/belt/left_4.png":
{
"frame": {"x":84,"y":149,"w":13,"h":13},
"frame": {"x":217,"y":103,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -90,7 +90,7 @@
},
"sprites/belt/left_5.png":
{
"frame": {"x":84,"y":166,"w":13,"h":13},
"frame": {"x":249,"y":54,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -98,7 +98,7 @@
},
"sprites/belt/right_0.png":
{
"frame": {"x":84,"y":183,"w":13,"h":13},
"frame": {"x":266,"y":54,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -106,7 +106,7 @@
},
"sprites/belt/right_1.png":
{
"frame": {"x":84,"y":200,"w":13,"h":13},
"frame": {"x":249,"y":71,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -114,7 +114,7 @@
},
"sprites/belt/right_2.png":
{
"frame": {"x":89,"y":217,"w":13,"h":13},
"frame": {"x":266,"y":71,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -122,7 +122,7 @@
},
"sprites/belt/right_3.png":
{
"frame": {"x":101,"y":112,"w":13,"h":13},
"frame": {"x":234,"y":88,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -130,7 +130,7 @@
},
"sprites/belt/right_4.png":
{
"frame": {"x":101,"y":129,"w":13,"h":13},
"frame": {"x":234,"y":105,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -138,7 +138,7 @@
},
"sprites/belt/right_5.png":
{
"frame": {"x":101,"y":146,"w":13,"h":13},
"frame": {"x":251,"y":88,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -146,7 +146,7 @@
},
"sprites/blueprints/belt_left.png":
{
"frame": {"x":101,"y":163,"w":13,"h":13},
"frame": {"x":268,"y":88,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -154,7 +154,7 @@
},
"sprites/blueprints/belt_right.png":
{
"frame": {"x":101,"y":180,"w":13,"h":13},
"frame": {"x":251,"y":105,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -162,7 +162,7 @@
},
"sprites/blueprints/belt_top.png":
{
"frame": {"x":101,"y":197,"w":13,"h":13},
"frame": {"x":268,"y":105,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -170,15 +170,23 @@
},
"sprites/blueprints/cutter.png":
{
"frame": {"x":82,"y":3,"w":36,"h":19},
"frame": {"x":133,"y":95,"w":36,"h":19},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":36,"h":19},
"sourceSize": {"w":38,"h":19}
},
"sprites/blueprints/miner-chainable.png":
{
"frame": {"x":164,"y":26,"w":19,"h":19},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":19,"h":19},
"sourceSize": {"w":19,"h":19}
},
"sprites/blueprints/miner.png":
{
"frame": {"x":44,"y":83,"w":19,"h":19},
"frame": {"x":164,"y":49,"w":19,"h":19},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":19,"h":19},
@ -186,31 +194,47 @@
},
"sprites/blueprints/mixer.png":
{
"frame": {"x":3,"y":83,"w":37,"h":19},
"frame": {"x":82,"y":49,"w":37,"h":19},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":37,"h":19},
"sourceSize": {"w":38,"h":19}
},
"sprites/blueprints/painter-double.png":
{
"frame": {"x":3,"y":83,"w":38,"h":38},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":38,"h":38},
"sourceSize": {"w":38,"h":38}
},
"sprites/blueprints/painter.png":
{
"frame": {"x":3,"y":106,"w":37,"h":19},
"frame": {"x":82,"y":3,"w":38,"h":19},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":37,"h":19},
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":38,"h":19},
"sourceSize": {"w":38,"h":19}
},
"sprites/blueprints/rotater.png":
{
"frame": {"x":44,"y":106,"w":19,"h":19},
"frame": {"x":169,"y":72,"w":19,"h":19},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":19,"h":19},
"sourceSize": {"w":19,"h":19}
},
"sprites/blueprints/splitter-compact.png":
{
"frame": {"x":196,"y":95,"w":17,"h":19},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":0,"w":17,"h":19},
"sourceSize": {"w":19,"h":19}
},
"sprites/blueprints/splitter.png":
{
"frame": {"x":82,"y":26,"w":36,"h":19},
"frame": {"x":124,"y":3,"w":36,"h":19},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":36,"h":19},
@ -218,7 +242,7 @@
},
"sprites/blueprints/stacker.png":
{
"frame": {"x":3,"y":129,"w":37,"h":19},
"frame": {"x":87,"y":82,"w":37,"h":19},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":37,"h":19},
@ -226,7 +250,7 @@
},
"sprites/blueprints/trash.png":
{
"frame": {"x":44,"y":129,"w":19,"h":19},
"frame": {"x":173,"y":95,"w":19,"h":19},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":19,"h":19},
@ -234,7 +258,7 @@
},
"sprites/blueprints/underground_belt_entry.png":
{
"frame": {"x":3,"y":221,"w":19,"h":16},
"frame": {"x":87,"y":105,"w":19,"h":16},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":3,"w":19,"h":16},
@ -242,7 +266,7 @@
},
"sprites/blueprints/underground_belt_exit.png":
{
"frame": {"x":26,"y":221,"w":19,"h":16},
"frame": {"x":110,"y":105,"w":19,"h":16},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":19,"h":16},
@ -250,7 +274,7 @@
},
"sprites/buildings/belt_left.png":
{
"frame": {"x":67,"y":200,"w":13,"h":13},
"frame": {"x":248,"y":37,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -258,7 +282,7 @@
},
"sprites/buildings/belt_right.png":
{
"frame": {"x":84,"y":183,"w":13,"h":13},
"frame": {"x":266,"y":54,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -266,7 +290,7 @@
},
"sprites/buildings/belt_top.png":
{
"frame": {"x":67,"y":115,"w":13,"h":13},
"frame": {"x":231,"y":23,"w":13,"h":13},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":13,"h":13},
@ -274,7 +298,7 @@
},
"sprites/buildings/cutter.png":
{
"frame": {"x":82,"y":49,"w":36,"h":19},
"frame": {"x":124,"y":26,"w":36,"h":19},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":36,"h":19},
@ -288,9 +312,17 @@
"spriteSourceSize": {"x":1,"y":1,"w":75,"h":76},
"sourceSize": {"w":77,"h":77}
},
"sprites/buildings/miner-chainable.png":
{
"frame": {"x":187,"y":26,"w":19,"h":19},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":19,"h":19},
"sourceSize": {"w":19,"h":19}
},
"sprites/buildings/miner.png":
{
"frame": {"x":44,"y":152,"w":19,"h":19},
"frame": {"x":204,"y":3,"w":19,"h":19},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":19,"h":19},
@ -298,31 +330,47 @@
},
"sprites/buildings/mixer.png":
{
"frame": {"x":3,"y":152,"w":37,"h":19},
"frame": {"x":123,"y":49,"w":37,"h":19},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":37,"h":19},
"sourceSize": {"w":38,"h":19}
},
"sprites/buildings/painter-double.png":
{
"frame": {"x":45,"y":83,"w":38,"h":38},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":38,"h":38},
"sourceSize": {"w":38,"h":38}
},
"sprites/buildings/painter.png":
{
"frame": {"x":3,"y":175,"w":37,"h":19},
"frame": {"x":82,"y":26,"w":38,"h":19},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":37,"h":19},
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":38,"h":19},
"sourceSize": {"w":38,"h":19}
},
"sprites/buildings/rotater.png":
{
"frame": {"x":44,"y":175,"w":19,"h":19},
"frame": {"x":187,"y":49,"w":19,"h":19},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":19,"h":19},
"sourceSize": {"w":19,"h":19}
},
"sprites/buildings/splitter-compact.png":
{
"frame": {"x":210,"y":26,"w":17,"h":19},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":0,"w":17,"h":19},
"sourceSize": {"w":19,"h":19}
},
"sprites/buildings/splitter.png":
{
"frame": {"x":82,"y":72,"w":36,"h":19},
"frame": {"x":164,"y":3,"w":36,"h":19},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":36,"h":19},
@ -330,7 +378,7 @@
},
"sprites/buildings/stacker.png":
{
"frame": {"x":3,"y":198,"w":37,"h":19},
"frame": {"x":128,"y":72,"w":37,"h":19},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":37,"h":19},
@ -338,7 +386,7 @@
},
"sprites/buildings/trash.png":
{
"frame": {"x":44,"y":198,"w":19,"h":19},
"frame": {"x":192,"y":72,"w":19,"h":19},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":19,"h":19},
@ -346,7 +394,7 @@
},
"sprites/buildings/underground_belt_entry.png":
{
"frame": {"x":49,"y":221,"w":19,"h":16},
"frame": {"x":227,"y":3,"w":19,"h":16},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":3,"w":19,"h":16},
@ -354,7 +402,7 @@
},
"sprites/buildings/underground_belt_exit.png":
{
"frame": {"x":67,"y":95,"w":19,"h":16},
"frame": {"x":210,"y":49,"w":19,"h":16},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":19,"h":16},
@ -362,7 +410,7 @@
},
"sprites/debug/acceptor_slot.png":
{
"frame": {"x":67,"y":83,"w":6,"h":6},
"frame": {"x":82,"y":72,"w":6,"h":6},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":6,"h":6},
@ -370,7 +418,7 @@
},
"sprites/debug/ejector_slot.png":
{
"frame": {"x":106,"y":228,"w":6,"h":6},
"frame": {"x":92,"y":72,"w":6,"h":6},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":6,"h":6},
@ -378,7 +426,7 @@
},
"sprites/map_overview/belt_forward.png":
{
"frame": {"x":72,"y":234,"w":3,"h":3},
"frame": {"x":102,"y":72,"w":3,"h":3},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":3,"h":3},
@ -386,7 +434,7 @@
},
"sprites/map_overview/belt_left.png":
{
"frame": {"x":79,"y":234,"w":3,"h":3},
"frame": {"x":109,"y":72,"w":3,"h":3},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":3,"h":3},
@ -394,7 +442,7 @@
},
"sprites/map_overview/belt_right.png":
{
"frame": {"x":86,"y":234,"w":3,"h":3},
"frame": {"x":116,"y":72,"w":3,"h":3},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":3,"h":3},
@ -402,7 +450,7 @@
},
"sprites/misc/deletion_marker.png":
{
"frame": {"x":107,"y":95,"w":10,"h":10},
"frame": {"x":233,"y":40,"w":10,"h":10},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":10,"h":10},
@ -410,7 +458,7 @@
},
"sprites/misc/slot_bad_arrow.png":
{
"frame": {"x":107,"y":95,"w":10,"h":10},
"frame": {"x":233,"y":40,"w":10,"h":10},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":10,"h":10},
@ -418,7 +466,7 @@
},
"sprites/misc/slot_good_arrow.png":
{
"frame": {"x":106,"y":214,"w":10,"h":10},
"frame": {"x":233,"y":54,"w":10,"h":10},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":10,"h":10},
@ -429,8 +477,8 @@
"version": "1.0",
"image": "atlas0_10.png",
"format": "RGBA8888",
"size": {"w":121,"h":240},
"size": {"w":284,"h":124},
"scale": "0.1",
"smartupdate": "$TexturePacker:SmartUpdate:6f541b04fa898735b7720261181cc97b:b18d1c683463edcbb86f64fc0c0cfac0:f159918d23e5952766c6d23ab52278c6$"
"smartupdate": "$TexturePacker:SmartUpdate:f63fd65ef73974465324213239ca32e1:fb51df0c27e5bdac60799c0e88f833c7:f159918d23e5952766c6d23ab52278c6$"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

@ -2,7 +2,7 @@
"sprites/belt/forward_0.png":
{
"frame": {"x":109,"y":1839,"w":100,"h":126},
"frame": {"x":2371,"y":329,"w":100,"h":126},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":13,"y":0,"w":100,"h":126},
@ -10,7 +10,7 @@
},
"sprites/belt/forward_1.png":
{
"frame": {"x":213,"y":1839,"w":100,"h":126},
"frame": {"x":1797,"y":587,"w":100,"h":126},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":13,"y":0,"w":100,"h":126},
@ -18,7 +18,7 @@
},
"sprites/belt/forward_2.png":
{
"frame": {"x":317,"y":1839,"w":100,"h":126},
"frame": {"x":1838,"y":717,"w":100,"h":126},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":13,"y":0,"w":100,"h":126},
@ -26,7 +26,7 @@
},
"sprites/belt/forward_3.png":
{
"frame": {"x":346,"y":1709,"w":100,"h":126},
"frame": {"x":1901,"y":585,"w":100,"h":126},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":13,"y":0,"w":100,"h":126},
@ -34,7 +34,7 @@
},
"sprites/belt/forward_4.png":
{
"frame": {"x":421,"y":1839,"w":100,"h":126},
"frame": {"x":2005,"y":585,"w":100,"h":126},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":13,"y":0,"w":100,"h":126},
@ -42,7 +42,7 @@
},
"sprites/belt/forward_5.png":
{
"frame": {"x":450,"y":1709,"w":100,"h":126},
"frame": {"x":1942,"y":715,"w":100,"h":126},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":13,"y":0,"w":100,"h":126},
@ -50,7 +50,7 @@
},
"sprites/belt/left_0.png":
{
"frame": {"x":891,"y":783,"w":113,"h":113},
"frame": {"x":2186,"y":502,"w":113,"h":113},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":13,"w":113,"h":113},
@ -58,7 +58,7 @@
},
"sprites/belt/left_1.png":
{
"frame": {"x":891,"y":900,"w":113,"h":113},
"frame": {"x":2303,"y":502,"w":113,"h":113},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":13,"w":113,"h":113},
@ -66,7 +66,7 @@
},
"sprites/belt/left_2.png":
{
"frame": {"x":889,"y":1254,"w":113,"h":113},
"frame": {"x":1838,"y":847,"w":113,"h":113},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":13,"w":113,"h":113},
@ -74,7 +74,7 @@
},
"sprites/belt/left_3.png":
{
"frame": {"x":888,"y":1371,"w":113,"h":113},
"frame": {"x":1955,"y":845,"w":113,"h":113},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":13,"w":113,"h":113},
@ -82,7 +82,7 @@
},
"sprites/belt/left_4.png":
{
"frame": {"x":882,"y":1488,"w":113,"h":113},
"frame": {"x":2046,"y":715,"w":113,"h":113},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":13,"w":113,"h":113},
@ -90,7 +90,7 @@
},
"sprites/belt/left_5.png":
{
"frame": {"x":873,"y":1605,"w":113,"h":113},
"frame": {"x":2072,"y":832,"w":113,"h":113},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":13,"w":113,"h":113},
@ -98,7 +98,7 @@
},
"sprites/belt/right_0.png":
{
"frame": {"x":873,"y":1722,"w":113,"h":113},
"frame": {"x":2163,"y":619,"w":113,"h":113},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":13,"y":13,"w":113,"h":113},
@ -106,7 +106,7 @@
},
"sprites/belt/right_1.png":
{
"frame": {"x":3,"y":1710,"w":113,"h":113},
"frame": {"x":2280,"y":619,"w":113,"h":113},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":13,"y":13,"w":113,"h":113},
@ -114,7 +114,7 @@
},
"sprites/belt/right_2.png":
{
"frame": {"x":120,"y":1710,"w":113,"h":113},
"frame": {"x":2189,"y":736,"w":113,"h":113},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":13,"y":13,"w":113,"h":113},
@ -122,7 +122,7 @@
},
"sprites/belt/right_3.png":
{
"frame": {"x":525,"y":1839,"w":113,"h":113},
"frame": {"x":2189,"y":853,"w":113,"h":113},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":13,"y":13,"w":113,"h":113},
@ -130,7 +130,7 @@
},
"sprites/belt/right_4.png":
{
"frame": {"x":554,"y":1709,"w":113,"h":113},
"frame": {"x":2306,"y":736,"w":113,"h":113},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":13,"y":13,"w":113,"h":113},
@ -138,7 +138,7 @@
},
"sprites/belt/right_5.png":
{
"frame": {"x":642,"y":1839,"w":113,"h":113},
"frame": {"x":2306,"y":853,"w":113,"h":113},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":13,"y":13,"w":113,"h":113},
@ -146,7 +146,7 @@
},
"sprites/blueprints/belt_left.png":
{
"frame": {"x":889,"y":1136,"w":114,"h":114},
"frame": {"x":2048,"y":316,"w":114,"h":114},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":12,"w":114,"h":114},
@ -154,7 +154,7 @@
},
"sprites/blueprints/belt_right.png":
{
"frame": {"x":889,"y":1017,"w":114,"h":115},
"frame": {"x":2048,"y":197,"w":114,"h":115},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":12,"y":11,"w":114,"h":115},
@ -162,7 +162,7 @@
},
"sprites/blueprints/belt_top.png":
{
"frame": {"x":3,"y":1839,"w":102,"h":126},
"frame": {"x":2352,"y":199,"w":102,"h":126},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":12,"y":0,"w":102,"h":126},
@ -170,15 +170,23 @@
},
"sprites/blueprints/cutter.png":
{
"frame": {"x":352,"y":1320,"w":341,"h":191},
"frame": {"x":391,"y":737,"w":341,"h":191},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":23,"y":0,"w":341,"h":191},
"sourceSize": {"w":384,"h":192}
},
"sprites/blueprints/miner-chainable.png":
{
"frame": {"x":1466,"y":778,"w":182,"h":190},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":6,"y":0,"w":182,"h":190},
"sourceSize": {"w":192,"h":192}
},
"sprites/blueprints/miner.png":
{
"frame": {"x":705,"y":783,"w":182,"h":190},
"frame": {"x":1652,"y":771,"w":182,"h":190},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":6,"y":0,"w":182,"h":190},
@ -186,31 +194,47 @@
},
"sprites/blueprints/mixer.png":
{
"frame": {"x":3,"y":737,"w":347,"h":191},
"frame": {"x":1123,"y":388,"w":347,"h":191},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":18,"y":0,"w":347,"h":191},
"sourceSize": {"w":384,"h":192}
},
"sprites/blueprints/painter.png":
"sprites/blueprints/painter-double.png":
{
"frame": {"x":354,"y":737,"w":347,"h":191},
"frame": {"x":735,"y":3,"w":384,"h":382},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":18,"y":0,"w":347,"h":191},
"spriteSourceSize": {"x":0,"y":0,"w":384,"h":382},
"sourceSize": {"w":384,"h":384}
},
"sprites/blueprints/painter.png":
{
"frame": {"x":3,"y":737,"w":384,"h":192},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":384,"h":192},
"sourceSize": {"w":384,"h":192}
},
"sprites/blueprints/rotater.png":
{
"frame": {"x":735,"y":394,"w":189,"h":191},
"frame": {"x":1275,"y":583,"w":189,"h":191},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":0,"w":189,"h":191},
"sourceSize": {"w":192,"h":192}
},
"sprites/blueprints/splitter-compact.png":
{
"frame": {"x":1468,"y":587,"w":161,"h":182},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":31,"y":4,"w":161,"h":182},
"sourceSize": {"w":192,"h":192}
},
"sprites/blueprints/splitter.png":
{
"frame": {"x":3,"y":1321,"w":340,"h":191},
"frame": {"x":1474,"y":392,"w":340,"h":191},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":23,"y":0,"w":340,"h":191},
@ -218,7 +242,7 @@
},
"sprites/blueprints/stacker.png":
{
"frame": {"x":3,"y":932,"w":347,"h":191},
"frame": {"x":1511,"y":3,"w":347,"h":191},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":18,"y":0,"w":347,"h":191},
@ -226,7 +250,7 @@
},
"sprites/blueprints/trash.png":
{
"frame": {"x":735,"y":3,"w":192,"h":192},
"frame": {"x":2211,"y":3,"w":192,"h":192},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":192,"h":192},
@ -234,7 +258,7 @@
},
"sprites/blueprints/underground_belt_entry.png":
{
"frame": {"x":703,"y":977,"w":182,"h":148},
"frame": {"x":1862,"y":197,"w":182,"h":148},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":6,"y":44,"w":182,"h":148},
@ -242,7 +266,7 @@
},
"sprites/blueprints/underground_belt_exit.png":
{
"frame": {"x":703,"y":1129,"w":182,"h":148},
"frame": {"x":2166,"y":199,"w":182,"h":148},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":6,"y":0,"w":182,"h":148},
@ -250,7 +274,7 @@
},
"sprites/buildings/belt_left.png":
{
"frame": {"x":891,"y":783,"w":113,"h":113},
"frame": {"x":2186,"y":502,"w":113,"h":113},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":13,"w":113,"h":113},
@ -258,7 +282,7 @@
},
"sprites/buildings/belt_right.png":
{
"frame": {"x":873,"y":1722,"w":113,"h":113},
"frame": {"x":2163,"y":619,"w":113,"h":113},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":13,"y":13,"w":113,"h":113},
@ -266,7 +290,7 @@
},
"sprites/buildings/belt_top.png":
{
"frame": {"x":109,"y":1839,"w":100,"h":126},
"frame": {"x":2371,"y":329,"w":100,"h":126},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":13,"y":0,"w":100,"h":126},
@ -274,7 +298,7 @@
},
"sprites/buildings/cutter.png":
{
"frame": {"x":347,"y":1515,"w":339,"h":190},
"frame": {"x":736,"y":584,"w":339,"h":190},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":24,"y":0,"w":339,"h":190},
@ -288,9 +312,17 @@
"spriteSourceSize": {"x":20,"y":22,"w":728,"h":730},
"sourceSize": {"w":768,"h":768}
},
"sprites/buildings/miner-chainable.png":
{
"frame": {"x":1818,"y":392,"w":179,"h":188},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":8,"y":1,"w":179,"h":188},
"sourceSize": {"w":192,"h":192}
},
"sprites/buildings/miner.png":
{
"frame": {"x":690,"y":1583,"w":179,"h":189},
"frame": {"x":1079,"y":779,"w":179,"h":189},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":8,"y":0,"w":179,"h":189},
@ -298,31 +330,47 @@
},
"sprites/buildings/mixer.png":
{
"frame": {"x":354,"y":932,"w":345,"h":190},
"frame": {"x":1862,"y":3,"w":345,"h":190},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":19,"y":0,"w":345,"h":190},
"sourceSize": {"w":384,"h":192}
},
"sprites/buildings/painter.png":
"sprites/buildings/painter-double.png":
{
"frame": {"x":354,"y":1126,"w":345,"h":190},
"frame": {"x":1123,"y":3,"w":384,"h":381},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":19,"y":0,"w":345,"h":190},
"spriteSourceSize": {"x":0,"y":0,"w":384,"h":381},
"sourceSize": {"w":384,"h":384}
},
"sprites/buildings/painter.png":
{
"frame": {"x":735,"y":389,"w":384,"h":191},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":384,"h":191},
"sourceSize": {"w":384,"h":192}
},
"sprites/buildings/rotater.png":
{
"frame": {"x":735,"y":589,"w":187,"h":190},
"frame": {"x":1275,"y":778,"w":187,"h":190},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":187,"h":190},
"sourceSize": {"w":192,"h":192}
},
"sprites/buildings/splitter-compact.png":
{
"frame": {"x":1633,"y":587,"w":160,"h":180},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":32,"y":5,"w":160,"h":180},
"sourceSize": {"w":192,"h":192}
},
"sprites/buildings/splitter.png":
{
"frame": {"x":3,"y":1516,"w":339,"h":190},
"frame": {"x":736,"y":778,"w":339,"h":190},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":24,"y":0,"w":339,"h":190},
@ -330,7 +378,7 @@
},
"sprites/buildings/stacker.png":
{
"frame": {"x":3,"y":1127,"w":345,"h":190},
"frame": {"x":1511,"y":198,"w":345,"h":190},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":19,"y":0,"w":345,"h":190},
@ -338,7 +386,7 @@
},
"sprites/buildings/trash.png":
{
"frame": {"x":735,"y":199,"w":192,"h":191},
"frame": {"x":1079,"y":584,"w":192,"h":191},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":1,"w":192,"h":191},
@ -346,7 +394,7 @@
},
"sprites/buildings/underground_belt_entry.png":
{
"frame": {"x":703,"y":1281,"w":181,"h":147},
"frame": {"x":2001,"y":434,"w":181,"h":147},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":7,"y":45,"w":181,"h":147},
@ -354,7 +402,7 @@
},
"sprites/buildings/underground_belt_exit.png":
{
"frame": {"x":697,"y":1432,"w":181,"h":147},
"frame": {"x":2186,"y":351,"w":181,"h":147},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":7,"y":0,"w":181,"h":147},
@ -362,7 +410,7 @@
},
"sprites/debug/acceptor_slot.png":
{
"frame": {"x":931,"y":3,"w":50,"h":64},
"frame": {"x":2109,"y":585,"w":50,"h":64},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":7,"y":0,"w":50,"h":64},
@ -370,7 +418,7 @@
},
"sprites/debug/ejector_slot.png":
{
"frame": {"x":931,"y":71,"w":50,"h":64},
"frame": {"x":2397,"y":619,"w":50,"h":64},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":7,"y":0,"w":50,"h":64},
@ -378,7 +426,7 @@
},
"sprites/map_overview/belt_forward.png":
{
"frame": {"x":931,"y":171,"w":24,"h":32},
"frame": {"x":3,"y":933,"w":24,"h":32},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":24,"h":32},
@ -386,7 +434,7 @@
},
"sprites/map_overview/belt_left.png":
{
"frame": {"x":931,"y":139,"w":28,"h":28},
"frame": {"x":2371,"y":459,"w":28,"h":28},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":4,"w":28,"h":28},
@ -394,7 +442,7 @@
},
"sprites/map_overview/belt_right.png":
{
"frame": {"x":963,"y":139,"w":28,"h":28},
"frame": {"x":1797,"y":717,"w":28,"h":28},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":4,"w":28,"h":28},
@ -402,7 +450,7 @@
},
"sprites/misc/deletion_marker.png":
{
"frame": {"x":237,"y":1710,"w":82,"h":82},
"frame": {"x":2407,"y":103,"w":82,"h":82},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":7,"y":7,"w":82,"h":82},
@ -410,7 +458,7 @@
},
"sprites/misc/slot_bad_arrow.png":
{
"frame": {"x":237,"y":1710,"w":82,"h":82},
"frame": {"x":2407,"y":103,"w":82,"h":82},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":7,"y":7,"w":82,"h":82},
@ -418,7 +466,7 @@
},
"sprites/misc/slot_good_arrow.png":
{
"frame": {"x":759,"y":1776,"w":80,"h":96},
"frame": {"x":2407,"y":3,"w":80,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":8,"y":0,"w":80,"h":96},
@ -429,8 +477,8 @@
"version": "1.0",
"image": "atlas0_100.png",
"format": "RGBA8888",
"size": {"w":1007,"h":1968},
"size": {"w":2492,"h":971},
"scale": "1",
"smartupdate": "$TexturePacker:SmartUpdate:6f541b04fa898735b7720261181cc97b:b18d1c683463edcbb86f64fc0c0cfac0:f159918d23e5952766c6d23ab52278c6$"
"smartupdate": "$TexturePacker:SmartUpdate:f63fd65ef73974465324213239ca32e1:fb51df0c27e5bdac60799c0e88f833c7:f159918d23e5952766c6d23ab52278c6$"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 390 KiB

After

Width:  |  Height:  |  Size: 530 KiB

View File

@ -2,7 +2,7 @@
"sprites/belt/forward_0.png":
{
"frame": {"x":425,"y":55,"w":28,"h":32},
"frame": {"x":393,"y":55,"w":28,"h":32},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":0,"w":28,"h":32},
@ -10,7 +10,7 @@
},
"sprites/belt/forward_1.png":
{
"frame": {"x":425,"y":91,"w":28,"h":32},
"frame": {"x":425,"y":55,"w":28,"h":32},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":0,"w":28,"h":32},
@ -18,7 +18,7 @@
},
"sprites/belt/forward_2.png":
{
"frame": {"x":425,"y":127,"w":28,"h":32},
"frame": {"x":457,"y":55,"w":28,"h":32},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":0,"w":28,"h":32},
@ -26,7 +26,7 @@
},
"sprites/belt/forward_3.png":
{
"frame": {"x":425,"y":163,"w":28,"h":32},
"frame": {"x":489,"y":55,"w":28,"h":32},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":0,"w":28,"h":32},
@ -34,7 +34,7 @@
},
"sprites/belt/forward_4.png":
{
"frame": {"x":437,"y":199,"w":28,"h":32},
"frame": {"x":521,"y":55,"w":28,"h":32},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":0,"w":28,"h":32},
@ -42,7 +42,7 @@
},
"sprites/belt/forward_5.png":
{
"frame": {"x":457,"y":89,"w":28,"h":32},
"frame": {"x":553,"y":55,"w":28,"h":32},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":0,"w":28,"h":32},
@ -50,7 +50,7 @@
},
"sprites/belt/left_0.png":
{
"frame": {"x":469,"y":55,"w":30,"h":30},
"frame": {"x":589,"y":142,"w":30,"h":30},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":2,"w":30,"h":30},
@ -58,7 +58,7 @@
},
"sprites/belt/left_1.png":
{
"frame": {"x":503,"y":55,"w":30,"h":30},
"frame": {"x":628,"y":3,"w":30,"h":30},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":2,"w":30,"h":30},
@ -66,7 +66,7 @@
},
"sprites/belt/left_2.png":
{
"frame": {"x":537,"y":55,"w":30,"h":30},
"frame": {"x":662,"y":3,"w":30,"h":30},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":2,"w":30,"h":30},
@ -74,7 +74,7 @@
},
"sprites/belt/left_3.png":
{
"frame": {"x":457,"y":161,"w":30,"h":30},
"frame": {"x":628,"y":37,"w":30,"h":30},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":2,"w":30,"h":30},
@ -82,7 +82,7 @@
},
"sprites/belt/left_4.png":
{
"frame": {"x":469,"y":195,"w":30,"h":30},
"frame": {"x":662,"y":37,"w":30,"h":30},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":2,"w":30,"h":30},
@ -90,7 +90,7 @@
},
"sprites/belt/left_5.png":
{
"frame": {"x":489,"y":89,"w":30,"h":30},
"frame": {"x":617,"y":71,"w":30,"h":30},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":2,"w":30,"h":30},
@ -98,7 +98,7 @@
},
"sprites/belt/right_0.png":
{
"frame": {"x":489,"y":123,"w":30,"h":30},
"frame": {"x":617,"y":105,"w":30,"h":30},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":2,"w":30,"h":30},
@ -106,7 +106,7 @@
},
"sprites/belt/right_1.png":
{
"frame": {"x":491,"y":157,"w":30,"h":30},
"frame": {"x":651,"y":71,"w":30,"h":30},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":2,"w":30,"h":30},
@ -114,7 +114,7 @@
},
"sprites/belt/right_2.png":
{
"frame": {"x":503,"y":191,"w":30,"h":30},
"frame": {"x":651,"y":105,"w":30,"h":30},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":2,"w":30,"h":30},
@ -122,7 +122,7 @@
},
"sprites/belt/right_3.png":
{
"frame": {"x":537,"y":89,"w":30,"h":30},
"frame": {"x":623,"y":139,"w":30,"h":30},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":2,"w":30,"h":30},
@ -130,7 +130,7 @@
},
"sprites/belt/right_4.png":
{
"frame": {"x":523,"y":123,"w":30,"h":30},
"frame": {"x":657,"y":139,"w":30,"h":30},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":2,"w":30,"h":30},
@ -138,7 +138,7 @@
},
"sprites/belt/right_5.png":
{
"frame": {"x":525,"y":157,"w":30,"h":30},
"frame": {"x":623,"y":173,"w":30,"h":30},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":2,"w":30,"h":30},
@ -146,7 +146,7 @@
},
"sprites/blueprints/belt_left.png":
{
"frame": {"x":557,"y":123,"w":30,"h":30},
"frame": {"x":657,"y":173,"w":30,"h":30},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":2,"w":30,"h":30},
@ -154,7 +154,7 @@
},
"sprites/blueprints/belt_right.png":
{
"frame": {"x":537,"y":191,"w":30,"h":30},
"frame": {"x":630,"y":207,"w":30,"h":30},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":2,"w":30,"h":30},
@ -162,7 +162,7 @@
},
"sprites/blueprints/belt_top.png":
{
"frame": {"x":457,"y":125,"w":28,"h":32},
"frame": {"x":585,"y":55,"w":28,"h":32},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":0,"w":28,"h":32},
@ -170,15 +170,23 @@
},
"sprites/blueprints/cutter.png":
{
"frame": {"x":282,"y":159,"w":87,"h":48},
"frame": {"x":383,"y":3,"w":87,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":5,"y":0,"w":87,"h":48},
"sourceSize": {"w":96,"h":48}
},
"sprites/blueprints/miner-chainable.png":
{
"frame": {"x":526,"y":3,"w":47,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":48},
"sourceSize": {"w":48,"h":48}
},
"sprites/blueprints/miner.png":
{
"frame": {"x":541,"y":3,"w":47,"h":48},
"frame": {"x":577,"y":3,"w":47,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":48},
@ -186,31 +194,47 @@
},
"sprites/blueprints/mixer.png":
{
"frame": {"x":3,"y":192,"w":89,"h":48},
"frame": {"x":191,"y":103,"w":89,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":89,"h":48},
"sourceSize": {"w":96,"h":48}
},
"sprites/blueprints/painter-double.png":
{
"frame": {"x":191,"y":3,"w":96,"h":96},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
"sourceSize": {"w":96,"h":96}
},
"sprites/blueprints/painter.png":
{
"frame": {"x":96,"y":192,"w":89,"h":48},
"frame": {"x":3,"y":192,"w":96,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":89,"h":48},
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":48},
"sourceSize": {"w":96,"h":48}
},
"sprites/blueprints/rotater.png":
{
"frame": {"x":373,"y":159,"w":48,"h":48},
"frame": {"x":474,"y":3,"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.png":
{
"frame": {"x":572,"y":91,"w":41,"h":47},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":7,"y":0,"w":41,"h":47},
"sourceSize": {"w":48,"h":48}
},
"sprites/blueprints/splitter.png":
{
"frame": {"x":283,"y":3,"w":87,"h":48},
"frame": {"x":377,"y":97,"w":87,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":5,"y":0,"w":87,"h":48},
@ -218,7 +242,7 @@
},
"sprites/blueprints/stacker.png":
{
"frame": {"x":189,"y":192,"w":89,"h":48},
"frame": {"x":284,"y":103,"w":89,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":89,"h":48},
@ -226,7 +250,7 @@
},
"sprites/blueprints/trash.png":
{
"frame": {"x":437,"y":3,"w":48,"h":48},
"frame": {"x":468,"y":91,"w":48,"h":48},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
@ -234,7 +258,7 @@
},
"sprites/blueprints/underground_belt_entry.png":
{
"frame": {"x":282,"y":211,"w":48,"h":38},
"frame": {"x":303,"y":207,"w":48,"h":38},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":10,"w":48,"h":38},
@ -242,7 +266,7 @@
},
"sprites/blueprints/underground_belt_exit.png":
{
"frame": {"x":334,"y":211,"w":48,"h":38},
"frame": {"x":355,"y":207,"w":48,"h":38},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":38},
@ -250,7 +274,7 @@
},
"sprites/buildings/belt_left.png":
{
"frame": {"x":469,"y":55,"w":30,"h":30},
"frame": {"x":589,"y":142,"w":30,"h":30},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":2,"w":30,"h":30},
@ -258,7 +282,7 @@
},
"sprites/buildings/belt_right.png":
{
"frame": {"x":489,"y":123,"w":30,"h":30},
"frame": {"x":617,"y":105,"w":30,"h":30},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":2,"w":30,"h":30},
@ -266,7 +290,7 @@
},
"sprites/buildings/belt_top.png":
{
"frame": {"x":425,"y":55,"w":28,"h":32},
"frame": {"x":393,"y":55,"w":28,"h":32},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":0,"w":28,"h":32},
@ -274,7 +298,7 @@
},
"sprites/buildings/cutter.png":
{
"frame": {"x":283,"y":55,"w":87,"h":48},
"frame": {"x":395,"y":149,"w":87,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":5,"y":0,"w":87,"h":48},
@ -288,9 +312,17 @@
"spriteSourceSize": {"x":4,"y":4,"w":184,"h":185},
"sourceSize": {"w":192,"h":192}
},
"sprites/buildings/miner-chainable.png":
{
"frame": {"x":498,"y":195,"w":47,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":48},
"sourceSize": {"w":48,"h":48}
},
"sprites/buildings/miner.png":
{
"frame": {"x":374,"y":55,"w":47,"h":48},
"frame": {"x":538,"y":143,"w":47,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":48},
@ -298,31 +330,47 @@
},
"sprites/buildings/mixer.png":
{
"frame": {"x":191,"y":3,"w":88,"h":48},
"frame": {"x":303,"y":155,"w":88,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":88,"h":48},
"sourceSize": {"w":96,"h":48}
},
"sprites/buildings/painter-double.png":
{
"frame": {"x":203,"y":155,"w":96,"h":96},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
"sourceSize": {"w":96,"h":96}
},
"sprites/buildings/painter.png":
{
"frame": {"x":191,"y":55,"w":88,"h":48},
"frame": {"x":103,"y":192,"w":96,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":88,"h":48},
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":48},
"sourceSize": {"w":96,"h":48}
},
"sprites/buildings/rotater.png":
{
"frame": {"x":374,"y":3,"w":48,"h":48},
"frame": {"x":486,"y":143,"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.png":
{
"frame": {"x":549,"y":195,"w":41,"h":47},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":7,"y":0,"w":41,"h":47},
"sourceSize": {"w":48,"h":48}
},
"sprites/buildings/splitter.png":
{
"frame": {"x":283,"y":107,"w":87,"h":48},
"frame": {"x":407,"y":201,"w":87,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":5,"y":0,"w":87,"h":48},
@ -330,7 +378,7 @@
},
"sprites/buildings/stacker.png":
{
"frame": {"x":191,"y":107,"w":88,"h":48},
"frame": {"x":291,"y":3,"w":88,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":88,"h":48},
@ -338,7 +386,7 @@
},
"sprites/buildings/trash.png":
{
"frame": {"x":489,"y":3,"w":48,"h":48},
"frame": {"x":520,"y":91,"w":48,"h":48},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":48,"h":48},
@ -346,7 +394,7 @@
},
"sprites/buildings/underground_belt_entry.png":
{
"frame": {"x":386,"y":211,"w":47,"h":38},
"frame": {"x":291,"y":55,"w":47,"h":38},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":10,"w":47,"h":38},
@ -354,7 +402,7 @@
},
"sprites/buildings/underground_belt_exit.png":
{
"frame": {"x":374,"y":107,"w":47,"h":38},
"frame": {"x":342,"y":55,"w":47,"h":38},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":47,"h":38},
@ -362,7 +410,7 @@
},
"sprites/debug/acceptor_slot.png":
{
"frame": {"x":243,"y":159,"w":14,"h":16},
"frame": {"x":594,"y":230,"w":14,"h":16},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":14,"h":16},
@ -370,7 +418,7 @@
},
"sprites/debug/ejector_slot.png":
{
"frame": {"x":261,"y":159,"w":14,"h":16},
"frame": {"x":612,"y":230,"w":14,"h":16},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":14,"h":16},
@ -378,7 +426,7 @@
},
"sprites/map_overview/belt_forward.png":
{
"frame": {"x":243,"y":179,"w":8,"h":8},
"frame": {"x":191,"y":155,"w":8,"h":8},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":8,"h":8},
@ -386,7 +434,7 @@
},
"sprites/map_overview/belt_left.png":
{
"frame": {"x":255,"y":179,"w":8,"h":8},
"frame": {"x":191,"y":167,"w":8,"h":8},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":8,"h":8},
@ -394,7 +442,7 @@
},
"sprites/map_overview/belt_right.png":
{
"frame": {"x":267,"y":179,"w":8,"h":8},
"frame": {"x":191,"y":179,"w":8,"h":8},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":8,"h":8},
@ -402,7 +450,7 @@
},
"sprites/misc/deletion_marker.png":
{
"frame": {"x":217,"y":159,"w":22,"h":22},
"frame": {"x":594,"y":204,"w":22,"h":22},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":1,"w":22,"h":22},
@ -410,7 +458,7 @@
},
"sprites/misc/slot_bad_arrow.png":
{
"frame": {"x":217,"y":159,"w":22,"h":22},
"frame": {"x":594,"y":204,"w":22,"h":22},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":1,"w":22,"h":22},
@ -418,7 +466,7 @@
},
"sprites/misc/slot_good_arrow.png":
{
"frame": {"x":191,"y":159,"w":22,"h":24},
"frame": {"x":594,"y":176,"w":22,"h":24},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":22,"h":24},
@ -429,8 +477,8 @@
"version": "1.0",
"image": "atlas0_25.png",
"format": "RGBA8888",
"size": {"w":591,"h":252},
"size": {"w":695,"h":254},
"scale": "0.25",
"smartupdate": "$TexturePacker:SmartUpdate:6f541b04fa898735b7720261181cc97b:b18d1c683463edcbb86f64fc0c0cfac0:f159918d23e5952766c6d23ab52278c6$"
"smartupdate": "$TexturePacker:SmartUpdate:f63fd65ef73974465324213239ca32e1:fb51df0c27e5bdac60799c0e88f833c7:f159918d23e5952766c6d23ab52278c6$"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 106 KiB

View File

@ -2,7 +2,7 @@
"sprites/belt/forward_0.png":
{
"frame": {"x":609,"y":381,"w":51,"h":63},
"frame": {"x":873,"y":398,"w":51,"h":63},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":6,"y":0,"w":51,"h":63},
@ -10,7 +10,7 @@
},
"sprites/belt/forward_1.png":
{
"frame": {"x":969,"y":364,"w":51,"h":63},
"frame": {"x":1111,"y":365,"w":51,"h":63},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":6,"y":0,"w":51,"h":63},
@ -18,7 +18,7 @@
},
"sprites/belt/forward_2.png":
{
"frame": {"x":796,"y":426,"w":51,"h":63},
"frame": {"x":1166,"y":370,"w":51,"h":63},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":6,"y":0,"w":51,"h":63},
@ -26,7 +26,7 @@
},
"sprites/belt/forward_3.png":
{
"frame": {"x":851,"y":425,"w":51,"h":63},
"frame": {"x":1221,"y":370,"w":51,"h":63},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":6,"y":0,"w":51,"h":63},
@ -34,7 +34,7 @@
},
"sprites/belt/forward_4.png":
{
"frame": {"x":906,"y":425,"w":51,"h":63},
"frame": {"x":1111,"y":432,"w":51,"h":63},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":6,"y":0,"w":51,"h":63},
@ -42,7 +42,7 @@
},
"sprites/belt/forward_5.png":
{
"frame": {"x":961,"y":431,"w":51,"h":63},
"frame": {"x":1166,"y":437,"w":51,"h":63},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":6,"y":0,"w":51,"h":63},
@ -50,7 +50,7 @@
},
"sprites/belt/left_0.png":
{
"frame": {"x":787,"y":303,"w":57,"h":57},
"frame": {"x":568,"y":378,"w":57,"h":57},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":6,"w":57,"h":57},
@ -58,7 +58,7 @@
},
"sprites/belt/left_1.png":
{
"frame": {"x":848,"y":303,"w":57,"h":57},
"frame": {"x":1148,"y":303,"w":57,"h":57},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":6,"w":57,"h":57},
@ -66,7 +66,7 @@
},
"sprites/belt/left_2.png":
{
"frame": {"x":909,"y":303,"w":57,"h":57},
"frame": {"x":629,"y":397,"w":57,"h":57},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":6,"w":57,"h":57},
@ -74,7 +74,7 @@
},
"sprites/belt/left_3.png":
{
"frame": {"x":552,"y":449,"w":57,"h":57},
"frame": {"x":568,"y":439,"w":57,"h":57},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":6,"w":57,"h":57},
@ -82,7 +82,7 @@
},
"sprites/belt/left_4.png":
{
"frame": {"x":613,"y":448,"w":57,"h":57},
"frame": {"x":690,"y":400,"w":57,"h":57},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":6,"w":57,"h":57},
@ -90,7 +90,7 @@
},
"sprites/belt/left_5.png":
{
"frame": {"x":664,"y":365,"w":57,"h":57},
"frame": {"x":751,"y":400,"w":57,"h":57},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":6,"w":57,"h":57},
@ -98,7 +98,7 @@
},
"sprites/belt/right_0.png":
{
"frame": {"x":725,"y":365,"w":57,"h":57},
"frame": {"x":812,"y":398,"w":57,"h":57},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":6,"y":6,"w":57,"h":57},
@ -106,7 +106,7 @@
},
"sprites/belt/right_1.png":
{
"frame": {"x":674,"y":426,"w":57,"h":57},
"frame": {"x":928,"y":381,"w":57,"h":57},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":6,"y":6,"w":57,"h":57},
@ -114,7 +114,7 @@
},
"sprites/belt/right_2.png":
{
"frame": {"x":735,"y":426,"w":57,"h":57},
"frame": {"x":989,"y":381,"w":57,"h":57},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":6,"y":6,"w":57,"h":57},
@ -122,7 +122,7 @@
},
"sprites/belt/right_3.png":
{
"frame": {"x":786,"y":365,"w":57,"h":57},
"frame": {"x":1050,"y":381,"w":57,"h":57},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":6,"y":6,"w":57,"h":57},
@ -130,7 +130,7 @@
},
"sprites/belt/right_4.png":
{
"frame": {"x":847,"y":364,"w":57,"h":57},
"frame": {"x":928,"y":442,"w":57,"h":57},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":6,"y":6,"w":57,"h":57},
@ -138,7 +138,7 @@
},
"sprites/belt/right_5.png":
{
"frame": {"x":908,"y":364,"w":57,"h":57},
"frame": {"x":989,"y":442,"w":57,"h":57},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":6,"y":6,"w":57,"h":57},
@ -146,7 +146,7 @@
},
"sprites/blueprints/belt_left.png":
{
"frame": {"x":663,"y":303,"w":58,"h":58},
"frame": {"x":373,"y":299,"w":58,"h":58},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":5,"w":58,"h":58},
@ -154,7 +154,7 @@
},
"sprites/blueprints/belt_right.png":
{
"frame": {"x":725,"y":303,"w":58,"h":58},
"frame": {"x":1086,"y":303,"w":58,"h":58},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":5,"y":5,"w":58,"h":58},
@ -162,7 +162,7 @@
},
"sprites/blueprints/belt_top.png":
{
"frame": {"x":552,"y":382,"w":53,"h":63},
"frame": {"x":1209,"y":303,"w":53,"h":63},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":5,"y":0,"w":53,"h":63},
@ -170,15 +170,23 @@
},
"sprites/blueprints/cutter.png":
{
"frame": {"x":551,"y":103,"w":172,"h":96},
"frame": {"x":765,"y":103,"w":172,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":11,"y":0,"w":172,"h":96},
"sourceSize": {"w":192,"h":96}
},
"sprites/blueprints/miner-chainable.png":
{
"frame": {"x":1147,"y":203,"w":92,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":92,"h":96},
"sourceSize": {"w":96,"h":96}
},
"sprites/blueprints/miner.png":
{
"frame": {"x":925,"y":203,"w":92,"h":96},
"frame": {"x":377,"y":378,"w":92,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":92,"h":96},
@ -186,31 +194,47 @@
},
"sprites/blueprints/mixer.png":
{
"frame": {"x":3,"y":374,"w":175,"h":96},
"frame": {"x":569,"y":198,"w":175,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":8,"y":0,"w":175,"h":96},
"sourceSize": {"w":192,"h":96}
},
"sprites/blueprints/painter-double.png":
{
"frame": {"x":373,"y":3,"w":192,"h":192},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":192,"h":192},
"sourceSize": {"w":192,"h":192}
},
"sprites/blueprints/painter.png":
{
"frame": {"x":373,"y":3,"w":175,"h":96},
"frame": {"x":3,"y":374,"w":192,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":8,"y":0,"w":175,"h":96},
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":192,"h":96},
"sourceSize": {"w":192,"h":96}
},
"sprites/blueprints/rotater.png":
{
"frame": {"x":905,"y":3,"w":96,"h":96},
"frame": {"x":748,"y":203,"w":96,"h":96},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
"sourceSize": {"w":96,"h":96}
},
"sprites/blueprints/splitter-compact.png":
{
"frame": {"x":724,"y":303,"w":81,"h":93},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":15,"y":1,"w":81,"h":93},
"sourceSize": {"w":96,"h":96}
},
"sprites/blueprints/splitter.png":
{
"frame": {"x":730,"y":3,"w":171,"h":96},
"frame": {"x":1122,"y":3,"w":171,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":11,"y":0,"w":171,"h":96},
@ -218,7 +242,7 @@
},
"sprites/blueprints/stacker.png":
{
"frame": {"x":182,"y":374,"w":175,"h":96},
"frame": {"x":765,"y":3,"w":175,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":8,"y":0,"w":175,"h":96},
@ -226,7 +250,7 @@
},
"sprites/blueprints/trash.png":
{
"frame": {"x":726,"y":203,"w":96,"h":96},
"frame": {"x":848,"y":203,"w":96,"h":96},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
@ -234,7 +258,7 @@
},
"sprites/blueprints/underground_belt_entry.png":
{
"frame": {"x":373,"y":303,"w":93,"h":75},
"frame": {"x":435,"y":299,"w":93,"h":75},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":21,"w":93,"h":75},
@ -242,7 +266,7 @@
},
"sprites/blueprints/underground_belt_exit.png":
{
"frame": {"x":470,"y":303,"w":93,"h":75},
"frame": {"x":532,"y":299,"w":93,"h":75},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":0,"w":93,"h":75},
@ -250,7 +274,7 @@
},
"sprites/buildings/belt_left.png":
{
"frame": {"x":787,"y":303,"w":57,"h":57},
"frame": {"x":568,"y":378,"w":57,"h":57},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":6,"w":57,"h":57},
@ -258,7 +282,7 @@
},
"sprites/buildings/belt_right.png":
{
"frame": {"x":725,"y":365,"w":57,"h":57},
"frame": {"x":812,"y":398,"w":57,"h":57},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":6,"y":6,"w":57,"h":57},
@ -266,7 +290,7 @@
},
"sprites/buildings/belt_top.png":
{
"frame": {"x":609,"y":381,"w":51,"h":63},
"frame": {"x":873,"y":398,"w":51,"h":63},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":6,"y":0,"w":51,"h":63},
@ -274,7 +298,7 @@
},
"sprites/buildings/cutter.png":
{
"frame": {"x":551,"y":203,"w":171,"h":96},
"frame": {"x":941,"y":103,"w":171,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":11,"y":0,"w":171,"h":96},
@ -288,9 +312,17 @@
"spriteSourceSize": {"x":9,"y":10,"w":366,"h":367},
"sourceSize": {"w":384,"h":384}
},
"sprites/buildings/miner-chainable.png":
{
"frame": {"x":473,"y":378,"w":91,"h":95},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":91,"h":95},
"sourceSize": {"w":96,"h":96}
},
"sprites/buildings/miner.png":
{
"frame": {"x":361,"y":382,"w":91,"h":95},
"frame": {"x":629,"y":298,"w":91,"h":95},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":91,"h":95},
@ -298,31 +330,47 @@
},
"sprites/buildings/mixer.png":
{
"frame": {"x":373,"y":103,"w":174,"h":96},
"frame": {"x":944,"y":3,"w":174,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":174,"h":96},
"sourceSize": {"w":192,"h":96}
},
"sprites/buildings/painter.png":
"sprites/buildings/painter-double.png":
{
"frame": {"x":552,"y":3,"w":174,"h":96},
"frame": {"x":569,"y":3,"w":192,"h":191},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":174,"h":96},
"spriteSourceSize": {"x":0,"y":0,"w":192,"h":191},
"sourceSize": {"w":192,"h":192}
},
"sprites/buildings/painter.png":
{
"frame": {"x":373,"y":199,"w":192,"h":96},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":192,"h":96},
"sourceSize": {"w":192,"h":96}
},
"sprites/buildings/rotater.png":
{
"frame": {"x":826,"y":203,"w":95,"h":96},
"frame": {"x":1048,"y":203,"w":95,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":95,"h":96},
"sourceSize": {"w":96,"h":96}
},
"sprites/buildings/splitter-compact.png":
{
"frame": {"x":809,"y":303,"w":81,"h":91},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":15,"y":2,"w":81,"h":91},
"sourceSize": {"w":96,"h":96}
},
"sprites/buildings/splitter.png":
{
"frame": {"x":727,"y":103,"w":171,"h":96},
"frame": {"x":1116,"y":103,"w":171,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":11,"y":0,"w":171,"h":96},
@ -330,7 +378,7 @@
},
"sprites/buildings/stacker.png":
{
"frame": {"x":373,"y":203,"w":174,"h":96},
"frame": {"x":199,"y":374,"w":174,"h":96},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":174,"h":96},
@ -338,7 +386,7 @@
},
"sprites/buildings/trash.png":
{
"frame": {"x":902,"y":103,"w":96,"h":96},
"frame": {"x":948,"y":203,"w":96,"h":96},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":96,"h":96},
@ -346,7 +394,7 @@
},
"sprites/buildings/underground_belt_entry.png":
{
"frame": {"x":567,"y":303,"w":92,"h":74},
"frame": {"x":894,"y":303,"w":92,"h":74},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":22,"w":92,"h":74},
@ -354,7 +402,7 @@
},
"sprites/buildings/underground_belt_exit.png":
{
"frame": {"x":456,"y":382,"w":92,"h":74},
"frame": {"x":990,"y":303,"w":92,"h":74},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":92,"h":74},
@ -362,7 +410,7 @@
},
"sprites/debug/acceptor_slot.png":
{
"frame": {"x":3,"y":474,"w":26,"h":32},
"frame": {"x":1243,"y":255,"w":26,"h":32},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":26,"h":32},
@ -370,7 +418,7 @@
},
"sprites/debug/ejector_slot.png":
{
"frame": {"x":33,"y":474,"w":26,"h":32},
"frame": {"x":1050,"y":442,"w":26,"h":32},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":26,"h":32},
@ -378,7 +426,7 @@
},
"sprites/map_overview/belt_forward.png":
{
"frame": {"x":63,"y":474,"w":14,"h":16},
"frame": {"x":3,"y":474,"w":14,"h":16},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":14,"h":16},
@ -386,7 +434,7 @@
},
"sprites/map_overview/belt_left.png":
{
"frame": {"x":1005,"y":3,"w":15,"h":15},
"frame": {"x":1221,"y":437,"w":15,"h":15},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":1,"w":15,"h":15},
@ -394,7 +442,7 @@
},
"sprites/map_overview/belt_right.png":
{
"frame": {"x":1005,"y":22,"w":15,"h":15},
"frame": {"x":1050,"y":478,"w":15,"h":15},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":1,"w":15,"h":15},
@ -402,7 +450,7 @@
},
"sprites/misc/deletion_marker.png":
{
"frame": {"x":456,"y":460,"w":42,"h":42},
"frame": {"x":629,"y":458,"w":42,"h":42},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":3,"w":42,"h":42},
@ -410,7 +458,7 @@
},
"sprites/misc/slot_bad_arrow.png":
{
"frame": {"x":456,"y":460,"w":42,"h":42},
"frame": {"x":629,"y":458,"w":42,"h":42},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":3,"w":42,"h":42},
@ -418,7 +466,7 @@
},
"sprites/misc/slot_good_arrow.png":
{
"frame": {"x":970,"y":303,"w":42,"h":48},
"frame": {"x":1243,"y":203,"w":42,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":3,"y":0,"w":42,"h":48},
@ -429,8 +477,8 @@
"version": "1.0",
"image": "atlas0_50.png",
"format": "RGBA8888",
"size": {"w":1023,"h":509},
"size": {"w":1296,"h":503},
"scale": "0.5",
"smartupdate": "$TexturePacker:SmartUpdate:6f541b04fa898735b7720261181cc97b:b18d1c683463edcbb86f64fc0c0cfac0:f159918d23e5952766c6d23ab52278c6$"
"smartupdate": "$TexturePacker:SmartUpdate:f63fd65ef73974465324213239ca32e1:fb51df0c27e5bdac60799c0e88f833c7:f159918d23e5952766c6d23ab52278c6$"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 KiB

After

Width:  |  Height:  |  Size: 255 KiB

View File

@ -2,7 +2,7 @@
"sprites/belt/forward_0.png":
{
"frame": {"x":882,"y":800,"w":77,"h":95},
"frame": {"x":842,"y":800,"w":77,"h":95},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":77,"h":95},
@ -10,7 +10,7 @@
},
"sprites/belt/forward_1.png":
{
"frame": {"x":882,"y":899,"w":77,"h":95},
"frame": {"x":923,"y":799,"w":77,"h":95},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":77,"h":95},
@ -18,7 +18,7 @@
},
"sprites/belt/forward_2.png":
{
"frame": {"x":963,"y":800,"w":77,"h":95},
"frame": {"x":1286,"y":588,"w":77,"h":95},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":77,"h":95},
@ -26,7 +26,7 @@
},
"sprites/belt/forward_3.png":
{
"frame": {"x":1044,"y":800,"w":77,"h":95},
"frame": {"x":932,"y":898,"w":77,"h":95},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":77,"h":95},
@ -34,7 +34,7 @@
},
"sprites/belt/forward_4.png":
{
"frame": {"x":963,"y":899,"w":77,"h":95},
"frame": {"x":1286,"y":687,"w":77,"h":95},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":77,"h":95},
@ -42,7 +42,7 @@
},
"sprites/belt/forward_5.png":
{
"frame": {"x":1044,"y":899,"w":77,"h":95},
"frame": {"x":1004,"y":799,"w":77,"h":95},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":77,"h":95},
@ -50,7 +50,7 @@
},
"sprites/belt/left_0.png":
{
"frame": {"x":820,"y":445,"w":86,"h":86},
"frame": {"x":1106,"y":593,"w":86,"h":86},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":86,"h":86},
@ -58,7 +58,7 @@
},
"sprites/belt/left_1.png":
{
"frame": {"x":960,"y":3,"w":86,"h":86},
"frame": {"x":915,"y":709,"w":86,"h":86},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":86,"h":86},
@ -66,7 +66,7 @@
},
"sprites/belt/left_2.png":
{
"frame": {"x":991,"y":145,"w":86,"h":86},
"frame": {"x":1005,"y":708,"w":86,"h":86},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":86,"h":86},
@ -74,7 +74,7 @@
},
"sprites/belt/left_3.png":
{
"frame": {"x":932,"y":530,"w":86,"h":86},
"frame": {"x":1196,"y":593,"w":86,"h":86},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":86,"h":86},
@ -82,7 +82,7 @@
},
"sprites/belt/left_4.png":
{
"frame": {"x":1022,"y":530,"w":86,"h":86},
"frame": {"x":842,"y":899,"w":86,"h":86},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":86,"h":86},
@ -90,7 +90,7 @@
},
"sprites/belt/left_5.png":
{
"frame": {"x":932,"y":620,"w":86,"h":86},
"frame": {"x":1106,"y":683,"w":86,"h":86},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":86,"h":86},
@ -98,7 +98,7 @@
},
"sprites/belt/right_0.png":
{
"frame": {"x":1022,"y":620,"w":86,"h":86},
"frame": {"x":1196,"y":683,"w":86,"h":86},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":86,"h":86},
@ -106,7 +106,7 @@
},
"sprites/belt/right_1.png":
{
"frame": {"x":792,"y":690,"w":86,"h":86},
"frame": {"x":1013,"y":898,"w":86,"h":86},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":86,"h":86},
@ -114,7 +114,7 @@
},
"sprites/belt/right_2.png":
{
"frame": {"x":882,"y":710,"w":86,"h":86},
"frame": {"x":1095,"y":773,"w":86,"h":86},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":86,"h":86},
@ -122,7 +122,7 @@
},
"sprites/belt/right_3.png":
{
"frame": {"x":792,"y":780,"w":86,"h":86},
"frame": {"x":1185,"y":773,"w":86,"h":86},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":86,"h":86},
@ -130,7 +130,7 @@
},
"sprites/belt/right_4.png":
{
"frame": {"x":972,"y":710,"w":86,"h":86},
"frame": {"x":1275,"y":786,"w":86,"h":86},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":86,"h":86},
@ -138,7 +138,7 @@
},
"sprites/belt/right_5.png":
{
"frame": {"x":792,"y":870,"w":86,"h":86},
"frame": {"x":1103,"y":863,"w":86,"h":86},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":86,"h":86},
@ -146,7 +146,7 @@
},
"sprites/blueprints/belt_left.png":
{
"frame": {"x":555,"y":446,"w":87,"h":87},
"frame": {"x":697,"y":588,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":8,"w":87,"h":87},
@ -154,7 +154,7 @@
},
"sprites/blueprints/belt_right.png":
{
"frame": {"x":646,"y":446,"w":87,"h":87},
"frame": {"x":824,"y":709,"w":87,"h":87},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":8,"y":8,"w":87,"h":87},
@ -162,7 +162,7 @@
},
"sprites/blueprints/belt_top.png":
{
"frame": {"x":737,"y":445,"w":79,"h":95},
"frame": {"x":1290,"y":298,"w":79,"h":95},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":8,"y":0,"w":79,"h":95},
@ -170,15 +170,23 @@
},
"sprites/blueprints/cutter.png":
{
"frame": {"x":532,"y":556,"w":256,"h":144},
"frame": {"x":295,"y":556,"w":256,"h":144},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":17,"y":0,"w":256,"h":144},
"sourceSize": {"w":288,"h":144}
},
"sprites/blueprints/miner-chainable.png":
{
"frame": {"x":559,"y":704,"w":136,"h":143},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":5,"y":0,"w":136,"h":143},
"sourceSize": {"w":144,"h":144}
},
"sprites/blueprints/miner.png":
{
"frame": {"x":703,"y":298,"w":136,"h":143},
"frame": {"x":819,"y":447,"w":136,"h":143},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":5,"y":0,"w":136,"h":143},
@ -186,31 +194,47 @@
},
"sprites/blueprints/mixer.png":
{
"frame": {"x":3,"y":556,"w":261,"h":144},
"frame": {"x":847,"y":3,"w":261,"h":144},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":13,"y":0,"w":261,"h":144},
"sourceSize": {"w":288,"h":144}
},
"sprites/blueprints/painter.png":
"sprites/blueprints/painter-double.png":
{
"frame": {"x":3,"y":704,"w":261,"h":144},
"frame": {"x":3,"y":556,"w":288,"h":287},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":13,"y":0,"w":261,"h":144},
"spriteSourceSize": {"x":0,"y":0,"w":288,"h":287},
"sourceSize": {"w":288,"h":288}
},
"sprites/blueprints/painter.png":
{
"frame": {"x":3,"y":847,"w":288,"h":144},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":288,"h":144},
"sourceSize": {"w":288,"h":144}
},
"sprites/blueprints/rotater.png":
{
"frame": {"x":703,"y":150,"w":143,"h":144},
"frame": {"x":1143,"y":298,"w":143,"h":144},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":1,"y":0,"w":143,"h":144},
"sourceSize": {"w":144,"h":144}
},
"sprites/blueprints/splitter-compact.png":
{
"frame": {"x":1239,"y":446,"w":121,"h":138},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":23,"y":2,"w":121,"h":138},
"sourceSize": {"w":144,"h":144}
},
"sprites/blueprints/splitter.png":
{
"frame": {"x":532,"y":704,"w":256,"h":144},
"frame": {"x":1112,"y":3,"w":256,"h":144},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":17,"y":0,"w":256,"h":144},
@ -218,7 +242,7 @@
},
"sprites/blueprints/stacker.png":
{
"frame": {"x":3,"y":852,"w":261,"h":144},
"frame": {"x":847,"y":151,"w":261,"h":144},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":13,"y":0,"w":261,"h":144},
@ -226,7 +250,7 @@
},
"sprites/blueprints/trash.png":
{
"frame": {"x":555,"y":150,"w":144,"h":144},
"frame": {"x":847,"y":299,"w":144,"h":144},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":144},
@ -234,7 +258,7 @@
},
"sprites/blueprints/underground_belt_entry.png":
{
"frame": {"x":843,"y":298,"w":138,"h":112},
"frame": {"x":555,"y":588,"w":138,"h":112},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":32,"w":138,"h":112},
@ -242,7 +266,7 @@
},
"sprites/blueprints/underground_belt_exit.png":
{
"frame": {"x":919,"y":414,"w":138,"h":112},
"frame": {"x":700,"y":819,"w":138,"h":112},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":4,"y":0,"w":138,"h":112},
@ -250,7 +274,7 @@
},
"sprites/buildings/belt_left.png":
{
"frame": {"x":820,"y":445,"w":86,"h":86},
"frame": {"x":1106,"y":593,"w":86,"h":86},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":9,"w":86,"h":86},
@ -258,7 +282,7 @@
},
"sprites/buildings/belt_right.png":
{
"frame": {"x":1022,"y":620,"w":86,"h":86},
"frame": {"x":1196,"y":683,"w":86,"h":86},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":9,"w":86,"h":86},
@ -266,7 +290,7 @@
},
"sprites/buildings/belt_top.png":
{
"frame": {"x":882,"y":800,"w":77,"h":95},
"frame": {"x":842,"y":800,"w":77,"h":95},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":9,"y":0,"w":77,"h":95},
@ -274,7 +298,7 @@
},
"sprites/buildings/cutter.png":
{
"frame": {"x":532,"y":852,"w":256,"h":143},
"frame": {"x":1112,"y":151,"w":256,"h":143},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":17,"y":0,"w":256,"h":143},
@ -288,9 +312,17 @@
"spriteSourceSize": {"x":14,"y":16,"w":548,"h":549},
"sourceSize": {"w":576,"h":576}
},
"sprites/buildings/miner-chainable.png":
{
"frame": {"x":959,"y":447,"w":136,"h":142},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":5,"y":0,"w":136,"h":142},
"sourceSize": {"w":144,"h":144}
},
"sprites/buildings/miner.png":
{
"frame": {"x":792,"y":544,"w":136,"h":142},
"frame": {"x":1099,"y":447,"w":136,"h":142},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":5,"y":0,"w":136,"h":142},
@ -298,31 +330,47 @@
},
"sprites/buildings/mixer.png":
{
"frame": {"x":268,"y":556,"w":260,"h":143},
"frame": {"x":555,"y":441,"w":260,"h":143},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":14,"y":0,"w":260,"h":143},
"sourceSize": {"w":288,"h":144}
},
"sprites/buildings/painter.png":
"sprites/buildings/painter-double.png":
{
"frame": {"x":268,"y":703,"w":260,"h":143},
"frame": {"x":555,"y":3,"w":288,"h":286},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":14,"y":0,"w":260,"h":143},
"spriteSourceSize": {"x":0,"y":0,"w":288,"h":286},
"sourceSize": {"w":288,"h":288}
},
"sprites/buildings/painter.png":
{
"frame": {"x":555,"y":293,"w":288,"h":144},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":288,"h":144},
"sourceSize": {"w":288,"h":144}
},
"sprites/buildings/rotater.png":
{
"frame": {"x":815,"y":3,"w":141,"h":143},
"frame": {"x":555,"y":851,"w":141,"h":143},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":0,"w":141,"h":143},
"sourceSize": {"w":144,"h":144}
},
"sprites/buildings/splitter-compact.png":
{
"frame": {"x":699,"y":679,"w":121,"h":136},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":23,"y":3,"w":121,"h":136},
"sourceSize": {"w":144,"h":144}
},
"sprites/buildings/splitter.png":
{
"frame": {"x":555,"y":3,"w":256,"h":143},
"frame": {"x":295,"y":851,"w":256,"h":143},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":17,"y":0,"w":256,"h":143},
@ -330,7 +378,7 @@
},
"sprites/buildings/stacker.png":
{
"frame": {"x":268,"y":850,"w":260,"h":143},
"frame": {"x":295,"y":704,"w":260,"h":143},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":14,"y":0,"w":260,"h":143},
@ -338,7 +386,7 @@
},
"sprites/buildings/trash.png":
{
"frame": {"x":555,"y":298,"w":144,"h":144},
"frame": {"x":995,"y":299,"w":144,"h":144},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":144,"h":144},
@ -346,7 +394,7 @@
},
"sprites/buildings/underground_belt_entry.png":
{
"frame": {"x":850,"y":150,"w":137,"h":111},
"frame": {"x":824,"y":594,"w":137,"h":111},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":5,"y":33,"w":137,"h":111},
@ -354,7 +402,7 @@
},
"sprites/buildings/underground_belt_exit.png":
{
"frame": {"x":985,"y":265,"w":137,"h":111},
"frame": {"x":965,"y":593,"w":137,"h":111},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":5,"y":0,"w":137,"h":111},
@ -362,7 +410,7 @@
},
"sprites/debug/acceptor_slot.png":
{
"frame": {"x":960,"y":93,"w":38,"h":48},
"frame": {"x":700,"y":935,"w":38,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":5,"y":0,"w":38,"h":48},
@ -370,7 +418,7 @@
},
"sprites/debug/ejector_slot.png":
{
"frame": {"x":1002,"y":93,"w":38,"h":48},
"frame": {"x":742,"y":935,"w":38,"h":48},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":5,"y":0,"w":38,"h":48},
@ -378,7 +426,7 @@
},
"sprites/map_overview/belt_forward.png":
{
"frame": {"x":895,"y":414,"w":20,"h":24},
"frame": {"x":1290,"y":397,"w":20,"h":24},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":0,"w":20,"h":24},
@ -386,7 +434,7 @@
},
"sprites/map_overview/belt_left.png":
{
"frame": {"x":843,"y":414,"w":22,"h":22},
"frame": {"x":788,"y":588,"w":22,"h":22},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":0,"y":2,"w":22,"h":22},
@ -394,7 +442,7 @@
},
"sprites/map_overview/belt_right.png":
{
"frame": {"x":869,"y":414,"w":22,"h":22},
"frame": {"x":1103,"y":953,"w":22,"h":22},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":2,"y":2,"w":22,"h":22},
@ -402,7 +450,7 @@
},
"sprites/misc/deletion_marker.png":
{
"frame": {"x":1050,"y":79,"w":62,"h":62},
"frame": {"x":1259,"y":876,"w":62,"h":62},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":5,"y":5,"w":62,"h":62},
@ -410,7 +458,7 @@
},
"sprites/misc/slot_bad_arrow.png":
{
"frame": {"x":1050,"y":79,"w":62,"h":62},
"frame": {"x":1259,"y":876,"w":62,"h":62},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":5,"y":5,"w":62,"h":62},
@ -418,7 +466,7 @@
},
"sprites/misc/slot_good_arrow.png":
{
"frame": {"x":1050,"y":3,"w":62,"h":72},
"frame": {"x":1193,"y":863,"w":62,"h":72},
"rotated": false,
"trimmed": true,
"spriteSourceSize": {"x":5,"y":0,"w":62,"h":72},
@ -429,8 +477,8 @@
"version": "1.0",
"image": "atlas0_75.png",
"format": "RGBA8888",
"size": {"w":1125,"h":999},
"size": {"w":1372,"h":997},
"scale": "0.75",
"smartupdate": "$TexturePacker:SmartUpdate:6f541b04fa898735b7720261181cc97b:b18d1c683463edcbb86f64fc0c0cfac0:f159918d23e5952766c6d23ab52278c6$"
"smartupdate": "$TexturePacker:SmartUpdate:f63fd65ef73974465324213239ca32e1:fb51df0c27e5bdac60799c0e88f833c7:f159918d23e5952766c6d23ab52278c6$"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 402 KiB

After

Width:  |  Height:  |  Size: 496 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

@ -1,23 +1,11 @@
// $icons: ;
// @each $icon in $icons {
// [data-icon="#{$icon}"] {
// background-image: uiResource("res/ui/#{$icon}");
// }
// }
$buildings: belt, cutter, miner, mixer, painter, rotater, splitter, stacker, trash, underground_belt;
@each $building in $buildings {
[data-icon="building_tutorials/#{$building}.png"] {
background-image: uiResource("res/ui/building_tutorials/#{$building}.png") !important;
}
}
$upgrades: belt, miner, painting, processors;
@each $upgrade in $upgrades {
[data-icon="upgrades/#{$upgrade}.png"] {
background-image: uiResource("res/ui/upgrades/#{$upgrade}.png") !important;
[data-icon="building_icons/#{$building}.png"] {
background-image: uiResource("res/ui/building_icons/#{$building}.png") !important;
}
}

View File

@ -1,6 +1,6 @@
#ingame_HUD_building_placer {
#ingame_HUD_PlacementHints {
position: fixed;
@include S(top, 40px);
@include S(top, 60px);
@include S(right, 10px);
display: grid;
@ -54,3 +54,60 @@
display: none !important;
}
}
#ingame_HUD_PlacerVariants {
position: absolute;
@include S(left, 10px);
@include S(bottom, 80px);
display: grid;
grid-auto-flow: row;
@include S(grid-gap, 5px);
.explanation {
@include PlainText;
.keybinding {
position: relative;
}
}
.variant {
@include S(border-radius, 4px);
background: rgba(0, 10, 20, 0.1);
display: grid;
position: relative;
grid-template-columns: auto 1fr;
align-items: center;
@include S(padding, 5px);
@include S(grid-gap, 10px);
&.active {
background-color: rgba(74, 163, 223, 0.6);
}
$iconSize: 25px;
.iconWrap {
grid-column: 1 / 2;
grid-row: 1 / 2;
position: relative;
@include S(width, $iconSize);
@include S(height, $iconSize);
background: center center / contain no-repeat;
&[data-tile-w="2"] {
@include S(width, 2 * $iconSize);
}
&[data-tile-h="2"] {
@include S(height, 2 * $iconSize);
}
}
.label {
grid-column: 2 / 3;
grid-row: 1 / 2;
@include PlainText;
color: #fff;
}
}
}

View File

@ -22,7 +22,7 @@
.buildings {
display: grid;
grid-auto-flow: column;
@include S(padding, 0, 5px);
@include S(margin-bottom, 2px);
.building {
color: $accentColorDark;
@ -33,19 +33,17 @@
justify-content: center;
@include S(padding, 5px);
@include S(padding-bottom, 1px);
$buildingIconSize: 32px;
@include S(width, 35px);
@include S(height, 40px);
background: center center / 70% no-repeat;
&:not(.unlocked) {
@include S(width, 30px);
.tooltip {
display: none !important;
}
.keybinding,
.iconWrap {
opacity: 0.01;
}
opacity: 0.8;
background-image: none !important;
&::before {
opacity: 0.5;
content: " ";
background: uiResource("locked_building.png") center center / #{D(20px)} #{D(20px)}
no-repeat;
@ -58,8 +56,10 @@
}
}
@include S(border-radius, 4px);
&.selected {
background: rgba(74, 163, 223, 0.3) !important;
background-color: rgba(74, 163, 223, 0.3) !important;
transform: scale(1.05);
.keybinding {
color: #111;
@ -69,35 +69,11 @@
pointer-events: all;
transition: all 0.05s ease-in-out;
transition-property: background-color, transform;
&.unlocked:hover {
background: rgba($accentColorDark, 0.1);
background-color: rgba($accentColorDark, 0.1);
cursor: pointer;
}
.iconWrap {
position: relative;
@include S(width, $buildingIconSize);
@include S(height, $buildingIconSize);
@include S(margin-top, 3px);
@include S(margin-bottom, 6px);
}
.label {
@include SuperSmallText;
display: none;
font-weight: bold;
text-transform: uppercase;
}
&[data-tilewidth="2"] {
.iconWrap {
@include S(width, 2 * $buildingIconSize);
}
}
&:last-child {
border: none;
}
}
}
}

View File

@ -8,8 +8,11 @@
@include S(padding, 9px);
@include PlainText;
color: #fff;
display: flex;
align-items: center;
.keybinding {
@include S(margin, 0, 4px);
position: relative;
top: unset;
left: unset;

View File

@ -1,7 +1,7 @@
#ingame_HUD_PinnedShapes {
position: absolute;
@include S(left, 9px);
@include S(top, 120px);
@include S(top, 150px);
@include PlainText;
display: flex;
flex-direction: column;

View File

@ -101,7 +101,7 @@
display: flex;
flex-direction: column;
align-items: center;
@include S(width, 65px);
@include S(width, 75px);
button.pin {
@include S(width, 12px);

View File

@ -148,11 +148,13 @@
grid-column: 3 / 4;
grid-row: 1 / 2;
@include Heading;
align-self: center;
text-align: right;
color: #55595a;
}
canvas.graph {
@include S(width, 300px);
@include S(width, 270px);
@include S(height, 40px);
@include S(border-radius, 0, 0, 2px, 2px);
$color: rgba(0, 10, 20, 0.04);

View File

@ -39,11 +39,32 @@
@import "ingame_hud/notifications";
@import "ingame_hud/settings_menu";
// Z-Index
$elements: ingame_Canvas, ingame_VignetteOverlay, ingame_HUD_building_placer, ingame_HUD_PinnedShapes,
ingame_HUD_buildings_toolbar, ingame_HUD_GameMenu, ingame_HUD_KeybindingOverlay, ingame_HUD_Notifications,
ingame_HUD_Shop, ingame_HUD_Statistics, ingame_HUD_BetaOverlay, ingame_HUD_MassSelector,
ingame_HUD_UnlockNotification, ingame_HUD_SettingsMenu;
// prettier-ignore
$elements:
// Base
ingame_Canvas,
ingame_VignetteOverlay,
// Ingame overlays
ingame_HUD_PlacementHints,
ingame_HUD_PlacerVariants,
// Regular hud
ingame_HUD_PinnedShapes,
ingame_HUD_buildings_toolbar,
ingame_HUD_GameMenu,
ingame_HUD_KeybindingOverlay,
ingame_HUD_MassSelector,
ingame_HUD_Notifications,
// Overlays
ingame_HUD_BetaOverlay,
// Dialogs
ingame_HUD_Shop,
ingame_HUD_Statistics,
ingame_HUD_UnlockNotification,
ingame_HUD_SettingsMenu;
$zindex: 100;
@ -57,7 +78,7 @@ $zindex: 100;
body.uiHidden {
#ingame_HUD_buildings_toolbar,
#ingame_HUD_building_placer,
#ingame_HUD_PlacementHints,
#ingame_HUD_GameMenu,
#ingame_HUD_MassSelector,
#ingame_HUD_PinnedShapes,

View File

@ -144,6 +144,15 @@
width: 100%;
box-sizing: border-box;
.browserWarning {
@include S(margin-bottom, 10px);
background-color: $colorRedBright;
@include PlainText;
color: #fff;
@include S(border-radius, 4px);
@include S(padding, 5px);
}
.playButton {
@include SuperHeading;
@include S(width, 130px);

View File

@ -28,7 +28,8 @@ export const globalConfig = {
physicsDeltaSeconds: 0,
// Update physics at N fps, independent of rendering
physicsUpdateRate: 55,
// physicsUpdateRate: 55,
physicsUpdateRate: 120,
// Map
mapChunkSize: 32,
@ -47,6 +48,7 @@ export const globalConfig = {
cutter: 1 / 4,
rotater: 1 / 1,
painter: 1 / 3,
painterDouble: 1 / 3,
mixer: 1 / 2,
stacker: 1 / 5,
},
@ -71,7 +73,7 @@ export const globalConfig = {
debug: {
/* dev:start */
// fastGameEnter: true,
fastGameEnter: true,
noArtificialDelays: true,
// disableSavegameWrite: true,
showEntityBounds: false,

View File

@ -750,15 +750,6 @@ export function checkTimerExpired(now, lastTick, tickRate) {
* Returns if the game supports this browser
*/
export function isSupportedBrowser() {
if (navigator.userAgent.toLowerCase().indexOf("firefox") >= 0) {
return true;
}
return isSupportedBrowserForMultiplayer();
}
// https://stackoverflow.com/questions/4565112/javascript-how-to-find-out-if-the-user-browser-is-chrome/13348618#13348618
export function isSupportedBrowserForMultiplayer() {
// please note,
// that IE11 now returns undefined again for window.chrome
// and new Opera 30 outputs true for window.chrome
@ -776,7 +767,6 @@ export function isSupportedBrowserForMultiplayer() {
var winNav = window.navigator;
var vendorName = winNav.vendor;
// @ts-ignore
var isOpera = typeof window.opr !== "undefined";
var isIEedge = winNav.userAgent.indexOf("Edge") > -1;
var isIOSChrome = winNav.userAgent.match("CriOS");

View File

@ -30,5 +30,6 @@ export class BaseItem extends BasicSerializableObject {
getBackgroundColorAsResource() {
abstract;
return "";
}
}

View File

@ -2,7 +2,11 @@ import { enumDirection, Vector } from "../../core/vector";
import { ItemEjectorComponent } from "../components/item_ejector";
import { MinerComponent } from "../components/miner";
import { Entity } from "../entity";
import { MetaBuilding } from "../meta_building";
import { MetaBuilding, defaultBuildingVariant } from "../meta_building";
import { GameRoot } from "../root";
/** @enum {string} */
export const enumMinerVariants = { chainable: "chainable" };
export class MetaMinerBuilding extends MetaBuilding {
constructor() {
@ -21,16 +25,46 @@ export class MetaMinerBuilding extends MetaBuilding {
return "Place over a shape or color to extract it. Six extractors fill exactly one belt.";
}
getAvailableVariants(root) {
return [defaultBuildingVariant, enumMinerVariants.chainable];
}
/**
* @param {GameRoot} root
* @param {object} param0
* @param {Vector} param0.origin
* @param {number} param0.rotation
* @param {number} param0.rotationVariant
* @param {string} param0.variant
*/
performAdditionalPlacementChecks(root, { origin, rotation, rotationVariant, variant }) {
// Make sure its placed above a resource
const lowerLayer = root.map.getLowerLayerContentXY(origin.x, origin.y);
if (!lowerLayer) {
return false;
}
return true;
}
/**
* Creates the entity at the given location
* @param {Entity} entity
*/
setupEntityComponents(entity) {
entity.addComponent(new MinerComponent());
entity.addComponent(new MinerComponent({}));
entity.addComponent(
new ItemEjectorComponent({
slots: [{ pos: new Vector(0, 0), direction: enumDirection.top }],
})
);
}
/**
*
* @param {Entity} entity
* @param {*} variant
*/
updateVariant(entity, variant) {
entity.components.Miner.chainable = variant === enumMinerVariants.chainable;
}
}

View File

@ -4,17 +4,27 @@ import { enumItemAcceptorItemFilter, ItemAcceptorComponent } from "../components
import { ItemEjectorComponent } from "../components/item_ejector";
import { enumItemProcessorTypes, ItemProcessorComponent } from "../components/item_processor";
import { Entity } from "../entity";
import { MetaBuilding } from "../meta_building";
import { MetaBuilding, defaultBuildingVariant } from "../meta_building";
import { enumHubGoalRewards } from "../tutorial_goals";
import { GameRoot } from "../root";
/** @enum {string} */
export const enumPainterVariants = { double: "double" };
export class MetaPainterBuilding extends MetaBuilding {
constructor() {
super("painter");
}
getDimensions() {
return new Vector(2, 1);
getDimensions(variant) {
switch (variant) {
case defaultBuildingVariant:
return new Vector(2, 1);
case enumPainterVariants.double:
return new Vector(2, 2);
default:
assertAlways(false, "Unknown painter variant: " + variant);
}
}
getName() {
@ -29,6 +39,10 @@ export class MetaPainterBuilding extends MetaBuilding {
return "#cd9b7d";
}
getAvailableVariants(root) {
return [defaultBuildingVariant, enumPainterVariants.double];
}
/**
* @param {GameRoot} root
*/
@ -41,16 +55,11 @@ export class MetaPainterBuilding extends MetaBuilding {
* @param {Entity} entity
*/
setupEntityComponents(entity) {
entity.addComponent(
new ItemProcessorComponent({
inputsPerCharge: 2,
processorType: enumItemProcessorTypes.painter,
})
);
entity.addComponent(new ItemProcessorComponent({}));
entity.addComponent(
new ItemEjectorComponent({
slots: [{ pos: new Vector(0, 0), direction: enumDirection.top }],
slots: [{ pos: new Vector(1, 0), direction: enumDirection.right }],
})
);
entity.addComponent(
@ -58,16 +67,69 @@ export class MetaPainterBuilding extends MetaBuilding {
slots: [
{
pos: new Vector(0, 0),
directions: [enumDirection.bottom],
directions: [enumDirection.left],
filter: enumItemAcceptorItemFilter.shape,
},
{
pos: new Vector(1, 0),
directions: [enumDirection.bottom],
directions: [enumDirection.top],
filter: enumItemAcceptorItemFilter.color,
},
],
})
);
}
/**
*
* @param {Entity} entity
* @param {string} variant
*/
updateVariant(entity, variant) {
switch (variant) {
case defaultBuildingVariant: {
entity.components.ItemAcceptor.setSlots([
{
pos: new Vector(0, 0),
directions: [enumDirection.left],
filter: enumItemAcceptorItemFilter.shape,
},
{
pos: new Vector(1, 0),
directions: [enumDirection.top],
filter: enumItemAcceptorItemFilter.color,
},
]);
entity.components.ItemProcessor.type = enumItemProcessorTypes.painter;
entity.components.ItemProcessor.inputsPerCharge = 2;
break;
}
case enumPainterVariants.double: {
entity.components.ItemAcceptor.setSlots([
{
pos: new Vector(0, 0),
directions: [enumDirection.left],
filter: enumItemAcceptorItemFilter.shape,
},
{
pos: new Vector(0, 1),
directions: [enumDirection.left],
filter: enumItemAcceptorItemFilter.shape,
},
{
pos: new Vector(1, 0),
directions: [enumDirection.top],
filter: enumItemAcceptorItemFilter.color,
},
]);
entity.components.ItemProcessor.type = enumItemProcessorTypes.painterDouble;
entity.components.ItemProcessor.inputsPerCharge = 3;
break;
}
default:
assertAlways(false, "Unknown painter variant: " + variant);
}
}
}

View File

@ -4,17 +4,27 @@ import { ItemAcceptorComponent } from "../components/item_acceptor";
import { ItemEjectorComponent } from "../components/item_ejector";
import { enumItemProcessorTypes, ItemProcessorComponent } from "../components/item_processor";
import { Entity } from "../entity";
import { MetaBuilding } from "../meta_building";
import { MetaBuilding, defaultBuildingVariant } from "../meta_building";
import { GameRoot } from "../root";
import { enumHubGoalRewards } from "../tutorial_goals";
/** @enum {string} */
export const enumSplitterVariants = { compact: "compact" };
export class MetaSplitterBuilding extends MetaBuilding {
constructor() {
super("splitter");
}
getDimensions() {
return new Vector(2, 1);
getDimensions(variant) {
switch (variant) {
case defaultBuildingVariant:
return new Vector(2, 1);
case enumSplitterVariants.compact:
return new Vector(1, 1);
default:
assertAlways(false, "Unknown splitter variant: " + variant);
}
}
getName() {
@ -29,6 +39,10 @@ export class MetaSplitterBuilding extends MetaBuilding {
return "Multifunctional - Evenly distributes all inputs onto all outputs.";
}
getAvailableVariants(root) {
return [defaultBuildingVariant, enumSplitterVariants.compact];
}
/**
* @param {GameRoot} root
*/
@ -60,11 +74,6 @@ export class MetaSplitterBuilding extends MetaBuilding {
new ItemProcessorComponent({
inputsPerCharge: 1,
processorType: enumItemProcessorTypes.splitter,
beltUnderlays: [
{ pos: new Vector(0, 0), direction: enumDirection.top },
{ pos: new Vector(1, 0), direction: enumDirection.top },
],
})
);
@ -77,4 +86,62 @@ export class MetaSplitterBuilding extends MetaBuilding {
})
);
}
/**
*
* @param {Entity} entity
* @param {string} variant
*/
updateVariant(entity, variant) {
switch (variant) {
case defaultBuildingVariant: {
entity.components.ItemAcceptor.setSlots([
{
pos: new Vector(0, 0),
directions: [enumDirection.bottom],
},
{
pos: new Vector(1, 0),
directions: [enumDirection.bottom],
},
]);
entity.components.ItemEjector.setSlots([
{ pos: new Vector(0, 0), direction: enumDirection.top },
{ pos: new Vector(1, 0), direction: enumDirection.top },
]);
entity.components.ItemProcessor.beltUnderlays = [
{ pos: new Vector(0, 0), direction: enumDirection.top },
{ pos: new Vector(1, 0), direction: enumDirection.top },
];
break;
}
case enumSplitterVariants.compact: {
entity.components.ItemAcceptor.setSlots([
{
pos: new Vector(0, 0),
directions: [enumDirection.bottom],
},
{
pos: new Vector(0, 0),
directions: [enumDirection.right],
},
]);
entity.components.ItemEjector.setSlots([
{ pos: new Vector(0, 0), direction: enumDirection.top },
]);
entity.components.ItemProcessor.beltUnderlays = [
{ pos: new Vector(0, 0), direction: enumDirection.top },
];
break;
}
default:
assertAlways(false, "Unknown painter variant: " + variant);
}
}
}

View File

@ -44,7 +44,7 @@ export class Camera extends BasicSerializableObject {
this.clampZoomLevel();
/** @type {Vector} */
this.center = new Vector(0, 0);
this.center = new Vector(2 * globalConfig.tileSize, 2 * globalConfig.tileSize);
// Input handling
this.currentlyMoving = false;
@ -150,8 +150,7 @@ export class Camera extends BasicSerializableObject {
* Finds a good initial zoom level
*/
findInitialZoom() {
return 3;
const desiredWorldSpaceWidth = 20 * globalConfig.tileSize;
const desiredWorldSpaceWidth = 15 * globalConfig.tileSize;
const zoomLevelX = this.root.gameWidth / desiredWorldSpaceWidth;
const zoomLevelY = this.root.gameHeight / desiredWorldSpaceWidth;
@ -327,7 +326,11 @@ export class Camera extends BasicSerializableObject {
mapper.getBinding("map_move_right").add(() => (this.keyboardForce.x = 1));
mapper.getBinding("map_move_left").add(() => (this.keyboardForce.x = -1));
mapper.getBinding("center_map").add(() => (this.desiredCenter = new Vector(0, 0)));
mapper.getBinding("center_map").add(() => this.centerOnMap());
}
centerOnMap() {
this.desiredCenter = new Vector(0, 0);
}
/**

View File

@ -13,6 +13,7 @@ export const enumItemProcessorTypes = {
trash: "trash",
mixer: "mixer",
painter: "painter",
painterDouble: "painterDouble",
hub: "hub",
};
@ -60,12 +61,16 @@ export class ItemProcessorComponent extends Component {
/**
*
* @param {object} param0
* @param {enumItemProcessorTypes} param0.processorType Which type of processor this is
* @param {number} param0.inputsPerCharge How many items this machine needs until it can start working
* @param {enumItemProcessorTypes=} param0.processorType Which type of processor this is
* @param {number=} param0.inputsPerCharge How many items this machine needs until it can start working
* @param {Array<{pos: Vector, direction: enumDirection}>=} param0.beltUnderlays Where to render belt underlays
*
*/
constructor({ processorType = enumItemProcessorTypes.splitter, inputsPerCharge, beltUnderlays = [] }) {
constructor({
processorType = enumItemProcessorTypes.splitter,
inputsPerCharge = 1,
beltUnderlays = [],
}) {
super();
// Which slot to emit next, this is only a preference and if it can't emit

View File

@ -1,6 +1,10 @@
import { globalConfig } from "../../core/config";
import { types } from "../../savegame/serialization";
import { Component } from "../component";
import { BaseItem } from "../base_item";
import { gItemRegistry } from "../../core/global_registries";
const chainBufferSize = 10;
export class MinerComponent extends Component {
static getId() {
@ -10,13 +14,37 @@ export class MinerComponent extends Component {
static getSchema() {
return {
lastMiningTime: types.ufloat,
chainable: types.bool,
itemChainBuffer: types.array(types.obj(gItemRegistry)),
};
}
/**
*/
constructor() {
constructor({ chainable = false }) {
super();
this.lastMiningTime = 0;
this.chainable = chainable;
/**
* Stores items from other miners which were chained to this
* miner.
* @type {Array<BaseItem>}
*/
this.itemChainBuffer = [];
}
/**
*
* @param {BaseItem} item
*/
tryAcceptChainedItem(item) {
if (this.itemChainBuffer.length > chainBufferSize) {
// Well, this one is full
return false;
}
this.itemChainBuffer.push(item);
return true;
}
}

View File

@ -31,6 +31,7 @@ import { SoundProxy } from "./sound_proxy";
import { GameTime } from "./time/game_time";
import { ProductionAnalytics } from "./production_analytics";
import { randomInt } from "../core/utils";
import { defaultBuildingVariant } from "./meta_building";
const logger = createLogger("ingame/core");
@ -143,6 +144,7 @@ export class GameCore {
rotation: 0,
originalRotation: 0,
rotationVariant: 0,
variant: defaultBuildingVariant,
});
}

View File

@ -387,6 +387,11 @@ export class HubGoals extends BasicSerializableObject {
case enumItemProcessorTypes.stacker:
case enumItemProcessorTypes.mixer:
case enumItemProcessorTypes.painter:
case enumItemProcessorTypes.painterDouble:
assert(
globalConfig.buildingSpeeds[processorType],
"Processor type has no speed set in globalConfig.buildingSpeeds: " + processorType
);
return (
globalConfig.beltSpeedItemsPerSecond *
this.upgradeImprovements.processors *

View File

@ -1,5 +1,5 @@
import { BaseHUDPart } from "../base_hud_part";
import { MetaBuilding } from "../../meta_building";
import { MetaBuilding, defaultBuildingVariant } from "../../meta_building";
import { DrawParameters } from "../../../core/draw_parameters";
import { globalConfig } from "../../../core/config";
import { StaticMapEntityComponent } from "../../components/static_map_entity";
@ -10,7 +10,7 @@ import {
enumInvertedDirections,
enumDirectionToVector,
} from "../../../core/vector";
import { pulseAnimation, makeDiv } from "../../../core/utils";
import { pulseAnimation, makeDiv, removeAllChildren } from "../../../core/utils";
import { DynamicDomAttach } from "../dynamic_dom_attach";
import { TrackedState } from "../../../core/tracked_state";
import { Math_abs, Math_radians, Math_degrees } from "../../../core/builtins";
@ -32,6 +32,7 @@ export class HUDBuildingPlacer extends BaseHUDPart {
keyActionMapper.getBinding("back").add(this.abortPlacement, this);
keyActionMapper.getBinding("rotate_while_placing").add(this.tryRotate, this);
keyActionMapper.getBinding("cycle_variants").add(this.cycleVariants, this);
this.domAttach = new DynamicDomAttach(this.root, this.element, {});
@ -40,6 +41,15 @@ export class HUDBuildingPlacer extends BaseHUDPart {
this.root.camera.upPostHandler.add(this.abortDragging, this);
this.currentlyDragging = false;
this.currentVariant = new TrackedState(this.rerenderVariants, this);
this.variantsAttach = new DynamicDomAttach(this.root, this.variantsElement, {});
/**
* Stores which variants for each building we prefer, this is based on what
* the user last selected
*/
this.preferredVariants = {};
/**
* The tile we last dragged onto
@ -55,7 +65,7 @@ export class HUDBuildingPlacer extends BaseHUDPart {
}
createElements(parent) {
this.element = makeDiv(parent, "ingame_HUD_building_placer", [], ``);
this.element = makeDiv(parent, "ingame_HUD_PlacementHints", [], ``);
this.buildingInfoElements = {};
this.buildingInfoElements.label = makeDiv(this.element, null, ["buildingLabel"], "Extract");
@ -63,6 +73,8 @@ export class HUDBuildingPlacer extends BaseHUDPart {
this.buildingInfoElements.descText = makeDiv(this.buildingInfoElements.desc, null, ["text"], "");
this.buildingInfoElements.hotkey = makeDiv(this.buildingInfoElements.desc, null, ["hotkey"], "");
this.buildingInfoElements.tutorialImage = makeDiv(this.element, null, ["buildingImage"]);
this.variantsElement = makeDiv(parent, "ingame_HUD_PlacerVariants");
}
abortPlacement() {
@ -106,8 +118,17 @@ export class HUDBuildingPlacer extends BaseHUDPart {
const oldPos = this.lastDragTile;
const newPos = this.root.camera.screenToWorld(pos).toTileSpace();
if (this.root.camera.desiredCenter) {
// Camera is moving
this.lastDragTile = newPos;
return;
}
if (!oldPos.equals(newPos)) {
if (metaBuilding.getRotateAutomaticallyWhilePlacing()) {
if (
metaBuilding.getRotateAutomaticallyWhilePlacing(this.currentVariant.get()) &&
!this.root.app.inputMgr.ctrlIsDown
) {
const delta = newPos.sub(oldPos);
const angleDeg = Math_degrees(delta.angle());
this.currentBaseRotation = (Math.round(angleDeg / 90) * 90 + 360) % 360;
@ -177,7 +198,6 @@ export class HUDBuildingPlacer extends BaseHUDPart {
}
/**
*
* @param {MetaBuilding} metaBuilding
*/
onSelectedMetaBuildingChanged(metaBuilding) {
@ -189,16 +209,18 @@ export class HUDBuildingPlacer extends BaseHUDPart {
const binding = this.root.gameState.keyActionMapper.getBinding(
"building_" + metaBuilding.getId()
);
this.buildingInfoElements.hotkey.innerHTML = "Hotkey: " + binding.getKeyCodeString();
const variant = this.preferredVariants[metaBuilding.getId()] || defaultBuildingVariant;
this.currentVariant.set(variant);
this.fakeEntity = new Entity(null);
metaBuilding.setupEntityComponents(this.fakeEntity, null);
metaBuilding.setupEntityComponents(this.fakeEntity, null, variant);
this.fakeEntity.addComponent(
new StaticMapEntityComponent({
origin: new Vector(0, 0),
rotation: 0,
tileSize: metaBuilding.getDimensions().copy(),
tileSize: metaBuilding.getDimensions(this.currentVariant.get()).copy(),
})
);
@ -210,6 +232,74 @@ export class HUDBuildingPlacer extends BaseHUDPart {
this.currentlyDragging = false;
this.fakeEntity = null;
}
// Since it depends on both, rerender twice
this.rerenderVariants();
}
rerenderVariants() {
removeAllChildren(this.variantsElement);
const metaBuilding = this.currentMetaBuilding.get();
if (!metaBuilding) {
return;
}
const availableVariants = metaBuilding.getAvailableVariants(this.root);
if (availableVariants.length === 1) {
return;
}
makeDiv(
this.variantsElement,
null,
["explanation"],
`
Press <code class='keybinding'>${this.root.gameState.keyActionMapper
.getBinding("cycle_variants")
.getKeyCodeString()}</code> to cycle variants.
`
);
for (let i = 0; i < availableVariants.length; ++i) {
const variant = availableVariants[i];
const element = makeDiv(this.variantsElement, null, ["variant"]);
element.classList.toggle("active", variant === this.currentVariant.get());
makeDiv(element, null, ["label"], variant);
const iconSize = 64;
const dimensions = metaBuilding.getDimensions(variant);
const sprite = metaBuilding.getPreviewSprite(0, variant);
const spriteWrapper = makeDiv(element, null, ["iconWrap"]);
spriteWrapper.setAttribute("data-tile-w", dimensions.x);
spriteWrapper.setAttribute("data-tile-h", dimensions.y);
spriteWrapper.innerHTML = sprite.getAsHTML(iconSize * dimensions.x, iconSize * dimensions.y);
}
}
/**
* Cycles through the variants
*/
cycleVariants() {
const metaBuilding = this.currentMetaBuilding.get();
if (!metaBuilding) {
this.currentVariant.set(defaultBuildingVariant);
} else {
const availableVariants = metaBuilding.getAvailableVariants(this.root);
const index = availableVariants.indexOf(this.currentVariant.get());
assert(
index >= 0,
"Current variant was invalid: " + this.currentVariant.get() + " out of " + availableVariants
);
const newIndex = (index + 1) % availableVariants.length;
const newVariant = availableVariants[newIndex];
this.currentVariant.set(newVariant);
this.preferredVariants[metaBuilding.getId()] = newVariant;
}
}
/**
@ -290,6 +380,7 @@ export class HUDBuildingPlacer extends BaseHUDPart {
rotationVariant,
originalRotation: this.currentBaseRotation,
building: this.currentMetaBuilding.get(),
variant: this.currentVariant.get(),
})
) {
// Succesfully placed
@ -317,10 +408,12 @@ export class HUDBuildingPlacer extends BaseHUDPart {
if (this.root.camera.zoomLevel < globalConfig.mapChunkOverviewMinZoom) {
// Dont allow placing in overview mode
this.domAttach.update(false);
this.variantsAttach.update(false);
return;
}
this.domAttach.update(this.currentMetaBuilding.get());
this.variantsAttach.update(this.currentMetaBuilding.get());
const metaBuilding = this.currentMetaBuilding.get();
if (!metaBuilding) {
@ -382,7 +475,9 @@ export class HUDBuildingPlacer extends BaseHUDPart {
const staticComp = this.fakeEntity.components.StaticMapEntity;
staticComp.origin = tile;
staticComp.rotation = rotation;
staticComp.tileSize = metaBuilding.getDimensions(this.currentVariant.get());
metaBuilding.updateRotationVariant(this.fakeEntity, rotationVariant);
metaBuilding.updateVariant(this.fakeEntity, this.currentVariant.get());
// Check if we could place the buildnig
const canBuild = this.root.logic.checkCanPlaceBuilding({
@ -390,6 +485,7 @@ export class HUDBuildingPlacer extends BaseHUDPart {
rotation,
rotationVariant,
building: metaBuilding,
variant: this.currentVariant.get(),
});
// Fade in / out
@ -419,7 +515,7 @@ export class HUDBuildingPlacer extends BaseHUDPart {
parameters.context.globalAlpha = 1;
// HACK to draw the entity sprite
const previewSprite = metaBuilding.getBlueprintSprite(rotationVariant);
const previewSprite = metaBuilding.getBlueprintSprite(rotationVariant, this.currentVariant.get());
staticComp.origin = worldPos.divideScalar(globalConfig.tileSize).subScalars(0.5, 0.5);
staticComp.drawSpriteOnFullEntityBounds(parameters, previewSprite);
staticComp.origin = tile;

View File

@ -57,24 +57,14 @@ export class HUDBuildingsToolbar extends BaseHUDPart {
const actionMapper = this.root.gameState.keyActionMapper;
const items = makeDiv(this.element, null, ["buildings"]);
const iconSize = 32;
for (let i = 0; i < toolbarBuildings.length; ++i) {
const metaBuilding = gMetaBuildingRegistry.findByClass(toolbarBuildings[i]);
const binding = actionMapper.getBinding("building_" + metaBuilding.getId());
const dimensions = metaBuilding.getDimensions();
const itemContainer = makeDiv(items, null, ["building"]);
itemContainer.setAttribute("data-tilewidth", dimensions.x);
itemContainer.setAttribute("data-tileheight", dimensions.y);
itemContainer.setAttribute("data-icon", "building_icons/" + metaBuilding.getId() + ".png");
const label = makeDiv(itemContainer, null, ["label"]);
label.innerText = metaBuilding.getName();
const sprite = metaBuilding.getPreviewSprite(0);
const spriteWrapper = makeDiv(itemContainer, null, ["iconWrap"]);
spriteWrapper.innerHTML = sprite.getAsHTML(iconSize * dimensions.x, iconSize * dimensions.y);
binding.add(() => this.selectBuildingForPlacement(metaBuilding));
this.trackClicks(itemContainer, () => this.selectBuildingForPlacement(metaBuilding), {

View File

@ -72,6 +72,11 @@ export class HUDKeybindingOverlay extends BaseHUDPart {
<code class="keybinding shift">ALT</code>
<label>Reverse orientation</label>
</div>
<div class="binding placementOnly">
<code class="keybinding shift">CTRL</code>
<label>Disable auto orientation</label>
</div>
` +
(queryParamOptions.betaMode
? `

View File

@ -5,12 +5,7 @@ import { Application } from "../../../application";
import { SOUNDS } from "../../../platform/sound";
import { DynamicDomAttach } from "../dynamic_dom_attach";
import { BaseHUDPart } from "../base_hud_part";
import {
Dialog,
DialogLoading,
DialogVideoTutorial,
DialogOptionChooser,
} from "../../../core/modal_dialog_elements";
import { Dialog, DialogLoading, DialogOptionChooser } from "../../../core/modal_dialog_elements";
import { makeDiv } from "../../../core/utils";
export class HUDModalDialogs extends BaseHUDPart {

View File

@ -94,7 +94,7 @@ export class HUDShapeStatisticsHandle {
if (displayMode === enumDisplayMode.detailed) {
const graphDpi = globalConfig.statisticsGraphDpi;
const w = 300;
const w = 270;
const h = 40;
if (!this.graphCanvas) {

View File

@ -48,6 +48,8 @@ export const defaultKeybindings = {
building_abort_placement: { keyCode: key("Q") },
rotate_while_placing: { keyCode: key("R") },
cycle_variants: { keyCode: key("T") },
},
};

View File

@ -51,13 +51,14 @@ export class GameLogic {
* @param {Vector} param0.origin
* @param {number} param0.rotation
* @param {number} param0.rotationVariant
* @param {string} param0.variant
* @param {MetaBuilding} param0.building
* @returns {boolean}
*/
isAreaFreeToBuild({ origin, rotation, rotationVariant, building }) {
isAreaFreeToBuild({ origin, rotation, rotationVariant, variant, building }) {
const checker = new StaticMapEntityComponent({
origin,
tileSize: building.getDimensions(),
tileSize: building.getDimensions(variant),
rotation,
});
@ -122,16 +123,30 @@ export class GameLogic {
* @param {Vector} param0.origin
* @param {number} param0.rotation
* @param {number} param0.rotationVariant
* @param {string} param0.variant
* @param {MetaBuilding} param0.building
*/
checkCanPlaceBuilding({ origin, rotation, rotationVariant, building }) {
checkCanPlaceBuilding({ origin, rotation, rotationVariant, variant, building }) {
if (!building.getIsUnlocked(this.root)) {
return false;
}
if (
!building.performAdditionalPlacementChecks(this.root, {
origin,
rotation,
rotationVariant,
variant,
})
) {
return false;
}
return this.isAreaFreeToBuild({
origin,
rotation,
rotationVariant,
variant,
building,
});
}
@ -143,14 +158,15 @@ export class GameLogic {
* @param {number} param0.rotation
* @param {number} param0.originalRotation
* @param {number} param0.rotationVariant
* @param {string} param0.variant
* @param {MetaBuilding} param0.building
*/
tryPlaceBuilding({ origin, rotation, rotationVariant, originalRotation, building }) {
if (this.checkCanPlaceBuilding({ origin, rotation, rotationVariant, building })) {
tryPlaceBuilding({ origin, rotation, rotationVariant, originalRotation, variant, building }) {
if (this.checkCanPlaceBuilding({ origin, rotation, rotationVariant, variant, building })) {
// Remove any removeable entities below
const checker = new StaticMapEntityComponent({
origin,
tileSize: building.getDimensions(),
tileSize: building.getDimensions(variant),
rotation,
});
@ -174,6 +190,7 @@ export class GameLogic {
rotation,
rotationVariant,
originalRotation,
variant,
});
this.root.soundProxy.playUi(building.getPlacementSound());

View File

@ -6,6 +6,8 @@ import { Entity } from "./entity";
import { StaticMapEntityComponent } from "./components/static_map_entity";
import { SOUNDS } from "../platform/sound";
export const defaultBuildingVariant = "default";
export class MetaBuilding {
/**
*
@ -25,7 +27,7 @@ export class MetaBuilding {
/**
* Should return the dimensions of the building
*/
getDimensions() {
getDimensions(variant = defaultBuildingVariant) {
return new Vector(1, 1);
}
@ -60,8 +62,9 @@ export class MetaBuilding {
/**
* Whether to rotate automatically in the dragging direction while placing
* @param {string} variant
*/
getRotateAutomaticallyWhilePlacing() {
getRotateAutomaticallyWhilePlacing(variant) {
return false;
}
@ -73,20 +76,37 @@ export class MetaBuilding {
return SOUNDS.placeBuilding;
}
/**
* @param {GameRoot} root
*/
getAvailableVariants(root) {
return [defaultBuildingVariant];
}
/**
* Returns a preview sprite
* @returns {AtlasSprite}
*/
getPreviewSprite(rotationVariant = 0) {
return Loader.getSprite("sprites/buildings/" + this.id + ".png");
getPreviewSprite(rotationVariant = 0, variant = defaultBuildingVariant) {
return Loader.getSprite(
"sprites/buildings/" +
this.id +
(variant === defaultBuildingVariant ? "" : "-" + variant) +
".png"
);
}
/**
* Returns a sprite for blueprints
* @returns {AtlasSprite}
*/
getBlueprintSprite(rotationVariant = 0) {
return Loader.getSprite("sprites/blueprints/" + this.id + ".png");
getBlueprintSprite(rotationVariant = 0, variant = defaultBuildingVariant) {
return Loader.getSprite(
"sprites/blueprints/" +
this.id +
(variant === defaultBuildingVariant ? "" : "-" + variant) +
".png"
);
}
/**
@ -112,30 +132,49 @@ export class MetaBuilding {
return null;
}
/**
* Should perform additional placement checks
* @param {GameRoot} root
* @param {object} param0
* @param {Vector} param0.origin
* @param {number} param0.rotation
* @param {number} param0.rotationVariant
* @param {string} param0.variant
*/
performAdditionalPlacementChecks(root, { origin, rotation, rotationVariant, variant }) {
return true;
}
/**
* Creates the entity at the given location
* @param {object} param0
* @param {GameRoot} param0.root
* @param {Vector} param0.origin Origin tile
* @param {number=} param0.rotation Rotation
* @param {number=} param0.originalRotation Original Rotation
* @param {number=} param0.rotationVariant Rotation variant
* @param {number} param0.originalRotation Original Rotation
* @param {number} param0.rotationVariant Rotation variant
* @param {string} param0.variant
*/
createAndPlaceEntity({ root, origin, rotation = 0, originalRotation = 0, rotationVariant = 0 }) {
createAndPlaceEntity({ root, origin, rotation, originalRotation, rotationVariant, variant }) {
const entity = new Entity(root);
entity.addComponent(
new StaticMapEntityComponent({
spriteKey: "sprites/buildings/" + this.id + ".png",
spriteKey:
"sprites/buildings/" +
this.id +
(variant === defaultBuildingVariant ? "" : "-" + variant) +
".png",
origin: new Vector(origin.x, origin.y),
rotation,
originalRotation,
tileSize: this.getDimensions().copy(),
tileSize: this.getDimensions(variant).copy(),
silhouetteColor: this.getSilhouetteColor(),
})
);
this.setupEntityComponents(entity, root);
this.updateRotationVariant(entity, rotationVariant);
this.updateVariant(entity, variant);
root.map.placeStaticEntity(entity);
root.entityMgr.registerEntity(entity);
@ -169,6 +208,13 @@ export class MetaBuilding {
*/
updateRotationVariant(entity, rotationVariant) {}
/**
* Should update the entity to match the given variant
* @param {Entity} entity
* @param {string} variant
*/
updateVariant(entity, variant) {}
// PRIVATE INTERFACE
/**

View File

@ -63,6 +63,10 @@ export class BeltSystem extends GameSystemWithFilter {
* @param {Entity} entity
*/
updateSurroundingBeltPlacement(entity) {
if (!this.root.gameInitialized) {
return;
}
const staticComp = entity.components.StaticMapEntity;
if (!staticComp) {
return;

View File

@ -16,11 +16,6 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
constructor(root) {
super(root, [ItemProcessorComponent]);
this.sprites = {};
for (const key in enumItemProcessorTypes) {
this.sprites[key] = Loader.getSprite("sprites/buildings/" + key + ".png");
}
this.underlayBeltSprites = [
Loader.getSprite("sprites/belt/forward_0.png"),
Loader.getSprite("sprites/belt/forward_1.png"),
@ -121,6 +116,12 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
const items = processorComp.inputSlots;
processorComp.inputSlots = [];
/** @type {Object.<string, { item: BaseItem, sourceSlot: number }>} */
const itemsBySlot = {};
for (let i = 0; i < items.length; ++i) {
itemsBySlot[items[i].sourceSlot] = items[i];
}
const baseSpeed = this.root.hubGoals.getProcessorBaseSpeed(processorComp.type);
processorComp.secondsUntilEject = 1 / baseSpeed;
@ -185,11 +186,9 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
// STACKER
case enumItemProcessorTypes.stacker: {
const item1 = items[0];
const item2 = items[1];
const lowerItem = /** @type {ShapeItem} */ (itemsBySlot[0].item);
const upperItem = /** @type {ShapeItem} */ (itemsBySlot[1].item);
const lowerItem = /** @type {ShapeItem} */ (item1.sourceSlot === 0 ? item1.item : item2.item);
const upperItem = /** @type {ShapeItem} */ (item1.sourceSlot === 1 ? item1.item : item2.item);
assert(lowerItem instanceof ShapeItem, "Input for lower stack is not a shape");
assert(upperItem instanceof ShapeItem, "Input for upper stack is not a shape");
@ -238,11 +237,8 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
// PAINTER
case enumItemProcessorTypes.painter: {
const item1 = items[0];
const item2 = items[1];
const shapeItem = /** @type {ShapeItem} */ (item1.sourceSlot === 0 ? item1.item : item2.item);
const colorItem = /** @type {ColorItem} */ (item1.sourceSlot === 1 ? item1.item : item2.item);
const shapeItem = /** @type {ShapeItem} */ (itemsBySlot[0].item);
const colorItem = /** @type {ColorItem} */ (itemsBySlot[1].item);
const colorizedDefinition = this.root.shapeDefinitionMgr.shapeActionPaintWith(
shapeItem.definition,
@ -256,6 +252,38 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
break;
}
// PAINTER (DOUBLE)
case enumItemProcessorTypes.painterDouble: {
console.log("YUP");
const shapeItem1 = /** @type {ShapeItem} */ (itemsBySlot[0].item);
const shapeItem2 = /** @type {ShapeItem} */ (itemsBySlot[1].item);
const colorItem = /** @type {ColorItem} */ (itemsBySlot[2].item);
assert(shapeItem1 instanceof ShapeItem, "Input for painter is not a shape");
assert(shapeItem2 instanceof ShapeItem, "Input for painter is not a shape");
assert(colorItem instanceof ColorItem, "Input for painter is not a color");
const colorizedDefinition1 = this.root.shapeDefinitionMgr.shapeActionPaintWith(
shapeItem1.definition,
colorItem.color
);
const colorizedDefinition2 = this.root.shapeDefinitionMgr.shapeActionPaintWith(
shapeItem2.definition,
colorItem.color
);
outItems.push({
item: new ShapeItem(colorizedDefinition1),
});
outItems.push({
item: new ShapeItem(colorizedDefinition2),
});
break;
}
// HUB
case enumItemProcessorTypes.hub: {

View File

@ -4,6 +4,9 @@ import { MinerComponent } from "../components/miner";
import { GameSystemWithFilter } from "../game_system_with_filter";
import { MapChunkView } from "../map_chunk_view";
import { ShapeItem } from "../items/shape_item";
import { enumDirectionToVector } from "../../core/vector";
import { Entity } from "../entity";
import { BaseItem } from "../base_item";
export class MinerSystem extends GameSystemWithFilter {
constructor(root) {
@ -19,35 +22,76 @@ export class MinerSystem extends GameSystemWithFilter {
const staticComp = entity.components.StaticMapEntity;
const ejectComp = entity.components.ItemEjector;
if (this.root.time.isIngameTimerExpired(minerComp.lastMiningTime, 1 / miningSpeed)) {
if (!ejectComp.canEjectOnSlot(0)) {
// We can't eject further
// First, try to get rid of chained items
if (minerComp.itemChainBuffer.length > 0) {
if (this.tryPerformMinerEject(entity, minerComp.itemChainBuffer[0])) {
minerComp.itemChainBuffer.shift();
continue;
}
}
// Actually mine
minerComp.lastMiningTime = this.root.time.now();
if (this.root.time.isIngameTimerExpired(minerComp.lastMiningTime, 1 / miningSpeed)) {
const lowerLayerItem = this.root.map.getLowerLayerContentXY(
staticComp.origin.x,
staticComp.origin.y
);
// TODO: Should not be required actually
if (!lowerLayerItem) {
// Nothing below;
continue;
}
// Analytics hook
this.root.signals.itemProduced.dispatch(lowerLayerItem);
if (this.tryPerformMinerEject(entity, lowerLayerItem)) {
// Analytics hook
this.root.signals.itemProduced.dispatch(lowerLayerItem);
// Try actually ejecting
if (!ejectComp.tryEject(0, lowerLayerItem)) {
assert(false, "Failed to eject");
// Actually mine
minerComp.lastMiningTime = this.root.time.now();
}
}
}
}
/**
*
* @param {Entity} entity
* @param {BaseItem} item
*/
tryPerformMinerEject(entity, item) {
const minerComp = entity.components.Miner;
const ejectComp = entity.components.ItemEjector;
const staticComp = entity.components.StaticMapEntity;
// Check if we are a chained miner
if (minerComp.chainable) {
const ejectingSlot = ejectComp.slots[0];
const ejectingPos = staticComp.localTileToWorld(ejectingSlot.pos);
const ejectingDirection = staticComp.localDirectionToWorld(ejectingSlot.direction);
const targetTile = ejectingPos.add(enumDirectionToVector[ejectingDirection]);
const targetContents = this.root.map.getTileContent(targetTile);
// Check if we are connected to another miner and thus do not eject directly
if (targetContents) {
const targetMinerComp = targetContents.components.Miner;
if (targetMinerComp) {
if (targetMinerComp.tryAcceptChainedItem(item)) {
return true;
} else {
return false;
}
}
}
}
// Seems we are a regular miner or at the end of a row, try actually ejecting
if (ejectComp.tryEject(0, item)) {
return true;
}
return false;
}
/**
*
* @param {DrawParameters} parameters

View File

@ -118,13 +118,13 @@ export const tutorialGoals = [
// Stacker
{
shape: "CcCcRgRg",
shape: "CgScScCg",
required: 3000,
reward: enumHubGoalRewards.no_reward,
},
{
shape: "RgRgRgRg:CcCcCcCc",
shape: "RpRpRpRp:CcCcCcCc",
required: 4000,
reward: enumHubGoalRewards.no_reward,
},

View File

@ -5,8 +5,8 @@ import {
makeDiv,
formatSecondsToTimeAgo,
generateFileDownload,
removeAllChildren,
waitNextFrame,
isSupportedBrowser,
} from "../core/utils";
import { ReadWriteProxy } from "../core/read_write_proxy";
import { HUDModalDialogs } from "../game/hud/parts/modal_dialogs";
@ -61,6 +61,14 @@ export class MainMenuState extends GameState {
`
}
<div class="mainContainer">
${
isSupportedBrowser()
? ""
: `
<div class="browserWarning">This game is optimized for Google Chrome. Your browser is not supported or slow!</div>
`
}
<button class="playButton styledButton">Play</button>
<button class="importButton styledButton">Import savegame</button>
</div>