/[ambar]/ambar/personaje.py
ViewVC logotype

Diff of /ambar/personaje.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2.7 by pabloruiz, Wed Oct 2 21:54:39 2002 UTC revision 2.8 by amoyav, Sun Nov 10 13:48:16 2002 UTC
# Line 136  class Personaje: Line 136  class Personaje:
136    
137      # Versión del sistema de personajes (se incrementa al cambiar cualquiera      # Versión del sistema de personajes (se incrementa al cambiar cualquiera
138      # de Personaje, PersonajeJugador o PersonajeNoJugador)      # de Personaje, PersonajeJugador o PersonajeNoJugador)
139      VERSION = '1.4'      VERSION = '1.5'
140    
141      # Resultados de comparar otro personaje con este      # Resultados de comparar otro personaje con este
142      COMP_INF_MAS_FUERTE   = 9      COMP_INF_MAS_FUERTE   = 9
# Line 197  class Personaje: Line 197  class Personaje:
197              self.__cuerpo[posicion] = None              self.__cuerpo[posicion] = None
198    
199    
200      def __setattr__(self, name, value):  #    def __setattr__(self, name, value):
201          """Realiza ajustes automáticos al modificar cualquier parámetro"""  #        """Realiza ajustes automáticos al modificar cualquier parámetro"""
202    #
203          # Esto es de momento, para verificar que nadie intenta tocar esto  #        # Esto es de momento, para verificar que nadie intenta tocar esto
204          # directamente. Cuando tenga un rato, pondré todos los atributos  #        # directamente. Cuando tenga un rato, pondré todos los atributos
205          # privados, y ya se podrá quitar esto y todos los self.__dict__[]...  #        # privados, y ya se podrá quitar esto y todos los self.__dict__[]...
206          if name == "experiencia":  #        if name == "experiencia":
207              raise AttributeError("la experiencia hay que cambiarla con método poner_experiencia()")  #            raise AttributeError("la experiencia hay que cambiarla con método poner_experiencia()")
208          elif name == "nivel":  #        elif name == "nivel":
209              raise AttributeError("el nivel hay que cambiarlo con método poner_nivel()")  #            raise AttributeError("el nivel hay que cambiarlo con método poner_nivel()")
210          elif name == "sala":  #        elif name == "sala":
211              raise AttributeError("la sala hay que cambiarla con método mover()")  #            raise AttributeError("la sala hay que cambiarla con método mover()")
212          else:  #        else:
213              self.__dict__[name] = value  #            self.__dict__[name] = value
214    
215    
216      def __del__(self):      def __del__(self):
# Line 218  class Personaje: Line 218  class Personaje:
218          if self.controlador != None:          if self.controlador != None:
219              self.liberar()              self.liberar()
220          if self.sala != None:          if self.sala != None:
221              self.sala.salir_personaje(self)              if self in self.sala.personajes.values():
222              for otro_personaje in self.sala.personajes.values():                  self.sala.salir_personaje(self)
223                  if otro_personaje.controlador != None:                  for otro_personaje in self.sala.personajes.values():
224                      otro_personaje.controlador.sale_personaje(self, "el vacío")                      if otro_personaje.controlador != None:
225                            otro_personaje.controlador.sale_personaje(self, "el vacío")
226              self.__dict__["sala"] = None              self.__dict__["sala"] = None
227    
228    
# Line 249  class Personaje: Line 250  class Personaje:
250    
251    
252      def __setstate__(self, atributos):      def __setstate__(self, atributos):
253          """Método llamado para restaurar los atributos provinientes de un          """Método llamado para restaurar los atributos provinientes de un pickle."""
         pickle."""  
254          from personajenojugador import PersonajeNoJugador          from personajenojugador import PersonajeNoJugador
255          from interfazpnj import InterfazPNJ          from interfazpnj import InterfazPNJ
256    
257          self.__dict__ = atributos          self.__dict__ = atributos
258    
         # Recuperar el controlador  
         if isinstance(self, PersonajeNoJugador):  
   
             # PNJ: se crea el controlador al momento  
             self.controlador_automatico()  
   
         else:  
   
             # PJ: el controlador se restaura a None  
             self.__dict__["controlador"] = None  
   
         # Recuperar los idiomas, buscando por nombre.  
         idiomas_instancias = {}  
         for idioma_nombre in atributos["idiomas"].keys():  
             idioma = Idioma_buscar(idioma_nombre)  
             idiomas_instancias[idioma] = atributos["idiomas"][idioma_nombre]  
   
         self.__dict__["idiomas"] = idiomas_instancias  
   
         if isinstance(atributos["idioma_base"], Idioma):  
             idioma_base = Idioma_buscar(atributos["idioma_base"].nombre)  # parche para arreglar algunos pjs que se grabaron mal  
         else:  
             idioma_base = Idioma_buscar(atributos["idioma_base"])  
         self.__dict__["idioma_base"] = idioma_base  
   
259          # Verificar la versión.          # Verificar la versión.
260          assert(Personaje.VERSION == "1.4")                  assert(Personaje.VERSION == "1.5")        
261          while self.version != "1.4":          while self.version != "1.5":
262                            
263              if not self.__dict__.has_key("version"):              if not self.__dict__.has_key("version"):
264                  raise ValueError("Cargado personaje " + self.id + " obsoleto: sin versión" +                  raise ValueError("Cargado personaje " + self.id + " obsoleto: sin versión" +
# Line 339  class Personaje: Line 314  class Personaje:
314                  self.ids_amigos = {}                  self.ids_amigos = {}
315                  self.version = "1.4"                  self.version = "1.4"
316                  escribir("Convertido personaje " + self.id + " a versión 1.4")                  escribir("Convertido personaje " + self.id + " a versión 1.4")
317                elif self.version == "1.4":
318                    # Versión 1.4 -> 1.5: (solo pnj) quitar posesion y añadir autor, area,
319                    # tipo_controlador y datos_controlador
320                    if isinstance(self, PersonajeNoJugador):
321                        del self.posesion
322                        self._PersonajeNoJugador__autor = "hirunatan"
323                        self._PersonajeNoJugador__area = ""
324                        if self.id.split('%')[0].lower() == "tutora":
325                            self._PersonajeNoJugador__tipo_controlador = "hablante"
326                            self._PersonajeNoJugador__datos_controlador = "tutora"
327                        elif self.id.split('%')[0].lower() == "posadero":
328                            self._PersonajeNoJugador__tipo_controlador = "hablante"
329                            self._PersonajeNoJugador__datos_controlador = "posadero"
330                        else:
331                            self._PersonajeNoJugador__tipo_controlador = "estandar"
332                            self._PersonajeNoJugador__datos_controlador = ""
333                    self.version = "1.5"
334                    escribir("Convertido personaje " + self.id + " a versión 1.5")
335              else:              else:
336                  raise ValueError("Cargado personaje " + self.id + " con versión desconocida: " +                  raise ValueError("Cargado personaje " + self.id + " con versión desconocida: " +
337                                   self.version + " cuando se esperaba " + Personaje.VERSION)                                                                   self.version + " cuando se esperaba " + Personaje.VERSION)                                
338    
339            # Recuperar el controlador
340            if isinstance(self, PersonajeNoJugador):
341    
342                # PNJ: se crea el controlador al momento
343                self.controlador_automatico()
344    
345            else:
346    
347                # PJ: el controlador se restaura a None
348                self.__dict__["controlador"] = None
349    
350            # Recuperar los idiomas, buscando por nombre.
351            idiomas_instancias = {}
352            for idioma_nombre in atributos["idiomas"].keys():
353                idioma = Idioma_buscar(idioma_nombre)
354                idiomas_instancias[idioma] = atributos["idiomas"][idioma_nombre]
355    
356            self.__dict__["idiomas"] = idiomas_instancias
357    
358            if isinstance(atributos["idioma_base"], Idioma):
359                idioma_base = Idioma_buscar(atributos["idioma_base"].nombre)  # parche para arreglar algunos pjs que se grabaron mal
360            else:
361                idioma_base = Idioma_buscar(atributos["idioma_base"])
362            self.__dict__["idioma_base"] = idioma_base
363    
364    
365      def mochila(self):      def mochila(self):
366          return self.__mochila          return self.__mochila

Legend:
Removed from v.2.7  
changed lines
  Added in v.2.8

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26