Move all interface Windows to their own modules in interface.window
This commit is contained in:
parent
1e678ff47d
commit
a8bbc47668
5 changed files with 160 additions and 133 deletions
|
|
@ -10,14 +10,12 @@ from tcod import event as tev
|
|||
from tcod.console import Console
|
||||
from tcod.context import Context
|
||||
|
||||
from .color import HealthBar
|
||||
from .events import InterfaceEventHandler
|
||||
from .percentage_bar import PercentageBar
|
||||
from .window import Window, MapWindow
|
||||
from .window.info import InfoWindow
|
||||
from .window.map import MapWindow
|
||||
from .window.message_log import MessageLogWindow
|
||||
from ..engine import Engine
|
||||
from ..geometry import Point, Rect, Size
|
||||
from ..messages import MessageLog
|
||||
from ..object import Entity, Hero
|
||||
from ..geometry import Rect, Size
|
||||
|
||||
|
||||
class Interface:
|
||||
|
|
@ -76,49 +74,3 @@ class Interface:
|
|||
continue
|
||||
|
||||
self.engine.process_input_action(action)
|
||||
|
||||
|
||||
class InfoWindow(Window):
|
||||
'''A window that displays information about the player'''
|
||||
|
||||
def __init__(self, bounds: Rect):
|
||||
super().__init__(bounds, framed=True)
|
||||
|
||||
self.turn_count: int = 0
|
||||
|
||||
drawable_area = self.drawable_bounds
|
||||
self.hit_points_bar = PercentageBar(
|
||||
position=Point(drawable_area.min_x + 6, drawable_area.min_y),
|
||||
width=20,
|
||||
colors=list(HealthBar.bar_colors()))
|
||||
|
||||
def update_hero(self, hero: Hero):
|
||||
'''Update internal state for the hero'''
|
||||
assert hero.fighter
|
||||
|
||||
fighter = hero.fighter
|
||||
hp, max_hp = fighter.hit_points, fighter.maximum_hit_points
|
||||
|
||||
self.hit_points_bar.percent_filled = hp / max_hp
|
||||
|
||||
def draw(self, console):
|
||||
super().draw(console)
|
||||
|
||||
drawable_bounds = self.drawable_bounds
|
||||
console.print(x=drawable_bounds.min_x + 2, y=drawable_bounds.min_y, string='HP:')
|
||||
self.hit_points_bar.render_to_console(console)
|
||||
|
||||
if self.turn_count:
|
||||
console.print(x=drawable_bounds.min_x, y=drawable_bounds.min_y + 1, string=f'Turn: {self.turn_count}')
|
||||
|
||||
|
||||
class MessageLogWindow(Window):
|
||||
'''A window that displays a list of messages'''
|
||||
|
||||
def __init__(self, bounds: Rect, message_log: MessageLog):
|
||||
super().__init__(bounds, framed=True)
|
||||
self.message_log = message_log
|
||||
|
||||
def draw(self, console):
|
||||
super().draw(console)
|
||||
self.message_log.render_to_console(console, self.drawable_bounds)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue