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

Diff of /ambar/personaje.py

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

revision 1.19 by amoyav, Tue Aug 13 08:28:27 2002 UTC revision 1.20 by amoyav, Thu Aug 15 13:09:07 2002 UTC
# Line 179  class Personaje: Line 179  class Personaje:
179          self.equipo = []          self.equipo = []
180          self.salas_visitadas = {}          self.salas_visitadas = {}
181    
         from personajejugador import PersonajeJugador  
   
         if isinstance(self, PersonajeJugador):  
             # Dos opciones según el personaje venga ya controlado o no  
             if self.controlador == None:  
   
                 from mundo import Mundo  
                 from mundo import Mundo_localizar_sala  
   
                 # No controlado: arranca en el limbo y la sala pedida  
                 # se guarda para cuando alguien lo saque  
                 self.id_sala_original = sala.id  
                   
                 self.__dict__["sala"] = Mundo_localizar_sala(Mundo.ID_SALA_LIMBO)  
                 self.sala.entrar_personaje(self)  # se asume que el limbo tiene  
                                                   # capacidad de volumen infinita  
             else:  
   
                 from mundo import Mundo_personaje_activado  
   
                 # Controlado: se lleva a la sala pedida y se avisa al mundo  
                 if isinstance(self, PersonajeJugador):  
                     Mundo_personaje_activado(self)  
                     self.actuar_global(color(35) + self.id + " ha sido creado" + finl)  
                       
                 self.__dict__["sala"] = sala  
                 for otro_personaje in self.sala.personajes.values():  
                     if otro_personaje.controlador != None and (not isinstance(otro_personaje, PersonajeJugador) or otro_personaje.silencio == 'no'):  
                         otro_personaje.controlador.entra_personaje(self)  
                 self.sala.entrar_personaje(self)  # se asume que la sala de entrada tiene  
                                                   # capacidad de volumen infinita  
   
182    
183      def __setattr__(self, name, value):      def __setattr__(self, name, value):
184          """Realiza ajustes automáticos al modificar cualquier parámetro"""          """Realiza ajustes automáticos al modificar cualquier parámetro"""
# Line 234  class Personaje: Line 202  class Personaje:
202              self.liberar()              self.liberar()
203          if self.sala != None:          if self.sala != None:
204              self.sala.salir_personaje(self)              self.sala.salir_personaje(self)
             from personajejugador import PersonajeJugador # %% PARCHE!!!! la comprobacion de "silencio" debe hacerse dentro de InterfazPJ, pues solo afecta a PJs.  
205              for otro_personaje in self.sala.personajes.values():              for otro_personaje in self.sala.personajes.values():
206                  if otro_personaje.controlador != None and (not isinstance(otro_personaje, PersonajeJugador) or otro_personaje.silencio == 'no'):                  if otro_personaje.controlador != None:
207                      otro_personaje.controlador.sale_personaje(self, "el vacío")                      otro_personaje.controlador.sale_personaje(self, "el vacío")
208              self.__dict__["sala"] = None              self.__dict__["sala"] = None
209    
# Line 355  class Personaje: Line 322  class Personaje:
322                  total += 0                  total += 0
323          return total          return total
324                    
325    
326      def color_texto(self):      def color_texto(self):
327          """Color con el que se muestran los mensajes que dice este personaje"""          """Color con el que se muestran los mensajes que dice este personaje"""
   
         base = 0  
         for letra in self.nombre:  
             base = base + ord(letra)  
328                            
329          from personajenojugador import PersonajeNoJugador          from personajenojugador import PersonajeNoJugador
330          if isinstance(self, PersonajeNoJugador):          if isinstance(self, PersonajeNoJugador):
331              return chr(27) + "[1;" + str(35) + "m"              return chr(27) + "[1;" + str(35) + "m"
332          return color(31 + base % 7)          else:
333                base = 0
334                for letra in self.nombre:
335                    base = base + ord(letra)
336                return color(31 + base % 7)
337    
338                    
339      def mover(self, sala, automatico = 0):      def mover(self, sala, automatico = 0):
# Line 394  class Personaje: Line 362  class Personaje:
362              if not automatico:              if not automatico:
363                  if self.anterior != None:                  if self.anterior != None:
364                      self.noseguir();                      self.noseguir();
               
             from personajejugador import PersonajeJugador  
365    
366              self.sala.salir_personaje(self)              self.sala.salir_personaje(self)
367              for otro_personaje in self.sala.personajes.values():   #%% PARCHE!!!! la comprobacion de "silencio" debe hacerse dentro de InterfazPJ, pues solo afecta a PJs.              for otro_personaje in self.sala.personajes.values():
368                  if otro_personaje.controlador != None and (not isinstance(otro_personaje, PersonajeJugador) or otro_personaje.silencio == 'no'):                  if otro_personaje.controlador != None:
369                      otro_personaje.controlador.sale_personaje(self, sala.nombre)                      otro_personaje.controlador.sale_personaje(self, sala.nombre)
370    
371              self.__dict__["sala"] = sala              self.__dict__["sala"] = sala
372    
373              for otro_personaje in self.sala.personajes.values():              for otro_personaje in self.sala.personajes.values():
374                  if otro_personaje.controlador != None and (not isinstance(otro_personaje, PersonajeJugador) or otro_personaje.silencio == 'no'):                  if otro_personaje.controlador != None:
375                      otro_personaje.controlador.entra_personaje(self)                      otro_personaje.controlador.entra_personaje(self)
376              self.sala.entrar_personaje(self)              self.sala.entrar_personaje(self)
377    
# Line 632  class Personaje: Line 598  class Personaje:
598      def describir(self, accion):      def describir(self, accion):
599          """Muestra lo que hace el personaje, de forma que lo vean los que estan en la sala."""          """Muestra lo que hace el personaje, de forma que lo vean los que estan en la sala."""
600          if self.sala != None:          if self.sala != None:
             from personajejugador import PersonajeJugador # %% PARCHE!!!! la comprobacion de "silencio" debe hacerse dentro de InterfazPJ, pues solo afecta a PJs.  
601              for personaje in [ p for p in self.sala.personajes.values()              for personaje in [ p for p in self.sala.personajes.values()
602                                 if p != self and p.controlador != None and (not isinstance(p, PersonajeJugador) or p.silencio == "no")]:                                 if p != self and p.controlador != None ]:
603                  personaje.controlador.describir_entorno(accion)                  personaje.controlador.describir_entorno(accion)
604    
605    
606      def actuar_global(self, accion):      def actuar_global(self, accion):
607          """Muestra lo que hace el personaje, de forma que lo vean todos los jugadores conectados."""          """Muestra lo que hace el personaje, de forma que lo vean todos los jugadores conectados."""
608          from mundo import Mundo          from mundo import Mundo
         from personajejugador import PersonajeJugador # %% PARCHE!!!! la comprobacion de "silencio" debe hacerse dentro de InterfazPJ, pues solo afecta a PJs.  
609          for sala in Mundo.salas:          for sala in Mundo.salas:
610              for personaje in [ p for p in sala.personajes.values()              for personaje in [ p for p in sala.personajes.values()
611                                 if p != self and p.controlador != None and (not isinstance(p, PersonajeJugador) or p.silencio == "no")]:                                 if p != self and p.controlador != None ]:
612                  personaje.controlador.actua_global_personaje(self, accion)                  personaje.controlador.actua_global_personaje(self, accion)
613    
614    
# Line 675  class Personaje: Line 639  class Personaje:
639      def gritar(self, mensaje, idioma=None):      def gritar(self, mensaje, idioma=None):
640          """Dice un texto en voz muy alta de forma que lo oigan todos los jugadores conectados."""          """Dice un texto en voz muy alta de forma que lo oigan todos los jugadores conectados."""
641          from mundo import Mundo          from mundo import Mundo
         from personajejugador import PersonajeJugador # %% PARCHE!!!! la comprobacion de "silencio" debe hacerse dentro de InterfazPJ, pues solo afecta a PJs.  
642          for sala in Mundo.salas:          for sala in Mundo.salas:
643              for personaje in [ p for p in sala.personajes.values()              for personaje in [ p for p in sala.personajes.values()
644                                 if p != self and p.controlador != None and (not isinstance(p, PersonajeJugador) or p.silencio == "no")]:                                 if p != self and p.controlador != None ]:
645                  msg_f = self.mensaje_filtrado(mensaje, idioma, personaje)                  msg_f = self.mensaje_filtrado(mensaje, idioma, personaje)
646                  personaje.controlador.grita_personaje(self, msg_f)                  personaje.controlador.grita_personaje(self, msg_f)
647    

Legend:
Removed from v.1.19  
changed lines
  Added in v.1.20

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