#pragma once #include #include "utils.h" #include "asset.h" #include "animatedsprite.h" #include #ifndef ENEMY_H #define ENEMY_H // Estructura para pasar los datos de un enemigo struct enemy_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 SDL_Point p1; // Punto 1 (inicial) de la ruta SDL_Point p2; // Punto 2 (final) de la ruta }; // Clase Enemy class Enemy { private: SDL_Renderer *renderer; // El renderizador de la ventana Asset *asset; // Objeto con la ruta a todos los ficheros de recursos LTexture *texture; // Textura con los graficos del enemigo AnimatedSprite *sprite; // Sprite del enemigo SDL_Point p1; // Punto 1 (inicial) de la ruta SDL_Point p2; // Punto 2 (final) de la ruta SDL_Rect collider; // Caja de colisión // Comprueba si ha llegado al limite del recorrido para darse media vuelta void checkPath(); public: // Constructor Enemy(enemy_t enemy); // Destructor ~Enemy(); // Pinta el enemigo en pantalla void render(); // Actualiza las variables del objeto void update(); // Devuelve el rectangulo que contiene al enemigo SDL_Rect getRect(); // Obtiene el rectangulo de colision del enemigo SDL_Rect &getCollider(); }; #endif