2013-12-14 22:54:21 -05:00
|
|
|
from common import *
|
|
|
|
|
import event
|
|
|
|
|
import display
|
|
|
|
|
import uuid
|
|
|
|
|
import registry
|
|
|
|
|
import dpath.util
|
|
|
|
|
import logging
|
|
|
|
|
logger = logging.getLogger()
|
|
|
|
|
|
|
|
|
|
class Actor(event.EventHandler, registry.Registerable):
|
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
|
|
registry.Registerable.__init__(self, *args, **kwargs)
|
|
|
|
|
event.EventHandler.__init__(self, *args, **kwargs)
|
|
|
|
|
self.x = 0
|
|
|
|
|
self.y = 0
|
|
|
|
|
self.vx = 0
|
|
|
|
|
self.vy = 0
|
|
|
|
|
dpath.util.merge(
|
|
|
|
|
self.__eventHandlers__,
|
|
|
|
|
{
|
|
|
|
|
'moveUp': self._event_moveUp,
|
|
|
|
|
'moveDown': self._event_moveDown
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
def _event_moveUp(self, evt):
|
|
|
|
|
self.y -= 1
|
|
|
|
|
|
|
|
|
|
def _event_moveDown(self, evt):
|
|
|
|
|
self.y += 1
|
|
|
|
|
|
|
|
|
|
def frame(self, display):
|
|
|
|
|
return getattr(
|
|
|
|
|
self,
|
|
|
|
|
"frameFor{}".format(display.__class__.__name__)
|
|
|
|
|
)()
|
|
|
|
|
|
2013-12-15 10:30:30 -05:00
|
|
|
def width(self, display):
|
|
|
|
|
return getattr(
|
|
|
|
|
self,
|
|
|
|
|
"widthFor{}".format(display.__class__.__name__)
|
|
|
|
|
)()
|
|
|
|
|
|
|
|
|
|
def height(self, display):
|
|
|
|
|
return getattr(
|
|
|
|
|
self,
|
|
|
|
|
"heightFor{}".format(display.__class__.__name__)
|
|
|
|
|
)()
|
|
|
|
|
|
2013-12-14 22:54:21 -05:00
|
|
|
class Text(Actor):
|
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
|
|
Actor.__init__(self, *args, **kwargs)
|
2013-12-14 23:15:42 -05:00
|
|
|
self.setText(kwargs.get('text', ""))
|
2013-12-14 22:54:21 -05:00
|
|
|
|
|
|
|
|
def setText(self, text):
|
|
|
|
|
self.__text__ = text
|
|
|
|
|
|
|
|
|
|
def frameForCursesDisplay(self):
|
|
|
|
|
def drawForCurses(disp):
|
|
|
|
|
disp.__screen__.addstr(self.y, self.x, self.__text__)
|
|
|
|
|
return drawForCurses
|
|
|
|
|
|
2013-12-15 10:30:30 -05:00
|
|
|
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"))
|
|
|
|
|
|
2013-12-14 22:54:21 -05:00
|
|
|
class Paddle(Text):
|
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
|
|
Text.__init__(self, *args, **kwargs)
|
|
|
|
|
self.__text__ = "|"
|