#pragma once #include "struct.h" #include "animatedsprite.h" #ifndef PLAYER_H #define PLAYER_H // The player class Player { public: // Constructor Player(); // Destructor ~Player(); // Iniciador void init(float x, int y, LTexture *textureLegs, LTexture *textureBody, SDL_Renderer *renderer); // Actua en consecuencia de la entrada recibida void setInput(Uint8 input); // Mueve el jugador a la posición y animación que le corresponde void move(); // Pinta el jugador en pantalla void render(); // Establece el estado del jugador void setWalkingStatus(Uint8 status); void setFiringStatus(Uint8 status); // Establece la animación correspondiente al estado void setAnimation(); // Obtiene el valor de la variable int getPosX(); // Obtiene el valor de la variable int getPosY(); // Obtiene el valor de la variable int getWidth(); // Obtiene el valor de la variable int getHeight(); // Indica si el jugador puede disparar bool canFire(); // Establece el valor de la variable void setFireCooldown(int time); // Actualiza el valor de la variable void updateCooldown(); // Actualiza al jugador a su posicion, animación y controla los contadores void update(); // Obtiene la puntuación del jugador int getScore(); // Asigna un valor a la puntuación del jugador void setScore(int score); // Incrementa la puntuación del jugador void addScore(int score); // Obtiene el valor de la variable bool isAlive(); // Establece el valor de la variable void setAlive(bool value); // Obtiene el valor de la variable float getScoreMultiplier(); // Establece el valor de la variable void setScoreMultiplier(float value); // Aumenta el valor de la variable hasta un máximo void incScoreMultiplier(); // Decrementa el valor de la variable hasta un mínimo void decScoreMultiplier(); // Obtiene el valor de la variable bool isInvulnerable(); // Establece el valor de la variable void setInvulnerable(bool value); // Obtiene el valor de la variable bool getInvulnerableTimer(); // Establece el valor de la variable void setInvulnerableTimer(Uint16 value); // Actualiza el valor de la variable void updateInvulnerableTimer(); // Obtiene el valor de la variable bool hasExtraHit(); // Concede un toque extra al jugador void giveExtraHit(); // Quita el toque extra al jugador void removeExtraHit(); // Obtiene el circulo de colisión Circle &getCollider(); private: // Posición X, Y del jugador float mPosX; int mPosY; // Altura y anchura del jugador Uint8 mWidth; Uint8 mHeight; // Velocidad X, Y del jugador float mVelX; int mVelY; // Velocidad base del jugador float mBaseSpeed; // Contador durante el cual no puede disparar int mCooldown; // Vidas actuales del jugador Uint8 mLives; // Vidas iniciales del jugador Uint8 mStartingLives; // Puntos del jugador Uint32 mScore; // Multiplicador de puntos float mScoreMultiplier; // Estado del jugador Uint8 mStatusWalking; Uint8 mStatusFiring; // Indica si el jugador está vivo bool mAlive; // Indica si el jugador es invulnerable bool mInvulnerable; // Temporizador para la invulnerabilidad Uint16 mInvulnerableTimer; // Indica si el jugador tiene un toque extra bool mExtraHit; // Sprite para dibujar al jugador en pantalla AnimatedSprite *mSpriteLegs; AnimatedSprite *mSpriteBody; // Circulo de colisión del jugador Circle mCollider; // Actualiza el circulo de colisión a la posición del jugador void shiftColliders(); }; #endif