Mercurial > pyntnclick
comparison 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 |
comparison
equal
deleted
inserted
replaced
54:0abd45c58bd3 | 55:2e2f6ff54780 |
---|---|
61 | 61 |
62 def message(self, msg): | 62 def message(self, msg): |
63 print msg | 63 print msg |
64 | 64 |
65 | 65 |
66 class Scene(object): | 66 class StatefulGizmo(object): |
67 | |
68 # initial data (optional, defaults to none) | |
69 INITIAL_DATA = None | |
70 | |
71 def __init__(self): | |
72 self.data = {} | |
73 if self.INITIAL_DATA: | |
74 self.data.update(self.INITIAL_DATA) | |
75 | |
76 def set_data(self, key, value): | |
77 self.data[key] = value | |
78 | |
79 def get_data(self, key): | |
80 return self.data.get(key, None) | |
81 | |
82 | |
83 class Scene(StatefulGizmo): | |
67 """Base class for scenes.""" | 84 """Base class for scenes.""" |
68 | 85 |
69 # sub-folder to look for resources in | 86 # sub-folder to look for resources in |
70 FOLDER = None | 87 FOLDER = None |
71 | 88 |
73 BACKGROUND = None | 90 BACKGROUND = None |
74 | 91 |
75 # name of scene (optional, defaults to folder) | 92 # name of scene (optional, defaults to folder) |
76 NAME = None | 93 NAME = None |
77 | 94 |
78 # initial scene data (optional, defaults to none) | |
79 INITIAL_DATA = None | |
80 | |
81 def __init__(self, state): | 95 def __init__(self, state): |
96 StatefulGizmo.__init__(self) | |
82 # scene name | 97 # scene name |
83 self.name = self.NAME if self.NAME is not None else self.FOLDER | 98 self.name = self.NAME if self.NAME is not None else self.FOLDER |
84 # link back to state object | 99 # link back to state object |
85 self.state = state | 100 self.state = state |
86 # map of thing names -> Thing objects | 101 # map of thing names -> Thing objects |
87 self.things = {} | 102 self.things = {} |
88 self._background = get_image(self.FOLDER, self.BACKGROUND) | 103 self._background = get_image(self.FOLDER, self.BACKGROUND) |
89 self.data = {} | |
90 if self.INITIAL_DATA: | |
91 self.data.update(self.INITIAL_DATA) | |
92 | 104 |
93 def add_item(self, item): | 105 def add_item(self, item): |
94 self.state.add_item(item) | 106 self.state.add_item(item) |
95 | 107 |
96 def add_thing(self, thing): | 108 def add_thing(self, thing): |
110 def draw(self, surface): | 122 def draw(self, surface): |
111 self.draw_background(surface) | 123 self.draw_background(surface) |
112 self.draw_things(surface) | 124 self.draw_things(surface) |
113 | 125 |
114 | 126 |
115 class Thing(object): | 127 class Thing(StatefulGizmo): |
116 """Base class for things in a scene that you can interact with.""" | 128 """Base class for things in a scene that you can interact with.""" |
117 | 129 |
118 # sub-folder to look for resources in | 130 # sub-folder to look for resources in |
119 FOLDER = None | 131 FOLDER = None |
120 | 132 |
121 # name of image resource | 133 # name of image resource |
122 IMAGE = None | 134 IMAGE = None |
123 | 135 |
124 def __init__(self, name, rect): | 136 def __init__(self, name, rect): |
137 StatefulGizmo.__init__(self) | |
125 self.name = name | 138 self.name = name |
126 # area within scene that triggers calls to interact | 139 # area within scene that triggers calls to interact |
127 self.rect = rect | 140 self.rect = rect |
128 # these are set by set_scene | 141 # these are set by set_scene |
129 self.scene = None | 142 self.scene = None |