45 |
- __personaje (Personaje): el personaje que controlamos |
- __personaje (Personaje): el personaje que controlamos |
46 |
- estado (string): el estado en el que se encuentra el interfaz |
- estado (string): el estado en el que se encuentra el interfaz |
47 |
- sub_estado (int): algunos estados tienen fases intermedias. Si no, None. |
- sub_estado (int): algunos estados tienen fases intermedias. Si no, None. |
48 |
- timer (Timer): temporizador usado opcionalmente |
- crono (CronoMine): cronometro usado opcionalmente |
49 |
- oponente (Personaje): otro personaje con quien el nuestro está combatiendo |
- oponente (Personaje): otro personaje con quien el nuestro está combatiendo |
50 |
- _fragmentos: lista de fragmentos que falta por decir |
- _fragmentos: lista de fragmentos que falta por decir |
51 |
- timers: temporizadores para mostrar los fragmentos restantes |
- cronos: cronometros para mostrar los fragmentos restantes |
52 |
|
|
53 |
Los siguientes atributos provocan ajustes automáticos al ser modificados: |
Los siguientes atributos provocan ajustes automáticos al ser modificados: |
54 |
|
|
59 |
_conversacion != None |
_conversacion != None |
60 |
__personaje != None |
__personaje != None |
61 |
len(_visitas) >= 0 |
len(_visitas) >= 0 |
62 |
len(timers) >= 0 |
len(cronos) >= 0 |
63 |
len(_fragmentos) >= 0 |
len(_fragmentos) >= 0 |
64 |
self.visita[i].activo <--> len(self._fragmentos) > 0 |
self.visita[i].activo <--> len(self._fragmentos) > 0 |
65 |
""" |
""" |
144 |
def temporizar(self, fragmentos): |
def temporizar(self, fragmentos): |
145 |
"""Programa la temporización del diálogo contenido en la lista de fragmentos.""" |
"""Programa la temporización del diálogo contenido en la lista de fragmentos.""" |
146 |
|
|
147 |
self.timers=[] |
self.cronos=[] |
148 |
self._fragmentos = [] |
self._fragmentos = [] |
149 |
timeout = 0 |
vencimiento = 0 |
150 |
|
|
151 |
visita = self._visitas[0] |
visita = self._visitas[0] |
152 |
for fragmento in fragmentos: |
for fragmento in fragmentos: |
157 |
if visita.hito(hito): |
if visita.hito(hito): |
158 |
continue # Fragmento repetido |
continue # Fragmento repetido |
159 |
else: |
else: |
160 |
self.timers.append(Timer(Mundo.timer_handler, timeout, lambda timer: visita.asignar_hito(hito))) |
self.cronos.append(CronoMine(Mundo.cronoMine_control, |
161 |
|
FechaHoraMineRel(segundos=vencimiento), |
162 |
|
lambda crono: visita.asignar_hito(hito))) |
163 |
|
|
164 |
# Asigna temporizador para el fragmento |
# Asigna cronometro para el fragmento |
165 |
self._fragmentos.append(copy.copy(fragmento)) |
self._fragmentos.append(copy.copy(fragmento)) |
166 |
print "temporizado " + str(timeout) + " segundos: " + str(fragmento) |
print "cronometrado " + str(vencimiento) + " segundos: " + str(fragmento) |
167 |
self.timers.append(Timer(Mundo.timer_handler, timeout, lambda timer: self.show())) |
self.cronos.append(CronoMine(Mundo.cronoMine_control, |
168 |
timeout = timeout + fragmento.retardo() |
FechaHoraMineRel(segundos=vencimiento), |
169 |
self.timers.append(Timer(Mundo.timer_handler, timeout, lambda timer: self.anular_conversacion())) |
lambda crono: self.show())) |
170 |
|
vencimiento = vencimiento + fragmento.retardo() |
171 |
|
self.cronos.append(CronoMine(Mundo.cronoMine_control, |
172 |
|
FechaHoraMineRel(segundos=vencimiento), |
173 |
|
lambda crono: self.anular_conversacion())) |
174 |
|
|
175 |
def show(self): |
def show(self): |
176 |
try: |
try: |
180 |
fragmento = self._fragmentos[0] |
fragmento = self._fragmentos[0] |
181 |
visita = self._visitas[0] |
visita = self._visitas[0] |
182 |
del self._fragmentos[0] |
del self._fragmentos[0] |
183 |
del self.timers[0] |
del self.cronos[0] |
184 |
# if not self._fragmentos: |
# if not self._fragmentos: |
185 |
# self.anular_conversacion() |
# self.anular_conversacion() |
186 |
|
|
219 |
def anular_conversacion(self): |
def anular_conversacion(self): |
220 |
self._fragmentos = [] |
self._fragmentos = [] |
221 |
self._visitas[0].activo = None |
self._visitas[0].activo = None |
222 |
for timer in self.timers: |
for crono in self.cronos: |
223 |
# Anula los timers que no se han ejecutado aún, asignandoles la función nula |
# Anula los cronos que no se han ejecutado aún, asignandoles la función nula |
224 |
timer.timeout_func = lambda x: None |
crono.vencimiento_func = lambda x: None |
225 |
|
|
226 |
def sale_personaje(self, personaje, nombre_sala_destino): |
def sale_personaje(self, personaje, nombre_sala_destino): |
227 |
"""Metodo llamado cuando otro personaje sale de la misma sala. |
"""Metodo llamado cuando otro personaje sale de la misma sala. |