Reworked graphics to make it more modular

This commit is contained in:
Nicolas Margulies
2020-11-10 18:08:06 +01:00
parent e522047c74
commit 17530f386c
9 changed files with 155 additions and 132 deletions

View File

@ -2,14 +2,12 @@ import sys
from typing import Any
from .display.display import Display
from .display.mapdisplay import MapDisplay
from .display.menudisplay import MenuDisplay
from .display.texturepack import TexturePack
from .entities.player import Player
from .interfaces import Map
from .settings import Settings
from enum import Enum, auto
from . import menus
from typing import Callable
class GameMode(Enum):
@ -31,21 +29,19 @@ class KeyValues(Enum):
class Game:
map: Map
player: Player
menu_display: MenuDisplay
map_display: MapDisplay
display: Display
display_refresh: Callable[[], None]
def __init__(self) -> None:
"""
Init the game.
"""
self.state = GameMode.MAINMENU
self.state = GameMode.PLAY
self.main_menu = menus.MainMenu()
self.settings = Settings()
self.settings.load_settings()
self.settings.write_settings()
def new_game(self, screen: Any) -> None:
def new_game(self) -> None:
"""
Create a new game on the screen.
"""
@ -56,8 +52,6 @@ class Game:
self.player = Player()
self.player.move(1, 6)
self.map.add_entity(self.player)
self.display = Display(screen, self.map, TexturePack.get_pack(self.settings.TEXTURE_PACK))
# self.menu_display = MenuDisplay(screen, self.main_menu, 0, 0)
@staticmethod
def load_game(filename: str) -> None:
@ -73,9 +67,10 @@ class Game:
while True:
screen.clear()
screen.refresh()
self.display.refresh(self.map, self.player)
self.display_refresh()
key = screen.getkey()
self.handle_key_pressed(self.translate_key(key))
self.display_refresh()
def translate_key(self, key: str) -> KeyValues:
"""
@ -109,7 +104,7 @@ class Game:
self.handle_key_pressed_main_menu(key)
elif self.state == GameMode.SETTINGS:
self.handle_key_pressed_settings(key)
self.display.refresh(self.map, self.player)
self.display_refresh()
def handle_key_pressed_play(self, key: KeyValues) -> None:
"""
@ -125,7 +120,6 @@ class Game:
self.player.move_right()
elif key == KeyValues.SPACE:
self.state = GameMode.MAINMENU
self.display = self.menu_display
def handle_key_pressed_main_menu(self, key: KeyValues) -> None:
"""
@ -139,7 +133,6 @@ class Game:
option = self.main_menu.validate()
if option == menus.MainMenuValues.START:
self.state = GameMode.PLAY
self.display = self.map_display
elif option == menus.MainMenuValues.SETTINGS:
self.state = GameMode.SETTINGS
elif option == menus.MainMenuValues.EXIT:
@ -151,4 +144,3 @@ class Game:
"""
if key == KeyValues.SPACE:
self.state = GameMode.MAINMENU
self.display = self.menu_display