Sistema de actores

siontower-actores.png

Tras publicar varios artículos en IberOgre, he decidido retomar el trabajo en Sion Tower con el objetivo de tener una versión inicial a finales de julio. La primera tarea que he llevado a cabo es una refactorización del sistema de actores con el objetivo de hacerlo más extensible y evitar la duplicación de código en la medida de lo posible aunque crezca la verticalidad en la jerarquía. Por el momento no todas las clases están implementadas pero sí diseñadas. A continuación, una pequeña explicación del sistema.

El sistema de actores está compuesto por las siguientes clases:

actors-clases.png

En GameObject contamos con el enumerado Type para distinguir entre tipos de objetos de juego. Se cuenta con un método getType virtual puro que cada clase deberá implementar devolviendo el valor del enumerado correspondiente. De esta forma podemos conocer el tipo de un objeto de juego a partir de un *GameObject** y hacer casting sin peligro en caso de ser absolutamente necesario. También es posible utilizar el tipo de objeto para hacer un filtrado en la detección de colisiones.

class GameObject {
    public:

        enum Type {
            SIMPLEMESH = 0,
            FLOOR = 1,
            SCENE = 2,
            PLAYER = 3,
            ENEMY = 4,
            SPELL = 5
        };

        virtual Type getType() const = 0;

        ...
};

Podéis conocer a fondo el sistema en la rama correspondiente de la Forja de Red Iris. En breve, os mostraré un vídeo con el sistema de lanzamiento de proyectiles mágicos funcionando.

comments powered by Disqus