Refet el spritesheet del jugador i el fitxer d'animacions
Afegits nous estats per al jugador: RECOIL
This commit is contained in:
@@ -28,6 +28,11 @@ enum class PlayerState
|
||||
FIRING_RIGHT, // Disparando hacia la derecha
|
||||
FIRING_NONE, // No está disparando
|
||||
|
||||
// Estados de retroceso tras disparar
|
||||
RECOILING_UP, // Retroceso tras disparar hacia arriba
|
||||
RECOILING_LEFT, // Retroceso tras disparar hacia la izquierda
|
||||
RECOILING_RIGHT, // Retroceso tras disparar hacia la derecha
|
||||
|
||||
// Estados de enfriamiento tras disparar
|
||||
COOLING_UP, // Enfriando tras disparar hacia arriba
|
||||
COOLING_LEFT, // Enfriando tras disparar hacia la izquierda
|
||||
@@ -109,9 +114,10 @@ public:
|
||||
bool isWaiting() const { return playing_state_ == PlayerState::WAITING; }
|
||||
|
||||
// Getters
|
||||
bool canFire() const { return cool_down_ <= 0; }
|
||||
bool canFire() const { return cant_fire_counter_ <= 0; }
|
||||
bool hasExtraHit() const { return extra_hit_; }
|
||||
bool isCooling() const { return firing_state_ == PlayerState::COOLING_LEFT || firing_state_ == PlayerState::COOLING_UP || firing_state_ == PlayerState::COOLING_RIGHT; }
|
||||
bool isRecoiling() const { return firing_state_ == PlayerState::RECOILING_LEFT || firing_state_ == PlayerState::RECOILING_UP || firing_state_ == PlayerState::RECOILING_RIGHT; }
|
||||
bool IsEligibleForHighScore() const { return score_ > Options::settings.hi_score_table.back().score; }
|
||||
bool isInvulnerable() const { return invulnerable_; }
|
||||
bool isPowerUp() const { return power_up_; }
|
||||
@@ -138,7 +144,7 @@ public:
|
||||
|
||||
// Setters inline
|
||||
void setController(int index) { controller_index_ = index; }
|
||||
void setFireCooldown(int time) { cool_down_ = time; }
|
||||
void setCantFireCounter(int counter) { recoiling_state_duration_ = cant_fire_counter_ = counter; }
|
||||
void setFiringState(PlayerState state) { firing_state_ = state; }
|
||||
void setInvulnerableCounter(int value) { invulnerable_counter_ = value; }
|
||||
void setName(const std::string &name) { name_ = name; }
|
||||
@@ -156,6 +162,8 @@ private:
|
||||
static constexpr int WIDTH_ = 30; // Anchura
|
||||
static constexpr int HEIGHT_ = 30; // Altura
|
||||
static constexpr float BASE_SPEED_ = 1.5f; // Velocidad base del jugador
|
||||
static constexpr int COOLING_DURATION_ = 30;
|
||||
static constexpr int COOLING_COMPLETE_ = 0;
|
||||
|
||||
// --- Objetos y punteros ---
|
||||
std::unique_ptr<AnimatedSprite> player_sprite_; // Sprite para dibujar el jugador
|
||||
@@ -171,7 +179,9 @@ private:
|
||||
int default_pos_y_; // Posición inicial para el jugador
|
||||
float vel_x_ = 0.0f; // Cantidad de píxeles a desplazarse en el eje X
|
||||
int vel_y_ = 0.0f; // Cantidad de píxeles a desplazarse en el eje Y
|
||||
int cool_down_ = 0; // Contador durante el cual no puede disparar
|
||||
int cant_fire_counter_ = 0; // Contador durante el cual no puede disparar
|
||||
int recoiling_state_counter_ = 0; // Contador para la animación del estado de retroceso
|
||||
int recoiling_state_duration_ = 0; // Numero de frames que dura el estado de retroceso
|
||||
int cooling_state_counter_ = 0; // Contador para la animación del estado cooling
|
||||
int score_ = 0; // Puntos del jugador
|
||||
float score_multiplier_ = 1.0f; // Multiplicador de puntos
|
||||
|
||||
Reference in New Issue
Block a user