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

Diff of /ambar/guiontemporizado.py

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

revision 1.1 by TuringTest, Sun Aug 24 23:46:01 2003 UTC revision 1.2 by amoyav, Sun Aug 31 12:07:37 2003 UTC
# Line 70  class GuionTemporizado(Guion): Line 70  class GuionTemporizado(Guion):
70            
71      # Constructor      # Constructor
72    
73      def __init__(self, elem_guion, macros, macros_extra = {}):      def __init__(self, elem_guion, macros_tipos, macros_extra = {}):
74          """Parsea un nodo conteniendo una lista de elementos <accion>, <requisito> o <guion>.          """Parsea un nodo conteniendo una lista de elementos <accion>, <requisito> o <guion>.
75                    
76          macros ((string, string)[]) es una lista con los nombres y tipos de las          macros_tipos ((string, string)[]) es una lista con los nombres y tipos de las
77          macros permitidos en el contexto de este guion.          macros permitidos en el contexto de este guion.
78                    
79          macros_extra (string:any) es un diccionario de macros que ser?n pasados          macros_extra (string:any) es un diccionario de macros que ser?n pasados
# Line 81  class GuionTemporizado(Guion): Line 81  class GuionTemporizado(Guion):
81                    
82          Requiere:          Requiere:
83              elem_guion != None              elem_guion != None
84              macros != None              macros_tipos != None
85                macros_extra != None
86          """          """
87                    
88          # Atributos privados:          # Atributos privados:
# Line 92  class GuionTemporizado(Guion): Line 93  class GuionTemporizado(Guion):
93          #          #
94          #                 Invariantes:          #                 Invariantes:
95          #                     __id == None -> __fecha_fichero = None          #                     __id == None -> __fecha_fichero = None
96              #                     __id != None -> __fecha_fichero >= 0          #                     __id != None -> __fecha_fichero >= 0
97                    
98          if extraer_nombre_xml(elem_guion) == 'desc_guion':          if extraer_nombre_xml(elem_guion) == 'desc_guion':
99                            
# Line 146  class GuionTemporizado(Guion): Line 147  class GuionTemporizado(Guion):
147                    
148          self.__macros_extra = macros_extra          self.__macros_extra = macros_extra
149          self.__secuencia = []          self.__secuencia = []
150          self.__macros = []          self.__macros_valores = []
151          self.__temporizador = None          self.__temporizador = None
152          self.__sucesos = None          self.__sucesos = None
153          self.__callbacks = []          self.__callbacks = []
154                    
155          for elem in elem_guion.childNodes:          for elem in elem_guion.childNodes:
156              if extraer_nombre_xml(elem) == "accion":              if extraer_nombre_xml(elem) == "accion":
157                  acc = Accion.nueva_xml(elem, macros)                  acc = Accion.nueva_xml(elem, macros_tipos)
158                  self.__secuencia.append(Accion.nueva_xml(elem, macros))                  self.__secuencia.append(Accion.nueva_xml(elem, macros_tipos))
159              elif extraer_nombre_xml(elem) == "requisito":              elif extraer_nombre_xml(elem) == "requisito":
160                  self.__secuencia.append(Requisito.nuevo_xml(elem, macros))                  self.__secuencia.append(Requisito.nuevo_xml(elem, macros_tipos))
161              elif extraer_nombre_xml(elem) == "guion":              elif extraer_nombre_xml(elem) == "guion":
162                  self.__parsear_fichero(elem, macros, macros_extra)                  self.__parsear_fichero(elem, macros_tipos, macros_extra)
163    
164    
165      # M?todos privados      # M?todos privados
# Line 183  class GuionTemporizado(Guion): Line 184  class GuionTemporizado(Guion):
184          trazar("el texto vale: %s" % texto, "pnj", 2)          trazar("el texto vale: %s" % texto, "pnj", 2)
185          trazar("el id es: %s" % personaje, "pnj", 2)          trazar("el id es: %s" % personaje, "pnj", 2)
186          trazar("el idioma es: %s" % idioma, "pnj", 2)          trazar("el idioma es: %s" % idioma, "pnj", 2)
187          trazar("el personaje es: %s" % self.__macros[personaje], "pnj", 2)          trazar("el personaje es: %s" % self.__macros_valores[personaje], "pnj", 2)
188          if personaje and personaje[0] == "$":          if personaje and personaje[0] == "$":
189              fluidez = 5 - self.__macros[personaje].idiomas.get(idioma, 4)              fluidez = 5 - self.__macros_valores[personaje].idiomas.get(idioma, 4)
190          else:          else:
191              sala = self.__macros["$sala"]              sala = self.__macros_valores["$sala"]
192              fluidez = 5 - sala.personajes[personaje].idiomas.get(idioma, 4)              fluidez = 5 - sala.personajes[personaje].idiomas.get(idioma, 4)
193                    
194          return ((1.5 * len(texto) + self.__velocidad ) / float(self.__velocidad)) + fluidez          return ((1.5 * len(texto) + self.__velocidad ) / float(self.__velocidad)) + fluidez
# Line 205  class GuionTemporizado(Guion): Line 206  class GuionTemporizado(Guion):
206                      elif instancia.nombre == "cancelar":                      elif instancia.nombre == "cancelar":
207                          self.__resultado = 0                          self.__resultado = 0
208                      else:                      else:
209                          instancia.ejecutar(self.__macros)                          instancia.ejecutar(self.__macros_valores)
210                          self.__resultado = 1                          self.__resultado = 1
211    
212                      #Determina si es una accion instantanea o requiere temporizacion                      #Determina si es una accion instantanea o requiere temporizacion
# Line 219  class GuionTemporizado(Guion): Line 220  class GuionTemporizado(Guion):
220                          self.__siguiente_suceso()                          self.__siguiente_suceso()
221                  elif instancia.__class__.__name__ == "Requisito":                  elif instancia.__class__.__name__ == "Requisito":
222                      #Ejecucion condicional de acciones                      #Ejecucion condicional de acciones
223                      r = instancia.comprobar(self.__macros)                      r = instancia.comprobar(self.__macros_valores)
224                      if r != None:                      if r != None:
225                          self.__resultado = r                                              self.__resultado = r                    
226                      self.__siguiente_suceso()                      self.__siguiente_suceso()
227                  elif instancia.__class__.__name__ == "Guion":                  elif instancia.__class__.__name__ == "Guion":
228                      #Ejecucion de un subguion                      #Ejecucion de un subguion
229                      self.__resultado = instancia.ejecutar(self.__macros)                      self.__resultado = instancia.ejecutar(self.__macros_valores)
230                      self.__siguiente_suceso()                      self.__siguiente_suceso()
231              except StopIteration:              except StopIteration:
232                  #Final de la secuencia: limpia el estado y llama a los callbacks registrados                  #Final de la secuencia: limpia el estado y llama a los callbacks registrados
233                  self.__sucesos = []                  self.__sucesos = []
234                  self.__macros = []                  self.__macros_valores = []
235                  for finalizar in self.__callbacks:                  for finalizar in self.__callbacks:
236                      finalizar(self, cancelado=self.__resultado)                      finalizar(self, cancelado=self.__resultado)
237                  self.__callbacks = []                  self.__callbacks = []
# Line 242  class GuionTemporizado(Guion): Line 243  class GuionTemporizado(Guion):
243            
244      # M?todos normales      # M?todos normales
245            
246      def ejecutar(self, macros, finalizar=[]):      def ejecutar(self, macros_valores, finalizar=[]):
247          """Comienza a ejecutar el guion en cuestion.          """Comienza a ejecutar el guion en cuestion.
248                    
249              macros({String:any}) es un diccionario de los nombres de las macros a su valor          macros_valores({String:any}) es un diccionario de los nombres de las macros a su valor
250          final.          final.
251                    
252          Devuelve el resultado final de "aceptar" (1) o "cancelar" (0), o bien None          Devuelve el resultado final de "aceptar" (1) o "cancelar" (0), o bien None
# Line 254  class GuionTemporizado(Guion): Line 255  class GuionTemporizado(Guion):
255              Almacena el callback para llamarlo al terminar la secuencia              Almacena el callback para llamarlo al terminar la secuencia
256                    
257          Requiere:          Requiere:
258              macros != None              macros_valores != None
259          """          """
260          trazar("ejecutando guion temporizado %s" % self.__id, "pnj")          trazar("ejecutando guion temporizado %s" % self.__id, "pnj")
261          resultado = None          resultado = None
262                    
263          macros_total = macros          macros_total = macros_valores
264          macros_total.update(self.__macros_extra)          macros_total.update(self.__macros_extra)
265                    
266          if finalizar:          if finalizar:
# Line 267  class GuionTemporizado(Guion): Line 268  class GuionTemporizado(Guion):
268                            
269          self.__sucesos = self.__generador_sucesos()          self.__sucesos = self.__generador_sucesos()
270          self.__resultado = 0          self.__resultado = 0
271          self.__macros = macros_total          self.__macros_valores = macros_total
272          self.__siguiente_suceso()          self.__siguiente_suceso()
273                    
274                    

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

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