changeset 24:30d4f3e62bcf

Refactor widgets *again*, add container to Habitat
author Stefano Rivera <stefano@rivera.za.net>
date Sun, 11 Sep 2011 14:21:50 +0200
parents d0e8940df703
children b38411d253e3
files mamba/engine.py mamba/habitats/level.py mamba/widgets/base.py mamba/widgets/level.py
diffstat 4 files changed, 15 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/mamba/engine.py	Sun Sep 11 14:06:58 2011 +0200
+++ b/mamba/engine.py	Sun Sep 11 14:21:50 2011 +0200
@@ -1,5 +1,6 @@
 """Game engine and top-level game loop."""
 
+from mamba.widgets.base import Container
 import pygame.event
 import pygame.display
 from pygame.locals import QUIT, USEREVENT
@@ -28,11 +29,15 @@
 
 
 class Habitat(object):
+
+    def __init__(self):
+        self.container = Container()
+
     def dispatch(self, ev):
-        pass
+        self.container.event(ev)
 
     def draw(self, surface):
-        pass
+        self.container.draw(ev)
 
 
 class UserEvent(object):
--- a/mamba/habitats/level.py	Sun Sep 11 14:06:58 2011 +0200
+++ b/mamba/habitats/level.py	Sun Sep 11 14:21:50 2011 +0200
@@ -7,11 +7,6 @@
 
 class LevelHabitat(Habitat):
     def __init__(self, level_name):
+        super(LevelHabitat, self).__init__()
         self.level = Level(level_name)
-        self.level_widget = LevelWidget(self.level)
-
-    def draw(self, surface):
-        self.level_widget.draw(surface)
-
-    def dispatch(self, ev):
-        self.level_widget.event(ev)
+        self.container.add(LevelWidget(self.level))
--- a/mamba/widgets/base.py	Sun Sep 11 14:06:58 2011 +0200
+++ b/mamba/widgets/base.py	Sun Sep 11 14:21:50 2011 +0200
@@ -6,11 +6,11 @@
     def __init__(self, rect):
         self.rect = pygame.Rect(rect)
 
-    def do_event(self, event):
+    def event(self, event):
         "Override me"
         pass
 
-    def do_draw(self, surface):
+    def draw(self, surface):
         "Override me"
         pass
 
@@ -23,18 +23,11 @@
     def event(self, event):
         for child in self.children:
             # TODO mouse events
-            if issubclass(child, Container):
-                child.event(event)
-            else:
-                child.do_event(event)
+            child.event(event)
 
     def add(self, widget):
         self.children.append(widget)
 
     def draw(self, surface):
-        self.do_draw(surface)
         for child in self.children:
-            if issubclass(child, Container):
-                child.draw(surface)
-            else:
-                child.do_draw(surface)
+            child.draw(surface)
--- a/mamba/widgets/level.py	Sun Sep 11 14:06:58 2011 +0200
+++ b/mamba/widgets/level.py	Sun Sep 11 14:21:50 2011 +0200
@@ -8,10 +8,10 @@
         level_rect = Rect(offset, level.get_size())
         super(LevelWidget, self).__init__(level_rect)
 
-    def do_draw(self, surface):
+    def draw(self, surface):
         # TODO: Implement
         pass
 
-    def do_event(self, event):
+    def event(self, event):
         # TODO: Implement
         pass