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

Diff of /ambar/sala.py

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

revision 1.36 by pabloruiz, Fri Aug 16 21:24:58 2002 UTC revision 1.37 by amoyav, Sat Aug 17 11:55:48 2002 UTC
# Line 17  Line 17 
17  #along with this program; if not, write to the Free Software  #along with this program; if not, write to the Free Software
18  #Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  #Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19  #  #
20  #Fichero: salaxml.py  #Fichero: sala.py
21    
22  """Clase Sala."""  """Clase Sala."""
23    
# Line 178  class Sala: Line 178  class Sala:
178          self.personajes = {}          self.personajes = {}
179          self.n_jugadores = 0              self.n_jugadores = 0    
180    
181          archivo = os.path.join(Sala.DIR_DESC_SALAS, self.id.split('-')[0], self.id + Sala.EXT_DESC_SALAS)          archivo = os.path.join(Sala.DIR_DESC_SALAS, self.id.split('-')[0],
182                                   self.id + Sala.EXT_DESC_SALAS)
183          stream = open(archivo)          stream = open(archivo)
184          doc_xml = minidom.parse(stream).documentElement          doc_xml = minidom.parse(stream).documentElement
185          stream.close()          stream.close()
# Line 186  class Sala: Line 187  class Sala:
187          self.__fecha_fichero = os.path.getmtime(archivo)          self.__fecha_fichero = os.path.getmtime(archivo)
188    
189          self.__iniciar_parseador(doc_xml)          self.__iniciar_parseador(doc_xml)
190    
191          self.__parsear_sala(doc_xml)          self.__parsear_sala(doc_xml)
192          self.__parsear_id(doc_xml)                self.__parsear_id(doc_xml)      
193          self.__parsear_nombre(doc_xml)            self.__parsear_nombre(doc_xml)  
# Line 223  class Sala: Line 225  class Sala:
225          try:          try:
226              self.comentario = doc_xml.attributes["comentario"].value.encode('ISO-8859-1')              self.comentario = doc_xml.attributes["comentario"].value.encode('ISO-8859-1')
227          except:          except:
228              self.comentario = "nada"              self.comentario = ""
229                    
230    
231      def __parsear_id(self, doc_xml):      def __parsear_id(self, doc_xml):
# Line 289  class Sala: Line 291  class Sala:
291                                    
292              self.descripcion.append({"dificultad": dif_item, "texto": texto_item})              self.descripcion.append({"dificultad": dif_item, "texto": texto_item})
293    
294    
295      def __parsear_decorativos(self, doc_xml):      def __parsear_decorativos(self, doc_xml):
296          """Extrae el texto y la dificultad asociada de los items decorativos de la sala"""          """Extrae el texto y la dificultad asociada de los items decorativos de la sala"""
297                    
# Line 561  class Sala: Line 564  class Sala:
564    
565          for objeto in self.objetos:          for objeto in self.objetos:
566              for instancia in objeto["instancias"]:              for instancia in objeto["instancias"]:
567                  ocupado += instancia.volumen                  ocupado += instancia.volumen()
568    
569          return ocupado          return ocupado
570    
# Line 589  class Sala: Line 592  class Sala:
592          if len(objeto["instancias"]) == 0 and objeto["probabilidad"] == 0:          if len(objeto["instancias"]) == 0 and objeto["probabilidad"] == 0:
593              del self.objetos[n_objeto]              del self.objetos[n_objeto]
594    
595          return instancia          instancia.activar()
   
596    
597  #%%    def coger_objeto(self, personaje, nombre_objeto):          return instancia
 #%%        """  
 #%%        Método que extrae un objeto de los objetos de la sala y lo añade al equipo del personaje.  
 #%%  
 #%%        Requiere:  
 #%%         personaje != None  
 #%%         nombre_objeto != None  
 #%%         tirada_percep_sala != None  
 #%%  
 #%%        Asegura:  
 #%%         encontrado 1 or 0.  
 #%%        """  
 #%%        encontrado = 0  
 #%%        existe_ya_uno = 0  
 #%%  
 #%%        for objeto in self.objetos[:]:  
 #%%            if objeto["id"] == nombre_objeto and len(objeto["instancias"]) > 0:  
 #%%                encontrado = 1  
 #%%  
 #%%                if len(personaje.equipo) == 0:  
 #%%                    personaje.equipo.append({"id":nombre_objeto,"instancias":[objeto["instancias"][0]]})  
 #%%                else:  
 #%%                    for objeto_en_equipo in personaje.equipo:  
 #%%                        if objeto_en_equipo["id"] == nombre_objeto:  
 #%%                            existe_ya_uno = 1  
 #%%                            objeto_en_equipo["instancias"].append(objeto["instancias"][0])  
 #%%                            if len(objeto["instancias"]) == 0 and objeto["probabilidad"] == 0:  
 #%%                                self.objetos.remove(objeto)  
 #%%                            break  
 #%%                    if existe_ya_uno == 0:  
 #%%                        personaje.equipo.append({"id":nombre_objeto,"instancias":[objeto["instancias"][0]]})  
 #%%                    else:  
 #%%                        pass  
 #%%  
 #%%                objeto["instancias"].pop(0)  
598    
599    
600      def dejar_objeto(self, instancia, dificultad = 0):      def dejar_objeto(self, instancia, dificultad = 0):
# Line 642  class Sala: Line 610  class Sala:
610          encontrado = 0          encontrado = 0
611                    
612          for objeto in self.objetos:          for objeto in self.objetos:
613              if objeto["id"] == instancia.id:              if objeto["id"] == instancia.id():
614                  encontrado = 1                  encontrado = 1
615                  objeto["instancias"].append(instancia)                  objeto["instancias"].append(instancia)
616                  break                  break
617    
618          if not encontrado:          if not encontrado:
619              self.objetos.append({"id":instancia.id,              self.objetos.append({"id":instancia.id(),
620                                   "probabilidad":0,                                   "probabilidad":0,
621                                   "maximo":0,                                   "maximo":0,
622                                   "dificultad":dificultad,                                   "dificultad":dificultad,
623                                   "instancias":[instancia]})                                   "instancias":[instancia]})
624    
625    
 #%%    def dejar_objeto(self, personaje, nombre_objeto, dif=0):  
 #%%        """  
 #%%        Método que extrae un objeto del equipo del personaje y lo añade a los objetos de la sala.  
 #%%     No hace falta comprobar por el volumen del objeto, porque si el personaje ha podido  
 #%%     entrar en la sala cargándolo, el volumen ocupado no va a cambiar por el hecho de que  
 #%%     lo suelte.  
 #%%  
 #%%        Requiere:  
 #%%         personaje != None  
 #%%         nombre_objeto != None  
 #%%  
 #%%        Asegura:  
 #%%         encontrado 0 or 1  
 #%%        """  
 #%%  
 #%%        encontrado = 0  
 #%%  
 #%%        for objeto_en_equipo in personaje.equipo:  
 #%%            if objeto_en_equipo["id"] == nombre_objeto and len(objeto_en_equipo["instancias"]) > 0:  
 #%%                obj = objeto_en_equipo["instancias"][0]  
 #%%                existe_uno_igual = 0  
 #%%                for objeto in self.objetos:  
 #%%                    if (nombre_objeto == objeto["id"] and objeto["dificultad"] == dif):  
 #%%                        objeto["instancias"].append(obj)  
 #%%                        existe_uno_igual = 1  
 #%%                        break  
 #%%                    else:  
 #%%                        pass  
 #%%                if existe_uno_igual == 0:  
 #%%                    self.objetos.append({"id":nombre_objeto,"probabilidad":0,"dificultad":dif,  
 #%%                                     "instancias":[obj]})  
 #%%                objeto_en_equipo["instancias"].pop(0)  
 #%%                #                    self.cmd_actuacion_personaje("deja "+obj.nombre)  
 #%%                encontrado = 1  
 #%%                break #salimos ya que ya hemos dejado un objeto.  
 #%%  
 #%%        return encontrado, nombre_objeto  
       
   
626      def salvar(self):      def salvar(self):
627          """Graba en un fichero de salas la sala con todo su contenido."""          """Graba en un fichero de salas la sala con todo su contenido."""
628                    
# Line 711  class Sala: Line 640  class Sala:
640          self.__dict__ = atributos          self.__dict__ = atributos
641    
642          # Verificar la versión.          # Verificar la versión.
643            if not self.__dict__.has_key("version"):
644                raise ValueError("Cargada sala " + self.id + " obsoleta: sin versión" +
645                                 " cuando se esperaba " + Sala.VERSION_SALA)
646    
647          assert(Sala.VERSION_SALA == "1.1")          assert(Sala.VERSION_SALA == "1.1")
648          while self.version != "1.1":          while self.version != "1.1":
               
             if not self.__dict__.has_key("version"):  
                 raise ValueError("Cargada sala " + self.id + " obsoleta: sin versión" +  
                                  " cuando se esperaba " + Sala.VERSION_SALA)  
649                                                                        
650              if self.version == "1.0":              if self.version == "1.0":
651                  # Versión 1.0 -> 1.1: añadir fecha de modificacion de archivo de descripcion                  # Versión 1.0 -> 1.1: añadir fecha de modificacion de archivo de descripcion

Legend:
Removed from v.1.36  
changed lines
  Added in v.1.37

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