Mercurial > pyntnclick
diff gamelib/state.py @ 55:2e2f6ff54780
Part of the cryo door puzzle.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Mon, 23 Aug 2010 13:27:50 +0200 |
parents | 8f1fccb8cadf |
children | 75bf3d3689e9 |
line wrap: on
line diff
--- a/gamelib/state.py Mon Aug 23 13:23:38 2010 +0200 +++ b/gamelib/state.py Mon Aug 23 13:27:50 2010 +0200 @@ -63,7 +63,24 @@ print msg -class Scene(object): +class StatefulGizmo(object): + + # initial data (optional, defaults to none) + INITIAL_DATA = None + + def __init__(self): + self.data = {} + if self.INITIAL_DATA: + self.data.update(self.INITIAL_DATA) + + def set_data(self, key, value): + self.data[key] = value + + def get_data(self, key): + return self.data.get(key, None) + + +class Scene(StatefulGizmo): """Base class for scenes.""" # sub-folder to look for resources in @@ -75,10 +92,8 @@ # name of scene (optional, defaults to folder) NAME = None - # initial scene data (optional, defaults to none) - INITIAL_DATA = None - def __init__(self, state): + StatefulGizmo.__init__(self) # scene name self.name = self.NAME if self.NAME is not None else self.FOLDER # link back to state object @@ -86,9 +101,6 @@ # map of thing names -> Thing objects self.things = {} self._background = get_image(self.FOLDER, self.BACKGROUND) - self.data = {} - if self.INITIAL_DATA: - self.data.update(self.INITIAL_DATA) def add_item(self, item): self.state.add_item(item) @@ -112,7 +124,7 @@ self.draw_things(surface) -class Thing(object): +class Thing(StatefulGizmo): """Base class for things in a scene that you can interact with.""" # sub-folder to look for resources in @@ -122,6 +134,7 @@ IMAGE = None def __init__(self, name, rect): + StatefulGizmo.__init__(self) self.name = name # area within scene that triggers calls to interact self.rect = rect