#pragma once #include #include "common/animatedsprite.h" #include "common/utils.h" #ifndef ITEM_H #define ITEM_H // Tipos de objetos #define ITEM_POINTS_1_DISK 0 #define ITEM_POINTS_2_GAVINA 1 #define ITEM_POINTS_3_PACMAR 2 #define ITEM_CLOCK 3 #define ITEM_COFFEE 4 #define ITEM_COFFEE_MACHINE 5 // Clase Item class Item { private: // Objetos y punteros AnimatedSprite *sprite; // Sprite con los graficos del objeto // Variables float posX; // Posición X del objeto float posY; // Posición Y del objeto Uint8 width; // Ancho del objeto Uint8 height; // Alto del objeto float velX; // Velocidad en el eje X float velY; // Velocidad en el eje Y float accelX; // Aceleración en el eje X float accelY; // Aceleración en el eje Y bool floorCollision; // Indica si el objeto colisiona con el suelo Uint8 kind; // Especifica el tipo de objeto que es bool enabled; // Especifica si el objeto está habilitado circle_t collider; // Circulo de colisión del objeto // Alinea el circulo de colisión con la posición del objeto void shiftColliders(); // Actualiza la posición y estados del objeto void move(); public: Uint16 timeToLive; // Temporizador con el tiempo que el objeto está presente // Constructor Item(Uint8 kind, float x, float y, Texture *texture, std::vector *animation, SDL_Renderer *renderer); // Destructor ~Item(); // Centra el objeto en la posición X void allignTo(int x); // Pinta el objeto en la pantalla void render(); // Pone a cero todos los valores del objeto void disable(); // Actualiza al objeto a su posicion, animación y controla los contadores void update(); // Actualiza el contador void updateTimeToLive(); // Comprueba si el objeto sigue vivo void checkTimeToLive(); // Obtiene del valor de la variable float getPosX(); // Obtiene del valor de la variable float getPosY(); // Obtiene del valor de la variable int getWidth(); // Obtiene del valor de la variable int getHeight(); // Obtiene del valor de la variable int getClass(); // Obtiene el valor de la variable bool isEnabled(); // Obtiene el circulo de colisión circle_t &getCollider(); // Informa si el objeto ha colisionado con el suelo bool isOnFloor(); }; #endif