Refactored the height/width members of displays and actors from integers to methods that compute based on the type of display (e.g., a text object is differently sized in curses than on gtk or whatever)
This commit is contained in:
28
actor.py
28
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)
|
||||
|
||||
21
display.py
21
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()
|
||||
|
||||
2
game.py
2
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])
|
||||
|
||||
Reference in New Issue
Block a user