Mercurial > fife-parpg
diff demos/rpg/scripts/scene.py @ 520:b6bd314df28a
Added a quest dialog.
Added QuestGiver class.
Moved level specific settings to another file.
Added BaseItem class.
author | prock@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Thu, 27 May 2010 16:29:07 +0000 |
parents | 14f777be6b94 |
children | 494c60cf61cf |
line wrap: on
line diff
--- a/demos/rpg/scripts/scene.py Thu May 27 04:36:09 2010 +0000 +++ b/demos/rpg/scripts/scene.py Thu May 27 16:29:07 2010 +0000 @@ -28,9 +28,12 @@ from fife import fife from fife.extensions.loaders import loadMapFile +from fife.extensions.fife_settings import Setting from scripts.actors.baseactor import Actor +from scripts.actors.baseactor import QuestGiver from scripts.actors.player import Player +from scripts.objects.baseobject import GameObjectTypes class Scene(object): def __init__(self, gamecontroller): @@ -43,7 +46,7 @@ self._actorlayer = None self._player = None - self._npclist = [] + self._objectlist = {} def createScene(self, mapfilename): if not self._map: @@ -61,11 +64,18 @@ self._player = Player(self._gamecontroller, "warrior") mapname = os.path.splitext(os.path.basename(mapfilename)) - for npc in self._gamecontroller.settings.get(mapname[0], "npclist", []): - (modelname, posx, posy) = self._gamecontroller.settings.get(mapname[0], npc, ["warrior", "0", "0"]) - actor = Actor(self._gamecontroller, modelname, npc, True) + objectfile = "maps/" + mapname[0] + "_objects.xml" + objectsettings = Setting(app_name="",settings_file=objectfile) + + for npc in objectsettings.get(mapname[0], "npclist", []): + (objtype, modelname, posx, posy) = objectsettings.get(mapname[0], npc, ["NPC", "warrior", "0", "0"]) + if objtype == "QUESTGIVER": + actor = QuestGiver(self._gamecontroller, modelname, npc, True) + elif objtype == "NPC": + actor = Actor(self._gamecontroller, modelname, npc, True) + actor.setMapPosition(float(posx), float(posy)) - self._npclist.append(actor) + self._objectlist[actor.instance.getId()] = actor def destroyScene(self): @@ -73,8 +83,8 @@ self._player.destroy() - for npc in self._npclist: - npc.destroy() + for obj in self._objectlist.values(): + obj.destroy() if self._map: self._gamecontroller.engine.getModel().deleteMap(self._map) @@ -83,7 +93,7 @@ self._actorlayer = None self._player = None - self._npclist = [] + self._objectlist.clear() def getInstancesAt(self, clickpoint): """ @@ -114,7 +124,11 @@ def _getPlayer(self): return self._player + def _getObjectList(self): + return self._objectlist + actorlayer = property(_getActorLayer) cameras = property(_getCameras) player = property(_getPlayer) + objectlist = property(_getObjectList)