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

Diff of /ambar/sala.py

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

revision 2.12 by amoyav, Wed Jul 30 14:17:58 2003 UTC revision 2.13 by g2pudeto, Fri Aug 1 19:15:33 2003 UTC
# Line 379  class Sala(object): Line 379  class Sala(object):
379          #   (por cierto, no existe ningun self.__elem_sal en ningún sitio...)          #   (por cierto, no existe ningun self.__elem_sal en ningún sitio...)
380    
381                            
382      def __init__(self, id, conservar_arbol_xml = 0):      def __init__(self, id, conservar_arbol_xml = 0, editar_sala = False):
383          """Crea una sala nueva a partir de un fichero de descripción de sala.          """Crea una sala nueva a partir de un fichero de descripción de sala.
384                    
385          Requiere:          Requiere:
386            id != None            id != None
387            id corresponde con un fichero existente            id corresponde con un fichero existente
388          """          """
389            #GPT:Ojo, cuando se edita una sala, puede ser id = "" y no existir fichero
390            #Tengo ya la idea para evitar esto, en cuanto pueda lo arreglo, por ahora
391            #solo afecta a la invariancia en el caso de editar la sala
392            
393          # Atributos privados:          # Atributos privados:
394          #          #
395          # __fecha_fichero (int): fecha de la ultima modificacion del fichero de descripción          # __fecha_fichero (int): fecha de la ultima modificacion del fichero de descripción
# Line 397  class Sala(object): Line 400  class Sala(object):
400          # __arbol_xml (minidom.Document, opcional): arbol XML leido del fichero de descripcion.          # __arbol_xml (minidom.Document, opcional): arbol XML leido del fichero de descripcion.
401    
402          self.__id = id          self.__id = id
403          self.__inicializar_sala(conservar_arbol_xml)          self.__inicializar_sala(conservar_arbol_xml, editar_sala)
404    
405    
406      def __inicializar_sala(self, conservar_arbol_xml=0):      def __inicializar_sala(self, conservar_arbol_xml, editar_sala):
407          """Rellena todos los datos de la sala a partir de su fichero          """Rellena todos los datos de la sala a partir de su fichero
408          de descripcion.          de descripcion.
409          """          """
410          self.__personajes = {}          self.__personajes = {}
411          self.__n_jugadores = 0            self.__n_jugadores = 0  
412            if self.__id == "":
413                self.__version = Sala.VERSION_DESC_SALA
414                self.__autor = ""
415                self.__area = ""
416                self.__comentario = ""
417                self.__nombre = ""
418                self.__aura = 50
419                self.__tipo = "sin_tipo"
420                self.__subtipo = "sin_subtipo"
421                self.__volumen = 1
422                self.__luz = 50
423                self.__combate = "si"
424                self.__ocultabilidad = 50
425                self.__descripcion = []
426                self.__salidas = []
427                self.__objetos = []
428                self.__encuentros=[]
429            else:
430                archivo = os.path.join(Sala.DIR_DESC_SALAS, self.__id.split('-')[0],
431                                       self.__id + Sala.EXT_DESC_SALAS)
432        
433                self.__fecha_fichero = os.path.getmtime(archivo)
434                
435                arbol_xml = minidom.parse(archivo)
436                
437                elem_sala=arbol_xml.documentElement
438                self.__parsear_sala(elem_sala)
439        
440                elem_id = elem_sala.getElementsByTagName('id')[0]
441                self.__parsear_id(elem_id)
442        
443                elem_nombre = elem_sala.getElementsByTagName('nombre')[0]
444                self.__parsear_nombre(elem_nombre)
445        
446                elem_propiedades = elem_sala.getElementsByTagName('propiedades')[0]
447                self.__parsear_propiedades(elem_propiedades)
448                
449                elem_descripcion = elem_sala.getElementsByTagName('descripcion')[0]
450                self.__parsear_descripcion(elem_descripcion)
451                        
452                elem_salidas = elem_sala.getElementsByTagName('salidas')[0]
453                self.__parsear_salidas(elem_salidas)
454                
455                elem_objetos = elem_sala.getElementsByTagName('objetos')[0]
456                self.__parsear_objetos(elem_objetos, editar_sala)
457                
458                elem_encuentros = elem_sala.getElementsByTagName('encuentros')[0]
459                self.__parsear_encuentros(elem_encuentros, editar_sala)
460    
461          archivo = os.path.join(Sala.DIR_DESC_SALAS, self.__id.split('-')[0],              if conservar_arbol_xml:
462                                 self.__id + Sala.EXT_DESC_SALAS)                  self.__elem_sala=elem_sala
463                    self.__elem_id=elem_id
464          self.__fecha_fichero = os.path.getmtime(archivo)                  self.__elem_nombre=elem_nombre
465                            self.__elem_propiedades=elem_propiedades
466          arbol_xml = minidom.parse(archivo)                  self.__elem_descripcion=elem_descripcion
467                            self.__elem_salidas=elem_salidas
468          elem_sala=arbol_xml.documentElement                  self.__elem_objetos=elem_objetos
469          self.__parsear_sala(elem_sala)                  self.__elem_encuentros=elem_encuentros
470                    self.__arbol_xml = arbol_xml
471          elem_id = elem_sala.getElementsByTagName('id')[0]                      
         self.__parsear_id(elem_id)  
   
         elem_nombre = elem_sala.getElementsByTagName('nombre')[0]  
         self.__parsear_nombre(elem_nombre)  
   
         elem_propiedades = elem_sala.getElementsByTagName('propiedades')[0]  
         self.__parsear_propiedades(elem_propiedades)  
           
         elem_descripcion = elem_sala.getElementsByTagName('descripcion')[0]  
         self.__parsear_descripcion(elem_descripcion)  
                   
         elem_salidas = elem_sala.getElementsByTagName('salidas')[0]  
         self.__parsear_salidas(elem_salidas)  
           
         elem_objetos = elem_sala.getElementsByTagName('objetos')[0]  
         self.__parsear_objetos(elem_objetos)  
           
         elem_encuentros = elem_sala.getElementsByTagName('encuentros')[0]  
         self.__parsear_encuentros(elem_encuentros)  
   
         if conservar_arbol_xml:  
             self.__elem_sala=elem_sala  
             self.__elem_id=elem_id  
             self.__elem_nombre=elem_nombre  
             self.__elem_propiedades=elem_propiedades  
             self.__elem_descripcion=elem_descripcion  
             self.__elem_salidas=elem_salidas  
             self.__elem_objetos=elem_objetos  
             self.__elem_encuentros=elem_encuentros  
             self.__arbol_xml = arbol_xml  
                   
472                                
473      def __parsear_sala(self, elem_sala):      def __parsear_sala(self, elem_sala):
474          """Extrae la información del elemento sala:          """Extrae la información del elemento sala:
# Line 587  class Sala(object): Line 607  class Sala(object):
607                                     "mensaje_cerrado": mensaje_cerrado_salida})                                     "mensaje_cerrado": mensaje_cerrado_salida})
608    
609    
610      def __parsear_objetos(self, elem_objetos):      def __parsear_objetos(self, elem_objetos, editar_sala):
611          """Extrae toda la información de los objetos que hay en la sala inicialmente."""          """Extrae toda la información de los objetos que hay en la sala inicialmente."""
612    
613          self.__objetos = []          self.__objetos = []
# Line 647  class Sala(object): Line 667  class Sala(object):
667              else:              else:
668                  dif_objeto = 0                    dif_objeto = 0  
669    
670              instancias = []                  instancias = []
671              for i in range(cantidad_objeto):              if editar_sala == False:                
672                  instancia = Objeto(id_objeto)                  for i in range(cantidad_objeto):
673                  instancia.contener(self)                      instancias.append(Objeto(id_objeto))
674                  instancias.append(instancia)      
675                    self.__objetos.append({"id": id_objeto,
676              self.__objetos.append({"id": id_objeto,                                         "probabilidad": prob_objeto,
677                                     "probabilidad": prob_objeto,                             "maximo": max_objeto,
678                                     "maximo": max_objeto,                             "dificultad": dif_objeto,
679                                     "dificultad": dif_objeto,                             "instancias": instancias})
680                                     "instancias": instancias})              else:
681                    #GPT Hay que pasar la descripcion al parseado normal (no solo
682                    # cuando se este editando la sala) y modificar el pickle
683                    desc_objeto = extraer_contenido_xml(elem_objeto)
684                    self.__objetos.append({"id": id_objeto,
685                                           "probabilidad": prob_objeto,
686                                           "maximo": max_objeto,
687                                           "dificultad": dif_objeto,
688                                           "cantidad": cantidad_objeto,
689                                           "descripcion": desc_objeto})
690                    
691        def __parsear_encuentros(self, elem_encuentros, editar_sala):
     def __parsear_encuentros(self, elem_encuentros):  
692          """Extrae toda la información de los PNJs que hay en la sala inicialmente."""          """Extrae toda la información de los PNJs que hay en la sala inicialmente."""
693                    
694          #limpiar_nodos_text_xml(elem_encuentros)          #limpiar_nodos_text_xml(elem_encuentros)
# Line 715  class Sala(object): Line 743  class Sala(object):
743                  dif_encuentro = 0                  dif_encuentro = 0
744              desc_encuentro = extraer_contenido_xml(elem_encuentro)              desc_encuentro = extraer_contenido_xml(elem_encuentro)
745                            
746              self.__encuentros.append({"id": id_encuentro,              if editar_sala == False:
747                            "maximo": max_encuentro,                  self.__encuentros.append({"id": id_encuentro,
748                            "probabilidad": prob_encuentro,                                            "maximo": max_encuentro,
749                            "dificultad": dif_encuentro,                                            "probabilidad": prob_encuentro,
750                            "descripcion": desc_encuentro})                                            "dificultad": dif_encuentro,
751                                              "descripcion": desc_encuentro
752              escribir("Vamos a crear " + str(cant_encuentro) + " pnjs")                                            })
753              for i in range(cant_encuentro):  
754                  id_unico = id_encuentro + '%' + PersonajeNoJugador.nuevo_id()                  escribir("Vamos a crear " + str(cant_encuentro) + " pnjs")
755                  escribir("Vamos a crear a " + id_unico)                  for i in range(cant_encuentro):
756                  self.__personajes[id_unico] = PersonajeNoJugador.nuevo(id_unico, self)                      id_unico = id_encuentro + '%' + PersonajeNoJugador.nuevo_id()
757                        escribir("Vamos a crear a " + id_unico)
758                        self.__personajes[id_unico] = PersonajeNoJugador.nuevo(id_unico, self)
759                else:
760                    self.__encuentros.append({"id": id_encuentro,
761                                              "maximo": max_encuentro,
762                                              "probabilidad": prob_encuentro,
763                                              "dificultad": dif_encuentro,
764                                              "descripcion": desc_encuentro,
765                                              "cantidad":cant_encuentro
766                                              })    
767    
768      # Métodos normales      # Métodos normales
769    

Legend:
Removed from v.2.12  
changed lines
  Added in v.2.13

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