Make the game start

This commit is contained in:
Yohann D'ANELLO 2020-11-06 20:24:19 +01:00
parent b3d789e3e7
commit b5b76fd07b
4 changed files with 19 additions and 17 deletions

View File

@ -7,11 +7,14 @@ class Display:
def __init__(self, game, screen): def __init__(self, game, screen):
self.screen = screen self.screen = screen
self.game = game self.game = game
self.mapDisplay = MapDisplay(game.m, self.map_display = MapDisplay(game.m,
TexturePack.get_pack( TexturePack.get_pack(
game.settings.TEXTURE_PACK), game.settings.TEXTURE_PACK),
curses.LINES, curses.LINES,
curses.COLS * 4 // 5) curses.COLS * 4 // 5)
def refresh(self): def refresh(self):
self.mapDisplay.refresh() self.map_display.update_pad()
def display(self, y, x):
self.map_display.display(y, x)

View File

@ -1,17 +1,20 @@
#!/usr/bin/env python #!/usr/bin/env python
import curses import curses
from dungeonbattle.display.texturepack import TexturePack
from dungeonbattle.interfaces import Map from dungeonbattle.interfaces import Map
from .texturepack import TexturePack
class MapDisplay: class MapDisplay:
def __init__(self, m: Map, pack: TexturePack, height: int, width: int): def __init__(self, m: Map, pack: TexturePack, height: int, width: int,
init_pad: bool = True):
self.width = width self.width = width
self.height = height self.height = height
self.map = m
self.pad = curses.newpad(m.height, m.width+1)
self.pack = pack self.pack = pack
self.map = m
if init_pad:
self.pad = curses.newpad(m.height, m.width + 1)
def update_pad(self): def update_pad(self):
self.pad.addstr(0, 0, self.map.draw_string(self.pack)) self.pad.addstr(0, 0, self.map.draw_string(self.pack))
@ -32,7 +35,3 @@ class MapDisplay:
self.pad.clear() self.pad.clear()
self.update_pad() self.update_pad()
self.pad.refresh(pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol) self.pad.refresh(pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol)
def refresh(self) :
self.display(self.map.currenty,self.map.currentx)

View File

@ -1,9 +1,9 @@
import sys import sys
from typing import Any from typing import Any
from .display.display import Display
from .entities.player import Player from .entities.player import Player
from .interfaces import Map from .interfaces import Map
from .mapdisplay import MapDisplay
from .settings import Settings from .settings import Settings
from enum import Enum, auto from enum import Enum, auto
from . import menus from . import menus
@ -32,13 +32,13 @@ class Game:
self.settings.load_settings() self.settings.load_settings()
self.settings.write_settings() self.settings.write_settings()
def new_game(self, init_pad: bool = True) -> None: def new_game(self, screen: Any) -> None:
# TODO generate a new map procedurally # TODO generate a new map procedurally
self.m = Map.load("example_map.txt") self.m = Map.load("example_map.txt")
self.player = Player() self.player = Player()
self.player.move(1, 6) self.player.move(1, 6)
self.m.add_entity(self.player) self.m.add_entity(self.player)
self.d = MapDisplay(self.m, self.player, init_pad) self.d = Display(self, screen)
@staticmethod @staticmethod
def load_game(filename: str) -> None: def load_game(filename: str) -> None:

View File

@ -5,5 +5,5 @@ from dungeonbattle.term_manager import TermManager
if __name__ == "__main__": if __name__ == "__main__":
with TermManager() as term_manager: with TermManager() as term_manager:
game = Game() game = Game()
game.new_game() game.new_game(term_manager.screen)
game.run(term_manager.screen) game.run(term_manager.screen)