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