mirror of
https://github.com/n0remac/game-jam-2020.git
synced 2025-12-07 01:13:14 -06:00
make level rendering and dungeon rendering independent, remove complicated spritelist passing
This commit is contained in:
@@ -30,6 +30,8 @@ class Game(arcade.Window):
|
|||||||
# Separate variable that holds the player sprite
|
# Separate variable that holds the player sprite
|
||||||
self.player = None
|
self.player = None
|
||||||
|
|
||||||
|
self.dungeon = None
|
||||||
|
|
||||||
# list to keep track of keypresses
|
# list to keep track of keypresses
|
||||||
self.prev_keypress = []
|
self.prev_keypress = []
|
||||||
|
|
||||||
@@ -47,8 +49,6 @@ class Game(arcade.Window):
|
|||||||
# Create the Sprite lists
|
# Create the Sprite lists
|
||||||
|
|
||||||
self.player_list = arcade.SpriteList()
|
self.player_list = arcade.SpriteList()
|
||||||
self.wall_list = arcade.SpriteList()
|
|
||||||
self.floor_list = arcade.SpriteList()
|
|
||||||
self.enemy_list = arcade.SpriteList()
|
self.enemy_list = arcade.SpriteList()
|
||||||
|
|
||||||
# Set up the player, specifically placing it at these coordinates.
|
# Set up the player, specifically placing it at these coordinates.
|
||||||
@@ -59,10 +59,7 @@ class Game(arcade.Window):
|
|||||||
self.player_list = self.player
|
self.player_list = self.player
|
||||||
|
|
||||||
# Create the dungeon
|
# Create the dungeon
|
||||||
dungeon = Dungeon()
|
self.dungeon = Dungeon()
|
||||||
|
|
||||||
self.floor_list = dungeon.floor_list
|
|
||||||
self.wall_list = dungeon.wall_list
|
|
||||||
|
|
||||||
# Create monsters
|
# Create monsters
|
||||||
# This needs to be updated to comply with the new mobs.py code
|
# 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())
|
# self.enemy_list.append(Enemy("resources/images/monsters/frog/frog1.png", 200, 1000, 4).get_enemy())
|
||||||
|
|
||||||
# Create the 'physics engine'
|
# 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):
|
def on_draw(self):
|
||||||
""" Render the screen. """
|
""" Render the screen. """
|
||||||
@@ -79,8 +76,7 @@ class Game(arcade.Window):
|
|||||||
arcade.start_render()
|
arcade.start_render()
|
||||||
|
|
||||||
# Draw our sprites
|
# Draw our sprites
|
||||||
self.floor_list.draw()
|
self.dungeon.render()
|
||||||
self.player_list.draw()
|
|
||||||
self.enemy_list.draw()
|
self.enemy_list.draw()
|
||||||
self.wall_list.draw()
|
self.wall_list.draw()
|
||||||
|
|
||||||
|
|||||||
@@ -32,40 +32,15 @@ class Dungeon(object):
|
|||||||
|
|
||||||
self.floor_list = arcade.SpriteList()
|
self.floor_list = arcade.SpriteList()
|
||||||
self.wall_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')
|
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')
|
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()
|
self.levels = [
|
||||||
center.load_file('resources/levels/map1.center.json')
|
[None, None, None],
|
||||||
self.floor_list.extend(center.floor_list)
|
[center, side, None],
|
||||||
self.wall_list.extend(center.wall_list)
|
[None, None, None]
|
||||||
|
]
|
||||||
# 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)
|
|
||||||
|
|
||||||
def render(self) -> None:
|
def render(self) -> None:
|
||||||
"""
|
"""
|
||||||
@@ -75,7 +50,9 @@ class Dungeon(object):
|
|||||||
for column in self.levels:
|
for column in self.levels:
|
||||||
for level in column:
|
for level in column:
|
||||||
if level is not None:
|
if level is not None:
|
||||||
level.render()
|
print('Rendering Level')
|
||||||
|
level.floorSprites.draw()
|
||||||
|
level.wallSprites.draw()
|
||||||
|
|
||||||
|
|
||||||
class Level:
|
class Level:
|
||||||
@@ -108,7 +85,7 @@ class Level:
|
|||||||
# self.entrances = []
|
# self.entrances = []
|
||||||
|
|
||||||
@staticmethod
|
@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.
|
Builds a Level from a given file path.
|
||||||
|
|
||||||
@@ -128,7 +105,7 @@ class Level:
|
|||||||
|
|
||||||
# Places all of the tiles & sprites
|
# Places all of the tiles & sprites
|
||||||
for x in range(0, 10):
|
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]]
|
tilePath = level.sprites[level.structure[x][y]]
|
||||||
sprite = arcade.Sprite(tilePath, Config.TILE_SCALING)
|
sprite = arcade.Sprite(tilePath, Config.TILE_SCALING)
|
||||||
sprite.center_x, sprite.center_y = x * tile_scale, y * tile_scale
|
sprite.center_x, sprite.center_y = x * tile_scale, y * tile_scale
|
||||||
@@ -139,6 +116,7 @@ class Level:
|
|||||||
level.wallSprites.append(sprite)
|
level.wallSprites.append(sprite)
|
||||||
else:
|
else:
|
||||||
print(f'Could not handle Tile: {tilePath}')
|
print(f'Could not handle Tile: {tilePath}')
|
||||||
|
|
||||||
# Move everything into correct positions
|
# Move everything into correct positions
|
||||||
level.floorSprites.move(level_scale * level_x, level_scale * level_y)
|
level.floorSprites.move(level_scale * level_x, level_scale * level_y)
|
||||||
level.wallSprites.move(level_scale * level_x, level_scale * level_y)
|
level.wallSprites.move(level_scale * level_x, level_scale * level_y)
|
||||||
|
|||||||
Reference in New Issue
Block a user