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. |
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 |
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""" |
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 |
|
|
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): |
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): |