38 |
|
|
39 |
|
|
40 |
|
|
41 |
class Objeto: |
class Objeto(object): |
42 |
"""Un objeto dentro del juego. |
"""Un objeto dentro del juego. |
43 |
|
|
44 |
Contiene los siguientes atributos: |
Contiene los siguientes atributos: |
83 |
poniendolo en su estado inicial. Esta instancia podrá pasar a manos de pjs y pnjs, y se |
poniendolo en su estado inicial. Esta instancia podrá pasar a manos de pjs y pnjs, y se |
84 |
puede salvar a disco junto con la sala o el personaje que lo contiene. |
puede salvar a disco junto con la sala o el personaje que lo contiene. |
85 |
|
|
|
|
|
86 |
Invariantes: |
Invariantes: |
87 |
__id != None |
__id != None |
88 |
__version != None |
__version != None |
132 |
|
|
133 |
# Version del sistema de objetos (se incrementa cada vez que varian los atributos |
# Version del sistema de objetos (se incrementa cada vez que varian los atributos |
134 |
# de la clase Objeto) |
# de la clase Objeto) |
135 |
VERSION_OBJETO = '1.0' |
VERSION_OBJETO = '1.0.1' |
136 |
|
|
137 |
DIR_DESC_OBJETOS = 'desc_objetos' |
DIR_DESC_OBJETOS = 'desc_objetos' |
138 |
EXT_DESC_OBJETOS = '.xml' |
EXT_DESC_OBJETOS = '.xml' |
396 |
|
|
397 |
# Verificar la versión. |
# Verificar la versión. |
398 |
if not self.__dict__.has_key("_Objeto__version"): |
if not self.__dict__.has_key("_Objeto__version"): |
399 |
escribir("Cargado objeto " + self.id + " obsoleto: sin versión," + |
raise ValueError("Cargado objeto " + self.id + " obsoleto: sin versión," + |
400 |
" cuando se esperaba " + Objeto.VERSION_OBJETO + ". Reseteando objeto.") |
" cuando se esperaba " + Objeto.VERSION_OBJETO) |
401 |
if atributos.has_key('id'): |
|
402 |
self.__dict__ = {'_Objeto__id':atributos['id']} |
assert(Objeto.VERSION_OBJETO == "1.0.1") |
403 |
else: |
while self.__version != "1.0.1": |
404 |
self.__dict__ = {'_Objeto__id':atributos['_Objeto__id']} |
|
405 |
self.__inicializar_objeto() |
# La versión 1.0.1 produce una ruptura con las anteriores ya que se migra al formato |
406 |
|
# de clases de Python 2.2, y no es compatible con el anterior. Hay que borrar todas |
407 |
|
# las salas, personajes y objetos. |
408 |
|
# |
409 |
|
|
|
assert(Objeto.VERSION_OBJETO == "1.0") |
|
|
|
|
|
if self.__version != "1.0": |
|
410 |
escribir("Cargado objeto " + self.__id + " con versión desconocida: " + |
escribir("Cargado objeto " + self.__id + " con versión desconocida: " + |
411 |
self.__version + ", cuando se esperaba " + Objeto.VERSION_OBJETO + |
self.__version + ", cuando se esperaba " + Objeto.VERSION_OBJETO) |
|
". Reseteando objeto.") |
|
|
if atributos.has_key('id'): |
|
|
self.__dict__ = {'_Objeto__id':atributos['id']} |
|
|
else: |
|
|
self.__dict__ = {'_Objeto__id':atributos['_Objeto__id']} |
|
|
self.__inicializar_objeto() |
|
|
|
|
412 |
|
|
413 |
|
|
414 |
# Código para pruebas unitarias del módulo. |
# Código para pruebas unitarias del módulo. |