diff --git a/assets/maps/wired.ldtk b/assets/maps/wired.ldtk index 5447f48..c49e232 100644 --- a/assets/maps/wired.ldtk +++ b/assets/maps/wired.ldtk @@ -2634,28 +2634,29 @@ "optionalRules": [], "intGridCsv": [ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,5,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, - 0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0, - 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, - 1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,1,1,0,0,0,0,0,0,0,1,0,0,0,0,1,1,2,0,0, - 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0, - 1,1,2,0,2,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,3,0,0, + 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,1,2,0,0, + 0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,8,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0, + 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0, + 1,1,2,0,2,0,3,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0, + 0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ], "autoLayerTiles": [ { "px": [0,8], "src": [112,48], "f": 0, "t": 110, "d": [111,20] }, + { "px": [80,56], "src": [96,48], "f": 0, "t": 108, "d": [35,150] }, { "px": [40,80], "src": [96,48], "f": 0, "t": 108, "d": [35,205] }, { "px": [32,104], "src": [96,48], "f": 0, "t": 108, "d": [35,264] }, + { "px": [96,56], "src": [80,48], "f": 0, "t": 106, "d": [36,152] }, { "px": [48,104], "src": [80,48], "f": 0, "t": 106, "d": [36,266] }, - { "px": [80,128], "src": [80,48], "f": 0, "t": 106, "d": [36,330] }, - { "px": [96,72], "src": [24,48], "f": 0, "t": 99, "d": [37,192] }, + { "px": [96,128], "src": [24,48], "f": 0, "t": 99, "d": [37,332] }, { "px": [0,112], "src": [40,48], "f": 0, "t": 101, "d": [38,280] }, { "px": [48,128], "src": [40,48], "f": 0, "t": 101, "d": [38,326] }, - { "px": [96,8], "src": [112,48], "f": 0, "t": 110, "d": [41,32] }, + { "px": [80,128], "src": [112,48], "f": 0, "t": 110, "d": [41,330] }, { "px": [8,8], "src": [48,48], "f": 0, "t": 102, "d": [44,21] }, { "px": [16,8], "src": [48,48], "f": 0, "t": 102, "d": [44,22] }, { "px": [24,8], "src": [48,48], "f": 0, "t": 102, "d": [44,23] }, @@ -2667,42 +2668,46 @@ { "px": [72,8], "src": [48,48], "f": 0, "t": 102, "d": [44,29] }, { "px": [80,8], "src": [48,48], "f": 0, "t": 102, "d": [44,30] }, { "px": [88,8], "src": [48,48], "f": 0, "t": 102, "d": [44,31] }, + { "px": [96,8], "src": [48,48], "f": 0, "t": 102, "d": [44,32] }, { "px": [104,8], "src": [48,48], "f": 0, "t": 102, "d": [44,33] }, { "px": [112,8], "src": [48,48], "f": 0, "t": 102, "d": [44,34] }, { "px": [120,8], "src": [48,48], "f": 0, "t": 102, "d": [44,35] }, { "px": [128,8], "src": [48,48], "f": 0, "t": 102, "d": [44,36] }, { "px": [136,8], "src": [48,48], "f": 0, "t": 102, "d": [44,37] }, { "px": [144,8], "src": [48,48], "f": 0, "t": 102, "d": [44,38] }, - { "px": [88,72], "src": [48,48], "f": 0, "t": 102, "d": [44,191] }, + { "px": [88,56], "src": [48,48], "f": 0, "t": 102, "d": [44,151] }, { "px": [48,80], "src": [48,48], "f": 0, "t": 102, "d": [44,206] }, { "px": [40,104], "src": [48,48], "f": 0, "t": 102, "d": [44,265] }, { "px": [8,112], "src": [48,48], "f": 0, "t": 102, "d": [44,281] }, { "px": [56,128], "src": [48,48], "f": 0, "t": 102, "d": [44,327] }, { "px": [64,128], "src": [48,48], "f": 0, "t": 102, "d": [44,328] }, { "px": [72,128], "src": [48,48], "f": 0, "t": 102, "d": [44,329] }, + { "px": [88,128], "src": [48,48], "f": 0, "t": 102, "d": [44,331] }, { "px": [0,16], "src": [72,48], "f": 0, "t": 105, "d": [45,40] }, - { "px": [96,16], "src": [72,48], "f": 0, "t": 105, "d": [45,52] }, { "px": [0,24], "src": [72,48], "f": 0, "t": 105, "d": [45,60] }, - { "px": [96,24], "src": [72,48], "f": 0, "t": 105, "d": [45,72] }, { "px": [0,32], "src": [72,48], "f": 0, "t": 105, "d": [45,80] }, - { "px": [96,32], "src": [72,48], "f": 0, "t": 105, "d": [45,92] }, { "px": [0,40], "src": [72,48], "f": 0, "t": 105, "d": [45,100] }, - { "px": [96,40], "src": [72,48], "f": 0, "t": 105, "d": [45,112] }, { "px": [0,48], "src": [72,48], "f": 0, "t": 105, "d": [45,120] }, - { "px": [96,48], "src": [72,48], "f": 0, "t": 105, "d": [45,132] }, { "px": [0,56], "src": [72,48], "f": 0, "t": 105, "d": [45,140] }, - { "px": [96,56], "src": [72,48], "f": 0, "t": 105, "d": [45,152] }, { "px": [0,64], "src": [72,48], "f": 0, "t": 105, "d": [45,160] }, + { "px": [80,64], "src": [72,48], "f": 0, "t": 105, "d": [45,170] }, { "px": [0,72], "src": [72,48], "f": 0, "t": 105, "d": [45,180] }, + { "px": [96,72], "src": [72,48], "f": 0, "t": 105, "d": [45,192] }, { "px": [0,80], "src": [72,48], "f": 0, "t": 105, "d": [45,200] }, + { "px": [96,80], "src": [72,48], "f": 0, "t": 105, "d": [45,212] }, { "px": [0,88], "src": [72,48], "f": 0, "t": 105, "d": [45,220] }, + { "px": [96,88], "src": [72,48], "f": 0, "t": 105, "d": [45,232] }, { "px": [0,96], "src": [72,48], "f": 0, "t": 105, "d": [45,240] }, + { "px": [96,96], "src": [72,48], "f": 0, "t": 105, "d": [45,252] }, { "px": [0,104], "src": [72,48], "f": 0, "t": 105, "d": [45,260] }, + { "px": [96,104], "src": [72,48], "f": 0, "t": 105, "d": [45,272] }, + { "px": [96,112], "src": [72,48], "f": 0, "t": 105, "d": [45,292] }, { "px": [48,120], "src": [72,48], "f": 0, "t": 105, "d": [45,306] }, + { "px": [96,120], "src": [72,48], "f": 0, "t": 105, "d": [45,312] }, { "px": [80,136], "src": [72,48], "f": 0, "t": 105, "d": [45,350] }, - { "px": [80,72], "src": [16,8], "f": 0, "t": 18, "d": [59,190] }, { "px": [56,80], "src": [8,8], "f": 0, "t": 17, "d": [58,207] }, { "px": [16,112], "src": [8,8], "f": 0, "t": 17, "d": [58,282] }, + { "px": [80,72], "src": [0,8], "f": 0, "t": 16, "d": [57,190] }, { "px": [32,112], "src": [0,8], "f": 0, "t": 16, "d": [57,284] }, { "px": [96,64], "src": [96,8], "f": 0, "t": 28, "d": [78,172] }, { "px": [48,112], "src": [96,8], "f": 0, "t": 28, "d": [78,286] }, @@ -3141,29 +3146,30 @@ "visible": true, "optionalRules": [], "intGridCsv": [ - 1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1, - 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1, - 1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,0,0,0,0, - 0,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,1, - 1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1,1,1,1,1, - 1,1,0,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0, - 1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1, - 1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,0,0,0,1, + 0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1, + 1,1,1,1,1,3,3,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,0,0,0,0, + 0,1,1,1,1,1,1,1,1,1,0,0,3,3,1,1,0,0,3,3,1,1,0,0,0,0,0,0,0,1,0,0,0,0,1, + 1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,0,0,1,1,3,3,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1, + 1,1,0,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,3, + 1,0,0,0,0,0,0,3,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1, + 1,0,0,0,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ], "autoLayerTiles": [ + { "px": [72,24], "src": [112,56], "f": 0, "t": 126, "d": [5,69] }, { "px": [80,24], "src": [112,56], "f": 0, "t": 126, "d": [5,70] }, { "px": [88,24], "src": [112,56], "f": 0, "t": 126, "d": [5,71] }, { "px": [96,24], "src": [112,56], "f": 0, "t": 126, "d": [5,72] }, { "px": [104,24], "src": [112,56], "f": 0, "t": 126, "d": [5,73] }, - { "px": [112,24], "src": [112,56], "f": 0, "t": 126, "d": [5,74] }, + { "px": [144,72], "src": [112,56], "f": 0, "t": 126, "d": [5,198] }, { "px": [112,80], "src": [112,56], "f": 0, "t": 126, "d": [5,214] }, { "px": [120,80], "src": [112,56], "f": 0, "t": 126, "d": [5,215] }, { "px": [128,80], "src": [112,56], "f": 0, "t": 126, "d": [5,216] }, - { "px": [136,80], "src": [112,56], "f": 0, "t": 126, "d": [5,217] }, + { "px": [8,128], "src": [112,56], "f": 0, "t": 126, "d": [5,321] }, { "px": [16,128], "src": [112,56], "f": 0, "t": 126, "d": [5,322] }, { "px": [24,128], "src": [112,56], "f": 0, "t": 126, "d": [5,323] }, { "px": [32,128], "src": [112,56], "f": 0, "t": 126, "d": [5,324] }, @@ -3203,16 +3209,19 @@ { "px": [144,152], "src": [112,56], "f": 0, "t": 126, "d": [5,398] }, { "px": [152,152], "src": [112,56], "f": 0, "t": 126, "d": [5,399] }, { "px": [64,0], "src": [88,56], "f": 0, "t": 123, "d": [6,8] }, - { "px": [72,16], "src": [88,56], "f": 0, "t": 123, "d": [6,49] }, + { "px": [64,8], "src": [88,56], "f": 0, "t": 123, "d": [6,28] }, + { "px": [64,16], "src": [88,56], "f": 0, "t": 123, "d": [6,48] }, { "px": [112,32], "src": [88,56], "f": 0, "t": 123, "d": [6,94] }, { "px": [112,40], "src": [88,56], "f": 0, "t": 123, "d": [6,114] }, { "px": [0,48], "src": [88,56], "f": 0, "t": 123, "d": [6,120] }, { "px": [0,56], "src": [88,56], "f": 0, "t": 123, "d": [6,140] }, + { "px": [0,64], "src": [88,56], "f": 0, "t": 123, "d": [6,160] }, { "px": [0,72], "src": [88,56], "f": 0, "t": 123, "d": [6,180] }, { "px": [0,88], "src": [88,56], "f": 0, "t": 123, "d": [6,220] }, { "px": [0,96], "src": [88,56], "f": 0, "t": 123, "d": [6,240] }, { "px": [0,104], "src": [88,56], "f": 0, "t": 123, "d": [6,260] }, { "px": [0,112], "src": [88,56], "f": 0, "t": 123, "d": [6,280] }, + { "px": [0,120], "src": [88,56], "f": 0, "t": 123, "d": [6,300] }, { "px": [104,0], "src": [56,56], "f": 0, "t": 119, "d": [7,13] }, { "px": [120,0], "src": [56,56], "f": 0, "t": 119, "d": [7,15] }, { "px": [128,0], "src": [56,56], "f": 0, "t": 119, "d": [7,16] }, @@ -3230,7 +3239,6 @@ { "px": [88,40], "src": [56,56], "f": 0, "t": 119, "d": [7,111] }, { "px": [96,40], "src": [56,56], "f": 0, "t": 119, "d": [7,112] }, { "px": [104,40], "src": [56,56], "f": 0, "t": 119, "d": [7,113] }, - { "px": [96,112], "src": [56,56], "f": 0, "t": 119, "d": [7,292] }, { "px": [104,112], "src": [56,56], "f": 0, "t": 119, "d": [7,293] }, { "px": [112,112], "src": [56,56], "f": 0, "t": 119, "d": [7,294] }, { "px": [120,112], "src": [56,56], "f": 0, "t": 119, "d": [7,295] }, @@ -3264,24 +3272,22 @@ { "px": [152,24], "src": [104,56], "f": 0, "t": 125, "d": [8,79] }, { "px": [152,32], "src": [104,56], "f": 0, "t": 125, "d": [8,99] }, { "px": [48,40], "src": [104,56], "f": 0, "t": 125, "d": [8,106] }, + { "px": [152,40], "src": [104,56], "f": 0, "t": 125, "d": [8,119] }, { "px": [152,48], "src": [104,56], "f": 0, "t": 125, "d": [8,139] }, { "px": [152,56], "src": [104,56], "f": 0, "t": 125, "d": [8,159] }, { "px": [152,64], "src": [104,56], "f": 0, "t": 125, "d": [8,179] }, { "px": [104,88], "src": [104,56], "f": 0, "t": 125, "d": [8,233] }, { "px": [104,96], "src": [104,56], "f": 0, "t": 125, "d": [8,253] }, - { "px": [72,8], "src": [80,56], "f": 0, "t": 122, "d": [9,29] }, + { "px": [104,104], "src": [104,56], "f": 0, "t": 125, "d": [8,273] }, + { "px": [112,24], "src": [80,56], "f": 0, "t": 122, "d": [9,74] }, { "px": [0,40], "src": [80,56], "f": 0, "t": 122, "d": [9,100] }, - { "px": [8,120], "src": [80,56], "f": 0, "t": 122, "d": [9,301] }, { "px": [48,48], "src": [24,56], "f": 0, "t": 115, "d": [10,126] }, { "px": [96,0], "src": [40,56], "f": 0, "t": 117, "d": [11,12] }, { "px": [40,32], "src": [40,56], "f": 0, "t": 117, "d": [11,85] }, - { "px": [112,56], "src": [40,56], "f": 0, "t": 117, "d": [11,154] }, { "px": [40,112], "src": [40,56], "f": 0, "t": 117, "d": [11,285] }, - { "px": [144,72], "src": [96,56], "f": 0, "t": 124, "d": [12,198] }, + { "px": [136,72], "src": [96,56], "f": 0, "t": 124, "d": [12,197] }, { "px": [40,80], "src": [96,56], "f": 0, "t": 124, "d": [12,205] }, { "px": [104,80], "src": [96,56], "f": 0, "t": 124, "d": [12,213] }, - { "px": [96,104], "src": [96,56], "f": 0, "t": 124, "d": [12,272] }, - { "px": [40,48], "src": [48,56], "f": 0, "t": 118, "d": [13,125] }, { "px": [8,80], "src": [48,56], "f": 0, "t": 118, "d": [13,201] }, { "px": [16,80], "src": [48,56], "f": 0, "t": 118, "d": [13,202] }, { "px": [48,80], "src": [48,56], "f": 0, "t": 118, "d": [13,206] }, @@ -3295,20 +3301,33 @@ { "px": [72,112], "src": [48,56], "f": 0, "t": 118, "d": [13,289] }, { "px": [80,112], "src": [48,56], "f": 0, "t": 118, "d": [13,290] }, { "px": [88,112], "src": [48,56], "f": 0, "t": 118, "d": [13,291] }, + { "px": [96,112], "src": [48,56], "f": 0, "t": 118, "d": [13,292] }, { "px": [112,48], "src": [72,56], "f": 0, "t": 121, "d": [14,134] }, { "px": [40,88], "src": [72,56], "f": 0, "t": 121, "d": [14,225] }, { "px": [40,96], "src": [72,56], "f": 0, "t": 121, "d": [14,245] }, { "px": [40,104], "src": [72,56], "f": 0, "t": 121, "d": [14,265] }, - { "px": [120,24], "src": [16,56], "f": 0, "t": 114, "d": [20,75] }, - { "px": [120,56], "src": [16,56], "f": 0, "t": 114, "d": [20,155] }, - { "px": [8,64], "src": [16,56], "f": 0, "t": 114, "d": [20,161] }, { "px": [24,80], "src": [16,56], "f": 0, "t": 114, "d": [20,203] }, { "px": [88,80], "src": [16,56], "f": 0, "t": 114, "d": [20,211] }, - { "px": [144,40], "src": [32,56], "f": 0, "t": 116, "d": [22,118] }, - { "px": [32,48], "src": [32,56], "f": 0, "t": 116, "d": [22,124] }, + { "px": [40,48], "src": [32,56], "f": 0, "t": 116, "d": [22,125] }, { "px": [112,8], "src": [8,56], "f": 0, "t": 113, "d": [23,34] }, + { "px": [112,56], "src": [8,56], "f": 0, "t": 113, "d": [23,154] }, { "px": [0,144], "src": [0,56], "f": 0, "t": 112, "d": [85,360] }, - { "px": [24,144], "src": [0,56], "f": 0, "t": 112, "d": [85,363] } + { "px": [24,144], "src": [0,56], "f": 0, "t": 112, "d": [85,363] }, + { "px": [136,40], "src": [8,16], "f": 0, "t": 33, "d": [125,117] }, + { "px": [24,48], "src": [8,16], "f": 0, "t": 33, "d": [125,123] }, + { "px": [32,96], "src": [8,16], "f": 0, "t": 33, "d": [125,244] }, + { "px": [96,96], "src": [8,16], "f": 0, "t": 33, "d": [125,252] }, + { "px": [32,112], "src": [8,16], "f": 0, "t": 33, "d": [125,284] }, + { "px": [80,8], "src": [24,16], "f": 0, "t": 35, "d": [126,30] }, + { "px": [128,24], "src": [24,16], "f": 0, "t": 35, "d": [126,76] }, + { "px": [128,56], "src": [24,16], "f": 0, "t": 35, "d": [126,156] }, + { "px": [16,64], "src": [24,16], "f": 0, "t": 35, "d": [126,162] }, + { "px": [72,8], "src": [16,16], "f": 0, "t": 34, "d": [127,29] }, + { "px": [120,24], "src": [16,16], "f": 0, "t": 34, "d": [127,75] }, + { "px": [144,40], "src": [16,16], "f": 0, "t": 34, "d": [127,118] }, + { "px": [32,48], "src": [16,16], "f": 0, "t": 34, "d": [127,124] }, + { "px": [120,56], "src": [16,16], "f": 0, "t": 34, "d": [127,155] }, + { "px": [8,64], "src": [16,16], "f": 0, "t": 34, "d": [127,161] } ], "seed": 3045398, "overrideTilesetUid": null, @@ -3647,20 +3666,19 @@ "optionalRules": [], "intGridCsv": [ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0, + 0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,3,3,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3, 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1, - 1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1, + 1,1,1,0,0,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,1,1,1,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,3,3,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,1,1,1, + 1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, 1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ], "autoLayerTiles": [ - { "px": [56,24], "src": [112,56], "f": 0, "t": 126, "d": [5,67] }, { "px": [72,24], "src": [112,56], "f": 0, "t": 126, "d": [5,69] }, { "px": [80,24], "src": [112,56], "f": 0, "t": 126, "d": [5,70] }, { "px": [88,24], "src": [112,56], "f": 0, "t": 126, "d": [5,71] }, @@ -3678,7 +3696,7 @@ { "px": [136,80], "src": [112,56], "f": 0, "t": 126, "d": [5,217] }, { "px": [144,80], "src": [112,56], "f": 0, "t": 126, "d": [5,218] }, { "px": [88,104], "src": [112,56], "f": 0, "t": 126, "d": [5,271] }, - { "px": [128,104], "src": [112,56], "f": 0, "t": 126, "d": [5,276] }, + { "px": [128,120], "src": [112,56], "f": 0, "t": 126, "d": [5,316] }, { "px": [32,136], "src": [112,56], "f": 0, "t": 126, "d": [5,344] }, { "px": [40,136], "src": [112,56], "f": 0, "t": 126, "d": [5,345] }, { "px": [48,136], "src": [112,56], "f": 0, "t": 126, "d": [5,346] }, @@ -3696,9 +3714,11 @@ { "px": [16,16], "src": [88,56], "f": 0, "t": 123, "d": [6,42] }, { "px": [16,24], "src": [88,56], "f": 0, "t": 123, "d": [6,62] }, { "px": [16,32], "src": [88,56], "f": 0, "t": 123, "d": [6,82] }, + { "px": [16,40], "src": [88,56], "f": 0, "t": 123, "d": [6,102] }, { "px": [16,48], "src": [88,56], "f": 0, "t": 123, "d": [6,122] }, { "px": [16,56], "src": [88,56], "f": 0, "t": 123, "d": [6,142] }, { "px": [16,64], "src": [88,56], "f": 0, "t": 123, "d": [6,162] }, + { "px": [16,72], "src": [88,56], "f": 0, "t": 123, "d": [6,182] }, { "px": [16,80], "src": [88,56], "f": 0, "t": 123, "d": [6,202] }, { "px": [16,88], "src": [88,56], "f": 0, "t": 123, "d": [6,222] }, { "px": [16,96], "src": [88,56], "f": 0, "t": 123, "d": [6,242] }, @@ -3718,7 +3738,6 @@ { "px": [128,0], "src": [56,56], "f": 0, "t": 119, "d": [7,16] }, { "px": [136,0], "src": [56,56], "f": 0, "t": 119, "d": [7,17] }, { "px": [144,0], "src": [56,56], "f": 0, "t": 119, "d": [7,18] }, - { "px": [56,56], "src": [56,56], "f": 0, "t": 119, "d": [7,147] }, { "px": [64,56], "src": [56,56], "f": 0, "t": 119, "d": [7,148] }, { "px": [72,56], "src": [56,56], "f": 0, "t": 119, "d": [7,149] }, { "px": [80,56], "src": [56,56], "f": 0, "t": 119, "d": [7,150] }, @@ -3730,7 +3749,6 @@ { "px": [128,56], "src": [56,56], "f": 0, "t": 119, "d": [7,156] }, { "px": [136,56], "src": [56,56], "f": 0, "t": 119, "d": [7,157] }, { "px": [144,56], "src": [56,56], "f": 0, "t": 119, "d": [7,158] }, - { "px": [56,88], "src": [56,56], "f": 0, "t": 119, "d": [7,227] }, { "px": [64,88], "src": [56,56], "f": 0, "t": 119, "d": [7,228] }, { "px": [72,88], "src": [56,56], "f": 0, "t": 119, "d": [7,229] }, { "px": [0,112], "src": [56,56], "f": 0, "t": 119, "d": [7,280] }, @@ -3744,16 +3762,19 @@ { "px": [152,72], "src": [104,56], "f": 0, "t": 125, "d": [8,199] }, { "px": [136,88], "src": [104,56], "f": 0, "t": 125, "d": [8,237] }, { "px": [136,96], "src": [104,56], "f": 0, "t": 125, "d": [8,257] }, - { "px": [120,112], "src": [104,56], "f": 0, "t": 125, "d": [8,295] }, - { "px": [112,128], "src": [104,56], "f": 0, "t": 125, "d": [8,334] }, + { "px": [136,104], "src": [104,56], "f": 0, "t": 125, "d": [8,277] }, + { "px": [136,112], "src": [104,56], "f": 0, "t": 125, "d": [8,297] }, { "px": [24,144], "src": [104,56], "f": 0, "t": 125, "d": [8,363] }, { "px": [0,128], "src": [80,56], "f": 0, "t": 122, "d": [9,320] }, { "px": [80,88], "src": [24,56], "f": 0, "t": 115, "d": [10,230] }, { "px": [16,112], "src": [24,56], "f": 0, "t": 115, "d": [10,282] }, + { "px": [56,56], "src": [40,56], "f": 0, "t": 117, "d": [11,147] }, + { "px": [56,88], "src": [40,56], "f": 0, "t": 117, "d": [11,227] }, + { "px": [56,24], "src": [96,56], "f": 0, "t": 124, "d": [12,67] }, { "px": [56,48], "src": [96,56], "f": 0, "t": 124, "d": [12,127] }, { "px": [56,80], "src": [96,56], "f": 0, "t": 124, "d": [12,207] }, - { "px": [120,104], "src": [96,56], "f": 0, "t": 124, "d": [12,275] }, - { "px": [112,120], "src": [96,56], "f": 0, "t": 124, "d": [12,314] }, + { "px": [120,120], "src": [96,56], "f": 0, "t": 124, "d": [12,315] }, + { "px": [112,128], "src": [96,56], "f": 0, "t": 124, "d": [12,334] }, { "px": [24,136], "src": [96,56], "f": 0, "t": 124, "d": [12,343] }, { "px": [64,24], "src": [48,56], "f": 0, "t": 118, "d": [13,68] }, { "px": [88,80], "src": [48,56], "f": 0, "t": 118, "d": [13,211] }, @@ -3771,15 +3792,24 @@ { "px": [72,104], "src": [48,56], "f": 0, "t": 118, "d": [13,269] }, { "px": [80,104], "src": [48,56], "f": 0, "t": 118, "d": [13,270] }, { "px": [88,112], "src": [72,56], "f": 0, "t": 121, "d": [14,291] }, - { "px": [24,40], "src": [16,56], "f": 0, "t": 114, "d": [20,103] }, - { "px": [24,72], "src": [16,56], "f": 0, "t": 114, "d": [20,183] }, { "px": [96,104], "src": [16,56], "f": 0, "t": 114, "d": [20,272] }, { "px": [8,136], "src": [16,56], "f": 0, "t": 114, "d": [20,341] }, - { "px": [48,24], "src": [32,56], "f": 0, "t": 116, "d": [22,66] }, - { "px": [48,56], "src": [32,56], "f": 0, "t": 116, "d": [22,146] }, - { "px": [48,88], "src": [32,56], "f": 0, "t": 116, "d": [22,226] }, { "px": [56,32], "src": [8,56], "f": 0, "t": 113, "d": [23,87] }, - { "px": [88,120], "src": [8,56], "f": 0, "t": 113, "d": [23,311] } + { "px": [88,120], "src": [8,56], "f": 0, "t": 113, "d": [23,311] }, + { "px": [40,24], "src": [8,16], "f": 0, "t": 33, "d": [125,65] }, + { "px": [40,56], "src": [8,16], "f": 0, "t": 33, "d": [125,145] }, + { "px": [40,88], "src": [8,16], "f": 0, "t": 33, "d": [125,225] }, + { "px": [32,40], "src": [24,16], "f": 0, "t": 35, "d": [126,104] }, + { "px": [32,72], "src": [24,16], "f": 0, "t": 35, "d": [126,184] }, + { "px": [48,24], "src": [16,16], "f": 0, "t": 34, "d": [127,66] }, + { "px": [24,40], "src": [16,16], "f": 0, "t": 34, "d": [127,103] }, + { "px": [48,56], "src": [16,16], "f": 0, "t": 34, "d": [127,146] }, + { "px": [24,72], "src": [16,16], "f": 0, "t": 34, "d": [127,183] }, + { "px": [48,88], "src": [16,16], "f": 0, "t": 34, "d": [127,226] }, + { "px": [104,104], "src": [16,16], "f": 0, "t": 34, "d": [127,273] }, + { "px": [112,104], "src": [16,16], "f": 0, "t": 34, "d": [127,274] }, + { "px": [120,104], "src": [16,16], "f": 0, "t": 34, "d": [127,275] }, + { "px": [128,104], "src": [16,16], "f": 0, "t": 34, "d": [127,276] } ], "seed": 2637509, "overrideTilesetUid": null, @@ -3902,11 +3932,10 @@ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1, - 1,1,1,1,0,0,0,1,1,1,1,1,1,1,1 + 0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1, + 1,1,1,1,3,3,0,1,1,1,1,1,1,1,1 ], "autoLayerTiles": [ - { "px": [0,152], "src": [112,56], "f": 0, "t": 126, "d": [5,380] }, { "px": [8,152], "src": [112,56], "f": 0, "t": 126, "d": [5,381] }, { "px": [16,152], "src": [112,56], "f": 0, "t": 126, "d": [5,382] }, { "px": [24,152], "src": [112,56], "f": 0, "t": 126, "d": [5,383] }, @@ -3920,7 +3949,6 @@ { "px": [128,152], "src": [112,56], "f": 0, "t": 126, "d": [5,396] }, { "px": [136,152], "src": [112,56], "f": 0, "t": 126, "d": [5,397] }, { "px": [144,152], "src": [112,56], "f": 0, "t": 126, "d": [5,398] }, - { "px": [152,152], "src": [112,56], "f": 0, "t": 126, "d": [5,399] }, { "px": [0,8], "src": [88,56], "f": 0, "t": 123, "d": [6,20] }, { "px": [0,16], "src": [88,56], "f": 0, "t": 123, "d": [6,40] }, { "px": [0,24], "src": [88,56], "f": 0, "t": 123, "d": [6,60] }, @@ -3937,6 +3965,8 @@ { "px": [0,112], "src": [88,56], "f": 0, "t": 123, "d": [6,280] }, { "px": [0,120], "src": [88,56], "f": 0, "t": 123, "d": [6,300] }, { "px": [0,128], "src": [88,56], "f": 0, "t": 123, "d": [6,320] }, + { "px": [0,136], "src": [88,56], "f": 0, "t": 123, "d": [6,340] }, + { "px": [0,144], "src": [88,56], "f": 0, "t": 123, "d": [6,360] }, { "px": [8,0], "src": [56,56], "f": 0, "t": 119, "d": [7,1] }, { "px": [16,0], "src": [56,56], "f": 0, "t": 119, "d": [7,2] }, { "px": [24,0], "src": [56,56], "f": 0, "t": 119, "d": [7,3] }, @@ -3971,10 +4001,12 @@ { "px": [152,112], "src": [104,56], "f": 0, "t": 125, "d": [8,299] }, { "px": [152,120], "src": [104,56], "f": 0, "t": 125, "d": [8,319] }, { "px": [152,128], "src": [104,56], "f": 0, "t": 125, "d": [8,339] }, + { "px": [152,136], "src": [104,56], "f": 0, "t": 125, "d": [8,359] }, + { "px": [152,144], "src": [104,56], "f": 0, "t": 125, "d": [8,379] }, { "px": [64,152], "src": [80,56], "f": 0, "t": 122, "d": [9,388] }, - { "px": [0,136], "src": [24,56], "f": 0, "t": 115, "d": [10,340] }, - { "px": [152,136], "src": [40,56], "f": 0, "t": 117, "d": [11,359] }, - { "px": [96,152], "src": [96,56], "f": 0, "t": 124, "d": [12,392] } + { "px": [96,152], "src": [96,56], "f": 0, "t": 124, "d": [12,392] }, + { "px": [80,152], "src": [24,16], "f": 0, "t": 35, "d": [126,390] }, + { "px": [72,152], "src": [16,16], "f": 0, "t": 34, "d": [127,389] } ], "seed": 6305546, "overrideTilesetUid": null, diff --git a/src/circuit.zig b/src/circuit.zig index 2bc3b9d..2fed73a 100644 --- a/src/circuit.zig +++ b/src/circuit.zig @@ -1,44 +1,26 @@ const std = @import("std"); const util = @import("util.zig"); const assets = @import("assets"); +const world = @import("world.zig"); +const T = world.Tiles; const Vec2 = util.Vec2; const Cell = util.Cell; -pub fn is_circuit(tile: u8) bool { - return is_plug(tile) or is_conduit(tile) or is_switch(tile) or is_logic(tile); -} - -pub fn is_plug(tile: u8) bool { - return tile >= 17 and tile <= 20; -} - -pub fn is_conduit(tile: u8) bool { - return tile >= 97 and tile <= 113; -} - -pub fn is_switch(tile: u8) bool { - return tile >= 24 and tile <= 31; -} - -pub fn is_logic(tile: u8) bool { - return tile >= 21 and tile <= 24; -} - pub fn toggle_switch(tile: u8) u8 { return switch (tile) { // Tee west - 24 => 25, - 25 => 24, + T.SwitchTeeWestOff => T.SwitchTeeWestOn, + T.SwitchTeeWestOn => T.SwitchTeeWestOff, // Tee east - 26 => 27, - 27 => 26, + T.SwitchTeeEastOff => T.SwitchTeeEastOn, + T.SwitchTeeEastOn => T.SwitchTeeEastOff, // Vertical - 28 => 29, - 29 => 28, + T.SwitchVerticalOn => T.SwitchVerticalOff, + T.SwitchVerticalOff => T.SwitchVerticalOn, // Horizontal - 30 => 31, - 31 => 30, + T.SwitchHorizontalOn => T.SwitchHorizontalOff, + T.SwitchHorizontalOff => T.SwitchHorizontalOn, // Not a switch, pass tile through else => tile, }; @@ -75,25 +57,23 @@ const Current = [4]bool; fn get_inputs(tile: u8) Current { return switch (tile) { // Conduit recieves from every side - 16...20, - 43...47, - 97...113, + T.PlugNorth...T.PlugSouth, + T.ConduitCross...T.ConduitSingle, => .{ true, true, true, true }, // Switch_On - 25, - 27, - 29, + T.SwitchTeeWestOn, + T.SwitchTeeEastOn, + T.SwitchVerticalOn, => .{ true, false, true, false }, // Switch_Off - 26, - 28, - => .{ false, false, true, true }, + T.SwitchTeeWestOff => .{ false, false, true, true }, + T.SwitchTeeEastOff => .{ false, true, true, false }, // And, Xor - 21, - 23, + T.LogicAnd, + T.LogicXor, => .{ false, true, false, true }, // Not - 22 => .{ false, false, true, false }, + T.LogicNot => .{ false, false, true, false }, else => .{ false, false, false, false }, }; } @@ -101,20 +81,19 @@ fn get_inputs(tile: u8) Current { fn get_outputs(tile: u8) Current { return switch (tile) { // Conduit goes out every side - 16...20, - 43...47, - 97...113, + T.PlugNorth...T.PlugSouth, + T.ConduitCross...T.ConduitSingle, => .{ true, true, true, true }, // Switches // Tee west - 25 => .{ false, false, true, true }, - 26 => .{ true, false, true, false }, + T.SwitchTeeWestOn => .{ false, false, true, true }, + T.SwitchTeeWestOff => .{ true, false, true, false }, // Tee east - 27 => .{ false, true, true, false }, - 28 => .{ true, false, true, false }, + T.SwitchTeeEastOn => .{ false, true, true, false }, + T.SwitchTeeEastOff => .{ true, false, true, false }, // Vertical - 29 => .{ false, false, true, false }, - 30 => .{ true, false, true, false }, + T.SwitchVerticalOn => .{ true, false, true, false }, + T.SwitchVerticalOff => .{ false, false, true, false }, else => .{ false, false, false, false }, }; } @@ -123,9 +102,9 @@ const Logic = union(enum) { Not, And, Xor }; fn get_logic(tile: u8) ?Logic { return switch (tile) { - 21 => .And, - 22 => .Not, - 23 => .Xor, + T.LogicAnd => .And, + T.LogicNot => .Not, + T.LogicXor => .Xor, else => null, }; } @@ -134,10 +113,10 @@ const Plugs = [4]bool; /// Returns sides where wires may be plugged fn get_plugs(tile: u8) Plugs { return switch (tile) { - 17 => .{ false, false, true, false }, - 18 => .{ false, true, false, false }, - 19 => .{ false, false, false, true }, - 20 => .{ true, false, false, false }, + world.Tiles.PlugNorth => .{ false, false, true, false }, + world.Tiles.PlugWest => .{ false, true, false, false }, + world.Tiles.PlugEast => .{ false, false, false, true }, + world.Tiles.PlugSouth => .{ true, false, false, false }, else => .{ false, false, false, false }, }; } @@ -254,7 +233,7 @@ pub fn isEnabled(this: @This(), cell: Cell) bool { pub fn toggle(this: *@This(), c: Cell) void { const cell = c; if (this.get_cell(cell)) |tile| { - if (is_switch(tile)) { + if (T.is_switch(tile)) { const toggled = toggle_switch(tile); this.set_cell(cell, toggled); } @@ -304,7 +283,7 @@ pub fn fill(this: *@This(), alloc: std.mem.Allocator) !usize { const index = this.indexOf(cell) orelse continue; this.enable(cell); const hasVisited = std.mem.containsAtLeast(usize, visited.items, 1, &.{index}); - if (hasVisited and !is_logic(tile)) continue; + if (hasVisited and !T.is_logic(tile)) continue; visited.append(index); count += 1; if (get_logic(tile)) |logic| { @@ -334,7 +313,7 @@ pub fn fill(this: *@This(), alloc: std.mem.Allocator) !usize { if (get_inputs(nextTile)[@enumToInt(s.opposite())]) try q.insert(nextCell); } - if (is_plug(tile)) { + if (T.is_plug(tile)) { for (this.bridges.items) |*b| { if (@reduce(.And, b.cells[0] == cell)) { try q.insert(b.cells[1]); diff --git a/src/game.zig b/src/game.zig index bc8c728..fac0278 100644 --- a/src/game.zig +++ b/src/game.zig @@ -477,7 +477,7 @@ const Interaction = struct { fn getNearestCircuitInteraction(pos: Vec2f) ?Interaction { const cell = util.world2cell(pos); if (circuit.get_cell(cell)) |tile| { - if (Circuit.is_switch(tile)) { + if (world.Tiles.is_switch(tile)) { return Interaction{ .details = .lever, .pos = cell * Map.tile_size + Vec2{ 4, 4 } }; } } @@ -487,7 +487,7 @@ fn getNearestCircuitInteraction(pos: Vec2f) ?Interaction { fn getNearestPlugInteraction(pos: Vec2f, wireID: usize, which: usize) ?Interaction { const cell = util.world2cell(pos); if (circuit.get_cell(cell)) |tile| { - if (Circuit.is_plug(tile)) { + if (world.Tiles.is_plug(tile)) { const active = circuit.isEnabled(cell); return Interaction{ .details = .{ .plug = .{ .wireID = wireID, .which = which } }, @@ -626,7 +626,7 @@ fn updateCircuit() !void { // Add doors to map var i: usize = 0; while (level.getDoor(i)) |door| : (i += 1) { - const tile: u8 = if (door.kind == .Door) 3 else 4; + const tile: u8 = if (door.kind == .Door) world.Tiles.Door else world.Tiles.Trapdoor; try map.set_cell(.{door.x, door.y}, tile); } @@ -634,7 +634,7 @@ fn updateCircuit() !void { const enabledDoors = try circuit.enabledDoors(frame_alloc); defer frame_alloc.free(enabledDoors.items); for (enabledDoors.items) |door| { - try map.set_cell(door, 0); + try map.set_cell(door, world.Tiles.Empty); } } diff --git a/src/world.zig b/src/world.zig index 7a915d4..0900473 100644 --- a/src/world.zig +++ b/src/world.zig @@ -17,6 +17,80 @@ pub const CircuitType = enum(u4) { Source = 9, }; +/// This lists the most important tiles so I don't have to keep rewriting things +pub const Tiles = struct { + // Switches + pub const SwitchTeeWestOff = 24; + pub const SwitchTeeWestOn = 25; + pub const SwitchTeeEastOff = 26; + pub const SwitchTeeEastOn = 27; + pub const SwitchVerticalOff = 28; + pub const SwitchVerticalOn = 29; + pub const SwitchHorizontalOff = 30; + pub const SwitchHorizontalOn = 31; + + pub fn is_switch(tile: u8) bool { + return tile >= 24 and tile <= 31; + } + + // Plugs, sorted by autotile order + pub const PlugNorth = 16; + pub const PlugWest = 17; + pub const PlugEast = 18; + pub const PlugSouth = 19; + + pub fn is_plug(tile: u8) bool { + return tile >= 16 and tile < 20; + } + + pub const LogicAnd = 21; + pub const LogicNot = 22; + pub const LogicXor = 23; + + pub fn is_logic(tile: u8) bool { + return tile >= 21 and tile <= 24; + } + + pub const ConduitCross = 97; + pub const ConduitSingle = 113; + + pub fn is_conduit(tile: u8) bool { + return tile >= ConduitCross and tile <= ConduitSingle; + } + + pub fn is_circuit(tile: u8) bool { + return is_plug(tile) or is_conduit(tile) or is_switch(tile) or is_logic(tile); + } + + pub const WallSingle = 113; + pub const WallSurrounded = 127; + + pub fn is_wall(tile: u8) bool { + return tile >= WallSingle and tile <= WallSurrounded; + } + + pub const Door = 3; + pub const Trapdoor = 4; + + pub fn is_door(tile: u8) bool { + return tile == 3 or tile == 4; + } + + pub fn is_solid(tile: u8) bool { + return is_wall(tile) or is_door(tile); + } + + pub const OneWayLeft = 33; + pub const OneWayMiddle = 34; + pub const OneWayRight = 35; + + pub fn is_oneway(tile: u8) bool { + return tile >= OneWayLeft and tile <= OneWayRight; + } + + pub const Empty = 0; +}; + pub const TileData = union(enum) { tile: u7, flags: struct {