#pragma once #include #include "common/animatedsprite.h" #include "common/asset.h" #include "common/utils.h" #include #ifndef ACTOR_H #define ACTOR_H // Nombres de actores enum actor_name_e { a_moving_platform, a_key, a_heart, a_diamond, a_door }; // Estructura para pasar los datos de un enemigo struct actor_t { SDL_Renderer *renderer; // El renderizador de la ventana Asset *asset; // Objeto con la ruta a todos los ficheros de recursos std::string tileset; // Fichero con los graficos del enemigo std::string animation; // Fichero con las animaciones del enemigo int w; // Anchura del enemigo int h; // Altura del enemigo float x; // Posición inicial en el eje X float y; // Posición inicial en el eje Y float vx; // Velocidad en el eje X float vy; // Velocidad en el eje Y actor_name_e name; // Nombre del actor }; // Clase Actor class Actor { protected: // Objetos y punteros AnimatedSprite *sprite; // Sprite del enemigo Asset *asset; // Objeto con la ruta a todos los ficheros de recursos LTexture *texture; // Textura con los graficos del enemigo SDL_Renderer *renderer; // El renderizador de la ventana // Variables SDL_Rect collider; // Caja de colisión actor_name_e name; // Nombre del actor public: // Constructor Actor(); Actor(actor_t actor); // Destructor virtual ~Actor(); // Pinta el enemigo en pantalla void render(); // Actualiza las variables del objeto virtual void update(); // Obtiene el rectangulo de colision del enemigo SDL_Rect &getCollider(); // Obtiene el nombre del actor actor_name_e getName(); // Obtiene el valor de la variable int getIncX(); }; #endif