Mercurial > fife-parpg
comparison demos/rio_de_hola/scripts/world.py @ 499:3dff106b945b
Combined the settings extension with the editor settings module. It is now a little more robust. Note that the settings file format has changed.
All demos and tools now use the new settings extension.
author | prock@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Fri, 14 May 2010 17:37:42 +0000 |
parents | 987307d12235 |
children | 1e69fd582c94 |
comparison
equal
deleted
inserted
replaced
498:5ff83f209333 | 499:3dff106b945b |
---|---|
161 self.maplistener = MapListener(self.map) | 161 self.maplistener = MapListener(self.map) |
162 | 162 |
163 self.initAgents() | 163 self.initAgents() |
164 self.initCameras() | 164 self.initCameras() |
165 | 165 |
166 if int(TDS.readSetting("PlaySounds")): | 166 if int(TDS.get("FIFE", "PlaySounds")): |
167 # play track as background music | 167 # play track as background music |
168 self.music = self.soundmanager.createSoundEmitter('music/rio_de_hola.ogg') | 168 self.music = self.soundmanager.createSoundEmitter('music/rio_de_hola.ogg') |
169 self.music.looping = True | 169 self.music.looping = True |
170 self.music.gain = 128.0 | 170 self.music.gain = 128.0 |
171 self.music.play() | 171 self.music.play() |
184 | 184 |
185 Note that we keep a mapping from map instances (C++ model of stuff on the map) | 185 Note that we keep a mapping from map instances (C++ model of stuff on the map) |
186 to the python agents for later reference. | 186 to the python agents for later reference. |
187 """ | 187 """ |
188 self.agentlayer = self.map.getLayer('TechdemoMapGroundObjectLayer') | 188 self.agentlayer = self.map.getLayer('TechdemoMapGroundObjectLayer') |
189 self.hero = Hero(self.model, 'PC', self.agentlayer) | 189 self.hero = Hero(TDS, self.model, 'PC', self.agentlayer) |
190 self.instance_to_agent[self.hero.agent.getFifeId()] = self.hero | 190 self.instance_to_agent[self.hero.agent.getFifeId()] = self.hero |
191 self.hero.start() | 191 self.hero.start() |
192 | 192 |
193 self.girl = Girl(self.model, 'NPC:girl', self.agentlayer) | 193 self.girl = Girl(TDS, self.model, 'NPC:girl', self.agentlayer) |
194 self.instance_to_agent[self.girl.agent.getFifeId()] = self.girl | 194 self.instance_to_agent[self.girl.agent.getFifeId()] = self.girl |
195 self.girl.start() | 195 self.girl.start() |
196 | 196 |
197 self.beekeepers = create_anonymous_agents(self.model, 'beekeeper', self.agentlayer, Beekeeper) | 197 self.beekeepers = create_anonymous_agents(TDS, self.model, 'beekeeper', self.agentlayer, Beekeeper) |
198 for beekeeper in self.beekeepers: | 198 for beekeeper in self.beekeepers: |
199 self.instance_to_agent[beekeeper.agent.getFifeId()] = beekeeper | 199 self.instance_to_agent[beekeeper.agent.getFifeId()] = beekeeper |
200 beekeeper.start() | 200 beekeeper.start() |
201 | 201 |
202 # Clouds are currently defunct. | 202 # Clouds are currently defunct. |
203 cloudlayer = self.map.getLayer('TechdemoMapTileLayer') | 203 cloudlayer = self.map.getLayer('TechdemoMapTileLayer') |
204 self.clouds = create_anonymous_agents(self.model, 'Cloud', cloudlayer, Cloud) | 204 self.clouds = create_anonymous_agents(TDS, self.model, 'Cloud', cloudlayer, Cloud) |
205 for cloud in self.clouds: | 205 for cloud in self.clouds: |
206 cloud.start(0.1, 0.05) | 206 cloud.start(0.1, 0.05) |
207 | 207 |
208 | 208 |
209 def initCameras(self): | 209 def initCameras(self): |
228 # Floating text renderers currntly only support one font. | 228 # Floating text renderers currntly only support one font. |
229 # ... so we set that up. | 229 # ... so we set that up. |
230 # You'll se that for our demo we use a image font, so we have to specify the font glyphs | 230 # You'll se that for our demo we use a image font, so we have to specify the font glyphs |
231 # for that one. | 231 # for that one. |
232 renderer = fife.FloatingTextRenderer.getInstance(self.cameras['main']) | 232 renderer = fife.FloatingTextRenderer.getInstance(self.cameras['main']) |
233 textfont = self.engine.getGuiManager().createFont('fonts/rpgfont.png', 0, str(TDS.readSetting("FontGlyphs", strip=False))); | 233 textfont = self.engine.getGuiManager().createFont('fonts/rpgfont.png', 0, str(TDS.get("FIFE", "FontGlyphs"))); |
234 renderer.changeDefaultFont(textfont) | 234 renderer.changeDefaultFont(textfont) |
235 renderer.activateAllLayers(self.map) | 235 renderer.activateAllLayers(self.map) |
236 | 236 |
237 # Activate the grid renderer on all layers | 237 # Activate the grid renderer on all layers |
238 renderer = self.cameras['main'].getRenderer('GridRenderer') | 238 renderer = self.cameras['main'].getRenderer('GridRenderer') |
240 | 240 |
241 # The small camera shouldn't be cluttered by the 'humm di dums' of our hero. | 241 # The small camera shouldn't be cluttered by the 'humm di dums' of our hero. |
242 # So we disable the renderer simply by setting its font to None. | 242 # So we disable the renderer simply by setting its font to None. |
243 renderer = fife.FloatingTextRenderer.getInstance(self.cameras['small']) | 243 renderer = fife.FloatingTextRenderer.getInstance(self.cameras['small']) |
244 renderer.changeDefaultFont(None) | 244 renderer.changeDefaultFont(None) |
245 | |
246 | 245 |
247 # The following renderers are used for debugging. | 246 # The following renderers are used for debugging. |
248 # Note that by default ( that is after calling View.resetRenderers or Camera.resetRenderers ) | 247 # Note that by default ( that is after calling View.resetRenderers or Camera.resetRenderers ) |
249 # renderers will be handed all layers. That's handled here. | 248 # renderers will be handed all layers. That's handled here. |
250 renderer = self.cameras['main'].getRenderer('CoordinateRenderer') | 249 renderer = self.cameras['main'].getRenderer('CoordinateRenderer') |
251 renderer.clearActiveLayers() | 250 renderer.clearActiveLayers() |
252 renderer.addActiveLayer(self.map.getLayer(str(TDS.readSetting("CoordinateLayerName")))) | 251 renderer.addActiveLayer(self.map.getLayer(str(TDS.get("rio", "CoordinateLayerName")))) |
253 | 252 |
254 renderer = self.cameras['main'].getRenderer('QuadTreeRenderer') | 253 renderer = self.cameras['main'].getRenderer('QuadTreeRenderer') |
255 renderer.setEnabled(True) | 254 renderer.setEnabled(True) |
256 renderer.clearActiveLayers() | 255 renderer.clearActiveLayers() |
257 if str(TDS.readSetting("QuadTreeLayerName")): | 256 if str(TDS.get("rio", "QuadTreeLayerName")): |
258 renderer.addActiveLayer(self.map.getLayer(str(TDS.readSetting("QuadTreeLayerName")))) | 257 renderer.addActiveLayer(self.map.getLayer(str(TDS.get("rio", "QuadTreeLayerName")))) |
259 | 258 |
260 # Set up the second camera | 259 # Set up the second camera |
261 # NOTE: We need to explicitly call setLocation, there's a bit of a messup in the Camera code. | 260 # NOTE: We need to explicitly call setLocation, there's a bit of a messup in the Camera code. |
262 self.cameras['small'].setLocation(self.hero.agent.getLocation()) | 261 self.cameras['small'].setLocation(self.hero.agent.getLocation()) |
263 self.cameras['small'].attach(self.girl.agent) | 262 self.cameras['small'].attach(self.girl.agent) |
368 def onTalkButtonPress(self): | 367 def onTalkButtonPress(self): |
369 self.hide_instancemenu() | 368 self.hide_instancemenu() |
370 instance = self.instancemenu.instance | 369 instance = self.instancemenu.instance |
371 self.hero.talk(instance.getLocationRef()) | 370 self.hero.talk(instance.getLocationRef()) |
372 if instance.getObject().getId() == 'beekeeper': | 371 if instance.getObject().getId() == 'beekeeper': |
373 beekeeperTexts = TDS.readSetting("beekeeperTexts", type='list', text=True) | 372 beekeeperTexts = TDS.get("rio", "beekeeperTexts") |
374 instance.say(random.choice(beekeeperTexts), 5000) | 373 instance.say(random.choice(beekeeperTexts), 5000) |
375 if instance.getObject().getId() == 'girl': | 374 if instance.getObject().getId() == 'girl': |
376 girlTexts = TDS.readSetting("girlTexts", type='list', text=True) | 375 girlTexts = TDS.get("rio", "girlTexts") |
377 instance.say(random.choice(girlTexts), 5000) | 376 instance.say(random.choice(girlTexts), 5000) |
378 | 377 |
379 def onKickButtonPress(self): | 378 def onKickButtonPress(self): |
380 self.hide_instancemenu() | 379 self.hide_instancemenu() |
381 self.hero.kick(self.instancemenu.instance.getLocationRef()) | 380 self.hero.kick(self.instancemenu.instance.getLocationRef()) |