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

Diff of /ambar/interfazpnjhablante.py

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

revision 2.3 by amoyav, Thu Aug 29 12:18:21 2002 UTC revision 2.4 by amoyav, Sun Oct 27 10:16:28 2002 UTC
# Line 45  class InterfazPNJHablante(InterfazPNJ): Line 45  class InterfazPNJHablante(InterfazPNJ):
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    
# Line 59  class InterfazPNJHablante(InterfazPNJ): Line 59  class InterfazPNJHablante(InterfazPNJ):
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       """       """
# Line 144  class InterfazPNJHablante(InterfazPNJ): Line 144  class InterfazPNJHablante(InterfazPNJ):
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:
# Line 157  class InterfazPNJHablante(InterfazPNJ): Line 157  class InterfazPNJHablante(InterfazPNJ):
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:
# Line 174  class InterfazPNJHablante(InterfazPNJ): Line 180  class InterfazPNJHablante(InterfazPNJ):
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                            
# Line 213  class InterfazPNJHablante(InterfazPNJ): Line 219  class InterfazPNJHablante(InterfazPNJ):
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.

Legend:
Removed from v.2.3  
changed lines
  Added in v.2.4

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