Formato de eventos

El Ázoe Engine soporta un sistema interno de eventos que comunican distintas partes de motor de forma asincrónica y en cascada. Los eventos se disparan importanto la clase EventDispatcher del siguinete modo

from engine.globs.eventDispatcher import EventDispatcher
                

Luego, cuando el evento sea ejecutado, se realiza un trigger()

EventDispatcher.trigger("<nombre del evento>", "<clase de origen>", {<datos del evento>})
                

Para que otros módulos y clases respondan al evento, es neceario que primero se registren, mediante el método register().

EventDispatcher.register(<método o función>, "<evento1>" , "<evento2>", ...)
                

Cuando ya no sea necenario responder a un evento, la clase puede llamar al método deregister(). Los parámetros de este método son los mismos que se usan en register().

EventDispatcher.deregister(<método o función>, "<evento1>", "<evento2>", ...)
                

Nótese que los métodos permiten (de)registrar cada oyente a un numero arbitrario de eventos.

Los eventos que actualmente están en el engine son:

DayFlag, HourFlag, MinuteFlag, SecondFlag
:
Cada vez que el reloj del juego llegue a un momento determinado del día, se dispara este evento. DayFlag se dipara al cambiar de día (a las 0:00hs). HourFlag se dipara en cada hora (1:00, 2:00, etc.). MinuteFlag y SecondFlag se disparan cada minuto y segundo respectivamente. Estos eventos están vinculado al movimiento solar y por lo tanto a las sombras dinámicas.
DeleteItem
:
Cuando el héroe toma un Prop Agarrable del mapa, éste evento se lanza para hacerlo desaparecer del mapa.
DialogEvent
:
Cuando un fragmento de diálogo lance un evento, será de este tipo.
InitSystem
:
Este es el nombre dado al evento que dispara el Script del juego. Solo se dispara 1 vez al inicio del script main.py
Key
:
Cada vez que el jugador toca una tecla, se dispara este evento. Este evento tendrá un efecto diferente dependiendo de la tecla pulsada, el modo de juego en el que se encuentre el motor (Aventura, Diálogo o Menú), y la forma en la que se haya pulsado dicha tecla (un tap, hold o release).
MobDeath
:
Se dispara cuando un mob muere. Esto cierra el juego si el mob es el héroe.
MobWounded
:
Se dispara cuando un mob resulta herido. Actualiza el HUD si el mob en cuestión es el foco del HUD.
NewGame
:
Se dipara al iniciarse un juego, sea que este es nuevo o se inicie desde un SaveFile.
OpenMenu
:
Cuando Pausa u otro menú llaman a nuevos menúes, se dispara este evento para abrirlos.
Rotate, RotateEverything, RotateMobs
:
Estos eventos están vinculados a un Feature en construcción y por lo tanto no se están usando.
Save, SaveData, SaveDataFile
:
Estos tres eventos se disparan en cascada. El primero avisa a todas las clases oyentes que se va a guardar el estado del juego. Cada oyente, a su vez, lanza SaveData con los datos que se quieren guardar (posicion del personaje, hora, etc). Finalmente, SaveFileData le indica al engine que tiene que guardar la data en el archivo de salvado.
SetMap
:
Cuando el foco de la cámara cambia de mapas, este evento le avisa al engine que cambie el mapa.
SolarMovement
:
Este evento, vinculado a los eventos del reloj, cambia las sombras de los sprites. Dado que las Sombras Dinámicas son un Feature en construcción, este evento no tiene uso.
TogglePause
:
Se activa cuando el juego entra o sale del modo 'pausa'. En pausa el tiempo de juego se detiene.
ToggleSetKey
:
Cuando el usuario elija una tecla para modificar el input, se dispara este evento para capturar el keydown de una tecla no registrada.