Package pilas :: Package escena :: Module gestor
[hide private]
[frames] | no frames]

Source Code for Module pilas.escena.gestor

 1  # -*- encoding: utf-8 -*- 
 2  # pilas engine - a video game framework. 
 3  # 
 4  # copyright 2010 - hugo ruscitti 
 5  # license: lgplv3 (see http://www.gnu.org/licenses/lgpl.html) 
 6  # 
 7  # website - http://www.pilas-engine.com.ar 
 8   
 9   
10 -class Gestor(object):
11 """Clase que permite el control de las escenas en pilas.""" 12
13 - def __init__(self):
14 self.escenas = []
15
16 - def limpiar(self):
17 """Elimina todas las escenas del gestor.""" 18 for x in self.escenas: 19 x._limpiar() 20 21 self.escenas = []
22
23 - def cambiar_escena(self, escena):
24 """Define una escena unica y la inicializa. 25 26 Las escenas que estuvieran apiladas se eliminan. 27 28 :param escena: Escena a la que se quiere cambiar.""" 29 30 self.limpiar() 31 self.escenas.append(escena) 32 escena.iniciar() 33 escena.iniciada = True
34
35 - def almacenar_escena(self, escena):
36 """Pausa la escena actualmente activa e inicializa la escena que 37 le pasamos como parametro. 38 39 :param escena: Escena que deseamos que sea la activa. 40 """ 41 if self.escena_actual(): 42 self.escena_actual()._pausar_fisica() 43 self.escena_actual().pausar() 44 45 self.escenas.append(escena) 46 escena.iniciar() 47 escena.iniciada = True
48
49 - def recuperar_escena(self):
50 """Recupera la escena que fue Pausada mediante **almacenar_escena**. 51 """ 52 if len(self.escenas) > 1: 53 self.escenas[-1]._limpiar() 54 escena_actual = self.escenas.pop() 55 escena_anterior = self.escenas[-1] 56 escena_anterior._reanudar_fisica() 57 escena_anterior.control.limpiar() 58 escena_anterior.reanudar() 59 else: 60 raise Exception("Debe haber al menos una escena en la pila para restaurar.")
61
62 - def escena_actual(self):
63 """Retorna la escena actual o None si no hay escena definida.""" 64 if len(self.escenas) > 0: 65 return self.escenas[-1] 66 else: 67 return None
68
69 - def actualizar(self):
70 escena = self.escena_actual() 71 72 if escena: 73 if escena.iniciada: 74 escena._actualizar_eventos() 75 76 for escena in self.escenas: 77 escena._actualizar_fisica()
78