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""" |
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 |
|
|
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): |
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 |
|
|
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 |
|
|
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 |
|
|