#pragma once #include // for SDL_Renderer #include // for Uint8 #include "utils.h" // for circle_t class Sprite; class Texture; // Tipos de bala #define BULLET_UP 1 #define BULLET_LEFT 2 #define BULLET_RIGHT 3 // Tipos de retorno de la funcion move de la bala #define BULLET_MOVE_OK 0 #define 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(); };