diff --git a/assets/game/atlas.json b/assets/game/atlas.json index b31493e..69f0e80 100644 --- a/assets/game/atlas.json +++ b/assets/game/atlas.json @@ -1,1121 +1,1061 @@ { "sheet_path": "../game/atlas/png", "frames": { - "ghost/blinky/down_b.png": { - "x": 288, - "y": 16, - "width": 16, - "height": 16 + "text/X.png": { + "x": 196, + "y": 24, + "width": 8, + "height": 8 }, - "ghost/blinky/left_a.png": { - "x": 272, - "y": 16, - "width": 16, - "height": 16 - }, - "maze/maze_1_5.png": { - "x": 288, + "cutscene/general_6_12.png": { + "x": 176, "y": 96, - "width": 8, - "height": 8 - }, - "text/_double_quote.png": { - "x": 8, - "y": 248, - "width": 8, - "height": 8 - }, - "edible/melon.png": { - "x": 480, - "y": 16, "width": 16, "height": 16 }, - "maze/maze_1_15.png": { - "x": 288, - "y": 128, - "width": 8, - "height": 8 - }, - "ghost/clyde/left_b.png": { - "x": 256, - "y": 112, - "width": 16, - "height": 16 - }, - "cutscene/general_7_9.png": { - "x": 272, - "y": 224, - "width": 16, - "height": 16 - }, - "cutscene/general_9_11.png": { - "x": 272, - "y": 128, - "width": 16, - "height": 16 - }, - "maze/maze_2_2.png": { - "x": 488, - "y": 40, - "width": 8, - "height": 8 - }, - "maze/maze_2_1.png": { - "x": 288, + "ghost/frightened/white_b.png": { + "x": 82, "y": 48, - "width": 8, - "height": 8 - }, - "maze/wall/maze_0_1.png": { - "x": 408, - "y": 40, - "width": 8, - "height": 8 - }, - "maze/maze_1_4.png": { - "x": 288, - "y": 104, - "width": 8, - "height": 8 - }, - "effects/3000.png": { - "x": 244, - "y": 0, - "width": 20, + "width": 16, "height": 16 }, - "text/M.png": { - "x": 128, - "y": 248, - "width": 8, - "height": 8 + "pacman/death/10.png": { + "x": 32, + "y": 96, + "width": 16, + "height": 16 }, "ghost/inky/up_b.png": { - "x": 240, + "x": 66, + "y": 48, + "width": 16, + "height": 16 + }, + "text/blank.png": { + "x": 218, + "y": 56, + "width": 8, + "height": 8 + }, + "maze/energizer.png": { + "x": 200, + "y": 112, + "width": 8, + "height": 8 + }, + "ghost/inky/up_a.png": { + "x": 68, + "y": 0, + "width": 16, + "height": 16 + }, + "cutscene/general_7_10.png": { + "x": 180, "y": 32, "width": 16, "height": 16 }, - "pacman/down_a.png": { - "x": 446, - "y": 0, + "ghost/inky/left_a.png": { + "x": 64, + "y": 96, "width": 16, "height": 16 }, - "cutscene/general_8_9.png": { - "x": 272, - "y": 160, - "width": 16, - "height": 16 - }, - "ghost/pinky/up_a.png": { - "x": 224, - "y": 160, - "width": 16, - "height": 16 - }, - "ghost/pinky/right_a.png": { - "x": 224, - "y": 192, - "width": 16, - "height": 16 - }, - "text/S.png": { - "x": 80, - "y": 248, + "text/G.png": { + "x": 212, + "y": 24, "width": 8, "height": 8 }, - "maze/maze_0_13.png": { - "x": 288, - "y": 232, - "width": 8, - "height": 8 - }, - "maze/maze_2_9.png": { - "x": 432, - "y": 40, - "width": 8, - "height": 8 - }, - "maze/full.png": { - "x": 0, - "y": 0, - "width": 224, - "height": 248 - }, - "text/P.png": { - "x": 104, - "y": 248, - "width": 8, - "height": 8 - }, - "cutscene/general_9_10.png": { - "x": 272, - "y": 144, - "width": 16, - "height": 16 - }, - "ghost/pinky/up_b.png": { - "x": 224, - "y": 144, - "width": 16, - "height": 16 - }, - "pacman/right_a.png": { - "x": 350, - "y": 0, - "width": 16, - "height": 16 - }, - "pacman/death/9.png": { - "x": 462, - "y": 0, - "width": 16, - "height": 16 - }, - "maze/maze_0_10.png": { - "x": 296, - "y": 48, - "width": 8, - "height": 8 - }, - "ghost/inky/right_a.png": { - "x": 240, + "ghost/blinky/left_b.png": { + "x": 112, "y": 80, "width": 16, "height": 16 }, - "text/_forward_slash.png": { - "x": 0, - "y": 248, - "width": 8, - "height": 8 - }, - "text/blank.png": { + "maze/tiles/20.png": { "x": 216, - "y": 248, + "y": 72, "width": 8, "height": 8 }, - "text/D.png": { - "x": 200, - "y": 248, + "maze/tiles/15.png": { + "x": 192, + "y": 88, "width": 8, "height": 8 }, - "ghost/eyes/up.png": { - "x": 240, - "y": 224, - "width": 16, - "height": 16 - }, - "maze/maze_2_6.png": { - "x": 456, - "y": 40, - "width": 8, - "height": 8 - }, - "edible/orange.png": { - "x": 464, + "cutscene/general_9_11.png": { + "x": 164, "y": 16, "width": 16, "height": 16 }, + "maze/tiles/12.png": { + "x": 192, + "y": 112, + "width": 8, + "height": 8 + }, + "maze/pellet.png": { + "x": 200, + "y": 104, + "width": 8, + "height": 8 + }, + "text/H.png": { + "x": 212, + "y": 16, + "width": 8, + "height": 8 + }, + "text/O.png": { + "x": 204, + "y": 32, + "width": 8, + "height": 8 + }, + "cutscene/general_9_9.png": { + "x": 162, + "y": 48, + "width": 16, + "height": 16 + }, + "cutscene/general_8_8.png": { + "x": 160, + "y": 96, + "width": 16, + "height": 16 + }, + "cutscene/general_6_9.png": { + "x": 176, + "y": 80, + "width": 16, + "height": 16 + }, + "text/9.png": { + "x": 220, + "y": 16, + "width": 8, + "height": 8 + }, + "maze/tiles/31.png": { + "x": 236, + "y": 40, + "width": 8, + "height": 8 + }, + "effects/200.png": { + "x": 128, + "y": 96, + "width": 16, + "height": 16 + }, + "pacman/down_b.png": { + "x": 20, + "y": 32, + "width": 16, + "height": 16 + }, + "pacman/death/1.png": { + "x": 32, + "y": 112, + "width": 16, + "height": 16 + }, + "effects/5000.png": { + "x": 0, + "y": 0, + "width": 20, + "height": 16 + }, + "pacman/left_b.png": { + "x": 16, + "y": 64, + "width": 16, + "height": 16 + }, + "ghost/inky/left_b.png": { + "x": 64, + "y": 80, + "width": 16, + "height": 16 + }, + "edible/strawberry.png": { + "x": 146, + "y": 48, + "width": 16, + "height": 16 + }, + "maze/tiles/6.png": { + "x": 234, + "y": 56, + "width": 8, + "height": 8 + }, + "maze/tiles/5.png": { + "x": 236, + "y": 0, + "width": 8, + "height": 8 + }, + "ghost/blinky/down_a.png": { + "x": 128, + "y": 64, + "width": 16, + "height": 16 + }, + "text/E.png": { + "x": 212, + "y": 40, + "width": 8, + "height": 8 + }, + "maze/tiles/0.png": { + "x": 200, + "y": 96, + "width": 8, + "height": 8 + }, + "ghost/blinky/down_b.png": { + "x": 112, + "y": 112, + "width": 16, + "height": 16 + }, + "ghost/clyde/down_a.png": { + "x": 112, + "y": 64, + "width": 16, + "height": 16 + }, + "pacman/down_a.png": { + "x": 16, + "y": 80, + "width": 16, + "height": 16 + }, + "ghost/blinky/right_a.png": { + "x": 116, + "y": 32, + "width": 16, + "height": 16 + }, + "edible/galaxian.png": { + "x": 144, + "y": 80, + "width": 16, + "height": 16 + }, + "maze/tiles/17.png": { + "x": 248, + "y": 72, + "width": 8, + "height": 8 + }, + "text/_double_quote.png": { + "x": 194, + "y": 56, + "width": 8, + "height": 8 + }, + "maze/tiles/28.png": { + "x": 248, + "y": 64, + "width": 8, + "height": 8 + }, + "text/4.png": { + "x": 226, + "y": 48, + "width": 8, + "height": 8 + }, + "ghost/clyde/right_b.png": { + "x": 100, + "y": 16, + "width": 16, + "height": 16 + }, + "ghost/inky/right_b.png": { + "x": 68, + "y": 16, + "width": 16, + "height": 16 + }, + "maze/tiles/10.png": { + "x": 200, + "y": 80, + "width": 8, + "height": 8 + }, + "maze/tiles/4.png": { + "x": 236, + "y": 8, + "width": 8, + "height": 8 + }, + "pacman/death/6.png": { + "x": 34, + "y": 48, + "width": 16, + "height": 16 + }, + "edible/apple.png": { + "x": 160, + "y": 64, + "width": 16, + "height": 16 + }, + "text/U.png": { + "x": 202, + "y": 48, + "width": 8, + "height": 8 + }, + "pacman/death/0.png": { + "x": 48, + "y": 64, + "width": 16, + "height": 16 + }, + "pacman/full.png": { + "x": 20, + "y": 16, + "width": 16, + "height": 16 + }, + "pacman/death/3.png": { + "x": 36, + "y": 32, + "width": 16, + "height": 16 + }, + "text/A.png": { + "x": 220, + "y": 8, + "width": 8, + "height": 8 + }, + "maze/tiles/27.png": { + "x": 244, + "y": 0, + "width": 8, + "height": 8 + }, + "ghost/blinky/right_b.png": { + "x": 116, + "y": 16, + "width": 16, + "height": 16 + }, + "text/R.png": { + "x": 204, + "y": 8, + "width": 8, + "height": 8 + }, + "ghost/inky/right_a.png": { + "x": 68, + "y": 32, + "width": 16, + "height": 16 + }, + "ghost/blinky/up_b.png": { + "x": 114, + "y": 48, + "width": 16, + "height": 16 + }, + "cutscene/general_9_10.png": { + "x": 164, + "y": 32, + "width": 16, + "height": 16 + }, + "ghost/frightened/blue_b.png": { + "x": 84, + "y": 16, + "width": 16, + "height": 16 + }, + "effects/1000.png": { + "x": 0, + "y": 48, + "width": 18, + "height": 16 + }, + "ghost/inky/down_a.png": { + "x": 80, + "y": 64, + "width": 16, + "height": 16 + }, + "ghost/clyde/right_a.png": { + "x": 100, + "y": 32, + "width": 16, + "height": 16 + }, + "ghost/blinky/up_a.png": { + "x": 116, + "y": 0, + "width": 16, + "height": 16 + }, + "maze/tiles/8.png": { + "x": 232, + "y": 64, + "width": 8, + "height": 8 + }, + "ghost/clyde/left_a.png": { + "x": 96, + "y": 96, + "width": 16, + "height": 16 + }, + "cutscene/general_8_10.png": { + "x": 176, + "y": 64, + "width": 16, + "height": 16 + }, + "text/8.png": { + "x": 220, + "y": 24, + "width": 8, + "height": 8 + }, + "pacman/death/8.png": { + "x": 16, + "y": 112, + "width": 16, + "height": 16 + }, + "ghost/pinky/up_b.png": { + "x": 50, + "y": 48, + "width": 16, + "height": 16 + }, "pacman/right_b.png": { - "x": 334, + "x": 0, + "y": 96, + "width": 16, + "height": 16 + }, + "ghost/pinky/up_a.png": { + "x": 52, + "y": 0, + "width": 16, + "height": 16 + }, + "text/J.png": { + "x": 212, + "y": 0, + "width": 8, + "height": 8 + }, + "maze/tiles/23.png": { + "x": 244, + "y": 32, + "width": 8, + "height": 8 + }, + "maze/tiles/2.png": { + "x": 224, + "y": 72, + "width": 8, + "height": 8 + }, + "ghost/blinky/left_a.png": { + "x": 112, + "y": 96, + "width": 16, + "height": 16 + }, + "maze/tiles/1.png": { + "x": 200, + "y": 88, + "width": 8, + "height": 8 + }, + "maze/tiles/9.png": { + "x": 228, + "y": 40, + "width": 8, + "height": 8 + }, + "cutscene/general_8_11.png": { + "x": 160, + "y": 112, + "width": 16, + "height": 16 + }, + "text/6.png": { + "x": 220, + "y": 40, + "width": 8, + "height": 8 + }, + "text/B.png": { + "x": 220, + "y": 0, + "width": 8, + "height": 8 + }, + "text/C.png": { + "x": 218, + "y": 48, + "width": 8, + "height": 8 + }, + "text/5.png": { + "x": 224, + "y": 64, + "width": 8, + "height": 8 + }, + "maze/tiles/19.png": { + "x": 232, + "y": 72, + "width": 8, + "height": 8 + }, + "ghost/pinky/right_a.png": { + "x": 52, + "y": 32, + "width": 16, + "height": 16 + }, + "cutscene/general_7_9.png": { + "x": 178, + "y": 48, + "width": 16, + "height": 16 + }, + "maze/tiles/14.png": { + "x": 192, + "y": 96, + "width": 8, + "height": 8 + }, + "maze/tiles/18.png": { + "x": 240, + "y": 72, + "width": 8, + "height": 8 + }, + "text/N.png": { + "x": 204, + "y": 40, + "width": 8, + "height": 8 + }, + "cutscene/general_7_11.png": { + "x": 180, + "y": 16, + "width": 16, + "height": 16 + }, + "maze/tiles/22.png": { + "x": 244, + "y": 40, + "width": 8, + "height": 8 + }, + "pacman/death/2.png": { + "x": 32, + "y": 80, + "width": 16, + "height": 16 + }, + "maze/tiles/29.png": { + "x": 242, + "y": 56, + "width": 8, + "height": 8 + }, + "effects/700.png": { + "x": 132, + "y": 0, + "width": 16, + "height": 16 + }, + "pacman/right_a.png": { + "x": 0, + "y": 112, + "width": 16, + "height": 16 + }, + "pacman/up_a.png": { + "x": 0, + "y": 80, + "width": 16, + "height": 16 + }, + "edible/orange.png": { + "x": 148, "y": 0, "width": 16, "height": 16 }, "pacman/death/7.png": { - "x": 494, - "y": 0, - "width": 16, - "height": 16 - }, - "pacman/death/0.png": { - "x": 224, - "y": 128, - "width": 16, - "height": 16 - }, - "cutscene/general_9_8.png": { - "x": 272, - "y": 112, - "width": 16, - "height": 16 - }, - "cutscene/general_8_10.png": { - "x": 272, - "y": 208, - "width": 16, - "height": 16 - }, - "cutscene/general_7_10.png": { - "x": 304, - "y": 32, - "width": 16, - "height": 16 - }, - "text/B.png": { - "x": 384, - "y": 32, - "width": 8, - "height": 8 - }, - "effects/100.png": { - "x": 432, - "y": 16, - "width": 16, - "height": 16 - }, - "maze/maze_1_7.png": { - "x": 288, - "y": 80, - "width": 8, - "height": 8 - }, - "ghost/inky/down_b.png": { - "x": 240, - "y": 128, - "width": 16, - "height": 16 - }, - "edible/cherry.png": { - "x": 272, - "y": 48, - "width": 16, - "height": 16 - }, - "ghost/clyde/left_a.png": { - "x": 256, - "y": 128, - "width": 16, - "height": 16 - }, - "effects/2000.png": { - "x": 264, - "y": 0, - "width": 20, - "height": 16 - }, - "effects/1600.png": { - "x": 416, - "y": 16, - "width": 16, - "height": 16 - }, - "ghost/inky/left_a.png": { - "x": 240, - "y": 112, - "width": 16, - "height": 16 - }, - "cutscene/general_9_9.png": { - "x": 272, - "y": 96, - "width": 16, - "height": 16 - }, - "cutscene/general_6_11.png": { - "x": 352, - "y": 32, - "width": 16, - "height": 16 - }, - "text/J.png": { - "x": 152, - "y": 248, - "width": 8, - "height": 8 - }, - "text/O.png": { - "x": 112, - "y": 248, - "width": 8, - "height": 8 - }, - "pacman/up_b.png": { - "x": 302, - "y": 0, - "width": 16, - "height": 16 - }, - "cutscene/general_6_10.png": { - "x": 368, - "y": 32, - "width": 16, - "height": 16 - }, - "text/2.png": { - "x": 456, - "y": 32, - "width": 8, - "height": 8 - }, - "maze/wall/maze_0_6.png": { - "x": 496, - "y": 32, - "width": 8, - "height": 8 - }, - "pacman/death/3.png": { - "x": 224, + "x": 32, "y": 64, "width": 16, "height": 16 }, - "maze/wall/maze_0_3.png": { - "x": 392, - "y": 40, + "text/S.png": { + "x": 204, + "y": 0, "width": 8, "height": 8 }, - "cutscene/general_7_8.png": { - "x": 272, - "y": 240, - "width": 16, - "height": 16 - }, - "edible/bell.png": { - "x": 272, - "y": 64, - "width": 16, - "height": 16 - }, - "ghost/eyes/right.png": { - "x": 240, - "y": 240, - "width": 16, - "height": 16 - }, - "ghost/inky/left_b.png": { - "x": 240, - "y": 96, - "width": 16, - "height": 16 - }, - "ghost/blinky/up_b.png": { - "x": 256, - "y": 176, - "width": 16, - "height": 16 - }, - "edible/key.png": { - "x": 496, - "y": 16, - "width": 16, - "height": 16 - }, - "text/7.png": { - "x": 416, - "y": 32, - "width": 8, - "height": 8 - }, - "maze/pellet.png": { - "x": 424, - "y": 40, - "width": 8, - "height": 8 - }, - "maze/maze_1_3.png": { - "x": 288, - "y": 112, - "width": 8, - "height": 8 - }, - "maze/maze_0_12.png": { - "x": 288, - "y": 240, - "width": 8, - "height": 8 - }, - "effects/700.png": { - "x": 336, - "y": 16, - "width": 16, - "height": 16 - }, - "maze/maze_0_11.png": { - "x": 288, - "y": 248, - "width": 8, - "height": 8 - }, - "maze/maze_2_5.png": { - "x": 464, - "y": 40, - "width": 8, - "height": 8 - }, - "ghost/inky/right_b.png": { + "maze/tiles/30.png": { "x": 240, "y": 64, - "width": 16, - "height": 16 - }, - "cutscene/general_6_12.png": { - "x": 336, - "y": 32, - "width": 16, - "height": 16 - }, - "maze/wall/maze_0_5.png": { - "x": 504, - "y": 32, - "width": 8, - "height": 8 - }, - "text/E.png": { - "x": 192, - "y": 248, - "width": 8, - "height": 8 - }, - "effects/800.png": { - "x": 320, - "y": 16, - "width": 16, - "height": 16 - }, - "maze/maze_1_12.png": { - "x": 288, - "y": 152, - "width": 8, - "height": 8 - }, - "ghost/eyes/down.png": { - "x": 256, - "y": 32, - "width": 16, - "height": 16 - }, - "maze/maze_1_14.png": { - "x": 288, - "y": 136, - "width": 8, - "height": 8 - }, - "pacman/left_a.png": { - "x": 382, - "y": 0, - "width": 16, - "height": 16 - }, - "ghost/blinky/up_a.png": { - "x": 256, - "y": 192, - "width": 16, - "height": 16 - }, - "maze/wall/maze_0_4.png": { - "x": 384, - "y": 40, - "width": 8, - "height": 8 - }, - "maze/maze_0_8.png": { - "x": 288, - "y": 200, - "width": 8, - "height": 8 - }, - "ghost/pinky/left_b.png": { - "x": 224, - "y": 208, - "width": 16, - "height": 16 - }, - "maze/maze_1_6.png": { - "x": 288, - "y": 88, - "width": 8, - "height": 8 - }, - "ghost/clyde/right_a.png": { - "x": 256, - "y": 96, - "width": 16, - "height": 16 - }, - "ghost/clyde/right_b.png": { - "x": 256, - "y": 80, - "width": 16, - "height": 16 - }, - "text/L.png": { - "x": 136, - "y": 248, - "width": 8, - "height": 8 - }, - "pacman/death/5.png": { - "x": 224, - "y": 32, - "width": 16, - "height": 16 - }, - "maze/maze_1_1.png": { - "x": 288, - "y": 176, - "width": 8, - "height": 8 - }, - "maze/maze_2_3.png": { - "x": 480, - "y": 40, - "width": 8, - "height": 8 - }, - "ghost/frightened/white_b.png": { - "x": 240, - "y": 160, - "width": 16, - "height": 16 - }, - "text/W.png": { - "x": 48, - "y": 248, - "width": 8, - "height": 8 - }, - "effects/5000.png": { - "x": 224, - "y": 0, - "width": 20, - "height": 16 - }, - "text/V.png": { - "x": 56, - "y": 248, - "width": 8, - "height": 8 - }, - "pacman/death/10.png": { - "x": 224, - "y": 96, - "width": 16, - "height": 16 - }, - "ghost/blinky/right_a.png": { - "x": 256, - "y": 224, - "width": 16, - "height": 16 - }, - "text/Q.png": { - "x": 96, - "y": 248, - "width": 8, - "height": 8 - }, - "ghost/blinky/down_a.png": { - "x": 304, - "y": 16, - "width": 16, - "height": 16 - }, - "edible/apple.png": { - "x": 272, - "y": 80, - "width": 16, - "height": 16 - }, - "text/G.png": { - "x": 176, - "y": 248, - "width": 8, - "height": 8 - }, - "ghost/eyes/left.png": { - "x": 256, - "y": 16, - "width": 16, - "height": 16 - }, - "text/1.png": { - "x": 464, - "y": 32, - "width": 8, - "height": 8 - }, - "ghost/clyde/up_b.png": { - "x": 256, - "y": 48, - "width": 16, - "height": 16 - }, - "cutscene/general_8_11.png": { - "x": 272, - "y": 192, - "width": 16, - "height": 16 - }, - "text/-.png": { - "x": 480, - "y": 32, - "width": 8, - "height": 8 - }, - "pacman/death/6.png": { - "x": 224, - "y": 16, - "width": 16, - "height": 16 - }, - "text/H.png": { - "x": 168, - "y": 248, - "width": 8, - "height": 8 - }, - "effects/500.png": { - "x": 352, - "y": 16, - "width": 16, - "height": 16 - }, - "edible/strawberry.png": { - "x": 448, - "y": 16, - "width": 16, - "height": 16 - }, - "pacman/down_b.png": { - "x": 430, - "y": 0, - "width": 16, - "height": 16 - }, - "cutscene/general_8_8.png": { - "x": 272, - "y": 176, - "width": 16, - "height": 16 - }, - "text/C.png": { - "x": 208, - "y": 248, - "width": 8, - "height": 8 - }, - "text/9.png": { - "x": 400, - "y": 32, - "width": 8, - "height": 8 - }, - "maze/maze_1_11.png": { - "x": 288, - "y": 160, - "width": 8, - "height": 8 - }, - "pacman/full.png": { - "x": 414, - "y": 0, - "width": 16, - "height": 16 - }, - "ghost/pinky/left_a.png": { - "x": 224, - "y": 224, - "width": 16, - "height": 16 - }, - "ghost/pinky/down_b.png": { - "x": 224, - "y": 240, - "width": 16, - "height": 16 - }, - "effects/300.png": { - "x": 384, - "y": 16, - "width": 16, - "height": 16 - }, - "maze/maze_0_15.png": { - "x": 288, - "y": 216, - "width": 8, - "height": 8 - }, - "text/F.png": { - "x": 184, - "y": 248, - "width": 8, - "height": 8 - }, - "text/0.png": { - "x": 472, - "y": 32, "width": 8, "height": 8 }, "text/3.png": { - "x": 448, - "y": 32, - "width": 8, - "height": 8 - }, - "pacman/icon.png": { - "x": 398, - "y": 0, - "width": 16, - "height": 16 - }, - "maze/maze_2_11.png": { - "x": 496, - "y": 40, - "width": 8, - "height": 8 - }, - "text/R.png": { - "x": 88, - "y": 248, - "width": 8, - "height": 8 - }, - "maze/maze_2_7.png": { - "x": 448, - "y": 40, - "width": 8, - "height": 8 - }, - "ghost/blinky/left_b.png": { - "x": 256, - "y": 240, - "width": 16, - "height": 16 - }, - "maze/maze_2_0.png": { - "x": 288, + "x": 226, "y": 56, "width": 8, "height": 8 }, - "pacman/death/4.png": { - "x": 224, + "ghost/pinky/left_b.png": { + "x": 48, + "y": 80, + "width": 16, + "height": 16 + }, + "cutscene/general_8_9.png": { + "x": 160, + "y": 80, + "width": 16, + "height": 16 + }, + "ghost/eyes/right.png": { + "x": 80, + "y": 96, + "width": 16, + "height": 16 + }, + "text/_copyright.png": { + "x": 196, + "y": 0, + "width": 8, + "height": 8 + }, + "text/D.png": { + "x": 216, + "y": 64, + "width": 8, + "height": 8 + }, + "text/_forward_slash.png": { + "x": 194, "y": 48, - "width": 16, - "height": 16 - }, - "maze/maze_1_2.png": { - "x": 288, - "y": 120, "width": 8, "height": 8 }, - "maze/maze_1_13.png": { - "x": 288, - "y": 144, - "width": 8, - "height": 8 - }, - "text/4.png": { - "x": 440, - "y": 32, - "width": 8, - "height": 8 - }, - "effects/1000.png": { - "x": 284, - "y": 0, - "width": 18, - "height": 16 - }, - "ghost/pinky/down_a.png": { - "x": 240, + "effects/500.png": { + "x": 132, "y": 16, "width": 16, "height": 16 }, - "text/!.png": { - "x": 488, - "y": 32, - "width": 8, - "height": 8 - }, - "maze/wall/maze_0_2.png": { - "x": 400, - "y": 40, - "width": 8, - "height": 8 - }, - "text/8.png": { - "x": 408, - "y": 32, - "width": 8, - "height": 8 - }, - "maze/maze_2_10.png": { - "x": 504, - "y": 40, - "width": 8, - "height": 8 - }, - "ghost/clyde/down_a.png": { - "x": 256, - "y": 160, - "width": 16, - "height": 16 - }, - "pacman/death/8.png": { - "x": 478, - "y": 0, - "width": 16, - "height": 16 - }, - "pacman/death/1.png": { - "x": 224, - "y": 112, - "width": 16, - "height": 16 - }, - "ghost/pinky/right_b.png": { - "x": 224, - "y": 176, - "width": 16, - "height": 16 - }, "text/I.png": { - "x": 160, - "y": 248, + "x": 212, + "y": 8, "width": 8, "height": 8 }, - "text/6.png": { - "x": 424, - "y": 32, - "width": 8, - "height": 8 - }, - "maze/maze_1_0.png": { - "x": 288, - "y": 184, - "width": 8, - "height": 8 - }, - "text/N.png": { - "x": 120, - "y": 248, - "width": 8, - "height": 8 - }, - "maze/wall/maze_0_0.png": { - "x": 416, - "y": 40, - "width": 8, - "height": 8 - }, - "maze/maze_2_8.png": { - "x": 440, - "y": 40, - "width": 8, - "height": 8 - }, - "maze/maze_0_9.png": { - "x": 288, - "y": 192, - "width": 8, - "height": 8 - }, - "maze/maze_2_4.png": { - "x": 472, - "y": 40, - "width": 8, - "height": 8 - }, - "ghost/frightened/blue_a.png": { - "x": 240, - "y": 208, - "width": 16, - "height": 16 - }, - "text/U.png": { + "ghost/inky/down_b.png": { "x": 64, - "y": 248, - "width": 8, - "height": 8 - }, - "maze/maze_0_14.png": { - "x": 288, - "y": 224, - "width": 8, - "height": 8 - }, - "cutscene/general_7_11.png": { - "x": 288, - "y": 32, + "y": 112, "width": 16, "height": 16 }, - "maze/energizer.png": { - "x": 296, + "edible/bell.png": { + "x": 144, + "y": 112, + "width": 16, + "height": 16 + }, + "text/T.png": { + "x": 202, "y": 56, "width": 8, "height": 8 }, - "ghost/inky/down_a.png": { - "x": 240, - "y": 144, - "width": 16, - "height": 16 - }, - "edible/galaxian.png": { - "x": 272, - "y": 32, - "width": 16, - "height": 16 - }, - "text/K.png": { - "x": 144, - "y": 248, + "text/1.png": { + "x": 228, + "y": 8, "width": 8, "height": 8 }, - "text/Y.png": { - "x": 32, - "y": 248, - "width": 8, - "height": 8 - }, - "text/_copyright.png": { - "x": 16, - "y": 248, - "width": 8, - "height": 8 - }, - "cutscene/general_6_9.png": { - "x": 320, - "y": 32, - "width": 16, - "height": 16 - }, - "pacman/left_b.png": { - "x": 366, - "y": 0, - "width": 16, - "height": 16 - }, - "ghost/frightened/blue_b.png": { - "x": 240, - "y": 192, - "width": 16, - "height": 16 - }, - "text/A.png": { - "x": 392, - "y": 32, - "width": 8, - "height": 8 - }, - "ghost/inky/up_a.png": { - "x": 240, + "maze/tiles/3.png": { + "x": 242, "y": 48, - "width": 16, - "height": 16 - }, - "ghost/frightened/white_a.png": { - "x": 240, - "y": 176, - "width": 16, - "height": 16 - }, - "maze/maze_1_8.png": { - "x": 288, - "y": 72, - "width": 8, - "height": 8 - }, - "ghost/clyde/down_b.png": { - "x": 256, - "y": 144, - "width": 16, - "height": 16 - }, - "text/5.png": { - "x": 432, - "y": 32, "width": 8, "height": 8 }, "effects/400.png": { - "x": 368, - "y": 16, + "x": 132, + "y": 32, "width": 16, "height": 16 }, - "ghost/clyde/up_a.png": { - "x": 256, + "effects/100.png": { + "x": 144, "y": 64, "width": 16, "height": 16 }, - "pacman/up_a.png": { - "x": 318, + "ghost/clyde/up_b.png": { + "x": 98, + "y": 48, + "width": 16, + "height": 16 + }, + "effects/2000.png": { + "x": 0, + "y": 32, + "width": 20, + "height": 16 + }, + "cutscene/general_9_8.png": { + "x": 164, "y": 0, "width": 16, "height": 16 }, - "effects/200.png": { - "x": 400, + "text/P.png": { + "x": 204, + "y": 24, + "width": 8, + "height": 8 + }, + "text/-.png": { + "x": 228, + "y": 24, + "width": 8, + "height": 8 + }, + "pacman/up_b.png": { + "x": 0, + "y": 64, + "width": 16, + "height": 16 + }, + "text/M.png": { + "x": 208, + "y": 64, + "width": 8, + "height": 8 + }, + "maze/tiles/34.png": { + "x": 236, + "y": 16, + "width": 8, + "height": 8 + }, + "maze/tiles/21.png": { + "x": 208, + "y": 72, + "width": 8, + "height": 8 + }, + "effects/300.png": { + "x": 128, + "y": 80, + "width": 16, + "height": 16 + }, + "maze/tiles/25.png": { + "x": 244, + "y": 16, + "width": 8, + "height": 8 + }, + "pacman/death/9.png": { + "x": 16, + "y": 96, + "width": 16, + "height": 16 + }, + "ghost/pinky/right_b.png": { + "x": 52, "y": 16, "width": 16, "height": 16 }, "text/Z.png": { - "x": 24, - "y": 248, + "x": 196, + "y": 8, "width": 8, "height": 8 }, - "ghost/blinky/right_b.png": { - "x": 256, - "y": 208, + "text/L.png": { + "x": 210, + "y": 48, + "width": 8, + "height": 8 + }, + "cutscene/general_7_8.png": { + "x": 180, + "y": 0, "width": 16, "height": 16 }, - "pacman/death/2.png": { - "x": 224, + "text/K.png": { + "x": 210, + "y": 56, + "width": 8, + "height": 8 + }, + "cutscene/general_6_11.png": { + "x": 176, + "y": 112, + "width": 16, + "height": 16 + }, + "text/2.png": { + "x": 228, + "y": 0, + "width": 8, + "height": 8 + }, + "maze/tiles/24.png": { + "x": 244, + "y": 24, + "width": 8, + "height": 8 + }, + "text/F.png": { + "x": 212, + "y": 32, + "width": 8, + "height": 8 + }, + "text/7.png": { + "x": 220, + "y": 32, + "width": 8, + "height": 8 + }, + "maze/tiles/11.png": { + "x": 192, + "y": 120, + "width": 8, + "height": 8 + }, + "pacman/left_a.png": { + "x": 18, + "y": 48, + "width": 16, + "height": 16 + }, + "ghost/pinky/down_b.png": { + "x": 48, + "y": 112, + "width": 16, + "height": 16 + }, + "maze/tiles/16.png": { + "x": 192, + "y": 80, + "width": 8, + "height": 8 + }, + "ghost/frightened/blue_a.png": { + "x": 84, + "y": 32, + "width": 16, + "height": 16 + }, + "ghost/eyes/up.png": { + "x": 80, "y": 80, "width": 16, "height": 16 }, - "maze/maze_1_10.png": { - "x": 288, - "y": 168, + "maze/tiles/7.png": { + "x": 234, + "y": 48, "width": 8, "height": 8 }, - "maze/maze_1_9.png": { - "x": 288, + "ghost/clyde/down_b.png": { + "x": 96, + "y": 112, + "width": 16, + "height": 16 + }, + "maze/tiles/13.png": { + "x": 192, + "y": 104, + "width": 8, + "height": 8 + }, + "effects/800.png": { + "x": 130, + "y": 48, + "width": 16, + "height": 16 + }, + "pacman/death/4.png": { + "x": 36, + "y": 16, + "width": 16, + "height": 16 + }, + "text/V.png": { + "x": 196, + "y": 40, + "width": 8, + "height": 8 + }, + "text/0.png": { + "x": 228, + "y": 16, + "width": 8, + "height": 8 + }, + "pacman/death/5.png": { + "x": 36, + "y": 0, + "width": 16, + "height": 16 + }, + "ghost/pinky/down_a.png": { + "x": 64, "y": 64, + "width": 16, + "height": 16 + }, + "effects/3000.png": { + "x": 0, + "y": 16, + "width": 20, + "height": 16 + }, + "ghost/frightened/white_a.png": { + "x": 84, + "y": 0, + "width": 16, + "height": 16 + }, + "edible/cherry.png": { + "x": 144, + "y": 96, + "width": 16, + "height": 16 + }, + "ghost/pinky/left_a.png": { + "x": 48, + "y": 96, + "width": 16, + "height": 16 + }, + "text/W.png": { + "x": 196, + "y": 32, "width": 8, "height": 8 }, - "text/T.png": { - "x": 72, - "y": 248, + "text/!.png": { + "x": 228, + "y": 32, "width": 8, "height": 8 }, - "text/X.png": { - "x": 40, - "y": 248, + "maze/tiles/26.png": { + "x": 244, + "y": 8, "width": 8, "height": 8 }, - "maze/maze_0_7.png": { - "x": 288, - "y": 208, + "edible/melon.png": { + "x": 148, + "y": 16, + "width": 16, + "height": 16 + }, + "pacman/icon.png": { + "x": 20, + "y": 0, + "width": 16, + "height": 16 + }, + "text/Y.png": { + "x": 196, + "y": 16, "width": 8, "height": 8 + }, + "maze/tiles/32.png": { + "x": 236, + "y": 32, + "width": 8, + "height": 8 + }, + "ghost/eyes/down.png": { + "x": 96, + "y": 64, + "width": 16, + "height": 16 + }, + "effects/1600.png": { + "x": 128, + "y": 112, + "width": 16, + "height": 16 + }, + "ghost/clyde/left_b.png": { + "x": 96, + "y": 80, + "width": 16, + "height": 16 + }, + "ghost/clyde/up_a.png": { + "x": 100, + "y": 0, + "width": 16, + "height": 16 + }, + "text/Q.png": { + "x": 204, + "y": 16, + "width": 8, + "height": 8 + }, + "maze/tiles/33.png": { + "x": 236, + "y": 24, + "width": 8, + "height": 8 + }, + "ghost/eyes/left.png": { + "x": 80, + "y": 112, + "width": 16, + "height": 16 + }, + "cutscene/general_6_10.png": { + "x": 192, + "y": 64, + "width": 16, + "height": 16 + }, + "edible/key.png": { + "x": 148, + "y": 32, + "width": 16, + "height": 16 } } } diff --git a/assets/game/atlas.png b/assets/game/atlas.png index 80fbe46..342c67b 100644 Binary files a/assets/game/atlas.png and b/assets/game/atlas.png differ diff --git a/assets/unpacked/maze/full.png b/assets/unpacked/maze/full.png deleted file mode 100644 index bb57ea2..0000000 Binary files a/assets/unpacked/maze/full.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_0_10.png b/assets/unpacked/maze/maze_0_10.png deleted file mode 100644 index af16d61..0000000 Binary files a/assets/unpacked/maze/maze_0_10.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_0_11.png b/assets/unpacked/maze/maze_0_11.png deleted file mode 100644 index af16d61..0000000 Binary files a/assets/unpacked/maze/maze_0_11.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_0_12.png b/assets/unpacked/maze/maze_0_12.png deleted file mode 100644 index 9ff8711..0000000 Binary files a/assets/unpacked/maze/maze_0_12.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_0_13.png b/assets/unpacked/maze/maze_0_13.png deleted file mode 100644 index 9ff8711..0000000 Binary files a/assets/unpacked/maze/maze_0_13.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_0_14.png b/assets/unpacked/maze/maze_0_14.png deleted file mode 100644 index 6195e51..0000000 Binary files a/assets/unpacked/maze/maze_0_14.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_0_15.png b/assets/unpacked/maze/maze_0_15.png deleted file mode 100644 index 6195e51..0000000 Binary files a/assets/unpacked/maze/maze_0_15.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_0_7.png b/assets/unpacked/maze/maze_0_7.png deleted file mode 100644 index 35c5a41..0000000 Binary files a/assets/unpacked/maze/maze_0_7.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_0_8.png b/assets/unpacked/maze/maze_0_8.png deleted file mode 100644 index 0677282..0000000 Binary files a/assets/unpacked/maze/maze_0_8.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_0_9.png b/assets/unpacked/maze/maze_0_9.png deleted file mode 100644 index 4120221..0000000 Binary files a/assets/unpacked/maze/maze_0_9.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_1_0.png b/assets/unpacked/maze/maze_1_0.png deleted file mode 100644 index 047af94..0000000 Binary files a/assets/unpacked/maze/maze_1_0.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_1_1.png b/assets/unpacked/maze/maze_1_1.png deleted file mode 100644 index 9bf2336..0000000 Binary files a/assets/unpacked/maze/maze_1_1.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_1_10.png b/assets/unpacked/maze/maze_1_10.png deleted file mode 100644 index 9d1bf9b..0000000 Binary files a/assets/unpacked/maze/maze_1_10.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_1_11.png b/assets/unpacked/maze/maze_1_11.png deleted file mode 100644 index b76ebd0..0000000 Binary files a/assets/unpacked/maze/maze_1_11.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_1_12.png b/assets/unpacked/maze/maze_1_12.png deleted file mode 100644 index ffa95ee..0000000 Binary files a/assets/unpacked/maze/maze_1_12.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_1_13.png b/assets/unpacked/maze/maze_1_13.png deleted file mode 100644 index 5ab270d..0000000 Binary files a/assets/unpacked/maze/maze_1_13.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_1_14.png b/assets/unpacked/maze/maze_1_14.png deleted file mode 100644 index 694a798..0000000 Binary files a/assets/unpacked/maze/maze_1_14.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_1_15.png b/assets/unpacked/maze/maze_1_15.png deleted file mode 100644 index 86864c9..0000000 Binary files a/assets/unpacked/maze/maze_1_15.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_1_2.png b/assets/unpacked/maze/maze_1_2.png deleted file mode 100644 index 5dd627a..0000000 Binary files a/assets/unpacked/maze/maze_1_2.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_1_3.png b/assets/unpacked/maze/maze_1_3.png deleted file mode 100644 index ba9ae2e..0000000 Binary files a/assets/unpacked/maze/maze_1_3.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_1_4.png b/assets/unpacked/maze/maze_1_4.png deleted file mode 100644 index 1cf3a6f..0000000 Binary files a/assets/unpacked/maze/maze_1_4.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_1_5.png b/assets/unpacked/maze/maze_1_5.png deleted file mode 100644 index 1cf3a6f..0000000 Binary files a/assets/unpacked/maze/maze_1_5.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_1_6.png b/assets/unpacked/maze/maze_1_6.png deleted file mode 100644 index bf82f98..0000000 Binary files a/assets/unpacked/maze/maze_1_6.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_1_7.png b/assets/unpacked/maze/maze_1_7.png deleted file mode 100644 index ba2192d..0000000 Binary files a/assets/unpacked/maze/maze_1_7.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_1_8.png b/assets/unpacked/maze/maze_1_8.png deleted file mode 100644 index 9644b5a..0000000 Binary files a/assets/unpacked/maze/maze_1_8.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_1_9.png b/assets/unpacked/maze/maze_1_9.png deleted file mode 100644 index 08a6af4..0000000 Binary files a/assets/unpacked/maze/maze_1_9.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_2_0.png b/assets/unpacked/maze/maze_2_0.png deleted file mode 100644 index 5a6ae0b..0000000 Binary files a/assets/unpacked/maze/maze_2_0.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_2_1.png b/assets/unpacked/maze/maze_2_1.png deleted file mode 100644 index 6de84ef..0000000 Binary files a/assets/unpacked/maze/maze_2_1.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_2_10.png b/assets/unpacked/maze/maze_2_10.png deleted file mode 100644 index 4e3ad0e..0000000 Binary files a/assets/unpacked/maze/maze_2_10.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_2_11.png b/assets/unpacked/maze/maze_2_11.png deleted file mode 100644 index 78530a0..0000000 Binary files a/assets/unpacked/maze/maze_2_11.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_2_2.png b/assets/unpacked/maze/maze_2_2.png deleted file mode 100644 index 6d5f173..0000000 Binary files a/assets/unpacked/maze/maze_2_2.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_2_3.png b/assets/unpacked/maze/maze_2_3.png deleted file mode 100644 index 6a1781b..0000000 Binary files a/assets/unpacked/maze/maze_2_3.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_2_4.png b/assets/unpacked/maze/maze_2_4.png deleted file mode 100644 index b060499..0000000 Binary files a/assets/unpacked/maze/maze_2_4.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_2_5.png b/assets/unpacked/maze/maze_2_5.png deleted file mode 100644 index 64e2391..0000000 Binary files a/assets/unpacked/maze/maze_2_5.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_2_6.png b/assets/unpacked/maze/maze_2_6.png deleted file mode 100644 index bf82f98..0000000 Binary files a/assets/unpacked/maze/maze_2_6.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_2_7.png b/assets/unpacked/maze/maze_2_7.png deleted file mode 100644 index ba2192d..0000000 Binary files a/assets/unpacked/maze/maze_2_7.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_2_8.png b/assets/unpacked/maze/maze_2_8.png deleted file mode 100644 index 9d1bf9b..0000000 Binary files a/assets/unpacked/maze/maze_2_8.png and /dev/null differ diff --git a/assets/unpacked/maze/maze_2_9.png b/assets/unpacked/maze/maze_2_9.png deleted file mode 100644 index b76ebd0..0000000 Binary files a/assets/unpacked/maze/maze_2_9.png and /dev/null differ diff --git a/assets/unpacked/maze/tiles/0.png b/assets/unpacked/maze/tiles/0.png new file mode 100644 index 0000000..e1f0144 Binary files /dev/null and b/assets/unpacked/maze/tiles/0.png differ diff --git a/assets/unpacked/maze/tiles/1.png b/assets/unpacked/maze/tiles/1.png new file mode 100644 index 0000000..16cc18e Binary files /dev/null and b/assets/unpacked/maze/tiles/1.png differ diff --git a/assets/unpacked/maze/tiles/10.png b/assets/unpacked/maze/tiles/10.png new file mode 100644 index 0000000..80be57d Binary files /dev/null and b/assets/unpacked/maze/tiles/10.png differ diff --git a/assets/unpacked/maze/tiles/11.png b/assets/unpacked/maze/tiles/11.png new file mode 100644 index 0000000..a08cb4e Binary files /dev/null and b/assets/unpacked/maze/tiles/11.png differ diff --git a/assets/unpacked/maze/tiles/12.png b/assets/unpacked/maze/tiles/12.png new file mode 100644 index 0000000..c506f41 Binary files /dev/null and b/assets/unpacked/maze/tiles/12.png differ diff --git a/assets/unpacked/maze/tiles/13.png b/assets/unpacked/maze/tiles/13.png new file mode 100644 index 0000000..8be742b Binary files /dev/null and b/assets/unpacked/maze/tiles/13.png differ diff --git a/assets/unpacked/maze/tiles/14.png b/assets/unpacked/maze/tiles/14.png new file mode 100644 index 0000000..3d1e024 Binary files /dev/null and b/assets/unpacked/maze/tiles/14.png differ diff --git a/assets/unpacked/maze/tiles/15.png b/assets/unpacked/maze/tiles/15.png new file mode 100644 index 0000000..69b8beb Binary files /dev/null and b/assets/unpacked/maze/tiles/15.png differ diff --git a/assets/unpacked/maze/tiles/16.png b/assets/unpacked/maze/tiles/16.png new file mode 100644 index 0000000..e8ccbed Binary files /dev/null and b/assets/unpacked/maze/tiles/16.png differ diff --git a/assets/unpacked/maze/tiles/17.png b/assets/unpacked/maze/tiles/17.png new file mode 100644 index 0000000..bde3fcf Binary files /dev/null and b/assets/unpacked/maze/tiles/17.png differ diff --git a/assets/unpacked/maze/tiles/18.png b/assets/unpacked/maze/tiles/18.png new file mode 100644 index 0000000..d33c967 Binary files /dev/null and b/assets/unpacked/maze/tiles/18.png differ diff --git a/assets/unpacked/maze/tiles/19.png b/assets/unpacked/maze/tiles/19.png new file mode 100644 index 0000000..7addccd Binary files /dev/null and b/assets/unpacked/maze/tiles/19.png differ diff --git a/assets/unpacked/maze/tiles/2.png b/assets/unpacked/maze/tiles/2.png new file mode 100644 index 0000000..ebaeb4b Binary files /dev/null and b/assets/unpacked/maze/tiles/2.png differ diff --git a/assets/unpacked/maze/tiles/20.png b/assets/unpacked/maze/tiles/20.png new file mode 100644 index 0000000..8bf100d Binary files /dev/null and b/assets/unpacked/maze/tiles/20.png differ diff --git a/assets/unpacked/maze/tiles/21.png b/assets/unpacked/maze/tiles/21.png new file mode 100644 index 0000000..e6b7015 Binary files /dev/null and b/assets/unpacked/maze/tiles/21.png differ diff --git a/assets/unpacked/maze/tiles/22.png b/assets/unpacked/maze/tiles/22.png new file mode 100644 index 0000000..35f32a8 Binary files /dev/null and b/assets/unpacked/maze/tiles/22.png differ diff --git a/assets/unpacked/maze/tiles/23.png b/assets/unpacked/maze/tiles/23.png new file mode 100644 index 0000000..cb4dd16 Binary files /dev/null and b/assets/unpacked/maze/tiles/23.png differ diff --git a/assets/unpacked/maze/tiles/24.png b/assets/unpacked/maze/tiles/24.png new file mode 100644 index 0000000..edaffa3 Binary files /dev/null and b/assets/unpacked/maze/tiles/24.png differ diff --git a/assets/unpacked/maze/tiles/25.png b/assets/unpacked/maze/tiles/25.png new file mode 100644 index 0000000..03e2ec5 Binary files /dev/null and b/assets/unpacked/maze/tiles/25.png differ diff --git a/assets/unpacked/maze/tiles/26.png b/assets/unpacked/maze/tiles/26.png new file mode 100644 index 0000000..8b8bf0f Binary files /dev/null and b/assets/unpacked/maze/tiles/26.png differ diff --git a/assets/unpacked/maze/tiles/27.png b/assets/unpacked/maze/tiles/27.png new file mode 100644 index 0000000..d17a948 Binary files /dev/null and b/assets/unpacked/maze/tiles/27.png differ diff --git a/assets/unpacked/maze/tiles/28.png b/assets/unpacked/maze/tiles/28.png new file mode 100644 index 0000000..69d6ce7 Binary files /dev/null and b/assets/unpacked/maze/tiles/28.png differ diff --git a/assets/unpacked/maze/tiles/29.png b/assets/unpacked/maze/tiles/29.png new file mode 100644 index 0000000..1839c87 Binary files /dev/null and b/assets/unpacked/maze/tiles/29.png differ diff --git a/assets/unpacked/maze/tiles/3.png b/assets/unpacked/maze/tiles/3.png new file mode 100644 index 0000000..b4a5f95 Binary files /dev/null and b/assets/unpacked/maze/tiles/3.png differ diff --git a/assets/unpacked/maze/tiles/30.png b/assets/unpacked/maze/tiles/30.png new file mode 100644 index 0000000..10f4815 Binary files /dev/null and b/assets/unpacked/maze/tiles/30.png differ diff --git a/assets/unpacked/maze/tiles/31.png b/assets/unpacked/maze/tiles/31.png new file mode 100644 index 0000000..278c820 Binary files /dev/null and b/assets/unpacked/maze/tiles/31.png differ diff --git a/assets/unpacked/maze/tiles/32.png b/assets/unpacked/maze/tiles/32.png new file mode 100644 index 0000000..273056b Binary files /dev/null and b/assets/unpacked/maze/tiles/32.png differ diff --git a/assets/unpacked/maze/tiles/33.png b/assets/unpacked/maze/tiles/33.png new file mode 100644 index 0000000..77cecea Binary files /dev/null and b/assets/unpacked/maze/tiles/33.png differ diff --git a/assets/unpacked/maze/tiles/34.png b/assets/unpacked/maze/tiles/34.png new file mode 100644 index 0000000..3856fd2 Binary files /dev/null and b/assets/unpacked/maze/tiles/34.png differ diff --git a/assets/unpacked/maze/tiles/4.png b/assets/unpacked/maze/tiles/4.png new file mode 100644 index 0000000..a815e71 Binary files /dev/null and b/assets/unpacked/maze/tiles/4.png differ diff --git a/assets/unpacked/maze/tiles/5.png b/assets/unpacked/maze/tiles/5.png new file mode 100644 index 0000000..a8d4fa5 Binary files /dev/null and b/assets/unpacked/maze/tiles/5.png differ diff --git a/assets/unpacked/maze/tiles/6.png b/assets/unpacked/maze/tiles/6.png new file mode 100644 index 0000000..0f25d02 Binary files /dev/null and b/assets/unpacked/maze/tiles/6.png differ diff --git a/assets/unpacked/maze/tiles/7.png b/assets/unpacked/maze/tiles/7.png new file mode 100644 index 0000000..6aea959 Binary files /dev/null and b/assets/unpacked/maze/tiles/7.png differ diff --git a/assets/unpacked/maze/tiles/8.png b/assets/unpacked/maze/tiles/8.png new file mode 100644 index 0000000..5eeed2a Binary files /dev/null and b/assets/unpacked/maze/tiles/8.png differ diff --git a/assets/unpacked/maze/tiles/9.png b/assets/unpacked/maze/tiles/9.png new file mode 100644 index 0000000..5b68921 Binary files /dev/null and b/assets/unpacked/maze/tiles/9.png differ diff --git a/assets/unpacked/maze/wall/maze_0_0.png b/assets/unpacked/maze/wall/maze_0_0.png deleted file mode 100644 index aaf7f12..0000000 Binary files a/assets/unpacked/maze/wall/maze_0_0.png and /dev/null differ diff --git a/assets/unpacked/maze/wall/maze_0_1.png b/assets/unpacked/maze/wall/maze_0_1.png deleted file mode 100644 index fe6bb33..0000000 Binary files a/assets/unpacked/maze/wall/maze_0_1.png and /dev/null differ diff --git a/assets/unpacked/maze/wall/maze_0_2.png b/assets/unpacked/maze/wall/maze_0_2.png deleted file mode 100644 index 5ea8552..0000000 Binary files a/assets/unpacked/maze/wall/maze_0_2.png and /dev/null differ diff --git a/assets/unpacked/maze/wall/maze_0_3.png b/assets/unpacked/maze/wall/maze_0_3.png deleted file mode 100644 index 479a59b..0000000 Binary files a/assets/unpacked/maze/wall/maze_0_3.png and /dev/null differ diff --git a/assets/unpacked/maze/wall/maze_0_4.png b/assets/unpacked/maze/wall/maze_0_4.png deleted file mode 100644 index b0ef5da..0000000 Binary files a/assets/unpacked/maze/wall/maze_0_4.png and /dev/null differ diff --git a/assets/unpacked/maze/wall/maze_0_5.png b/assets/unpacked/maze/wall/maze_0_5.png deleted file mode 100644 index e40cee9..0000000 Binary files a/assets/unpacked/maze/wall/maze_0_5.png and /dev/null differ diff --git a/assets/unpacked/maze/wall/maze_0_6.png b/assets/unpacked/maze/wall/maze_0_6.png deleted file mode 100644 index a851d59..0000000 Binary files a/assets/unpacked/maze/wall/maze_0_6.png and /dev/null differ diff --git a/src/constants.rs b/src/constants.rs index 7b4eb72..39c0236 100644 --- a/src/constants.rs +++ b/src/constants.rs @@ -18,8 +18,6 @@ pub const SCALE: f32 = 2.6; pub const BOARD_CELL_OFFSET: UVec2 = UVec2::new(0, 3); /// The offset of the game board from the top-left corner of the window, in pixels. pub const BOARD_PIXEL_OFFSET: UVec2 = UVec2::new(BOARD_CELL_OFFSET.x * CELL_SIZE, BOARD_CELL_OFFSET.y * CELL_SIZE); -/// The size of the game board, in pixels. -pub const BOARD_PIXEL_SIZE: UVec2 = UVec2::new(BOARD_CELL_SIZE.x * CELL_SIZE, BOARD_CELL_SIZE.y * CELL_SIZE); /// The size of the canvas, in pixels. pub const CANVAS_SIZE: UVec2 = UVec2::new( (BOARD_CELL_SIZE.x + BOARD_CELL_OFFSET.x) * CELL_SIZE, diff --git a/src/game/mod.rs b/src/game/mod.rs index 3bd38f8..705b93a 100644 --- a/src/game/mod.rs +++ b/src/game/mod.rs @@ -174,7 +174,7 @@ impl Game { canvas.clear(); self.state .map - .render(canvas, &mut self.state.atlas, &mut self.state.map_texture); + .render(canvas, &mut self.state.atlas, &mut self.state.map_tiles); // Render all items for item in &self.state.items { diff --git a/src/game/state.rs b/src/game/state.rs index 4811c9c..f487380 100644 --- a/src/game/state.rs +++ b/src/game/state.rs @@ -1,4 +1,4 @@ -use sdl2::{image::LoadTexture, pixels::Color, render::TextureCreator, video::WindowContext}; +use sdl2::{image::LoadTexture, render::TextureCreator, video::WindowContext}; use smallvec::SmallVec; use crate::{ @@ -6,12 +6,13 @@ use crate::{ audio::Audio, constants::RAW_BOARD, entity::{ - collision::{Collidable, CollisionSystem, EntityId}, + collision::{Collidable, CollisionSystem}, ghost::{Ghost, GhostType}, item::Item, pacman::Pacman, }, error::{GameError, GameResult, TextureError}, + game::EntityId, map::Map, texture::{ sprite::{AtlasMapper, AtlasTile, SpriteAtlas}, @@ -28,20 +29,20 @@ use crate::{ pub struct GameState { pub score: u32, pub map: Map, + pub map_tiles: Vec, pub pacman: Pacman, + pub pacman_id: EntityId, pub ghosts: SmallVec<[Ghost; 4]>, + pub ghost_ids: SmallVec<[EntityId; 4]>, pub items: Vec, + pub item_ids: Vec, pub debug_mode: bool, // Collision system pub(crate) collision_system: CollisionSystem, - pub(crate) pacman_id: EntityId, - pub(crate) ghost_ids: SmallVec<[EntityId; 4]>, - pub(crate) item_ids: Vec, // Rendering resources pub(crate) atlas: SpriteAtlas, - pub(crate) map_texture: AtlasTile, pub(crate) text_texture: TextTexture, // Audio @@ -71,9 +72,13 @@ impl GameState { let atlas_mapper: AtlasMapper = serde_json::from_slice(&atlas_json)?; let atlas = SpriteAtlas::new(atlas_texture, atlas_mapper); - let mut map_texture = SpriteAtlas::get_tile(&atlas, "maze/full.png") - .ok_or_else(|| GameError::Texture(TextureError::AtlasTileNotFound("maze/full.png".to_string())))?; - map_texture.color = Some(Color::RGB(0x20, 0x20, 0xf9)); + let mut map_tiles = Vec::with_capacity(35); + for i in 0..35 { + let tile_name = format!("maze/tiles/{}.png", i); + let tile = SpriteAtlas::get_tile(&atlas, &tile_name) + .ok_or(GameError::Texture(TextureError::AtlasTileNotFound(tile_name)))?; + map_tiles.push(tile); + } let text_texture = TextTexture::new(1.0); let audio = Audio::new(); @@ -89,11 +94,10 @@ impl GameState { let pacman_id = collision_system.register_entity(pacman.position()); // Register items - let mut item_ids = Vec::new(); - for item in &items { - let item_id = collision_system.register_entity(item.position()); - item_ids.push(item_id); - } + let item_ids = items + .iter() + .map(|item| collision_system.register_entity(item.position())) + .collect(); // Create and register ghosts let ghosts = [GhostType::Blinky, GhostType::Pinky, GhostType::Inky, GhostType::Clyde] @@ -110,26 +114,27 @@ impl GameState { .map(|(ghost_type, start_node)| Ghost::new(&map.graph, *start_node, *ghost_type, &atlas)) .collect::>>()?; + // Register ghosts let ghost_ids = ghosts .iter() .map(|ghost| collision_system.register_entity(ghost.position())) - .collect::>(); + .collect(); Ok(Self { - score: 0, map, + atlas, + map_tiles, pacman, - ghosts, - items, - debug_mode: false, - collision_system, pacman_id, + ghosts, ghost_ids, + items, item_ids, - map_texture, text_texture, audio, - atlas, + score: 0, + debug_mode: false, + collision_system, }) } } diff --git a/src/map/builder.rs b/src/map/builder.rs index fdfdf18..6093701 100644 --- a/src/map/builder.rs +++ b/src/map/builder.rs @@ -158,8 +158,8 @@ impl Map { /// /// This function draws the static map texture to the screen at the correct /// position and scale. - pub fn render(&self, canvas: &mut Canvas, atlas: &mut SpriteAtlas, map_texture: &mut AtlasTile) { - MapRenderer::render_map(canvas, atlas, map_texture); + pub fn render(&self, canvas: &mut Canvas, atlas: &mut SpriteAtlas, map_tiles: &mut [AtlasTile]) { + MapRenderer::render_map(canvas, atlas, map_tiles); } /// Generates Item entities for pellets and energizers from the parsed map. diff --git a/src/map/layout.rs b/src/map/layout.rs new file mode 100644 index 0000000..cf94ba9 --- /dev/null +++ b/src/map/layout.rs @@ -0,0 +1,95 @@ +pub const TILE_MAP: [[usize; 28]; 31] = [ + [ + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, + ], + [ + 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 9, + ], + [ + 5, 6, 10, 11, 11, 12, 6, 10, 11, 11, 11, 12, 6, 7, 8, 6, 10, 11, 11, 11, 12, 6, 10, 11, 11, 12, 6, 9, + ], + [ + 5, 6, 7, 6, 6, 8, 6, 7, 6, 6, 6, 8, 6, 7, 8, 6, 7, 6, 6, 6, 8, 6, 7, 6, 6, 8, 6, 9, + ], + [ + 5, 6, 13, 14, 14, 15, 6, 13, 14, 14, 14, 15, 6, 13, 15, 6, 13, 14, 14, 14, 15, 6, 13, 14, 14, 15, 6, 9, + ], + [ + 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 9, + ], + [ + 5, 6, 10, 11, 11, 12, 6, 10, 12, 6, 10, 11, 11, 11, 11, 11, 11, 12, 6, 10, 12, 6, 10, 11, 11, 12, 6, 9, + ], + [ + 5, 6, 13, 14, 14, 15, 6, 7, 8, 6, 13, 14, 14, 16, 17, 14, 14, 15, 6, 7, 8, 6, 13, 14, 14, 15, 6, 9, + ], + [ + 5, 6, 6, 6, 6, 6, 6, 7, 8, 6, 6, 6, 6, 7, 8, 6, 6, 6, 6, 7, 8, 6, 6, 6, 6, 6, 6, 9, + ], + [ + 18, 19, 19, 19, 19, 12, 6, 7, 20, 11, 11, 12, 6, 7, 8, 6, 10, 11, 11, 21, 8, 6, 10, 19, 19, 19, 19, 22, + ], + [ + 6, 6, 6, 6, 6, 5, 6, 7, 17, 14, 14, 15, 6, 13, 15, 6, 13, 14, 14, 16, 8, 6, 9, 6, 6, 6, 6, 6, + ], + [ + 6, 6, 6, 6, 6, 5, 6, 7, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 8, 6, 9, 6, 6, 6, 6, 6, + ], + [ + 6, 6, 6, 6, 6, 5, 6, 7, 8, 6, 23, 19, 24, 25, 25, 26, 19, 27, 6, 7, 8, 6, 9, 6, 6, 6, 6, 6, + ], + [ + 1, 1, 1, 1, 1, 15, 6, 13, 15, 6, 9, 6, 6, 6, 6, 6, 6, 5, 6, 13, 15, 6, 13, 1, 1, 1, 1, 1, + ], + [ + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 9, 6, 6, 6, 6, 6, 6, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + ], + [ + 19, 19, 19, 19, 19, 12, 6, 10, 12, 6, 9, 6, 6, 6, 6, 6, 6, 5, 6, 10, 12, 6, 10, 19, 19, 19, 19, 19, + ], + [ + 6, 6, 6, 6, 6, 5, 6, 7, 8, 6, 28, 1, 1, 1, 1, 1, 1, 29, 6, 7, 8, 6, 9, 6, 6, 6, 6, 6, + ], + [ + 6, 6, 6, 6, 6, 5, 6, 7, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 8, 6, 9, 6, 6, 6, 6, 6, + ], + [ + 6, 6, 6, 6, 6, 5, 6, 7, 8, 6, 10, 11, 11, 11, 11, 11, 11, 12, 6, 7, 8, 6, 9, 6, 6, 6, 6, 6, + ], + [ + 0, 1, 1, 1, 1, 15, 6, 13, 15, 6, 13, 14, 14, 16, 17, 14, 14, 15, 6, 13, 15, 6, 13, 1, 1, 1, 1, 4, + ], + [ + 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 9, + ], + [ + 5, 6, 10, 11, 11, 12, 6, 10, 11, 11, 11, 12, 6, 7, 8, 6, 10, 11, 11, 11, 12, 6, 30, 11, 11, 12, 6, 9, + ], + [ + 5, 6, 13, 14, 16, 8, 6, 13, 14, 14, 14, 15, 6, 13, 15, 6, 13, 14, 14, 14, 15, 6, 7, 17, 14, 15, 6, 9, + ], + [ + 5, 6, 6, 6, 7, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 8, 6, 6, 6, 9, + ], + [ + 31, 11, 12, 6, 7, 8, 6, 10, 12, 6, 10, 11, 11, 11, 11, 11, 11, 12, 6, 10, 12, 6, 7, 8, 6, 10, 11, 32, + ], + [ + 33, 14, 15, 6, 13, 15, 6, 7, 8, 6, 13, 14, 14, 16, 17, 14, 14, 15, 6, 7, 8, 6, 13, 15, 6, 13, 14, 34, + ], + [ + 5, 6, 6, 6, 6, 6, 6, 7, 8, 6, 6, 6, 6, 7, 8, 6, 6, 6, 6, 7, 8, 6, 6, 6, 6, 6, 6, 9, + ], + [ + 5, 6, 10, 11, 11, 11, 11, 21, 20, 11, 11, 12, 6, 7, 8, 6, 10, 11, 11, 21, 20, 11, 11, 11, 11, 12, 6, 9, + ], + [ + 5, 6, 13, 14, 14, 14, 14, 14, 14, 14, 14, 15, 6, 13, 15, 6, 13, 14, 14, 14, 14, 14, 14, 14, 14, 15, 6, 9, + ], + [ + 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 9, + ], + [ + 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 22, + ], +]; diff --git a/src/map/mod.rs b/src/map/mod.rs index 3ec68bc..1743947 100644 --- a/src/map/mod.rs +++ b/src/map/mod.rs @@ -1,6 +1,7 @@ //! This module defines the game map and provides functions for interacting with it. pub mod builder; +pub mod layout; pub mod parser; pub mod render; diff --git a/src/map/render.rs b/src/map/render.rs index d59c3b2..aa16f66 100644 --- a/src/map/render.rs +++ b/src/map/render.rs @@ -1,5 +1,7 @@ //! Map rendering functionality. +use crate::constants::{BOARD_CELL_OFFSET, CELL_SIZE}; +use crate::map::layout::TILE_MAP; use crate::texture::sprite::{AtlasTile, SpriteAtlas}; use crate::texture::text::TextTexture; use glam::Vec2; @@ -17,15 +19,22 @@ impl MapRenderer { /// /// This function draws the static map texture to the screen at the correct /// position and scale. - pub fn render_map(canvas: &mut Canvas, atlas: &mut SpriteAtlas, map_texture: &mut AtlasTile) { - let dest = Rect::new( - crate::constants::BOARD_PIXEL_OFFSET.x as i32, - crate::constants::BOARD_PIXEL_OFFSET.y as i32, - crate::constants::BOARD_PIXEL_SIZE.x, - crate::constants::BOARD_PIXEL_SIZE.y, - ); - if let Err(e) = map_texture.render(canvas, atlas, dest) { - tracing::error!("Failed to render map: {}", e); + pub fn render_map(canvas: &mut Canvas, atlas: &mut SpriteAtlas, map_tiles: &mut [AtlasTile]) { + for (y, row) in TILE_MAP.iter().enumerate() { + for (x, &tile_index) in row.iter().enumerate() { + let mut tile = map_tiles[tile_index]; + tile.color = Some(Color::RGB(0x20, 0x20, 0xf9)); + let dest = Rect::new( + (BOARD_CELL_OFFSET.x as usize * CELL_SIZE as usize + x * CELL_SIZE as usize) as i32, + (BOARD_CELL_OFFSET.y as usize * CELL_SIZE as usize + y * CELL_SIZE as usize) as i32, + CELL_SIZE, + CELL_SIZE, + ); + + if let Err(e) = tile.render(canvas, atlas, dest) { + tracing::error!("Failed to render map tile: {}", e); + } + } } }