Arreglados dos fallos del menu
This commit is contained in:
Binary file not shown.
@@ -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
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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
|
||||
@@ -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;
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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()
|
||||
{
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user