#pragma once #include "ifdefs.h" #include "utils.h" #include "asset.h" #include "animatedsprite.h" #include #ifndef ENEMY_H #define ENEMY_H /* Un enemigo deberia tener la siguiente informacion: POSICION INICIAL VELOCIDAD EN X VELOCIDAD EN Y PUNTO X1 Y PUNTO X2 DEL RECORRIDO PUNTO Y1 Y PUNTO Y2 DEL RECORRIDO COLOR PNG ASOCIADO FICHERO descriptor del enemigo Por convención, todos los enemigos dispondran de 4 frames de animacion Se invertirá el sprite en funcion de la velocidad de X */ // 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 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 int x1; // Limite izquierdo de la ruta en el eje X int x2; // Limite derecho de la ruta en el eje X int y1; // Limite superior de la ruta en el eje Y int y2; // Limite inferior de la ruta en el eje Y color_t color; // Color del enemigo }; // Clase Enemy class Enemy { private: LTexture *texture; // Textura con los graficos del enemigo AnimatedSprite *sprite; // Sprite del enemigo SDL_Renderer *renderer; // El renderizador de la ventana Asset *asset; // Objeto con la ruta a todos los ficheros de recursos color_t color; // Color del enemigo int x1; // Limite izquierdo de la ruta en el eje X int x2; // Limite derecho de la ruta en el eje X int y1; // Limite superior de la ruta en el eje Y int y2; // Limite inferior de la ruta en el eje Y 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 draw(); // 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