# HG changeset patch # User Stefano Rivera # Date 1315743710 -7200 # Node ID 30d4f3e62bcf5581185e76d17285bfffd3c2555e # Parent d0e8940df7033a2a63bbca3df1cbde704585e47e Refactor widgets *again*, add container to Habitat diff -r d0e8940df703 -r 30d4f3e62bcf mamba/engine.py --- 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): diff -r d0e8940df703 -r 30d4f3e62bcf mamba/habitats/level.py --- 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)) diff -r d0e8940df703 -r 30d4f3e62bcf mamba/widgets/base.py --- 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) diff -r d0e8940df703 -r 30d4f3e62bcf mamba/widgets/level.py --- 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