Como migrar mi juego al nuevo Gestor de Escenas¶
Antes de migrar tu juego al nuevo sistema de gestión de escenas, es mejor que le des un vistazo a Nuevo Gestor de Escenas para comprender mejor el apilamiento de escenas.
Ahora pasamos a explicar los sencillos pasos a seguir para hacer la migración de tu juego.
Iniciar el juego¶
Tu juego debe tener una estructura de inicio parecida a la siguiente:
import pilas
import escena_menu
pilas.iniciar(titulo='Mi titulo')
escena_menu.EscenaMenu()
pilas.ejecutar()
Lo único que deberás cambiar aquí es la línea que llama a la escena. Tendrá que quedar de la siguiente forma:
import pilas
import escena_menu
pilas.iniciar(titulo='Mi titulo')
# Esta es la línea que debemos cambiar
pilas.cambiar_escena(escena_menu.EscenaMenu())
pilas.ejecutar()
Escenas del juego¶
Todas las escenas de tu juego deben heredar ahora de pilas.escena.Base.
class MiEscena(pilas.escena.Base):
Y el otro cambio que debes realizar en las escenas es que el método __init__(self) no debe contener nada más que la llamada al __init__ de la escena Base
def __init__(self):
pilas.escena.Base.__init__(self)
Luego debes definir un método iniciar(self) donde podrás crear los nuevos actores y lo necesario para iniciar tu escena.
def iniciar(self):
pilas.fondos.Pasto()
mono = pilas.actores.Mono()
Aquí un ejemplo de como debería ser el cambio.
Escena antigua
class MiEscena(pilas.escenas.Escena):
def __init__(self):
pilas.escenas.Escena.__init__(self)
pilas.fondos.Pasto()
mono = pilas.actores.Mono()
Escena nueva
class MiEscena(pilas.escena.Base):
def __init__(self):
pilas.escena.Base.__init__(self)
def iniciar(self):
pilas.fondos.Pasto()
mono = pilas.actores.Mono()
Cambio de Escena¶
En algún punto de tu juego, llamarías a otra escena para cambiarla.
escena_juego.Escena_Juego()
Debes sustituir esta llamada a la nueva escena por esta otra forma:
pilas.cambiar_escena(escena_juego.Escena_Juego())
Eventos¶
Ahora los eventos son individuales por cada escena. Si quieres conectar a algún evento, como mueve_mouse, actualizar, pulsa_tecla, puedes hacerlo de cualquiera de las dos siguientes formas:
def mi_metodo(evento):
# Hace algo
pilas.eventos.actualizar.conectar(mi_metodo())
# Otra forma de conectar
pilas.escena_actual().actualizar.conectar(mi_metodo())
Ambas formas conectan a los eventos de la escena actualmente activa.
Si deseas crear tu propio evento, lo deberás hacer de la siguiente forma:
pilas.eventos.mi_evento_personalizado = pilas.evento.Evento("mi_evento_personalizado")
pilas.eventos.mi_evento_personalizado.conectar(self._mi_evento_personalizado)
Fin de la migración¶
Con estos simples pasos, tu juego debe funcionar sin problemas con el nuevo sistema de gestión de escenas.
Ante cualquier problema no tengas dudas en ponerte en contacto con nosotros mediante el foro de losersjuegos.