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

Diff of /ambar/requisito.py

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

revision 2.3 by amoyav, Sat Jul 5 23:25:52 2003 UTC revision 2.4 by amoyav, Wed Jul 30 14:17:58 2003 UTC
# Line 23  Line 23 
23  """Clase Requisito."""  """Clase Requisito."""
24    
25  import sys  import sys
26    import sre
27  from utils import *  from utils import *
28  from idioma import *  from idioma import *
29    
# Line 90  class Requisito(object): Line 91  class Requisito(object):
91              "raza":                  [ ("id", "Personaje"), ("comparador", "string"), ("valor", "string") ],              "raza":                  [ ("id", "Personaje"), ("comparador", "string"), ("valor", "string") ],
92              "profesion":             [ ("id", "Personaje"), ("comparador", "string"), ("valor", "string") ],              "profesion":             [ ("id", "Personaje"), ("comparador", "string"), ("valor", "string") ],
93              "sexo":                  [ ("id", "Personaje"), ("comparador", "string"), ("valor", "string") ],              "sexo":                  [ ("id", "Personaje"), ("comparador", "string"), ("valor", "string") ],
94              "objeto_en_mochila":     [ ("id", "Personaje"), ("id_objeto", "string"), ("comparador", "string"), ("valor", "si_no") ],              "objeto_en_mochila":     [ ("id", "Personaje"), ("nombre_objeto", "string"), ("comparador", "string"), ("valor", "si_no") ],
95              "objeto_puesto":         [ ("id", "Personaje"), ("id_objeto", "string"), ("posicion", "string"), ("comparador", "string"), ("valor", "si_no") ],              "objeto_puesto":         [ ("id", "Personaje"), ("nombre_objeto", "string"), ("posicion", "string"), ("comparador", "string"), ("valor", "si_no") ],
96              "confianza":             [ ("id", "Personaje"), ("personaje_objeto", "Personaje"), ("comparador", "string"), ("valor", "numero") ],              "confianza":             [ ("id", "Personaje"), ("personaje_objeto", "Personaje"), ("comparador", "string"), ("valor", "numero") ],
97              "resultado_tirada":      [ ("id", "Personaje"), ("id_tirada", "string"), ("dificultad", "numero"), ("comparador", "string"), ("valor", "numero") ],              "resultado_tirada":      [ ("id", "Personaje"), ("id_tirada", "string"), ("dificultad", "numero"), ("comparador", "string"), ("valor", "numero") ],
98              "resultado_competicion": [ ("id", "Personaje"), ("id_competicion", "string"), ("comparador", "string"), ("valor", "numero") ],              "resultado_competicion": [ ("id", "Personaje"), ("id_competicion", "string"), ("comparador", "string"), ("valor", "numero") ],
# Line 101  class Requisito(object): Line 102  class Requisito(object):
102          },          },
103    
104          "Objeto": {          "Objeto": {
105                "nombre":                [ ("id", "Objeto"), ("comparador", "string"), ("valor", "string") ],
106              "tipo":                  [ ("id", "Objeto"), ("comparador", "string"), ("valor", "string") ],              "tipo":                  [ ("id", "Objeto"), ("comparador", "string"), ("valor", "string") ],
107              "categoria":             [ ("id", "Objeto"), ("comparador", "string"), ("valor", "string") ],              "categoria":             [ ("id", "Objeto"), ("comparador", "string"), ("valor", "string") ],
108              "peso":                  [ ("id", "Objeto"), ("comparador", "string"), ("valor", "numero") ],              "peso":                  [ ("id", "Objeto"), ("comparador", "string"), ("valor", "numero") ],
# Line 110  class Requisito(object): Line 112  class Requisito(object):
112          },          },
113    
114          "Sala": {          "Sala": {
115                "nombre":                [ ("id", "Sala"), ("comparador", "string"), ("valor", "string") ],
116              "tipo":                  [ ("id", "Sala"), ("comparador", "string"), ("valor", "string") ],              "tipo":                  [ ("id", "Sala"), ("comparador", "string"), ("valor", "string") ],
117              "subtipo":               [ ("id", "Sala"), ("comparador", "string"), ("valor", "string") ],              "subtipo":               [ ("id", "Sala"), ("comparador", "string"), ("valor", "string") ],
118              "volumen":               [ ("id", "Sala"), ("comparador", "string"), ("valor", "numero") ],              "volumen":               [ ("id", "Sala"), ("comparador", "string"), ("valor", "numero") ],
119              "luz":                   [ ("id", "Sala"), ("comparador", "string"), ("valor", "numero") ],              "luz":                   [ ("id", "Sala"), ("comparador", "string"), ("valor", "numero") ],
120              "aura":                  [ ("id", "Sala"), ("comparador", "string"), ("valor", "numero") ],              "aura":                  [ ("id", "Sala"), ("comparador", "string"), ("valor", "numero") ],
121              "objeto_en_sala":        [ ("id", "Sala"), ("id_objeto", "string"), ("comparador", "string"), ("valor", "si_no") ]              "objeto_en_sala":        [ ("id", "Sala"), ("nombre_objeto", "string"), ("comparador", "string"), ("valor", "si_no") ]
122          },          },
123    
124          "mundo": {          "mundo": {
# Line 359  class Requisito(object): Line 362  class Requisito(object):
362                  else:                  else:
363                      valor_str = v                      valor_str = v
364    
365                  if valor_str == "*":                  if valor_str == "*" or valor_str == "+*":
366                      valor = sys.maxint                      valor = sys.maxint
367                  elif valor_str == "-*":                  elif valor_str == "-*":
368                      valor = -sys.maxint                      valor = -sys.maxint
# Line 416  class Requisito(object): Line 419  class Requisito(object):
419                  objeto_base = valor                  objeto_base = valor
420              elif parametro["nombre"] == "comparador":              elif parametro["nombre"] == "comparador":
421                  comparador = valor                  comparador = valor
422                    if comparador == "mayor":
423                        comparador = ">"
424                    elif comparador == "menor":
425                        comparador = "<"
426                    elif comparador == "igual" or comparador == "=":
427                        comparador = "=="
428                    elif comparador == "distinto" or comparador == "<>":
429                        comparador = "!="
430                    elif comparador == "mayor_o_igual":
431                        comparador = ">="
432                    elif comparador == "menor_o_igual":
433                        comparador = "<="
434              elif parametro["nombre"] == "valor":              elif parametro["nombre"] == "valor":
435                  valor_requisito = valor                  valor_requisito = valor
436              else:              else:
# Line 424  class Requisito(object): Line 439  class Requisito(object):
439          # Obtener el valor de la propiedad y ejecutar la serie que corresponda          # Obtener el valor de la propiedad y ejecutar la serie que corresponda
440          if len(parametros_resueltos) == 0:          if len(parametros_resueltos) == 0:
441              valor_propiedad = getattr(objeto_base, self.nombre, None)              valor_propiedad = getattr(objeto_base, self.nombre, None)
             if valor_propiedad != None:  
                 comparacion = eval("valor_propiedad " + str(comparador) + " " + str(valor_requisito))  
             else:  
                 comparacion = 0  
442          else:          else:
443              funcion = getattr(objeto_base, self.nombre, None)              funcion = getattr(objeto_base, self.nombre, None)
444              if funcion != None:              if funcion != None:
445                  valor_propiedad = apply(funcion, (), parametros_resueltos)                  valor_propiedad = apply(funcion, (), parametros_resueltos)
                 comparacion = eval("valor_propiedad " + str(comparador) + " " + str(valor_requisito))  
446              else:              else:
447                  comparacion = 0                  valor_propiedad = None
448    
449            if valor_propiedad != None:
450                if comparador == "es":
451                    expresion = str(valor_requisito)
452                    # Convertir la expresion regular de tipo ?* al estilo del módulo sre.
453                    expresion = "^" + expresion.replace("?", ".").replace("*", ".*") + "$"
454                    comparacion = sre.match(expresion, valor_propiedad)
455                else:
456                    comparacion = eval("valor_propiedad " + str(comparador) + " " + str(valor_requisito))
457            else:
458                comparacion = 0
459    
460          if comparacion:          if comparacion:
461              return self.__cumplido.ejecutar(macros)              return self.__cumplido.ejecutar(macros)

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