revisió de capçaleres
This commit is contained in:
176
source/item.h
176
source/item.h
@@ -5,143 +5,49 @@
|
||||
#include <memory> // Para shared_ptr, unique_ptr
|
||||
#include <string> // Para string
|
||||
#include <vector> // Para vector
|
||||
#include "animated_sprite.h" // Para SpriteAnimated
|
||||
#include "animated_sprite.h" // Para AnimatedSprite
|
||||
#include "utils.h" // Para Circle
|
||||
|
||||
class Texture;
|
||||
|
||||
/**
|
||||
* @brief Tipos de objetos disponibles en el juego.
|
||||
*
|
||||
* Esta enumeración define los diferentes tipos de objetos que pueden existir en el juego,
|
||||
* cada uno con un identificador único.
|
||||
*/
|
||||
// Tipos de objetos disponibles en el juego.
|
||||
// Define los diferentes tipos de objetos que pueden existir en el juego.
|
||||
enum class ItemType : int
|
||||
{
|
||||
DISK = 1, /**< Disco */
|
||||
GAVINA = 2, /**< Gavina */
|
||||
PACMAR = 3, /**< Pacman */
|
||||
CLOCK = 4, /**< Reloj */
|
||||
COFFEE = 5, /**< Café */
|
||||
DEBIAN = 6, /**< Debian */
|
||||
COFFEE_MACHINE = 7, /**< Máquina de café */
|
||||
NONE = 8, /**< Ninguno */
|
||||
DISK = 1, // Disco
|
||||
GAVINA = 2, // Gavina
|
||||
PACMAR = 3, // Pacman
|
||||
CLOCK = 4, // Reloj
|
||||
COFFEE = 5, // Café
|
||||
DEBIAN = 6, // Debian
|
||||
COFFEE_MACHINE = 7, // Máquina de café
|
||||
NONE = 8, // Ninguno
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Clase Item.
|
||||
*
|
||||
* Esta clase representa un objeto en el juego, con sus propiedades y métodos para gestionar su comportamiento.
|
||||
*/
|
||||
// Clase Item.
|
||||
// Representa un objeto en el juego, con sus propiedades y métodos para gestionar su comportamiento.
|
||||
class Item
|
||||
{
|
||||
private:
|
||||
// Objetos y punteros
|
||||
std::unique_ptr<AnimatedSprite> sprite_; /**< Sprite con los gráficos del objeto */
|
||||
|
||||
// Variables
|
||||
float pos_x_; /**< Posición X del objeto */
|
||||
float pos_y_; /**< Posición Y del objeto */
|
||||
int width_; /**< Ancho del objeto */
|
||||
int height_; /**< Alto del objeto */
|
||||
float vel_x_; /**< Velocidad en el eje X */
|
||||
float vel_y_; /**< Velocidad en el eje Y */
|
||||
float accel_x_ = 0.0f; /**< Aceleración en el eje X */
|
||||
float accel_y_; /**< Aceleración en el eje Y */
|
||||
bool floor_collision_ = false; /**< Indica si el objeto colisiona con el suelo */
|
||||
ItemType type_; /**< Especifica el tipo de objeto que es */
|
||||
bool enabled_ = true; /**< Especifica si el objeto está habilitado */
|
||||
Circle collider_; /**< Círculo de colisión del objeto */
|
||||
SDL_FRect play_area_; /**< Rectángulo con la zona de juego */
|
||||
Uint16 time_to_live_ = 600; /**< Temporizador con el tiempo que el objeto está presente */
|
||||
|
||||
/**
|
||||
* @brief Alinea el círculo de colisión con la posición del objeto.
|
||||
*
|
||||
* Esta función ajusta la posición del círculo de colisión para que coincida con la posición del objeto.
|
||||
* Actualiza las coordenadas X e Y del colisionador basándose en las coordenadas del objeto.
|
||||
*/
|
||||
void shiftColliders();
|
||||
|
||||
/**
|
||||
* @brief Coloca el sprite en la posición del objeto.
|
||||
*
|
||||
* Esta función ajusta la posición del sprite para que coincida con la posición del objeto.
|
||||
* Actualiza las coordenadas X e Y del sprite basándose en las coordenadas del objeto.
|
||||
*/
|
||||
void shiftSprite();
|
||||
|
||||
/**
|
||||
* @brief Actualiza la posición y estados del objeto.
|
||||
*
|
||||
* Esta función actualiza la posición del objeto basándose en su velocidad y aceleración.
|
||||
* Controla las colisiones con los límites del área de juego, ajustando la posición y la velocidad en consecuencia.
|
||||
* También actualiza la posición del sprite y el colisionador del objeto.
|
||||
*/
|
||||
void move();
|
||||
|
||||
/**
|
||||
* @brief Actualiza el contador de tiempo de vida del objeto.
|
||||
*
|
||||
* Esta función decrementa el contador de tiempo de vida del objeto.
|
||||
* Si el tiempo de vida es mayor a 0, se decrementa en 1.
|
||||
* Si el tiempo de vida es 0 o menos, se desactiva el objeto llamando a la función `disable()`.
|
||||
*/
|
||||
void updateTimeToLive();
|
||||
|
||||
public:
|
||||
/**
|
||||
* @brief Constructor de la clase Item.
|
||||
*
|
||||
* Este constructor inicializa un objeto Item con el tipo especificado, posición inicial, área de juego, textura y animación.
|
||||
*
|
||||
* @param type El tipo de objeto (ItemType).
|
||||
* @param x La posición X inicial del objeto.
|
||||
* @param y La posición Y inicial del objeto.
|
||||
* @param play_area El área de juego donde el objeto se moverá.
|
||||
* @param texture La textura del objeto.
|
||||
* @param animation La animación asociada al objeto.
|
||||
*/
|
||||
// Constructor. Inicializa un objeto Item con el tipo, posición, área de juego, textura y animación.
|
||||
Item(ItemType type, float x, float y, SDL_FRect &play_area, std::shared_ptr<Texture> texture, const std::vector<std::string> &animation);
|
||||
|
||||
/**
|
||||
* @brief Destructor de la clase Item.
|
||||
*
|
||||
* Este destructor libera los recursos asociados con el objeto Item.
|
||||
*/
|
||||
// Destructor.
|
||||
~Item() = default;
|
||||
|
||||
/**
|
||||
* @brief Centra el objeto en la posición X.
|
||||
*
|
||||
* Esta función ajusta la posición X del objeto para que esté centrado en la posición X especificada.
|
||||
* Además, asegura que el objeto no se salga de los límites del área de juego.
|
||||
*
|
||||
* @param x La posición X en la que se desea centrar el objeto.
|
||||
*/
|
||||
// Centra el objeto en la posición X indicada, asegurando que no se salga del área de juego.
|
||||
void alignTo(int x);
|
||||
|
||||
/**
|
||||
* @brief Pinta el objeto en la pantalla.
|
||||
*
|
||||
* Esta función renderiza el objeto en la pantalla si está habilitado.
|
||||
* Si el tiempo de vida (`time_to_live_`) es mayor que 200, renderiza el sprite.
|
||||
* Si el tiempo de vida es menor o igual a 200, renderiza el sprite de forma intermitente, basándose en un cálculo de módulo.
|
||||
*/
|
||||
// Renderiza el objeto en pantalla si está habilitado.
|
||||
// Si el tiempo de vida es mayor que 200, renderiza el sprite.
|
||||
// Si es menor o igual a 200, renderiza el sprite de forma intermitente.
|
||||
void render();
|
||||
|
||||
/**
|
||||
* @brief Pone a cero todos los valores del objeto.
|
||||
*
|
||||
* Esta función desactiva el objeto estableciendo su estado `enabled_` a `false`.
|
||||
*/
|
||||
// Desactiva el objeto estableciendo su estado enabled_ a false.
|
||||
void disable();
|
||||
|
||||
/**
|
||||
* @brief Actualiza el objeto a su posición, animación y controla los contadores.
|
||||
*
|
||||
* Esta función mueve el objeto, actualiza su animación y controla el contador de tiempo de vida.
|
||||
* Llama a las funciones `move()`, `sprite_->update()` y `updateTimeToLive()`.
|
||||
*/
|
||||
// Actualiza la posición, animación y contadores del objeto.
|
||||
// Llama a move(), sprite_->update() y updateTimeToLive().
|
||||
void update();
|
||||
|
||||
// Getters
|
||||
@@ -153,4 +59,40 @@ public:
|
||||
bool isEnabled() const { return enabled_; }
|
||||
bool isOnFloor() const { return floor_collision_; }
|
||||
Circle &getCollider() { return collider_; }
|
||||
|
||||
private:
|
||||
// Objetos y punteros
|
||||
std::unique_ptr<AnimatedSprite> sprite_; // Sprite con los gráficos del objeto
|
||||
|
||||
// Variables de estado y físicas
|
||||
float pos_x_; // Posición X del objeto
|
||||
float pos_y_; // Posición Y del objeto
|
||||
int width_; // Ancho del objeto
|
||||
int height_; // Alto del objeto
|
||||
float vel_x_; // Velocidad en el eje X
|
||||
float vel_y_; // Velocidad en el eje Y
|
||||
float accel_x_ = 0.0f; // Aceleración en el eje X
|
||||
float accel_y_; // Aceleración en el eje Y
|
||||
bool floor_collision_ = false; // Indica si el objeto colisiona con el suelo
|
||||
ItemType type_; // Tipo de objeto
|
||||
bool enabled_ = true; // Indica si el objeto está habilitado
|
||||
Circle collider_; // Círculo de colisión del objeto
|
||||
SDL_FRect play_area_; // Rectángulo con la zona de juego
|
||||
Uint16 time_to_live_ = 600; // Tiempo que el objeto está presente
|
||||
|
||||
// Alinea el círculo de colisión con la posición del objeto.
|
||||
// Actualiza las coordenadas X e Y del colisionador.
|
||||
void shiftColliders();
|
||||
|
||||
// Coloca el sprite en la posición del objeto.
|
||||
// Actualiza las coordenadas X e Y del sprite.
|
||||
void shiftSprite();
|
||||
|
||||
// Actualiza la posición y estados del objeto.
|
||||
// Controla las colisiones con los límites del área de juego y actualiza sprite y colisionador.
|
||||
void move();
|
||||
|
||||
// Actualiza el contador de tiempo de vida del objeto.
|
||||
// Si el tiempo de vida es mayor a 0, lo decrementa. Si llega a 0, desactiva el objeto.
|
||||
void updateTimeToLive();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user