diff --git a/conf.lua b/conf.lua index cbb77f1..ff52561 100644 --- a/conf.lua +++ b/conf.lua @@ -12,8 +12,8 @@ function love.conf(t) t.window.title = "GMTK2024" -- The window title (string) t.window.icon = nil -- Filepath to an image to use as the window's icon (string) - t.window.width = 496 -- The window width (number) - t.window.height = 518 -- The window height (number) + t.window.width = 500 -- The window width (number) + t.window.height = 522 -- The window height (number) t.window.borderless = false -- Remove all border visuals from the window (boolean) t.window.resizable = true -- Let the window be user-resizable (boolean) t.window.minwidth = 248 -- Minimum window width if the window is resizable (number) diff --git a/game.lua b/game.lua index f1ffca0..a92c0c9 100644 --- a/game.lua +++ b/game.lua @@ -29,7 +29,7 @@ function Game.new() player_x = 1, player_y = 8, player_item = nil, - floor = 4, + floor = 10, level_data = LevelData:new(), undo_history = {}, } diff --git a/leveldata.lua b/leveldata.lua index be13da0..1fcbee7 100644 --- a/leveldata.lua +++ b/leveldata.lua @@ -228,13 +228,13 @@ function LevelData.new() {type = "enemy_neg", x = 2, y = 8, value_str = "1k"}, {type = "enemy_neg", x = 14, y = 8, value_str = "1k"}, - {type = "enemy_neg", x = 5, y = 9, value_str = "1k"}, - {type = "enemy", x = 6, y = 9, value_str = "500"}, - {type = "enemy_neg", x = 7, y = 9, value_str = "1k"}, - {type = "enemy", x = 8, y = 9, value_str = "500"}, - {type = "enemy_neg", x = 9, y = 9, value_str = "1k"}, - {type = "enemy", x = 10, y = 9, value_str = "500"}, - {type = "enemy_neg", x = 11, y = 9, value_str = "1k"}, + {type = "enemy_neg", x = 5, y = 9, value_str = "666"}, + {type = "enemy", x = 6, y = 9, value_str = "333"}, + {type = "enemy_neg", x = 7, y = 9, value_str = "666"}, + {type = "enemy", x = 8, y = 9, value_str = "333"}, + {type = "enemy_neg", x = 9, y = 9, value_str = "666"}, + {type = "enemy", x = 10, y = 9, value_str = "333"}, + {type = "enemy_neg", x = 11, y = 9, value_str = "666"}, {type = "enemy", x = 1, y = 15, value_str = "500"}, {type = "enemy_neg", x = 2, y = 15, value_str = "500"}, @@ -285,15 +285,15 @@ function LevelData.new() }, { --floor 5 walls = { - {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,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,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,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,0,0,0,0}, - {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,1,0,2,0,0,0,2,0,2,1,0,1}, + {0,0,0,0,0,1,0,0,0,1,0,2,0,0,0}, + {0,0,0,1,0,1,0,0,0,1,0,2,1,0,1}, + {2,2,2,2,0,1,0,0,0,1,0,2,0,0,0}, + {0,0,0,0,0,1,0,0,0,1,0,2,1,0,1}, + {2,2,2,0,0,2,1,0,1,2,0,2,0,0,0}, + {0,1,0,0,0,0,0,0,0,0,0,2,1,0,1}, + {0,1,0,2,0,0,2,0,0,2,0,2,2,2,2}, + {0,1,0,0,0,0,0,0,0,0,0,0,1,2,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {1,1,1,2,2,2,2,2,2,2,2,2,2,2,2}, {1,1,1,2,1,1,1,1,1,1,1,1,1,1,1}, @@ -302,10 +302,78 @@ function LevelData.new() {1,1,1,2,1,1,1,1,1,1,1,1,1,1,1}, }, entities = { + {type = "enemy", x = 1, y = 1, value_str = "100"}, + {type = "enemy", x = 1, y = 2, value_str = "100"}, + {type = "enemy", x = 1, y = 3, value_str = "100"}, + {type = "enemy", x = 2, y = 1, value_str = "100"}, + {type = "vorpal", x = 2, y = 2}, + {type = "enemy", x = 2, y = 3, value_str = "100"}, + {type = "enemy", x = 3, y = 1, value_str = "100"}, + {type = "enemy", x = 3, y = 2, value_str = "100"}, + {type = "enemy", x = 3, y = 3, value_str = "100"}, + + {type = "enemy_neg", x = 3, y = 5, value_str = "1k"}, + + {type = "enemy_neg", x = 7, y = 1, value_str = "1k"}, + {type = "enemy", x = 8, y = 1, value_str = "1k"}, + {type = "enemy_neg", x = 9, y = 1, value_str = "1k"}, + {type = "enemy", x = 7, y = 2, value_str = "300"}, + {type = "enemy_neg", x = 8, y = 2, value_str = "1k"}, + {type = "enemy", x = 9, y = 2, value_str = "300"}, + {type = "enemy_neg", x = 7, y = 3, value_str = "500"}, + {type = "enemy", x = 8, y = 3, value_str = "300"}, + {type = "enemy_neg", x = 9, y = 3, value_str = "500"}, + {type = "enemy", x = 7, y = 4, value_str = "300"}, + {type = "enemy_neg", x = 8, y = 4, value_str = "1k"}, + {type = "enemy", x = 9, y = 4, value_str = "300"}, + {type = "enemy_neg", x = 7, y = 5, value_str = "500"}, + {type = "enemy", x = 8, y = 5, value_str = "300"}, + {type = "enemy_neg", x = 9, y = 5, value_str = "500"}, + {type = "enemy_neg", x = 8, y = 6, value_str = "1k"}, + + {type = "enemy_neg", x = 2, y = 10, value_str = "500"}, + + {type = "gate", x = 4, y = 2}, + + {type = "enemy_neg", x = 12, y = 9, value_str = "256"}, + {type = "gate", x = 12, y = 10}, + {type = "gate", x = 13, y = 10}, + {type = "elixir", x = 2, y = 13}, + {type = "elixir", x = 2, y = 5}, + + {type = "enemy", x = 6, y = 9, value_str = "50"}, + {type = "enemy", x = 5, y = 10, value_str = "50"}, + {type = "enemy", x = 5, y = 9, value_str = "50"}, + {type = "enemy", x = 8, y = 9, value_str = "50"}, + {type = "enemy", x = 9, y = 10, value_str = "50"}, + {type = "enemy", x = 9, y = 9, value_str = "50"}, + {type = "enemy_neg", x = 7, y = 9, value_str = "500"}, + {type = "enemy_neg", x = 8, y = 10, value_str = "500"}, + {type = "enemy_neg", x = 6, y = 10, value_str = "500"}, + {type = "pickaxe", x = 7, y = 10}, + + {type = "pickaxe", x = 15, y = 9}, + {type = "pickaxe", x = 14, y = 10}, + {type = "vorpal", x = 15, y = 10}, + + --TODO: decide on enemy values, need later data for this thing + {type = "enemy", x = 13, y = 2, value_str = "250"}, + {type = "enemy", x = 15, y = 2, value_str = "250"}, + {type = "enemy", x = 13, y = 4, value_str = "250"}, + {type = "enemy", x = 15, y = 4, value_str = "250"}, + {type = "enemy_neg", x = 14, y = 3, value_str = "500"}, + {type = "enemy_neg", x = 14, y = 4, value_str = "750"}, + {type = "enemy_neg", x = 14, y = 5, value_str = "1k"}, + {type = "enemy_neg", x = 14, y = 6, value_str = "2k"}, + {type = "vorpal", x = 13, y = 6}, + {type = "vorpal", x = 15, y = 6}, + {type = "elixir", x = 14, y = 7}, {type = "stairs_down", x = 1, y = 7}, - {type = "stairs_up", x = 15, y = 7}, + {type = "stairs_up", x = 1, y = 5}, + {type = "stairs_up", x = 14, y = 1}, + }, textboxes = { { @@ -315,6 +383,299 @@ function LevelData.new() }, } }, + { --floor 6 + walls = { + {0,0,1,0,0,0,2,1,2,0,0,0,2,0,2}, + {0,2,2,0,0,0,0,0,0,0,0,0,0,0,1}, + {1,2,0,0,0,0,2,0,2,0,0,0,0,0,2}, + {0,0,0,2,2,0,1,0,1,0,2,2,0,0,0}, + {0,0,0,2,2,2,2,2,2,2,2,2,0,0,0}, + {0,0,0,0,2,1,1,1,1,1,2,0,0,0,0}, + {2,0,2,1,2,1,1,1,1,1,2,1,2,0,2}, + {1,0,0,0,2,1,1,1,1,1,2,0,0,0,1}, + {2,0,2,1,2,1,1,1,1,1,2,1,2,0,2}, + {0,0,0,0,2,1,1,1,1,1,2,0,0,0,0}, + {0,0,0,2,2,2,2,2,2,2,2,2,0,0,0}, + {0,0,0,2,2,0,1,0,1,0,2,2,0,0,0}, + {0,2,0,0,0,0,2,0,2,0,0,0,0,0,2}, + {0,2,2,0,0,0,0,0,0,0,0,0,0,0,1}, + {0,0,0,0,0,0,2,1,2,0,0,0,2,0,2}, + }, + entities = { + {type = "enemy_neg", x = 6, y = 3, value_str = "1k"}, + {type = "enemy", x = 6, y = 4, value_str = "1k"}, + {type = "enemy_neg", x = 10, y = 3, value_str = "1k"}, + {type = "enemy", x = 10, y = 4, value_str = "1k"}, + {type = "enemy_neg", x = 6, y = 13, value_str = "1k"}, + {type = "enemy", x = 6, y = 12, value_str = "1k"}, + {type = "enemy_neg", x = 10, y = 13, value_str = "1k"}, + {type = "enemy", x = 10, y = 12, value_str = "1k"}, + {type = "enemy_neg", x = 3, y = 6, value_str = "1k"}, + {type = "enemy", x = 4, y = 6, value_str = "1k"}, + {type = "enemy_neg", x = 3, y = 10, value_str = "1k"}, + {type = "enemy", x = 4, y = 10, value_str = "1k"}, + {type = "enemy_neg", x = 13, y = 6, value_str = "1k"}, + {type = "enemy", x = 12, y = 6, value_str = "1k"}, + {type = "enemy_neg", x = 13, y = 10, value_str = "1k"}, + {type = "enemy", x = 12, y = 10, value_str = "1k"}, + + {type = "enemy", x = 8, y = 12, value_str = "2k"}, + {type = "enemy", x = 8, y = 4, value_str = "2k"}, + {type = "enemy", x = 12, y = 8, value_str = "2k"}, + {type = "enemy", x = 4, y = 8, value_str = "2k"}, + + {type = "enemy_neg", x = 14, y = 2, value_str = "10k"}, + {type = "enemy_neg", x = 14, y = 14, value_str = "10k"}, + + {type = "gate", x = 8, y = 13}, + {type = "gate", x = 8, y = 3}, + {type = "gate", x = 13, y = 8}, + {type = "gate", x = 3, y = 8}, + + {type = "gate", x = 1, y = 13}, + {type = "gate", x = 3, y = 15}, + {type = "pickaxe", x = 2, y = 15}, + {type = "pickaxe", x = 1, y = 15}, + {type = "pickaxe", x = 1, y = 14}, + + {type = "vorpal", x = 1, y = 1}, + {type = "enemy_neg", x = 1, y = 2, value_str = "300"}, + {type = "enemy_neg", x = 2, y = 1, value_str = "300"}, + + {type = "enemy", x = 5, y = 1, value_str = "250"}, + {type = "enemy", x = 11, y = 1, value_str = "250"}, + {type = "enemy", x = 5, y = 15, value_str = "250"}, + {type = "enemy", x = 11, y = 15, value_str = "250"}, + {type = "enemy", x = 15, y = 5, value_str = "500"}, + {type = "enemy", x = 15, y = 11, value_str = "500"}, + + {type = "stairs_down", x = 1, y = 5}, + {type = "stairs_down", x = 14, y = 1}, + {type = "stairs_up", x = 1, y = 11}, + {type = "stairs_up", x = 14, y = 15}, + + }, + textboxes = { + { + x = 87, y = 91, + w = 74, h = 66, + str = "Reach the top of the tower, and scale your power up as much as you can!", + }, + } + }, + { --floor 7 + walls = { + {2,2,2,0,0,0,2,0,2,0,0,0,2,2,2}, + {2,0,2,2,0,2,2,0,2,2,0,2,2,0,2}, + {2,0,2,0,0,0,0,0,0,0,0,0,2,0,2}, + {0,0,0,0,2,0,2,1,2,0,2,0,0,0,0}, + {2,2,0,0,0,0,0,0,0,0,0,0,0,2,2}, + {0,0,0,0,0,2,0,0,0,2,0,0,0,0,0}, + {2,2,0,0,0,0,0,0,0,0,0,0,0,2,2}, + {0,0,0,2,1,0,2,2,0,2,2,0,0,0,0}, + {0,0,0,1,1,1,2,0,0,0,2,0,2,1,1}, + {1,2,0,1,1,0,2,0,0,0,1,0,0,0,0}, + {0,0,0,2,2,2,2,0,0,0,2,2,2,0,0}, + {0,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {0,2,1,1,1,1,1,1,2,0,2,0,2,0,2}, + {0,2,0,0,0,0,0,0,2,0,2,0,2,0,2}, + {0,0,0,1,1,0,0,0,2,0,0,0,0,0,2}, + }, + entities = { + {type = "vorpal", x = 6, y = 15}, + {type = "vorpal", x = 7, y = 15}, + {type = "vorpal", x = 8, y = 15}, + {type = "vorpal", x = 7, y = 14}, + {type = "vorpal", x = 8, y = 14}, + + {type = "pickaxe", x = 4, y = 1}, + {type = "enemy_neg", x = 5, y = 2, value_str = "25k"}, + {type = "elixir", x = 6, y = 1}, + {type = "elixir", x = 10, y = 1}, + {type = "enemy_neg", x = 11, y = 2, value_str = "25k"}, + {type = "pickaxe", x = 12, y = 1}, + + + {type = "enemy_neg", x = 1, y = 13, value_str = "125"}, + {type = "enemy_neg", x = 1, y = 14, value_str = "250"}, + {type = "enemy_neg", x = 1, y = 15, value_str = "500"}, + {type = "enemy_neg", x = 2, y = 15, value_str = "1k"}, + {type = "enemy_neg", x = 3, y = 15, value_str = "2k"}, + {type = "enemy_neg", x = 3, y = 14, value_str = "4k"}, + {type = "enemy_neg", x = 4, y = 14, value_str = "6k"}, + {type = "enemy_neg", x = 5, y = 14, value_str = "8k"}, + {type = "enemy_neg", x = 6, y = 14, value_str = "10k"}, + + {type = "elixir", x = 10, y = 13}, + {type = "elixir", x = 12, y = 13}, + {type = "elixir", x = 14, y = 13}, + {type = "gate", x = 10, y = 14}, + {type = "gate", x = 12, y = 14}, + {type = "gate", x = 14, y = 14}, + + {type = "gate", x = 6, y = 8}, + {type = "gate", x = 9, y = 8}, + {type = "gate", x = 12, y = 9}, + + {type = "stairs_down", x = 1, y = 11}, + {type = "stairs_down", x = 14, y = 15}, + {type = "stairs_up", x = 2, y = 2}, + {type = "stairs_up", x = 8, y = 1}, + {type = "stairs_up", x = 14, y = 2}, + + }, + textboxes = { + { + x = 172, y = 174, + w = 32, h = 11, + str = "BANK", + }, + { + x = 60, y = 174, + w = 48, h = 11, + str = "ARMORY", + }, + } + }, + { --floor 8 + walls = { + {2,2,0,1,1,1,2,0,2,1,1,1,0,2,2}, + {2,0,0,0,0,0,1,0,1,0,0,0,0,0,2}, + {0,0,0,0,0,0,1,0,1,0,0,0,0,0,0}, + {0,0,0,2,0,2,1,0,1,2,0,2,0,0,0}, + {0,0,0,0,0,2,1,0,1,2,0,0,0,0,0}, + {0,0,2,2,2,2,0,0,0,2,2,2,2,0,0}, + {0,0,0,0,1,0,0,0,0,0,1,0,0,0,0}, + {0,0,0,0,1,0,0,0,0,0,1,0,0,0,0}, + {0,0,0,0,1,0,0,0,0,0,1,0,0,0,0}, + {0,0,2,2,2,2,0,0,0,2,2,2,2,0,0}, + {0,0,0,0,0,2,1,1,1,2,0,0,0,0,0}, + {0,0,0,0,0,2,0,0,0,2,0,0,0,0,0}, + {0,0,0,0,0,2,0,0,0,2,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,0,0,0,0,0,0}, + }, + entities = { + {type = "stairs_down", x = 2, y = 2}, + {type = "stairs_down", x = 8, y = 1}, + {type = "stairs_down", x = 14, y = 2}, + {type = "stairs_up", x = 8, y = 8}, + + }, + textboxes = { + } + }, + { --floor 9 + walls = { + {2,2,2,2,2,2,2,2,2,2,2,2,2,2,2}, + {2,0,1,1,1,1,1,1,1,1,1,1,1,0,2}, + {2,1,1,0,0,0,0,0,0,0,0,0,1,1,2}, + {2,1,0,0,1,1,1,1,1,1,1,0,0,1,2}, + {2,1,0,1,1,0,0,0,0,0,1,1,0,1,2}, + {2,1,0,1,0,0,1,1,1,0,0,1,0,1,2}, + {2,1,0,1,0,1,1,0,1,1,0,1,0,1,2}, + {2,1,0,1,0,1,0,0,0,1,0,1,0,1,2}, + {2,1,0,1,0,1,1,0,1,1,0,1,0,1,2}, + {2,1,0,1,0,0,1,0,0,1,0,1,0,1,2}, + {2,1,0,1,1,0,0,0,1,1,0,1,0,1,2}, + {2,1,0,0,1,1,1,1,1,0,0,1,0,1,2}, + {2,1,1,0,0,0,0,0,0,0,1,1,0,1,2}, + {2,0,1,1,1,1,1,1,1,1,1,0,0,1,2}, + {2,2,2,2,2,2,1,0,0,0,0,0,1,1,2}, + }, + entities = { + {type = "elixir", x = 2, y = 2}, + {type = "elixir", x = 14, y = 2}, + {type = "elixir", x = 2, y = 14}, + + {type = "stairs_down", x = 8, y = 8}, + {type = "stairs_up", x = 8, y = 15}, + + }, + textboxes = { + } + }, + { --floor 10 + walls = { + {1,1,1,1,1,2,2,2,2,2,1,1,1,1,1}, + {1,1,1,1,2,2,0,0,0,2,2,1,1,1,1}, + {1,1,1,1,2,0,0,0,0,0,2,1,1,1,1}, + {1,1,1,1,2,0,0,0,0,0,2,1,1,1,1}, + {1,1,1,1,2,0,0,0,0,0,2,1,1,1,1}, + {1,1,1,1,2,2,0,0,0,2,2,1,1,1,1}, + {1,1,1,1,1,2,2,0,2,2,1,1,1,1,1}, + {2,2,2,2,2,2,1,0,1,2,2,2,2,2,2}, + {2,0,0,0,2,2,1,0,1,2,2,0,0,0,2}, + {2,2,0,2,2,2,1,0,1,2,2,2,0,2,2}, + {0,0,0,0,0,2,1,0,1,2,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,2,2,0,2,2,0,0,0,0,0}, + {0,0,0,0,0,2,2,0,2,2,0,0,0,0,0}, + {0,0,0,0,0,2,2,0,2,2,0,0,0,0,0}, + }, + entities = { + + {type = "pickaxe", x = 2, y = 9}, + {type = "pickaxe", x = 3, y = 9}, + {type = "pickaxe", x = 4, y = 9}, + {type = "enemy_neg", x = 3, y = 10, value_str = "200k"}, + + {type = "pickaxe", x = 12, y = 9}, + {type = "pickaxe", x = 13, y = 9}, + {type = "pickaxe", x = 14, y = 9}, + {type = "enemy_neg", x = 13, y = 10, value_str = "200k"}, + + {type = "enemy_neg", x = 8, y = 7, value_str = "1M"}, + {type = "enemy_neg", x = 8, y = 8, value_str = "100k"}, + {type = "enemy_neg", x = 8, y = 9, value_str = "100k"}, + {type = "enemy_neg", x = 8, y = 10, value_str = "100k"}, + {type = "enemy_neg", x = 8, y = 11, value_str = "100k"}, + + {type = "enemy", x = 2, y = 12, value_str = "10k"}, + {type = "enemy", x = 3, y = 12, value_str = "10k"}, + {type = "enemy", x = 4, y = 12, value_str = "10k"}, + {type = "enemy", x = 2, y = 13, value_str = "10k"}, + {type = "enemy", x = 3, y = 13, value_str = "20k"}, + {type = "enemy", x = 4, y = 13, value_str = "10k"}, + {type = "enemy", x = 2, y = 14, value_str = "10k"}, + {type = "enemy", x = 3, y = 14, value_str = "10k"}, + {type = "enemy", x = 4, y = 14, value_str = "10k"}, + + {type = "enemy", x = 12, y = 12, value_str = "10k"}, + {type = "enemy", x = 13, y = 12, value_str = "10k"}, + {type = "enemy", x = 14, y = 12, value_str = "10k"}, + {type = "enemy", x = 12, y = 13, value_str = "10k"}, + {type = "enemy", x = 13, y = 13, value_str = "20k"}, + {type = "enemy", x = 14, y = 13, value_str = "10k"}, + {type = "enemy", x = 12, y = 14, value_str = "10k"}, + {type = "enemy", x = 13, y = 14, value_str = "10k"}, + {type = "enemy", x = 14, y = 14, value_str = "10k"}, + + {type = "elixir", x = 8, y = 3}, + {type = "elixir", x = 8, y = 5}, + {type = "elixir", x = 7, y = 4}, + {type = "elixir", x = 9, y = 4}, + + {type = "gate", x = 8, y = 13}, + {type = "gate", x = 6, y = 12}, + {type = "gate", x = 10, y = 12}, + + {type = "stairs_down", x = 8, y = 15}, + + }, + textboxes = { + { + x = 4, y = 4, + w = 60, h = 112, + str = "\nThis is the top of the Tower of Scale.\n\nGrab the Crown to win the game!", + }, + { + x = 184, y = 4, + w = 60, h = 112, + str = "Your end score is equal to your power when you grab the Crown.\n\nHow far can you scale?", + }, + } + }, } --convert value_str into value diff --git a/res/sprite/elixir.png b/res/sprite/elixir.png index c9bc18d..3eabb0e 100644 Binary files a/res/sprite/elixir.png and b/res/sprite/elixir.png differ