Mercurial > fife-parpg
changeset 547:e59ece21ab3e
Item serialization will now assume some default values if they are not found in the save files.
The 'spawn' console command can now spawn items with default values.
Cleaned up some print statements.
author | prock@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Fri, 04 Jun 2010 21:01:34 +0000 |
parents | 8fee2d2286e9 |
children | f45e3e2995e0 |
files | demos/rpg/scripts/actors/baseactor.py demos/rpg/scripts/gamecontroller.py demos/rpg/scripts/objects/baseobject.py demos/rpg/scripts/objects/items.py demos/rpg/scripts/scene.py |
diffstat | 5 files changed, 44 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/demos/rpg/scripts/actors/baseactor.py Thu Jun 03 21:35:06 2010 +0000 +++ b/demos/rpg/scripts/actors/baseactor.py Fri Jun 04 21:01:34 2010 +0000 @@ -152,7 +152,21 @@ if itemtoremove: self._inventory.remove(itemtoremove) + + def serialize(self): + lvars = super(Actor, self).serialize() + + lvars['gold'] = self._gold + return lvars + + def deserialize(self, valuedict): + super(Actor, self).deserialize(valuedict) + + if valuedict.has_key("gold"): + self._gold = int(valuedict['gold']) + else: + self._gold = 0 def _getState(self): return self._state
--- a/demos/rpg/scripts/gamecontroller.py Thu Jun 03 21:35:06 2010 +0000 +++ b/demos/rpg/scripts/gamecontroller.py Fri Jun 04 21:01:34 2010 +0000 @@ -24,7 +24,7 @@ # #################################################################### # This is the rio de hola client for FIFE. -import sys, os, re, math, random, shutil, glob +import sys, os, re, math, random, shutil, glob, uuid from fife import fife @@ -218,12 +218,14 @@ cmd.append(arg) if cmd[0] == "spawn": - result = "Usage: spawn [object template] [posx] [posy]" + result = "Usage: spawn [object template] [posx] [posy] " if len(cmd) != 4: return result else: try: - obj = self._scene.loadObject(cmd[1]) + id = str(uuid.uuid1()) + valdict = { "posx" : float(cmd[2]), "posy" : float(cmd[3]) } + obj = self._scene.loadObject(cmd[1], id, valdict) except ObjectNotFoundError, e: result = "Error: Cannot load [" + cmd[1] + "]. It could not be found!" obj = None
--- a/demos/rpg/scripts/objects/baseobject.py Thu Jun 03 21:35:06 2010 +0000 +++ b/demos/rpg/scripts/objects/baseobject.py Fri Jun 04 21:01:34 2010 +0000 @@ -102,7 +102,7 @@ if createInstance: self._createFIFEInstance(self._layer) else: - self._instance = None + self._findFIFEInstance(self._layer) self._activated = True @@ -140,9 +140,16 @@ return lvars - def deserialize(self, valuedict): - x = float(valuedict['posx']) - y = float(valuedict['posy']) + def deserialize(self, valuedict): + if valuedict.has_key("posx"): + x = float(valuedict['posx']) + else: + x = 0 + + if valuedict.has_key("posy"): + y = float(valuedict['posy']) + else: + y = 0 self.setMapPosition(x,y) @@ -187,7 +194,10 @@ return self._name def _getPosition(self): - self._position = self.location.getExactLayerCoordinates() + #if there isn't a FIFE instance just return last known coordinates + if self._instance: + self._position = self.location.getExactLayerCoordinates() + return (self._position.x, self._position.y) def _setPosition(self, tuplexy):
--- a/demos/rpg/scripts/objects/items.py Thu Jun 03 21:35:06 2010 +0000 +++ b/demos/rpg/scripts/objects/items.py Fri Jun 04 21:01:34 2010 +0000 @@ -75,7 +75,10 @@ def deserialize(self, valuedict): super(GoldStack, self).deserialize(valuedict) - self._value = int(valuedict['value']) + if valuedict.has_key("value"): + self._value = int(valuedict['value']) + else: + self._value = 0 def _getValue(self): return self._value @@ -101,7 +104,10 @@ def deserialize(self, valuedict): super(Portal, self).deserialize(valuedict) - self._dest = valuedict['dest'] + if valuedict.has_key("dest"): + self._dest = valuedict['dest'] + else: + self._dest = "town" def _getDest(self): return self._dest
--- a/demos/rpg/scripts/scene.py Thu Jun 03 21:35:06 2010 +0000 +++ b/demos/rpg/scripts/scene.py Fri Jun 04 21:01:34 2010 +0000 @@ -61,16 +61,12 @@ if objectid: identifier = objectid else: - #identifier = uuid.uuid1() - identifier = "blkdjfkdj" - + identifier = str(uuid.uuid1()) + try: objdict = self._modelsettings.get("objects", objectname, {}) modeldict = self._modelsettings.get("models", objdict["modelname"], {}) - print objdict - print modeldict - loadImportFile(modeldict["file"], self._gamecontroller.engine) if objdict["type"] == "GOLD":