pasaeta loca de clang-format (despres m'arrepentiré pero bueno)
This commit is contained in:
@@ -1,18 +1,19 @@
|
||||
#include "game_logo.h"
|
||||
|
||||
#include <SDL3/SDL.h> // Para SDL_SetTextureScaleMode, SDL_FlipMode
|
||||
#include <SDL3/SDL.h> // Para SDL_SetTextureScaleMode, SDL_FlipMode
|
||||
|
||||
#include <algorithm> // Para max
|
||||
#include <string> // Para basic_string
|
||||
|
||||
#include "animated_sprite.h" // Para AnimatedSprite
|
||||
#include "audio.h" // Para Audio
|
||||
#include "param.h" // Para Param, param, ParamGame, ParamTitle
|
||||
#include "resource.h" // Para Resource
|
||||
#include "screen.h" // Para Screen
|
||||
#include "smart_sprite.h" // Para SmartSprite
|
||||
#include "sprite.h" // Para Sprite
|
||||
#include "texture.h" // Para Texture
|
||||
#include "utils.h" // Para Color
|
||||
#include "animated_sprite.h" // Para AnimatedSprite
|
||||
#include "audio.h" // Para Audio
|
||||
#include "param.h" // Para Param, param, ParamGame, ParamTitle
|
||||
#include "resource.h" // Para Resource
|
||||
#include "screen.h" // Para Screen
|
||||
#include "smart_sprite.h" // Para SmartSprite
|
||||
#include "sprite.h" // Para Sprite
|
||||
#include "texture.h" // Para Texture
|
||||
#include "utils.h" // Para Color
|
||||
|
||||
constexpr int ZOOM_FACTOR = 5;
|
||||
constexpr int FLASH_DELAY = 3;
|
||||
@@ -33,8 +34,7 @@ GameLogo::GameLogo(int x, int y)
|
||||
y_(y) {}
|
||||
|
||||
// Inicializa las variables
|
||||
void GameLogo::init()
|
||||
{
|
||||
void GameLogo::init() {
|
||||
const auto xp = x_ - coffee_texture_->getWidth() / 2;
|
||||
const auto desp = getInitialVerticalDesp();
|
||||
|
||||
@@ -97,14 +97,12 @@ void GameLogo::init()
|
||||
}
|
||||
|
||||
// Pinta la clase en pantalla
|
||||
void GameLogo::render()
|
||||
{
|
||||
void GameLogo::render() {
|
||||
// Dibuja el logo
|
||||
coffee_sprite_->render();
|
||||
crisis_sprite_->render();
|
||||
|
||||
if (arcade_edition_status_ != Status::DISABLED)
|
||||
{
|
||||
if (arcade_edition_status_ != Status::DISABLED) {
|
||||
arcade_edition_sprite_->render();
|
||||
}
|
||||
|
||||
@@ -114,145 +112,119 @@ void GameLogo::render()
|
||||
}
|
||||
|
||||
// Actualiza la lógica de la clase
|
||||
void GameLogo::update()
|
||||
{
|
||||
switch (coffee_crisis_status_)
|
||||
{
|
||||
case Status::MOVING:
|
||||
{
|
||||
coffee_sprite_->update();
|
||||
crisis_sprite_->update();
|
||||
void GameLogo::update() {
|
||||
switch (coffee_crisis_status_) {
|
||||
case Status::MOVING: {
|
||||
coffee_sprite_->update();
|
||||
crisis_sprite_->update();
|
||||
|
||||
// Si los objetos han llegado a su destino, cambia el estado
|
||||
if (coffee_sprite_->hasFinished() && crisis_sprite_->hasFinished())
|
||||
{
|
||||
coffee_crisis_status_ = Status::SHAKING;
|
||||
// Si los objetos han llegado a su destino, cambia el estado
|
||||
if (coffee_sprite_->hasFinished() && crisis_sprite_->hasFinished()) {
|
||||
coffee_crisis_status_ = Status::SHAKING;
|
||||
|
||||
// Reproduce el efecto sonoro
|
||||
Audio::get()->playSound("title.wav");
|
||||
Screen::get()->flash(Color(0xFF, 0xFF, 0xFF), FLASH_LENGHT, FLASH_DELAY);
|
||||
Screen::get()->shake();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case Status::SHAKING:
|
||||
{
|
||||
// Agita "COFFEE CRISIS"
|
||||
if (shake_.remaining > 0)
|
||||
{
|
||||
if (shake_.counter > 0)
|
||||
{
|
||||
shake_.counter--;
|
||||
// Reproduce el efecto sonoro
|
||||
Audio::get()->playSound("title.wav");
|
||||
Screen::get()->flash(Color(0xFF, 0xFF, 0xFF), FLASH_LENGHT, FLASH_DELAY);
|
||||
Screen::get()->shake();
|
||||
}
|
||||
else
|
||||
{
|
||||
shake_.counter = shake_.delay;
|
||||
const auto desp = shake_.remaining % 2 == 0 ? shake_.desp * (-1) : shake_.desp;
|
||||
coffee_sprite_->setPosX(shake_.origin + desp);
|
||||
crisis_sprite_->setPosX(shake_.origin + desp + 15);
|
||||
shake_.remaining--;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case Status::SHAKING: {
|
||||
// Agita "COFFEE CRISIS"
|
||||
if (shake_.remaining > 0) {
|
||||
if (shake_.counter > 0) {
|
||||
shake_.counter--;
|
||||
} else {
|
||||
shake_.counter = shake_.delay;
|
||||
const auto desp = shake_.remaining % 2 == 0 ? shake_.desp * (-1) : shake_.desp;
|
||||
coffee_sprite_->setPosX(shake_.origin + desp);
|
||||
crisis_sprite_->setPosX(shake_.origin + desp + 15);
|
||||
shake_.remaining--;
|
||||
}
|
||||
} else {
|
||||
coffee_sprite_->setPosX(shake_.origin);
|
||||
crisis_sprite_->setPosX(shake_.origin + 15);
|
||||
coffee_crisis_status_ = Status::FINISHED;
|
||||
arcade_edition_status_ = Status::MOVING;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
coffee_sprite_->setPosX(shake_.origin);
|
||||
crisis_sprite_->setPosX(shake_.origin + 15);
|
||||
coffee_crisis_status_ = Status::FINISHED;
|
||||
arcade_edition_status_ = Status::MOVING;
|
||||
|
||||
dust_right_sprite_->update();
|
||||
dust_left_sprite_->update();
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
dust_right_sprite_->update();
|
||||
dust_left_sprite_->update();
|
||||
case Status::FINISHED: {
|
||||
dust_right_sprite_->update();
|
||||
dust_left_sprite_->update();
|
||||
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
case Status::FINISHED:
|
||||
{
|
||||
dust_right_sprite_->update();
|
||||
dust_left_sprite_->update();
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch (arcade_edition_status_)
|
||||
{
|
||||
case Status::MOVING:
|
||||
{
|
||||
zoom_ -= 0.1f * ZOOM_FACTOR;
|
||||
arcade_edition_sprite_->setZoom(zoom_);
|
||||
if (zoom_ <= 1.0f)
|
||||
{
|
||||
arcade_edition_status_ = Status::SHAKING;
|
||||
zoom_ = 1.0f;
|
||||
switch (arcade_edition_status_) {
|
||||
case Status::MOVING: {
|
||||
zoom_ -= 0.1f * ZOOM_FACTOR;
|
||||
arcade_edition_sprite_->setZoom(zoom_);
|
||||
shake_.init(1, 2, 8, arcade_edition_sprite_->getX());
|
||||
Audio::get()->playSound("title.wav");
|
||||
Screen::get()->flash(Color(0xFF, 0xFF, 0xFF), FLASH_LENGHT, FLASH_DELAY);
|
||||
Screen::get()->shake();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case Status::SHAKING:
|
||||
{
|
||||
// Agita "ARCADE EDITION"
|
||||
if (shake_.remaining > 0)
|
||||
{
|
||||
if (shake_.counter > 0)
|
||||
{
|
||||
shake_.counter--;
|
||||
}
|
||||
else
|
||||
{
|
||||
shake_.counter = shake_.delay;
|
||||
const auto desp = shake_.remaining % 2 == 0 ? shake_.desp * (-1) : shake_.desp;
|
||||
arcade_edition_sprite_->setX(shake_.origin + desp);
|
||||
shake_.remaining--;
|
||||
if (zoom_ <= 1.0f) {
|
||||
arcade_edition_status_ = Status::SHAKING;
|
||||
zoom_ = 1.0f;
|
||||
arcade_edition_sprite_->setZoom(zoom_);
|
||||
shake_.init(1, 2, 8, arcade_edition_sprite_->getX());
|
||||
Audio::get()->playSound("title.wav");
|
||||
Screen::get()->flash(Color(0xFF, 0xFF, 0xFF), FLASH_LENGHT, FLASH_DELAY);
|
||||
Screen::get()->shake();
|
||||
}
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
arcade_edition_sprite_->setX(shake_.origin);
|
||||
arcade_edition_status_ = Status::FINISHED;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
case Status::SHAKING: {
|
||||
// Agita "ARCADE EDITION"
|
||||
if (shake_.remaining > 0) {
|
||||
if (shake_.counter > 0) {
|
||||
shake_.counter--;
|
||||
} else {
|
||||
shake_.counter = shake_.delay;
|
||||
const auto desp = shake_.remaining % 2 == 0 ? shake_.desp * (-1) : shake_.desp;
|
||||
arcade_edition_sprite_->setX(shake_.origin + desp);
|
||||
shake_.remaining--;
|
||||
}
|
||||
} else {
|
||||
arcade_edition_sprite_->setX(shake_.origin);
|
||||
arcade_edition_status_ = Status::FINISHED;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (coffee_crisis_status_ == Status::FINISHED &&
|
||||
arcade_edition_status_ == Status::FINISHED &&
|
||||
post_finished_counter_ > 0)
|
||||
{
|
||||
post_finished_counter_ > 0) {
|
||||
--post_finished_counter_;
|
||||
}
|
||||
}
|
||||
|
||||
// Activa la clase
|
||||
void GameLogo::enable()
|
||||
{
|
||||
void GameLogo::enable() {
|
||||
init();
|
||||
coffee_crisis_status_ = Status::MOVING;
|
||||
}
|
||||
|
||||
// Indica si ha terminado la animación
|
||||
bool GameLogo::hasFinished() const
|
||||
{
|
||||
bool GameLogo::hasFinished() const {
|
||||
return post_finished_counter_ == 0;
|
||||
}
|
||||
|
||||
// Calcula el desplazamiento vertical inicial
|
||||
int GameLogo::getInitialVerticalDesp()
|
||||
{
|
||||
int GameLogo::getInitialVerticalDesp() {
|
||||
const float OFFSET_UP = y_;
|
||||
const float OFFSET_DOWN = param.game.height - y_;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user