Arreglados dos fallos del menu

This commit is contained in:
2022-10-06 19:06:39 +02:00
parent bebc016f3c
commit bb20522172
13 changed files with 118 additions and 73 deletions

Binary file not shown.

View File

@@ -20,7 +20,7 @@ isCenteredOnY=true
centerY=96
selector_color=229,28,35,255
selector_text_color=255,180,0
selector_text_color=255,241,118
defaultActionWhenCancel=13

View File

@@ -494,3 +494,11 @@ void AnimatedSprite::setAnimationCounter(int value)
a.counter = value;
}
}
// Reinicia la animación
void AnimatedSprite::resetAnimation()
{
animation.at(currentAnimation).currentFrame = 0;
animation.at(currentAnimation).counter = 0;
animation.at(currentAnimation).completed = false;
}

View File

@@ -8,7 +8,6 @@
#include <fstream>
#include <iostream>
#ifndef ANIMATEDSPRITE_H
#define ANIMATEDSPRITE_H
@@ -85,6 +84,9 @@ public:
// OLD - Establece el contador para todas las animaciones
void setAnimationCounter(int value);
// Reinicia la animación
void resetAnimation();
};
#endif

View File

@@ -323,26 +323,26 @@ void Balloon::render()
// Aplica alpha blending
sprite->getTexture()->setAlpha(255 - (int)((float)creationCounter * (255.0f / (float)creationCounterIni)));
sprite->render();
if (kind == POWER_BALL)
{
Sprite *sp = new Sprite(sprite->getRect(), sprite->getTexture(), sprite->getRenderer());
sp->setSpriteClip(407, 0, 37, 37);
sp->render();
delete sp;
}
//if (kind == POWER_BALL)
//{
// Sprite *sp = new Sprite(sprite->getRect(), sprite->getTexture(), sprite->getRenderer());
// sp->setSpriteClip(407, 0, 37, 37);
// sp->render();
// delete sp;
//}
sprite->getTexture()->setAlpha(255);
}
else
{
sprite->render();
if (kind == POWER_BALL and !popping)
{
Sprite *sp = new Sprite(sprite->getRect(), sprite->getTexture(), sprite->getRenderer());
sp->setSpriteClip(407, 0, 37, 37);
sp->render();
delete sp;
}
//if (kind == POWER_BALL and !popping)
//{
// Sprite *sp = new Sprite(sprite->getRect(), sprite->getTexture(), sprite->getRenderer());
// sp->setSpriteClip(407, 0, 37, 37);
// sp->render();
// delete sp;
//}
}
}
}

View File

@@ -12,6 +12,8 @@ Director::Director(std::string path)
section.name = PROG_SECTION_GAME;
section.subsection = GAME_SECTION_PLAY_1P;
section.name = PROG_SECTION_INTRO;
// Crea el objeto que controla los ficheros de recursos
asset = new Asset(path.substr(0, path.find_last_of("\\/")) + "/../");
@@ -100,7 +102,8 @@ bool Director::initSDL()
bool success = true;
// Inicializa SDL
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_GAMECONTROLLER | SDL_INIT_AUDIO) < 0)
if (SDL_Init(SDL_INIT_EVERYTHING) < 0)
// if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_GAMECONTROLLER | SDL_INIT_AUDIO) < 0)
{
printf("SDL could not initialize!\nSDL Error: %s\n", SDL_GetError());
success = false;
@@ -127,9 +130,13 @@ bool Director::initSDL()
{
// Crea un renderizador para la ventana. El vsync se activa en funcion de las opciones
if (options->vSync)
{
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
}
else
{
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
}
if (renderer == nullptr)
{

View File

@@ -101,19 +101,19 @@ Intro::Intro(SDL_Renderer *renderer, Screen *screen, Asset *asset, Lang *lang)
// Un dia qualsevol de l'any 2000
texts.at(0)->setCaption(lang->getText(27));
texts.at(0)->setSpeed(10);
texts.at(0)->setSpeed(8);
// Tot esta tranquil a la UPV
texts.at(1)->setCaption(lang->getText(28));
texts.at(1)->setSpeed(10);
texts.at(1)->setSpeed(8);
// Fins que un desaprensiu...
texts.at(2)->setCaption(lang->getText(29));
texts.at(2)->setSpeed(15);
texts.at(2)->setSpeed(12);
// HEY! ME ANE A FERME UN CORTAET...
texts.at(3)->setCaption(lang->getText(30));
texts.at(3)->setSpeed(10);
texts.at(3)->setSpeed(8);
// UAAAAAAAAAAAAA!!!
texts.at(4)->setCaption(lang->getText(31));
@@ -121,7 +121,7 @@ Intro::Intro(SDL_Renderer *renderer, Screen *screen, Asset *asset, Lang *lang)
// Espera un moment...
texts.at(5)->setCaption(lang->getText(32));
texts.at(5)->setSpeed(20);
texts.at(5)->setSpeed(16);
// Si resulta que no tinc solt!
texts.at(6)->setCaption(lang->getText(33));
@@ -133,7 +133,7 @@ Intro::Intro(SDL_Renderer *renderer, Screen *screen, Asset *asset, Lang *lang)
// Blop... blop... blop...
texts.at(8)->setCaption(lang->getText(35));
texts.at(8)->setSpeed(20);
texts.at(8)->setSpeed(16);
for (auto text : texts)
{

View File

@@ -554,7 +554,7 @@ bool Menu::decreaseSelectorIndex()
// Calcula cual es el siguiente elemento
if (selector.index == 0)
{
selector.index = item.size();
selector.index = item.size() - 1;
}
else
{
@@ -565,7 +565,7 @@ bool Menu::decreaseSelectorIndex()
{
if (selector.index == 0)
{
selector.index = item.size();
selector.index = item.size() - 1;
}
else
{
@@ -740,11 +740,11 @@ void Menu::addItem(std::string text, int hPaddingDown, bool selectable, bool gre
item_t temp;
if (item.empty())
{// Si es el primer item coge la posición en el eje Y del propio menu
{ // Si es el primer item coge la posición en el eje Y del propio menu
temp.rect.y = y;
}
else
{// En caso contrario, coge la posición en el eje Y a partir del último elemento
{ // En caso contrario, coge la posición en el eje Y a partir del último elemento
temp.rect.y = item.back().rect.y + item.back().rect.h + item.back().hPaddingDown;
}

View File

@@ -22,7 +22,9 @@ Screen::Screen(SDL_Window *window, SDL_Renderer *renderer, options_t *options, i
// Crea la textura donde se dibujan los graficos del juego
gameCanvas = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, gameCanvasWidth, gameCanvasHeight);
if (gameCanvas == NULL)
{
printf("TitleSurface could not be created!\nSDL Error: %s\n", SDL_GetError());
}
// Establece el modo de video
setVideoMode(options->fullScreenMode);

View File

@@ -8,7 +8,18 @@ SmartSprite::SmartSprite(LTexture *texture, SDL_Renderer *renderer)
setTexture(texture);
setRenderer(renderer);
// Inicializa variables
// Inicializa el objeto
init();
}
// Destructor
SmartSprite::~SmartSprite()
{
}
// Inicializa el objeto
void SmartSprite::init()
{
enabled = false;
enabledCounter = 0;
onDestination = false;
@@ -18,11 +29,6 @@ SmartSprite::SmartSprite(LTexture *texture, SDL_Renderer *renderer)
finished = false;
}
// Destructor
SmartSprite::~SmartSprite()
{
}
// Actualiza la posición y comprueba si ha llegado a su destino
void SmartSprite::update()
{

View File

@@ -33,6 +33,9 @@ public:
// Destructor
~SmartSprite();
// Inicializa el objeto
void init();
// Actualiza la posición y comprueba si ha llegado a su destino
void update();

View File

@@ -11,6 +11,8 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Input *input, Asset *asset,
this->options = options;
this->lang = lang;
this->section = section;
// Reserva memoria para los punteros propios
eventHandler = new SDL_Event();
fade = new Fade(renderer);
@@ -38,8 +40,51 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Input *input, Asset *asset,
// Musicas
titleMusic = JA_LoadMusic(asset->get("title.ogg").c_str());
// Inicializa los valores
init();
}
// Destructor
Title::~Title()
{
delete eventHandler;
delete fade;
dustTexture->unload();
delete dustTexture;
coffeeTexture->unload();
delete coffeeTexture;
crisisTexture->unload();
delete crisisTexture;
gradientTexture->unload();
delete gradientTexture;
delete coffeeBitmap;
delete crisisBitmap;
delete dustBitmapL;
delete dustBitmapR;
delete gradient;
delete text1;
delete text2;
delete menu.title;
delete menu.options;
JA_DeleteSound(crashSound);
JA_DeleteMusic(titleMusic);
SDL_DestroyTexture(background);
}
// Inicializa los valores
void Title::init()
{
// Inicializa variables
this->section = section;
section.subsection = TITLE_SECTION_1;
counter = TITLE_COUNTER;
backgroundCounter = 0;
backgroundMode = rand() % 2;
@@ -83,6 +128,7 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Input *input, Asset *asset,
}
// Inicializa el bitmap de Coffee
coffeeBitmap->init();
coffeeBitmap->setPosX(45);
coffeeBitmap->setPosY(11 - 200);
coffeeBitmap->setWidth(167);
@@ -98,6 +144,7 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Input *input, Asset *asset,
coffeeBitmap->setDestY(11);
// Inicializa el bitmap de Crisis
crisisBitmap->init();
crisisBitmap->setPosX(60);
crisisBitmap->setPosY(57 + 200);
crisisBitmap->setWidth(137);
@@ -113,6 +160,7 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Input *input, Asset *asset,
crisisBitmap->setDestY(57);
// Inicializa el bitmap de DustRight
dustBitmapR->resetAnimation();
dustBitmapR->setPosX(218);
dustBitmapR->setPosY(47);
dustBitmapR->setWidth(16);
@@ -120,6 +168,7 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Input *input, Asset *asset,
dustBitmapR->setFlip(SDL_FLIP_HORIZONTAL);
// Inicializa el bitmap de DustLeft
dustBitmapL->resetAnimation();
dustBitmapL->setPosX(33);
dustBitmapL->setPosY(47);
dustBitmapL->setWidth(16);
@@ -147,42 +196,6 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Input *input, Asset *asset,
updateMenuLabels();
}
// Destructor
Title::~Title()
{
delete eventHandler;
delete fade;
dustTexture->unload();
delete dustTexture;
coffeeTexture->unload();
delete coffeeTexture;
crisisTexture->unload();
delete crisisTexture;
gradientTexture->unload();
delete gradientTexture;
delete coffeeBitmap;
delete crisisBitmap;
delete dustBitmapL;
delete dustBitmapR;
delete gradient;
delete text1;
delete text2;
delete menu.title;
delete menu.options;
JA_DeleteSound(crashSound);
JA_DeleteMusic(titleMusic);
SDL_DestroyTexture(background);
}
// Actualiza las variables del objeto
void Title::update()
{
@@ -439,6 +452,7 @@ void Title::update()
{
runDemoGame();
runInstructions(m_auto);
init();
demo = false;
counter = TITLE_COUNTER;
}

View File

@@ -91,6 +91,9 @@ private:
std::vector<input_t> availableInputDevices; // Vector con todos los metodos de control disponibles
std::vector<int> deviceIndex; // Indice para el jugador [i] del vector de dispositivos de entrada disponibles
// Inicializa los valores
void init();
// Actualiza las variables del objeto
void update();