#pragma once #include // for SDL_Renderer #include // for Uint8 #include "utils.h" // for circle_t class Sprite; class Texture; // Tipos de bala constexpr int BULLET_UP = 1; constexpr int BULLET_LEFT = 2; constexpr int BULLET_RIGHT = 3; // Tipos de retorno de la función move de la bala constexpr int BULLET_MOVE_OK = 0; constexpr int BULLET_MOVE_OUT = 1; // Clase Bullet class Bullet { private: // Objetos y punteros Sprite *sprite; // Sprite con los graficos y métodos de pintado // Variables int posX; // Posición en el eje X int posY; // Posición en el eje Y Uint8 width; // Ancho del objeto Uint8 height; // Alto del objeto int velX; // Velocidad en el eje X int velY; // Velocidad en el eje Y int kind; // Tipo de objeto int owner; // Identificador del dueño del objeto circle_t collider; // Circulo de colisión del objeto // Alinea el circulo de colisión con el objeto void shiftColliders(); public: // Constructor Bullet(int x, int y, int kind, bool poweredUp, int owner, Texture *texture, SDL_Renderer *renderer); // Destructor ~Bullet(); // Pinta el objeto en pantalla void render(); // Actualiza la posición y estado del objeto Uint8 move(); // Comprueba si el objeto está habilitado bool isEnabled(); // Deshabilita el objeto void disable(); // Obtiene el valor de la variable int getPosX(); // Obtiene el valor de la variable int getPosY(); // Establece el valor de la variable void setPosX(int x); // Establece el valor de la variable void setPosY(int y); // Obtiene el valor de la variable int getVelY(); // Obtiene el valor de la variable int getKind(); // Obtiene el valor de la variable int getOwner(); // Obtiene el circulo de colisión circle_t &getCollider(); };