diff --git a/triple-dungeon/main.py b/triple-dungeon/main.py index 193a117..6e90698 100644 --- a/triple-dungeon/main.py +++ b/triple-dungeon/main.py @@ -30,6 +30,8 @@ class Game(arcade.Window): # Separate variable that holds the player sprite self.player = None + self.dungeon = None + # list to keep track of keypresses self.prev_keypress = [] @@ -47,8 +49,6 @@ class Game(arcade.Window): # Create the Sprite lists self.player_list = arcade.SpriteList() - self.wall_list = arcade.SpriteList() - self.floor_list = arcade.SpriteList() self.enemy_list = arcade.SpriteList() # Set up the player, specifically placing it at these coordinates. @@ -59,10 +59,7 @@ class Game(arcade.Window): self.player_list = self.player # Create the dungeon - dungeon = Dungeon() - - self.floor_list = dungeon.floor_list - self.wall_list = dungeon.wall_list + self.dungeon = Dungeon() # Create monsters # This needs to be updated to comply with the new mobs.py code @@ -70,7 +67,7 @@ class Game(arcade.Window): # self.enemy_list.append(Enemy("resources/images/monsters/frog/frog1.png", 200, 1000, 4).get_enemy()) # Create the 'physics engine' - self.physics_engine = arcade.PhysicsEngineSimple(self.player, self.wall_list) + self.physics_engine = arcade.PhysicsEngineSimple(self.player, *(dungeon.getWalls())) def on_draw(self): """ Render the screen. """ @@ -79,8 +76,7 @@ class Game(arcade.Window): arcade.start_render() # Draw our sprites - self.floor_list.draw() - self.player_list.draw() + self.dungeon.render() self.enemy_list.draw() self.wall_list.draw() diff --git a/triple-dungeon/map.py b/triple-dungeon/map.py index 71dba18..9c36f08 100644 --- a/triple-dungeon/map.py +++ b/triple-dungeon/map.py @@ -32,40 +32,15 @@ class Dungeon(object): self.floor_list = arcade.SpriteList() self.wall_list = arcade.SpriteList() - level_size = 10 * Config.TILE_SCALING * Config.TILE_WIDTH - # get center level center = Level.load_file(1, 1, 'resources/levels/map1/center.json') - room_floor.move(level_size, 0) - room_wall.move(level_size, 0) side = Level.load_file(2, 1, 'resources/levels/map1/room.json') - room_floor.move(level_size, 0) - room_wall.move(level_size, 0) - center = Level() - center.load_file('resources/levels/map1.center.json') - self.floor_list.extend(center.floor_list) - self.wall_list.extend(center.wall_list) - - # get a side room - room = Level() - room.load_file('resources/levels/map1/room.json') - room.rotate_level(2) - room.render() - room_floor, room_wall = room.floor_list, room.wall_list - - self.floor_list.extend(room_floor) - self.wall_list.extend(room_wall) - - # get a side room - room = Level() - room.load_file('resources/levels/map1/room.json') - room.render() - room_floor, room_wall = room.floor_list, room.wall_list - room_floor.move(-level_size, 0) - room_wall.move(-level_size, 0) - self.floor_list.extend(room_floor) - self.wall_list.extend(room_wall) + self.levels = [ + [None, None, None], + [center, side, None], + [None, None, None] + ] def render(self) -> None: """ @@ -75,7 +50,9 @@ class Dungeon(object): for column in self.levels: for level in column: if level is not None: - level.render() + print('Rendering Level') + level.floorSprites.draw() + level.wallSprites.draw() class Level: @@ -108,7 +85,7 @@ class Level: # self.entrances = [] @staticmethod - def load_file(level_x: int, level_y:int, path: str) -> Level: + def load_file(level_x: int, level_y: int, path: str) -> Level: """ Builds a Level from a given file path. @@ -128,7 +105,7 @@ class Level: # Places all of the tiles & sprites for x in range(0, 10): - for y in range(0, 11): + for y in range(0, 10): tilePath = level.sprites[level.structure[x][y]] sprite = arcade.Sprite(tilePath, Config.TILE_SCALING) sprite.center_x, sprite.center_y = x * tile_scale, y * tile_scale @@ -139,6 +116,7 @@ class Level: level.wallSprites.append(sprite) else: print(f'Could not handle Tile: {tilePath}') + # Move everything into correct positions level.floorSprites.move(level_scale * level_x, level_scale * level_y) level.wallSprites.move(level_scale * level_x, level_scale * level_y)