#pragma once #include #include "animatedsprite.h" #include "utils.h" #ifndef ITEM_H #define ITEM_H // Tipos de objetos #define ITEM_POINTS_1_DISK 1 #define ITEM_POINTS_2_GAVINA 2 #define ITEM_POINTS_3_PACMAR 3 #define ITEM_CLOCK 4 #define ITEM_COFFEE 5 #define ITEM_POWER_BALL 6 #define ITEM_COFFEE_MACHINE 7 // Clase Item class Item { private: float mPosX; // Posición X del objeto float mPosY; // Posición Y del objeto Uint8 mWidth; // Ancho del objeto Uint8 mHeight; // Alto del objeto float mVelX; // Velocidad en el eje X float mVelY; // Velocidad en el eje Y float mAccelX; // Aceleración en el eje X float mAccelY; // Aceleración en el eje Y bool mFloorCollision; // Indica si el objeto colisiona con el suelo AnimatedSprite *mSprite; // Sprite con los graficos del objeto Uint8 mClass; // Especifica el tipo de objeto que es bool mEnabled; // Especifica si el objeto está habilitado circle_t mCollider; // Circulo de colisión del objeto // Alinea el circulo de colisión con la posición del objeto void shiftColliders(); public: Uint16 mTimeToLive; // Temporizador con el tiempo que el objeto está presente // Constructor Item(LTexture *texture, SDL_Renderer *renderer, Uint8 type, float x, float y); // Destructor ~Item(); // Centra el objeto en la posición X void allignTo(int x); // Pinta el objeto en la pantalla void render(); // Actualiza la posición y estados del objeto void move(); // Pone a cero todos los valores del objeto void erase(); // 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(); // Establece el valor de la variable void setEnabled(bool value); // Obtiene el circulo de colisión circle_t &getCollider(); // Informa si el objeto ha colisionado con el suelo bool floorCollision(); }; #endif