diff --git a/actor.py b/actor.py index f2006da..6722553 100755 --- a/actor.py +++ b/actor.py @@ -11,8 +11,6 @@ class Actor(event.EventHandler, registry.Registerable): def __init__(self, *args, **kwargs): registry.Registerable.__init__(self, *args, **kwargs) event.EventHandler.__init__(self, *args, **kwargs) - self.width = 0 - self.height = 0 self.x = 0 self.y = 0 self.vx = 0 @@ -37,6 +35,18 @@ class Actor(event.EventHandler, registry.Registerable): "frameFor{}".format(display.__class__.__name__) )() + def width(self, display): + return getattr( + self, + "widthFor{}".format(display.__class__.__name__) + )() + + def height(self, display): + return getattr( + self, + "heightFor{}".format(display.__class__.__name__) + )() + class Text(Actor): def __init__(self, *args, **kwargs): Actor.__init__(self, *args, **kwargs) @@ -44,17 +54,21 @@ class Text(Actor): def setText(self, text): self.__text__ = text - widths = [] - for line in self.__text__.split('\n'): - widths.append(len(line)) - self.width = max(widths) - self.height = len(self.__text__.split("\n")) def frameForCursesDisplay(self): def drawForCurses(disp): disp.__screen__.addstr(self.y, self.x, self.__text__) return drawForCurses + def widthForCursesDisplay(self): + widths = [] + for line in self.__text__.split('\n'): + widths.append(len(line)) + return max(widths) + + def heightForCursesDisplay(self): + self.height = len(self.__text__.split("\n")) + class Paddle(Text): def __init__(self, *args, **kwargs): Text.__init__(self, *args, **kwargs) diff --git a/display.py b/display.py index 35373bc..8af7d4f 100755 --- a/display.py +++ b/display.py @@ -25,8 +25,6 @@ class Display(event.EventHandler, registry.Registerable): def __init__(self, *args, **kwargs): registry.Registerable.__init__(self, *args, **kwargs) event.EventHandler.__init__(self, *args, **kwargs) - self.width = 0 - self.height = 0 self.__lock_actors__ = threading.RLock() self.__lock_timer__ = threading.RLock() self.__lock_drawing__ = threading.RLock() @@ -42,6 +40,12 @@ class Display(event.EventHandler, registry.Registerable): # --- + def width(self, actorObj=None): + raise Exception("lol implement me") + + def height(self, actorObj=None): + raise Exception("lol implement me") + def checkInput(self): raise Exception("lol implement me") @@ -75,9 +79,6 @@ class CursesDisplay(Display): self.logger.info("CursesDisplay starting") Display.__init__(self, *args, **kwargs) self.__screen__ = curses.initscr() - maxyx = self.__screen__.getmaxyx() - self.width = maxyx[1] - self.height = maxyx[0] self.__screen__.keypad(1) try: curses.curs_set(0) @@ -94,6 +95,16 @@ class CursesDisplay(Display): curses.endwin() Display.cleanup(self) + def width(self, actorObj=None): + if actorObj: + return actor.width(self) + return self.__screen__.getmaxyx()[1] + + def height(self, actorObj=None): + if actorObj: + return actorObj.height(self) + return self.__screen__.getmaxyx()[1] + def refresh(self): Display.refresh(self) self.__screen__.refresh() diff --git a/game.py b/game.py index 23d3da3..8190f8f 100755 --- a/game.py +++ b/game.py @@ -43,7 +43,7 @@ class Game(event.EventHandler, registry.Registerable): self.__players__.append(player.Player(registryKey='player1')) self.__players__.append(player.Player(registryKey='player2')) - self.__players__[1].x = (self.__display__.width - self.__players__[1].width - 1) + self.__players__[1].x = (self.__display__.width() - self.__display__.width(self.__players__[1]) - 1) logger = logging.getLogger() logger.debug("Adding actors {} and {}".format(self.__players__[0].uuid, self.__players__[1].uuid)) self.__display__.addActor(self.__players__[0])