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())