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

Diff of /ambar/objeto.py

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

revision 1.7 by pabloruiz, Wed Jul 3 11:44:31 2002 UTC revision 1.8 by amoyav, Fri Aug 16 08:41:13 2002 UTC
# Line 43  class Objeto: Line 43  class Objeto:
43       - autor (string): identifica al autor del objeto.       - autor (string): identifica al autor del objeto.
44       - version (int): la versión del tipo de objeto.       - version (int): la versión del tipo de objeto.
45       - comentario (string): un metacomentario acerca del objeto.       - comentario (string): un metacomentario acerca del objeto.
46         - area (string): el area a la que pertenece el objeto, si es que lo necesita.
47       - id (string): identifica univocamente al objeto       - id (string): identifica univocamente al objeto
48       - nombre (string): Una breve frase informando de qué es el objeto.       - nombre (string): Una breve frase informando de qué es el objeto.
49       - descripcion (lista de diccionarios): una lista de diccionarios que contiene cada uno una dificultad y un string asociado.       - descripcion ({String:any}[]): una lista de diccionarios que contiene cada uno:
50       - propiedades (lista de diccionarios): una lista de diccionarios que contiene cada uno una propiedad y su valor.           - "dificultad" (int): de 1 a 100
51           - aura (int): de 1 a 100           - "texto" (string): el contenido del item de descripcion
52           - volumen (str): en relación a 1 unidad de persona.       - tipo (string): el tipo de material del objeto.
53           - peso (int): en gramos       - categoria (string): el tipo de uso generico del objeto.
54           - consumible (str): sí o no       - peso (float): en kilos
55           - cargas (int): el número de veces que puede ser usado antes de destruirse o volverse inservible.       - volumen (float): en relación a 1 unidad de persona.
56           - valor (int): en monedas de estaño.       - cargas (int): el número de veces que puede ser usado antes de destruirse o
57           - estado (int): de 1 a 100.                       volverse inservible. El valor 0 indica que no tiene limite.
58                 - valor (int): en monedas de estaño.
59       - requisitos (lista de diccionarios): una lista de diccionarios que contiene atributos (y un valor númerico) necesarios para poder usar el objeto.       - estado (int): de 0 a 100.
60             - aura (int): de 0 a 100
61       - efectos (lista de diccionarios): una lista de diccionarios que contiene una serie de atributos o habilidades que se ven afectadas y en qué grado.       - usos ({String:any}[]): lista de usos del objeto, siendo cada uso un diccionario:
62             - "tipo" (string): el tipo de uso ("comer", "poner", "lanzar", etc.)
63             - "posicion" (string): si el uso es "poner", en que parte del cuerpo se pone
64             - "gasto" (int): el numero de cargas que consume cada uso
65             - "msg" (string): el mensaje que aparece cuando se usa
66             - "duracion" (int): el numero de segundos que dura el efecto (0 = indeterminado)
67             - "requisitos"...
68             - "efectos"...
69    
70      Al instanciar un objeto, se crea nuevo y se lee desde el fichero de descripcion de objeto,      Al instanciar un objeto, se crea nuevo y se lee desde el fichero de descripcion de objeto,
71      poniendola en su estado inicial (en una sala). Esta instancia podrá pasar a manos de pjs y pnjs.      poniendola en su estado inicial (en una sala). Esta instancia podrá pasar a manos de pjs y pnjs.
# Line 68  Invariantes: Line 76  Invariantes:
76      version != None      version != None
77      autor != None      autor != None
78      comentario != None      comentario != None
79        area != None
80      nombre != None      nombre != None
81      propiedades !=None      tipo != None
82      aura in range(0,100)      categoria != None
     volumen > 0  
83      peso > 0      peso > 0
84      valor > 0      volumen > 0
85      cargas > 0      cargas > 0
86        valor > 0
87      estado in range(0,100)      estado in range(0,100)
88      consumible in ["si", "no"]      aura in range(0,100)
89            
90      descripcion != None      descripcion != None
91      len(descripcion) >= 0      len(descripcion) >= 0
# Line 95  Invariantes: Line 104  Invariantes:
104      DIR_OBJETOS = 'objetos'      DIR_OBJETOS = 'objetos'
105    
106    
   
107      def __init__(self, archivo):      def __init__(self, archivo):
108    
109          """Método inicial para leer los datos de un fichero de objeto"""          """Método inicial para leer los datos de un fichero de objeto"""
# Line 119  Invariantes: Line 127  Invariantes:
127          self.parsear_usos(self.source)          self.parsear_usos(self.source)
128    
129          del self.source          del self.source
         del self.descripcion  
130          del self.usos_posibles          del self.usos_posibles
131                    
132            
# Line 130  Invariantes: Line 137  Invariantes:
137          for node in fuente.childNodes[:]:          for node in fuente.childNodes[:]:
138              if  not 'Element:' in str(node).split(): fuente.childNodes.remove(node)              if  not 'Element:' in str(node).split(): fuente.childNodes.remove(node)
139                    
140    
141      def parsear_objeto(self, fuente):      def parsear_objeto(self, fuente):
142          """Extrae la información del elemento objeto:          """Extrae la información del elemento objeto: autor, version, comentario, area."""
             autor: el autor de la sala  
             version: la versión del tipo de sala"""  
143    
144          self.autor = fuente.attributes["autor"].value.encode('ISO-8859-1')          self.autor = fuente.attributes["autor"].value.encode('ISO-8859-1')
145          self.version = fuente.attributes["version"].value.encode('ISO-8859-1')          self.version = fuente.attributes["version"].value.encode('ISO-8859-1')
146          try:          try:
147              self.comentario = fuente.attributes["comentario"].value.encode('ISO-8859-1')              self.comentario = fuente.attributes["comentario"].value.encode('ISO-8859-1')
148          except:          except:
149              self.comentario = 'nada'              self.comentario = ""
150            try:
151                self.area = fuente.attributes["area"].value.encode('ISO-8859-1')
152            except:
153                self.area = ""
154    
155                    
156      def parsear_id(self, fuente):      def parsear_id(self, fuente):
# Line 159  Invariantes: Line 169  Invariantes:
169          de descripcion del objeto"""          de descripcion del objeto"""
170                    
171          for node in fuente.childNodes[2].childNodes[:]:          for node in fuente.childNodes[2].childNodes[:]:
172              if  not 'Element:' in str(node).split(): fuente.childNodes[2].childNodes.remove(node)              if not 'Element:' in str(node).split():
173                    fuente.childNodes[2].childNodes.remove(node)
174                                            
175                    self.descripcion=[]
         self.descripcion=fuente.childNodes[2]  
         self.items=[]  
176    
177          for item in self.descripcion.childNodes[:]:          nodo_descripcion=fuente.childNodes[2]
178    
179            for item in nodo_descripcion.childNodes[:]:
180              texto_item=""              texto_item=""
181              for frase in item.childNodes[:]:              for frase in item.childNodes[:]:
   
182                  frase.data=frase.data.encode('ISO-8859-1')                  frase.data=frase.data.encode('ISO-8859-1')
   
183                  texto_item=texto_item+frase.data                  texto_item=texto_item+frase.data
184    
185                texto_item = " ".join(texto_item.split())
186                            
187              if item._attrs == {}: dif_item = 0              if item._attrs == {}: dif_item = 0
188              else:              else:
189                  dif_item=int(item._attrs.get('dificultad').value)                  dif_item=int(item._attrs.get('dificultad').value)
190                                    
191              self.items.append({"dificultad":dif_item,"texto":texto_item})              self.descripcion.append({"dificultad":dif_item,"texto":texto_item})
192                            
193      def parsear_propiedades(self, fuente):            def parsear_propiedades(self, fuente):      
194                                    
195          self.aura=int(fuente.childNodes[3].attributes["aura"].value)          try:
196          self.volumen=float(fuente.childNodes[3].attributes["volumen"].value)              self.tipo=fuente.childNodes[3].attributes["tipo"].value.encode('ISO-8859-1')
197            except:
198                self.tipo=""
199            try:
200                self.categoria=fuente.childNodes[3].attributes["categoria"].value.encode('ISO-8859-1')
201            except:
202                self.categoria=""
203          self.peso=float(fuente.childNodes[3].attributes["peso"].value)          self.peso=float(fuente.childNodes[3].attributes["peso"].value)
204            self.volumen=float(fuente.childNodes[3].attributes["volumen"].value)
205          try:          try:
206              self.cargas=int(fuente.childNodes[3].attributes["cargas"].value)              self.cargas=int(fuente.childNodes[3].attributes["cargas"].value)
207          except:          except:
208              self.cargas=1              self.cargas=1
209          self.valor=int(fuente.childNodes[3].attributes["valor"].value)          self.valor=int(fuente.childNodes[3].attributes["valor"].value)
210          self.estado=int(fuente.childNodes[3].attributes["estado"].value)          self.estado=int(fuente.childNodes[3].attributes["estado"].value)
211            self.aura=int(fuente.childNodes[3].attributes["aura"].value)
212        
213    
214      def parsear_usos(self, fuente):      def parsear_usos(self, fuente):

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

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