new: ja es pot començar el joc els dos jugador a l'hora
new: feedback visual per a saber qui ha pulsat start en la pantalla de titol Player: afegit estat RESPAWNING per no tindre que estar fent cabrioles amb la invulnerabilitat al crear als jugadors
This commit is contained in:
@@ -33,6 +33,8 @@ Player::Player(int id, float x, int y, bool demo, SDL_FRect &play_area, std::vec
|
||||
|
||||
// Inicializa variables
|
||||
pos_x_ = default_pos_x_;
|
||||
invulnerable_ = false;
|
||||
invulnerable_counter_ = 0;
|
||||
init();
|
||||
}
|
||||
|
||||
@@ -44,8 +46,6 @@ void Player::init()
|
||||
walking_state_ = PlayerState::WALKING_STOP;
|
||||
firing_state_ = PlayerState::FIRING_NONE;
|
||||
playing_state_ = PlayerState::WAITING;
|
||||
invulnerable_ = true;
|
||||
invulnerable_counter_ = INVULNERABLE_COUNTER_;
|
||||
power_up_ = false;
|
||||
power_up_counter_ = POWERUP_COUNTER_;
|
||||
extra_hit_ = false;
|
||||
@@ -177,9 +177,9 @@ void Player::move()
|
||||
shiftSprite();
|
||||
break;
|
||||
}
|
||||
case PlayerState::DYING:
|
||||
case PlayerState::ROLLING:
|
||||
{
|
||||
// Si el cadaver abandona el area de juego por los laterales lo hace rebotar
|
||||
// Si el jugador abandona el area de juego por los laterales lo hace rebotar
|
||||
const int X = player_sprite_->getPosX();
|
||||
const int MIN_X = play_area_.x;
|
||||
const int MAX_X = play_area_.x + play_area_.w - WIDTH_;
|
||||
@@ -190,7 +190,7 @@ void Player::move()
|
||||
playSound("jump.wav");
|
||||
}
|
||||
|
||||
// Si el cadaver toca el suelo rebota y si tiene poca velocidad, se detiene y cambia de estado
|
||||
// Si el jugador toca el suelo rebota y si tiene poca velocidad, se detiene y cambia de estado
|
||||
if (player_sprite_->getPosY() > play_area_.h - HEIGHT_)
|
||||
{
|
||||
if (player_sprite_->getVelY() < 2.0f)
|
||||
@@ -215,6 +215,24 @@ void Player::move()
|
||||
}
|
||||
break;
|
||||
}
|
||||
case PlayerState::TITLE_ANIMATION:
|
||||
{
|
||||
// Si el jugador abandona el area de juego por los laterales lo detiene
|
||||
const int X = player_sprite_->getPosX();
|
||||
const int MIN_X = play_area_.x - WIDTH_;
|
||||
const int MAX_X = play_area_.x + play_area_.w;
|
||||
if ((X < MIN_X) || (X > MAX_X))
|
||||
{
|
||||
setPlayingState(PlayerState::TITLE_HIDDEN);
|
||||
}
|
||||
|
||||
// Si el jugador toca el suelo rebota lo detiene
|
||||
if (player_sprite_->getPosY() > play_area_.h)
|
||||
{
|
||||
setPlayingState(PlayerState::TITLE_HIDDEN);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case PlayerState::CONTINUE_TIME_OUT:
|
||||
{
|
||||
// Si el cadaver desaparece por el suelo, cambia de estado
|
||||
@@ -397,8 +415,9 @@ void Player::setAnimation()
|
||||
}
|
||||
break;
|
||||
}
|
||||
case PlayerState::DYING:
|
||||
case PlayerState::ROLLING:
|
||||
case PlayerState::CONTINUE_TIME_OUT:
|
||||
case PlayerState::TITLE_ANIMATION:
|
||||
{
|
||||
player_sprite_->setCurrentAnimation("rolling");
|
||||
break;
|
||||
@@ -562,6 +581,13 @@ void Player::setPlayingState(PlayerState state)
|
||||
|
||||
switch (playing_state_)
|
||||
{
|
||||
case PlayerState::RESPAWNING:
|
||||
{
|
||||
setInvulnerable(true);
|
||||
addCredit();
|
||||
playSound("voice_thankyou.wav");
|
||||
setPlayingState(PlayerState::PLAYING);
|
||||
}
|
||||
case PlayerState::PLAYING:
|
||||
{
|
||||
init();
|
||||
@@ -597,14 +623,28 @@ void Player::setPlayingState(PlayerState state)
|
||||
addScoreToScoreBoard();
|
||||
break;
|
||||
}
|
||||
case PlayerState::DYING:
|
||||
case PlayerState::ROLLING:
|
||||
{
|
||||
// Activa la animación de morir
|
||||
// Activa la animación de rodar
|
||||
player_sprite_->setAccelY(0.2f);
|
||||
player_sprite_->setVelY(-6.6f);
|
||||
(rand() % 2 == 0) ? player_sprite_->setVelX(3.3f) : player_sprite_->setVelX(-3.3f);
|
||||
break;
|
||||
}
|
||||
case PlayerState::TITLE_ANIMATION:
|
||||
{
|
||||
// Activa la animación de rodar
|
||||
player_sprite_->setAccelY(0.2f);
|
||||
player_sprite_->setVelY(-6.6f);
|
||||
playSound("voice_thankyou.wav");
|
||||
break;
|
||||
}
|
||||
case PlayerState::TITLE_HIDDEN:
|
||||
{
|
||||
player_sprite_->setVelX(0.0f);
|
||||
player_sprite_->setVelY(0.0f);
|
||||
break;
|
||||
}
|
||||
case PlayerState::CONTINUE_TIME_OUT:
|
||||
{
|
||||
// Activa la animación de morir
|
||||
|
||||
Reference in New Issue
Block a user