Added playable character loading
parent
25d3305a79
commit
e4993f39af
|
@ -1,7 +1,7 @@
|
|||
[
|
||||
{
|
||||
"name": "0-tutorial",
|
||||
"theme": "cave",
|
||||
"theme": "tutorial",
|
||||
"abilities": [
|
||||
],
|
||||
"file": "0-tutorial.csv"
|
||||
|
|
|
@ -13,6 +13,8 @@ from level.elements.static.SimpleBlockLevelElement import SimpleBlockLevelElemen
|
|||
from level.elements.static.UnknownTileLevelElement import UnknownTileLevelElement
|
||||
from physics import ConstantsParser
|
||||
from physics.SpriteManager import SpriteManager, DrawLayers
|
||||
from physics.sprites.PlayerSprite import PlayerSprite
|
||||
from sprite.PositionScale import PositionScale
|
||||
from sprite.SpritesheetManager import SpritesheetManager
|
||||
|
||||
TILES = {
|
||||
|
@ -62,6 +64,12 @@ class LoadedLevel:
|
|||
|
||||
if name in TILES:
|
||||
element = TILES[name](tile, self)
|
||||
|
||||
elif name == 'C':
|
||||
ghost_character = PlayerSprite(self.spritesheet_manager.get_sheet("ghost_character"))
|
||||
ghost_character.position_scale = PositionScale((position[0], position[1]), (1, 1))
|
||||
self.sprite_manager.add_ui_element(DrawLayers.OBJECTS, ghost_character)
|
||||
|
||||
elif not name == '':
|
||||
print(f"Unknown tile at {position}: {name}")
|
||||
element = UnknownTileLevelElement(tile, self)
|
||||
|
|
|
@ -1,16 +1,30 @@
|
|||
from abc import abstractmethod
|
||||
|
||||
from level.Level import Level
|
||||
from level.elements.LoadedLevel import LoadedLevel
|
||||
from level.selection.ScreenManager import ScreenManager
|
||||
from physics.SpriteManager import SpriteManager
|
||||
from physics.TickData import TickData
|
||||
from sprite.SpritesheetManager import SpritesheetManager
|
||||
from ui_elements.KeyManager import KeyManager
|
||||
|
||||
|
||||
class LevelScreenManager(ScreenManager):
|
||||
def __init__(self, sprite_manager: SpriteManager, spritesheet_manager: SpritesheetManager, main_loop):
|
||||
def __init__(self, sprite_manager: SpriteManager, spritesheet_manager: SpritesheetManager, main_loop,
|
||||
level: Level):
|
||||
super().__init__(sprite_manager, spritesheet_manager, main_loop)
|
||||
|
||||
self.level = level
|
||||
self.loaded_level = LoadedLevel(sprite_manager, spritesheet_manager)
|
||||
self.loaded_level.load_level(self.level)
|
||||
|
||||
def initialize(self):
|
||||
pass
|
||||
|
||||
def destroy(self):
|
||||
super().destroy()
|
||||
self.loaded_level.destroy_level()
|
||||
|
||||
def tick(self, tick_data: TickData):
|
||||
if tick_data.key_manager.is_keymap_down(KeyManager.KEY_ESCAPE):
|
||||
self.main_loop.select_level_selection()
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
from abc import abstractmethod
|
||||
|
||||
from level.Level import Level
|
||||
from level.LevelManager import LevelManager
|
||||
from level.selection.ScreenManager import ScreenManager
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
from abc import abstractmethod
|
||||
|
||||
from physics.SpriteManager import SpriteManager
|
||||
from physics.TickData import TickData
|
||||
from sprite.SpritesheetManager import SpritesheetManager
|
||||
from ui_elements.UiElement import UiElement
|
||||
|
||||
|
@ -24,3 +25,6 @@ class ScreenManager:
|
|||
def destroy(self):
|
||||
for element in self.elements:
|
||||
self.sprite_manager.remove_ui_element(element)
|
||||
|
||||
def tick(self, tick_data: TickData):
|
||||
pass
|
||||
|
|
|
@ -71,6 +71,8 @@ class MainLoop:
|
|||
self.game_state = self.GAME_STATE_MENU
|
||||
self.set_game_state(self.GAME_STATE_LEVEL_SELECTION)
|
||||
|
||||
self.level: Optional[Level] = None
|
||||
|
||||
def update_position_scale(self, position_scale: PositionScale):
|
||||
self.screen_transform = position_scale
|
||||
self.window_size = (
|
||||
|
@ -83,9 +85,13 @@ class MainLoop:
|
|||
self.screen = pygame.display.set_mode((self.window_size[0], self.window_size[1]))
|
||||
|
||||
def select_level(self, level: Level):
|
||||
print(level.name)
|
||||
print('Loading level', level.name)
|
||||
self.level = level
|
||||
self.set_game_state(self.GAME_STATE_LEVEL)
|
||||
|
||||
def select_level_selection(self):
|
||||
self.set_game_state(self.GAME_STATE_LEVEL_SELECTION)
|
||||
|
||||
def set_game_state(self, game_state: str):
|
||||
self.game_state = game_state
|
||||
|
||||
|
@ -98,7 +104,7 @@ class MainLoop:
|
|||
)
|
||||
elif self.game_state == self.GAME_STATE_LEVEL:
|
||||
self.screen_manager = LevelScreenManager(
|
||||
self.sprite_manager, self.spritesheet_manager, self
|
||||
self.sprite_manager, self.spritesheet_manager, self, self.level
|
||||
)
|
||||
elif self.game_state == self.GAME_STATE_LEVEL_SELECTION:
|
||||
self.screen_manager = LevelSelectionScreenManager(
|
||||
|
@ -130,13 +136,15 @@ class MainLoop:
|
|||
quit()
|
||||
|
||||
self.screen.fill((0, 0, 0))
|
||||
self.sprite_manager.tick(
|
||||
TickData(apply_frame_rate(1, self.frame_rate),
|
||||
|
||||
tick_data = TickData(apply_frame_rate(1, self.frame_rate),
|
||||
pygame_events,
|
||||
self.key_manager,
|
||||
click_events,
|
||||
self.screen_transform)
|
||||
)
|
||||
|
||||
self.screen_manager.tick(tick_data)
|
||||
self.sprite_manager.tick(tick_data)
|
||||
self.sprite_manager.draw(self.screen, self.screen_transform)
|
||||
|
||||
pygame.display.update()
|
||||
|
|
Loading…
Reference in New Issue