Commitet pa gastar el Cppcheck

This commit is contained in:
2024-10-08 20:32:24 +02:00
parent c00f4326ae
commit 3e3d764b25
12 changed files with 241 additions and 405 deletions

View File

@@ -1,40 +1,36 @@
#include "game_logo.h"
#include <algorithm> // for max
#include <string> // for basic_string
#include "animated_sprite.h" // for AnimatedSprite
#include "animated_sprite.h" // for AnimatedSprite
#include "asset.h" // for Asset
#include "jail_audio.h" // for JA_DeleteSound, JA_LoadSound, JA_PlaySound
#include "param.h" // for param
#include "screen.h" // for Screen
#include "smart_sprite.h" // for SmartSprite
#include "smart_sprite.h" // for SmartSprite
#include "sprite.h" // for Sprite
#include "texture.h" // for Texture
#include "utils.h" // for param_t, paramGame_t, paramTitle_t
// Constructor
GameLogo::GameLogo(int x, int y)
: x(x), y(y)
{
// Copia los punteros
screen = Screen::get();
renderer = screen->getRenderer();
asset = Asset::get();
this->x = x;
this->y = y;
// Crea los objetos
dustTexture = new Texture(renderer, asset->get("title_dust.png"));
coffeeTexture = new Texture(renderer, asset->get("title_coffee.png"));
crisisTexture = new Texture(renderer, asset->get("title_crisis.png"));
arcadeEditionTexture = new Texture(renderer, asset->get("title_arcade_edition.png"));
dustTexture = std::make_unique<Texture>(Screen::get()->getRenderer(), Asset::get()->get("title_dust.png"));
coffeeTexture = std::make_unique<Texture>(Screen::get()->getRenderer(), Asset::get()->get("title_coffee.png"));
crisisTexture = std::make_unique<Texture>(Screen::get()->getRenderer(), Asset::get()->get("title_crisis.png"));
arcadeEditionTexture = std::make_unique<Texture>(Screen::get()->getRenderer(), Asset::get()->get("title_arcade_edition.png"));
coffeeBitmap = new SmartSprite(coffeeTexture);
crisisBitmap = new SmartSprite(crisisTexture);
arcadeEditionBitmap = new Sprite((param.game.width - arcadeEditionTexture->getWidth()) / 2, param.title.arcadeEditionPosition, arcadeEditionTexture->getWidth(), arcadeEditionTexture->getHeight(), arcadeEditionTexture);
dustBitmapL = new AnimatedSprite(dustTexture, asset->get("title_dust.ani"));
dustBitmapR = new AnimatedSprite(dustTexture, asset->get("title_dust.ani"));
coffeeSprite = std::make_unique<SmartSprite>(coffeeTexture.get());
crisisSprite = std::make_unique<SmartSprite>(crisisTexture.get());
arcadeEditionSprite = std::make_unique<Sprite>((param.game.width - arcadeEditionTexture->getWidth()) / 2, param.title.arcadeEditionPosition, arcadeEditionTexture->getWidth(), arcadeEditionTexture->getHeight(), arcadeEditionTexture.get());
dustLSprite = std::make_unique<AnimatedSprite>(dustTexture.get(), Asset::get()->get("title_dust.ani"));
dustRSprite = std::make_unique<AnimatedSprite>(dustTexture.get(), Asset::get()->get("title_dust.ani"));
// Sonidos
crashSound = JA_LoadSound(asset->get("title.wav").c_str());
crashSound = JA_LoadSound(Asset::get()->get("title.wav").c_str());
// Inicializa las variables
init();
@@ -43,28 +39,17 @@ GameLogo::GameLogo(int x, int y)
// Destructor
GameLogo::~GameLogo()
{
delete dustTexture;
delete coffeeTexture;
delete crisisTexture;
delete arcadeEditionTexture;
delete coffeeBitmap;
delete crisisBitmap;
delete arcadeEditionBitmap;
delete dustBitmapL;
delete dustBitmapR;
JA_DeleteSound(crashSound);
}
// Inicializa las variables
void GameLogo::init()
{
const int xp = x - coffeeBitmap->getWidth() / 2;
const int desp = getInitialVerticalDesp();
const auto xp = x - coffeeSprite->getWidth() / 2;
const auto desp = getInitialVerticalDesp();
// Variables
status = disabled;
status = Status::DISABLED;
shake.desp = 1;
shake.delay = 2;
shake.lenght = 8;
@@ -73,90 +58,89 @@ void GameLogo::init()
shake.origin = xp;
// Inicializa el bitmap de 'Coffee'
coffeeBitmap->init();
coffeeBitmap->setPosX(xp);
coffeeBitmap->setPosY(y - coffeeTexture->getHeight() - desp);
coffeeBitmap->setWidth(coffeeTexture->getWidth());
coffeeBitmap->setHeight(coffeeTexture->getHeight());
coffeeBitmap->setVelX(0.0f);
coffeeBitmap->setVelY(2.5f);
coffeeBitmap->setAccelX(0.0f);
coffeeBitmap->setAccelY(0.1f);
coffeeBitmap->setSpriteClip(0, 0, coffeeTexture->getWidth(), coffeeTexture->getHeight());
coffeeBitmap->setEnabled(true);
coffeeBitmap->setEnabledCounter(0);
coffeeBitmap->setDestX(xp);
coffeeBitmap->setDestY(y - coffeeTexture->getHeight());
coffeeSprite->init();
coffeeSprite->setPosX(xp);
coffeeSprite->setPosY(y - coffeeTexture->getHeight() - desp);
coffeeSprite->setWidth(coffeeTexture->getWidth());
coffeeSprite->setHeight(coffeeTexture->getHeight());
coffeeSprite->setVelX(0.0f);
coffeeSprite->setVelY(2.5f);
coffeeSprite->setAccelX(0.0f);
coffeeSprite->setAccelY(0.1f);
coffeeSprite->setSpriteClip(0, 0, coffeeTexture->getWidth(), coffeeTexture->getHeight());
coffeeSprite->setEnabled(true);
coffeeSprite->setEnabledCounter(0);
coffeeSprite->setDestX(xp);
coffeeSprite->setDestY(y - coffeeTexture->getHeight());
// Inicializa el bitmap de 'Crisis'
crisisBitmap->init();
crisisBitmap->setPosX(xp + 15);
crisisBitmap->setPosY(y + desp);
crisisBitmap->setWidth(crisisTexture->getWidth());
crisisBitmap->setHeight(crisisTexture->getHeight());
crisisBitmap->setVelX(0.0f);
crisisBitmap->setVelY(-2.5f);
crisisBitmap->setAccelX(0.0f);
crisisBitmap->setAccelY(-0.1f);
crisisBitmap->setSpriteClip(0, 0, crisisTexture->getWidth(), crisisTexture->getHeight());
crisisBitmap->setEnabled(true);
crisisBitmap->setEnabledCounter(0);
crisisBitmap->setDestX(xp + 15);
crisisBitmap->setDestY(y);
crisisSprite->init();
crisisSprite->setPosX(xp + 15);
crisisSprite->setPosY(y + desp);
crisisSprite->setWidth(crisisTexture->getWidth());
crisisSprite->setHeight(crisisTexture->getHeight());
crisisSprite->setVelX(0.0f);
crisisSprite->setVelY(-2.5f);
crisisSprite->setAccelX(0.0f);
crisisSprite->setAccelY(-0.1f);
crisisSprite->setSpriteClip(0, 0, crisisTexture->getWidth(), crisisTexture->getHeight());
crisisSprite->setEnabled(true);
crisisSprite->setEnabledCounter(0);
crisisSprite->setDestX(xp + 15);
crisisSprite->setDestY(y);
// Inicializa el bitmap de 'DustRight'
dustBitmapR->resetAnimation();
dustBitmapR->setPosX(coffeeBitmap->getPosX() + coffeeBitmap->getWidth());
dustBitmapR->setPosY(y);
dustBitmapR->setWidth(16);
dustBitmapR->setHeight(16);
dustBitmapR->setFlip(SDL_FLIP_HORIZONTAL);
dustRSprite->resetAnimation();
dustRSprite->setPosX(coffeeSprite->getPosX() + coffeeSprite->getWidth());
dustRSprite->setPosY(y);
dustRSprite->setWidth(16);
dustRSprite->setHeight(16);
dustRSprite->setFlip(SDL_FLIP_HORIZONTAL);
// Inicializa el bitmap de 'DustLeft'
dustBitmapL->resetAnimation();
dustBitmapL->setPosX(coffeeBitmap->getPosX() - 16);
dustBitmapL->setPosY(y);
dustBitmapL->setWidth(16);
dustBitmapL->setHeight(16);
dustLSprite->resetAnimation();
dustLSprite->setPosX(coffeeSprite->getPosX() - 16);
dustLSprite->setPosY(y);
dustLSprite->setWidth(16);
dustLSprite->setHeight(16);
}
// Pinta la clase en pantalla
void GameLogo::render()
{
// Dibuja el logo
coffeeBitmap->render();
crisisBitmap->render();
coffeeSprite->render();
crisisSprite->render();
if (status == finished)
arcadeEditionBitmap->render();
if (status == Status::FINISHED)
{
arcadeEditionSprite->render();
}
// Dibuja el polvillo del logo
dustBitmapR->render();
dustBitmapL->render();
dustRSprite->render();
dustLSprite->render();
}
// Actualiza la lógica de la clase
void GameLogo::update()
{
if (status == moving)
if (status == Status::MOVING)
{
coffeeBitmap->update();
crisisBitmap->update();
coffeeSprite->update();
crisisSprite->update();
// Si los objetos han llegado a su destino, cambiamos de Sección
if (coffeeBitmap->hasFinished() && crisisBitmap->hasFinished())
if (coffeeSprite->hasFinished() && crisisSprite->hasFinished())
{
status = shaking;
// Pantallazo blanco
//screen->flash(flashColor, 10);
status = Status::SHAKING;
// Reproduce el efecto sonoro
JA_PlaySound(crashSound);
}
}
else if (status == shaking)
else if (status == Status::SHAKING)
{
// Agita el logo
if (shake.remaining > 0)
@@ -168,27 +152,27 @@ void GameLogo::update()
else
{
shake.counter = shake.delay;
const int desp = shake.remaining % 2 == 0 ? shake.desp * (-1) : shake.desp;
coffeeBitmap->setPosX(shake.origin + desp);
crisisBitmap->setPosX(shake.origin + desp + 15);
const auto desp = shake.remaining % 2 == 0 ? shake.desp * (-1) : shake.desp;
coffeeSprite->setPosX(shake.origin + desp);
crisisSprite->setPosX(shake.origin + desp + 15);
shake.remaining--;
}
}
else
{
coffeeBitmap->setPosX(shake.origin);
crisisBitmap->setPosX(shake.origin + 15);
status = finished;
coffeeSprite->setPosX(shake.origin);
crisisSprite->setPosX(shake.origin + 15);
status = Status::FINISHED;
}
dustBitmapR->update();
dustBitmapL->update();
dustRSprite->update();
dustLSprite->update();
}
else if (status == finished)
else if (status == Status::FINISHED)
{
dustBitmapR->update();
dustBitmapL->update();
dustRSprite->update();
dustLSprite->update();
}
}
@@ -196,13 +180,13 @@ void GameLogo::update()
void GameLogo::enable()
{
init();
status = moving;
status = Status::MOVING;
}
// Indica si ha terminado la animación
bool GameLogo::hasFinished()
bool GameLogo::hasFinished() const
{
return (status == finished);
return status == Status::FINISHED;
}
// Recarga las texturas
@@ -216,8 +200,8 @@ void GameLogo::reLoad()
// Calcula el desplazamiento vertical inicial
int GameLogo::getInitialVerticalDesp()
{
int despUp = y;
int despDown = param.game.height - y;
auto despUp = y;
auto despDown = param.game.height - y;
return std::max(despUp, despDown);
}