Files
2021-03-17 12:34:11 +01:00

159 lines
4.0 KiB
C++

#pragma once
#include "utils.h"
#include "animatedsprite.h"
#ifndef PLAYER_H
#define PLAYER_H
// The player
class Player
{
private:
float mPosX; // Posicion en el eje X
int mPosY; // Posicion en el eje Y
Uint8 mWidth; // Anchura
Uint8 mHeight; // Altura
float mVelX; // Cantidad de pixeles a desplazarse en el eje X
int mVelY; // Cantidad de pixeles a desplazarse en el eje Y
float mBaseSpeed; // Velocidad base del jugador
int mCooldown; // Contador durante el cual no puede disparar
Uint32 mScore; // Puntos del jugador
float mScoreMultiplier; // Multiplicador de puntos
Uint8 mStatusWalking; // Estado del jugador
Uint8 mStatusFiring; // Estado del jugador
bool mAlive; // Indica si el jugador está vivo
bool mInvulnerable; // Indica si el jugador es invulnerable
Uint16 mInvulnerableCounter; // Temporizador para la invulnerabilidad
bool mExtraHit; // Indica si el jugador tiene un toque extra
Uint8 mCoffees; // Indica cuantos cafes lleva acumulados
bool mInput; // Indica si puede recibir ordenes de entrada
AnimatedSprite *mSpriteLegs; // Sprite para dibujar las piernas
AnimatedSprite *mSpriteBody; // Sprite para dibujar el cuerpo
AnimatedSprite *mSpriteHead; // Sprite para dibujar la cabeza
circle_t mCollider; // Circulo de colisión del jugador
void shiftColliders(); // Actualiza el circulo de colisión a la posición del jugador
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
Uint16 getInvulnerableCounter();
// Establece el valor de la variable
void setInvulnerableCounter(Uint16 value);
// Actualiza el valor de la variable
void updateInvulnerableCounter();
// Obtiene el valor de la variable
bool hasExtraHit();
// Concede un toque extra al jugador
void giveExtraHit();
// Quita el toque extra al jugador
void removeExtraHit();
// Habilita la entrada de ordenes
void enableInput();
// Deshabilita la entrada de ordenes
void disableInput();
// Devuelve el numero de cafes actuales
Uint8 getCoffees();
// Obtiene el circulo de colisión
circle_t &getCollider();
};
#endif