multi lang support
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "ifdefs.h"
|
#include "ifdefs.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
#include "lang.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#ifndef CONST_H
|
#ifndef CONST_H
|
||||||
@@ -257,6 +258,9 @@ const int MULTIPLIER_NUMBER_Y = SCREEN_HEIGHT - (2 * BLOCK) + 2;
|
|||||||
#define BALLOON_WIDTH_3 21
|
#define BALLOON_WIDTH_3 21
|
||||||
#define BALLOON_WIDTH_4 37
|
#define BALLOON_WIDTH_4 37
|
||||||
|
|
||||||
|
// PowerBall
|
||||||
|
#define POWERBALL_SCREENPOWER_MINIMUM 10
|
||||||
|
|
||||||
// Tipos de bala
|
// Tipos de bala
|
||||||
#define BULLET_UP 1
|
#define BULLET_UP 1
|
||||||
#define BULLET_LEFT 2
|
#define BULLET_LEFT 2
|
||||||
|
|||||||
@@ -37,9 +37,6 @@ Director::Director(std::string path)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Carga recursos
|
|
||||||
loadConfigFile();
|
|
||||||
|
|
||||||
// Inicializa el resto de variables
|
// Inicializa el resto de variables
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
@@ -65,9 +62,21 @@ Director::~Director()
|
|||||||
// Inicia las variables necesarias para arrancar el programa
|
// Inicia las variables necesarias para arrancar el programa
|
||||||
void Director::init()
|
void Director::init()
|
||||||
{
|
{
|
||||||
|
// Carga el fichero de configuración
|
||||||
|
if (!loadConfigFile())
|
||||||
|
{
|
||||||
|
mOptions->fullScreenMode = 0;
|
||||||
|
mOptions->windowSize = 3;
|
||||||
|
mOptions->language = en_UK;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sección
|
||||||
mSection.name = PROG_SECTION_LOGO;
|
mSection.name = PROG_SECTION_LOGO;
|
||||||
mSection.subsection = 0;
|
mSection.subsection = 0;
|
||||||
|
|
||||||
|
// Textos
|
||||||
|
initTextStrings(mTextStrings, mOptions->language);
|
||||||
|
|
||||||
// Teclado
|
// Teclado
|
||||||
mInput->bindKey(INPUT_UP, SDL_SCANCODE_UP);
|
mInput->bindKey(INPUT_UP, SDL_SCANCODE_UP);
|
||||||
mInput->bindKey(INPUT_DOWN, SDL_SCANCODE_DOWN);
|
mInput->bindKey(INPUT_DOWN, SDL_SCANCODE_DOWN);
|
||||||
@@ -291,6 +300,11 @@ bool Director::checkFileList()
|
|||||||
// Carga el fichero de configuración
|
// Carga el fichero de configuración
|
||||||
bool Director::loadConfigFile()
|
bool Director::loadConfigFile()
|
||||||
{
|
{
|
||||||
|
// Pone unos valores por defecto
|
||||||
|
mOptions->fullScreenMode = 0;
|
||||||
|
mOptions->windowSize = 3;
|
||||||
|
mOptions->language = en_UK;
|
||||||
|
|
||||||
// Indicador de éxito en la carga
|
// Indicador de éxito en la carga
|
||||||
bool success = true;
|
bool success = true;
|
||||||
|
|
||||||
@@ -303,20 +317,18 @@ bool Director::loadConfigFile()
|
|||||||
{
|
{
|
||||||
printf("Warning: Unable to open %s file\n", filename.c_str());
|
printf("Warning: Unable to open %s file\n", filename.c_str());
|
||||||
|
|
||||||
// Creamos el fichero para escritura
|
// Crea el fichero para escritura
|
||||||
file = SDL_RWFromFile(p.c_str(), "w+b");
|
file = SDL_RWFromFile(p.c_str(), "w+b");
|
||||||
if (file != NULL)
|
if (file != NULL)
|
||||||
{
|
{
|
||||||
printf("New file (%s) created!\n", filename.c_str());
|
printf("New file (%s) created!\n", filename.c_str());
|
||||||
|
|
||||||
// Inicializamos los datos
|
// Escribe los datos
|
||||||
mOptions->fullScreenMode = 0;
|
|
||||||
SDL_RWwrite(file, &mOptions->fullScreenMode, sizeof(mOptions->fullScreenMode), 1);
|
SDL_RWwrite(file, &mOptions->fullScreenMode, sizeof(mOptions->fullScreenMode), 1);
|
||||||
|
|
||||||
mOptions->windowSize = 3;
|
|
||||||
SDL_RWwrite(file, &mOptions->windowSize, sizeof(mOptions->windowSize), 1);
|
SDL_RWwrite(file, &mOptions->windowSize, sizeof(mOptions->windowSize), 1);
|
||||||
|
SDL_RWwrite(file, &mOptions->language, sizeof(mOptions->language), 1);
|
||||||
|
|
||||||
// Cerramos el fichero
|
// Cierra el fichero
|
||||||
SDL_RWclose(file);
|
SDL_RWclose(file);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -332,10 +344,22 @@ bool Director::loadConfigFile()
|
|||||||
printf("Reading file %s\n", filename.c_str());
|
printf("Reading file %s\n", filename.c_str());
|
||||||
SDL_RWread(file, &mOptions->fullScreenMode, sizeof(mOptions->fullScreenMode), 1);
|
SDL_RWread(file, &mOptions->fullScreenMode, sizeof(mOptions->fullScreenMode), 1);
|
||||||
SDL_RWread(file, &mOptions->windowSize, sizeof(mOptions->windowSize), 1);
|
SDL_RWread(file, &mOptions->windowSize, sizeof(mOptions->windowSize), 1);
|
||||||
|
SDL_RWread(file, &mOptions->language, sizeof(mOptions->language), 1);
|
||||||
|
|
||||||
|
// Normaliza los valores
|
||||||
|
if (!((mOptions->fullScreenMode == 0) ||
|
||||||
|
(mOptions->fullScreenMode == SDL_WINDOW_FULLSCREEN) ||
|
||||||
|
(mOptions->fullScreenMode == SDL_WINDOW_FULLSCREEN_DESKTOP)))
|
||||||
|
mOptions->fullScreenMode = 0;
|
||||||
|
if ((mOptions->windowSize < 1) || (mOptions->windowSize > 4))
|
||||||
|
mOptions->windowSize = 3;
|
||||||
|
if ((mOptions->language < 0) || (mOptions->language > MAX_LANGUAGES))
|
||||||
|
mOptions->language = en_UK;
|
||||||
|
|
||||||
// Aplica las opciones
|
// Aplica las opciones
|
||||||
SDL_SetWindowFullscreen(mWindow, mOptions->fullScreenMode);
|
SDL_SetWindowFullscreen(mWindow, mOptions->fullScreenMode);
|
||||||
SDL_SetWindowSize(mWindow, SCREEN_WIDTH * mOptions->windowSize, SCREEN_HEIGHT * mOptions->windowSize);
|
SDL_SetWindowSize(mWindow, SCREEN_WIDTH * mOptions->windowSize, SCREEN_HEIGHT * mOptions->windowSize);
|
||||||
|
initTextStrings(mTextStrings, mOptions->language);
|
||||||
|
|
||||||
// Cierra el fichero
|
// Cierra el fichero
|
||||||
SDL_RWclose(file);
|
SDL_RWclose(file);
|
||||||
@@ -356,6 +380,7 @@ bool Director::saveConfigFile()
|
|||||||
// Guarda los datos
|
// Guarda los datos
|
||||||
SDL_RWwrite(file, &mOptions->fullScreenMode, sizeof(Uint32), 1);
|
SDL_RWwrite(file, &mOptions->fullScreenMode, sizeof(Uint32), 1);
|
||||||
SDL_RWwrite(file, &mOptions->windowSize, sizeof(Uint8), 1);
|
SDL_RWwrite(file, &mOptions->windowSize, sizeof(Uint8), 1);
|
||||||
|
SDL_RWwrite(file, &mOptions->language, sizeof(Uint8), 1);
|
||||||
|
|
||||||
printf("Writing file %s\n", filename.c_str());
|
printf("Writing file %s\n", filename.c_str());
|
||||||
|
|
||||||
@@ -402,35 +427,27 @@ void Director::runLogo()
|
|||||||
|
|
||||||
void Director::runIntro()
|
void Director::runIntro()
|
||||||
{
|
{
|
||||||
mIntro = new Intro(mRenderer, mFileList);
|
mIntro = new Intro(mRenderer, mFileList, mTextStrings);
|
||||||
setSection(mIntro->run());
|
setSection(mIntro->run());
|
||||||
delete mIntro;
|
delete mIntro;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Director::runTitle()
|
void Director::runTitle()
|
||||||
{
|
{
|
||||||
mTitle = new Title(mWindow, mRenderer, mInput, mFileList, mOptions);
|
mTitle = new Title(mWindow, mRenderer, mInput, mFileList, mOptions, mTextStrings);
|
||||||
setSection(mTitle->run(mSection.subsection));
|
setSection(mTitle->run(mSection.subsection));
|
||||||
delete mTitle;
|
delete mTitle;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Director::runGame()
|
void Director::runGame()
|
||||||
{
|
{
|
||||||
mGame = new Game(mRenderer, mFileList, mInput, false);
|
mGame = new Game(mRenderer, mFileList, mTextStrings, mInput, false);
|
||||||
setSection(mGame->run());
|
setSection(mGame->run());
|
||||||
delete mGame;
|
delete mGame;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Director::run()
|
void Director::run()
|
||||||
{
|
{
|
||||||
//for (int i = 0; i < 100; i++)
|
|
||||||
//{
|
|
||||||
// Game *test = new Game(mRenderer, mFileList, mInput, true);
|
|
||||||
// delete test;
|
|
||||||
// printf("%i\n", i);
|
|
||||||
//}
|
|
||||||
//mSection.name = PROG_SECTION_QUIT;
|
|
||||||
|
|
||||||
// Bucle principal
|
// Bucle principal
|
||||||
while (!(getSection() == PROG_SECTION_QUIT))
|
while (!(getSection() == PROG_SECTION_QUIT))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ private:
|
|||||||
|
|
||||||
std::string mFileList[100]; // Vector con las rutas a los ficheros de recursos
|
std::string mFileList[100]; // Vector con las rutas a los ficheros de recursos
|
||||||
struct options_t *mOptions; // Variable con todas las opciones del programa
|
struct options_t *mOptions; // Variable con todas las opciones del programa
|
||||||
|
std::string mTextStrings[MAX_TEXT_STRINGS]; // Vector con los textos del juego
|
||||||
|
|
||||||
std::string mExecutablePath; // Path del ejecutable
|
std::string mExecutablePath; // Path del ejecutable
|
||||||
section_t mSection; // Sección y subsección actual del programa;
|
section_t mSection; // Sección y subsección actual del programa;
|
||||||
@@ -48,6 +49,9 @@ private:
|
|||||||
// Inicializa jail_audio
|
// Inicializa jail_audio
|
||||||
void initJailAudio();
|
void initJailAudio();
|
||||||
|
|
||||||
|
// Inicializa los textos del juego en el idioma seleccionado
|
||||||
|
//void initTextStrings(Uint8 lang);
|
||||||
|
|
||||||
// Arranca SDL y crea la ventana
|
// Arranca SDL y crea la ventana
|
||||||
bool initSDL();
|
bool initSDL();
|
||||||
|
|
||||||
@@ -83,7 +87,6 @@ private:
|
|||||||
|
|
||||||
void runGame();
|
void runGame();
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
Director(std::string path);
|
Director(std::string path);
|
||||||
|
|||||||
@@ -5,11 +5,12 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
Game::Game(SDL_Renderer *renderer, std::string *filelist, Input *input, bool demo)
|
Game::Game(SDL_Renderer *renderer, std::string *filelist, std::string *textStrings, Input *input, bool demo)
|
||||||
{
|
{
|
||||||
// Referencia objetos
|
// Copia los punteros
|
||||||
mRenderer = renderer;
|
mRenderer = renderer;
|
||||||
mFileList = filelist;
|
mFileList = filelist;
|
||||||
|
mTextStrings = textStrings;
|
||||||
mInput = input;
|
mInput = input;
|
||||||
mDemo.enabled = demo;
|
mDemo.enabled = demo;
|
||||||
|
|
||||||
@@ -300,8 +301,8 @@ void Game::init()
|
|||||||
|
|
||||||
// Inicializa el objeto con el menu de pausa
|
// Inicializa el objeto con el menu de pausa
|
||||||
mMenuPause->init("PAUSE", 0, 12 * BLOCK, MENU_BACKGROUND_SOLID);
|
mMenuPause->init("PAUSE", 0, 12 * BLOCK, MENU_BACKGROUND_SOLID);
|
||||||
mMenuPause->addItem("CONTINUE");
|
mMenuPause->addItem(mTextStrings[46]);
|
||||||
mMenuPause->addItem("EXIT TO TITLE");
|
mMenuPause->addItem(mTextStrings[47]);
|
||||||
mMenuPause->setDefaultActionWhenCancel(0);
|
mMenuPause->setDefaultActionWhenCancel(0);
|
||||||
mMenuPause->setBackgroundColor(0x29, 0x39, 0x41, 240);
|
mMenuPause->setBackgroundColor(0x29, 0x39, 0x41, 240);
|
||||||
mMenuPause->setSelectorColor(0xFF, 0x7A, 0x00, 255);
|
mMenuPause->setSelectorColor(0xFF, 0x7A, 0x00, 255);
|
||||||
@@ -311,8 +312,8 @@ void Game::init()
|
|||||||
|
|
||||||
// Inicializa el objeto con el menu de la pantalla de game over
|
// Inicializa el objeto con el menu de la pantalla de game over
|
||||||
mMenuGameOver->init("GAME OVER", 0, PLAY_AREA_CENTER_Y + BLOCK * 4, MENU_BACKGROUND_TRANSPARENT);
|
mMenuGameOver->init("GAME OVER", 0, PLAY_AREA_CENTER_Y + BLOCK * 4, MENU_BACKGROUND_TRANSPARENT);
|
||||||
mMenuGameOver->addItem("YES");
|
mMenuGameOver->addItem(mTextStrings[48]);
|
||||||
mMenuGameOver->addItem("NO");
|
mMenuGameOver->addItem(mTextStrings[49]);
|
||||||
mMenuGameOver->setDefaultActionWhenCancel(1);
|
mMenuGameOver->setDefaultActionWhenCancel(1);
|
||||||
mMenuGameOver->setBackgroundColor(0, 0, 0, 255);
|
mMenuGameOver->setBackgroundColor(0, 0, 0, 255);
|
||||||
mMenuGameOver->setSelectorColor(0x54, 0x6e, 0x7a, 255);
|
mMenuGameOver->setSelectorColor(0x54, 0x6e, 0x7a, 255);
|
||||||
@@ -1362,6 +1363,7 @@ void Game::deployEnemyFormation()
|
|||||||
// Crea una powerball
|
// Crea una powerball
|
||||||
createPowerBall();
|
createPowerBall();
|
||||||
|
|
||||||
|
// Da un poco de margen para que se creen mas enemigos
|
||||||
mEnemyDeployCounter = 50;
|
mEnemyDeployCounter = 50;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1491,16 +1493,16 @@ void Game::renderScoreBoard()
|
|||||||
//if (!mDemo.enabled)
|
//if (!mDemo.enabled)
|
||||||
{
|
{
|
||||||
// SCORE
|
// SCORE
|
||||||
mText->writeCentered(PLAY_AREA_CENTER_FIRST_QUARTER_X, SCORE_WORD_Y - 6, "SCORE", 0);
|
mText->writeCentered(PLAY_AREA_CENTER_FIRST_QUARTER_X, SCORE_WORD_Y - 6, mTextStrings[39], 0);
|
||||||
mText->writeCentered(PLAY_AREA_CENTER_FIRST_QUARTER_X, SCORE_NUMBER_Y - 6, updateScoreText(mScore), 0);
|
mText->writeCentered(PLAY_AREA_CENTER_FIRST_QUARTER_X, SCORE_NUMBER_Y - 6, updateScoreText(mScore), 0);
|
||||||
|
|
||||||
// HI-SCORE
|
// HI-SCORE
|
||||||
mText->writeCentered(PLAY_AREA_CENTER_THIRD_QUARTER_X, HISCORE_WORD_Y - 6, "HI-SCORE", 0);
|
mText->writeCentered(PLAY_AREA_CENTER_THIRD_QUARTER_X, HISCORE_WORD_Y - 6, mTextStrings[40], 0);
|
||||||
mText->writeCentered(PLAY_AREA_CENTER_THIRD_QUARTER_X, HISCORE_NUMBER_Y - 6, updateScoreText(mHiScore), 0);
|
mText->writeCentered(PLAY_AREA_CENTER_THIRD_QUARTER_X, HISCORE_NUMBER_Y - 6, updateScoreText(mHiScore), 0);
|
||||||
|
|
||||||
// MULT
|
// MULT
|
||||||
color.g = 255;
|
color.g = 255;
|
||||||
mText->writeColored(MULTIPLIER_WORD_X, MULTIPLIER_WORD_Y - 6, "MULT", color);
|
mText->writeColored(MULTIPLIER_WORD_X, MULTIPLIER_WORD_Y - 6, mTextStrings[41], color);
|
||||||
|
|
||||||
color.g = 192;
|
color.g = 192;
|
||||||
mTextX2->writeShadowed(PLAY_AREA_CENTER_X - 16, SCORE_WORD_Y + 5, std::to_string(mPlayer->getScoreMultiplier()).substr(0, 1), color, 1);
|
mTextX2->writeShadowed(PLAY_AREA_CENTER_X - 16, SCORE_WORD_Y + 5, std::to_string(mPlayer->getScoreMultiplier()).substr(0, 1), color, 1);
|
||||||
@@ -1508,7 +1510,7 @@ void Game::renderScoreBoard()
|
|||||||
mText->writeShadowed(PLAY_AREA_CENTER_X + 4, SCORE_WORD_Y + 12, std::to_string(mPlayer->getScoreMultiplier()).substr(2, 1), color);
|
mText->writeShadowed(PLAY_AREA_CENTER_X + 4, SCORE_WORD_Y + 12, std::to_string(mPlayer->getScoreMultiplier()).substr(2, 1), color);
|
||||||
|
|
||||||
// STAGE
|
// STAGE
|
||||||
mText->writeCentered(PLAY_AREA_CENTER_FIRST_QUARTER_X, SCORE_NUMBER_Y + 4, "STAGE " + std::to_string(mStage[mCurrentStage].number), 0);
|
mText->writeCentered(PLAY_AREA_CENTER_FIRST_QUARTER_X, SCORE_NUMBER_Y + 4, mTextStrings[42] + std::to_string(mStage[mCurrentStage].number), 0);
|
||||||
|
|
||||||
// POWER
|
// POWER
|
||||||
mSpritePowerMeter->setSpriteClip(256, 184, 40, 8);
|
mSpritePowerMeter->setSpriteClip(256, 184, 40, 8);
|
||||||
@@ -1517,13 +1519,6 @@ void Game::renderScoreBoard()
|
|||||||
mSpritePowerMeter->setSpriteClip(296, 184, (int)percent, 8);
|
mSpritePowerMeter->setSpriteClip(296, 184, (int)percent, 8);
|
||||||
mSpritePowerMeter->render();
|
mSpritePowerMeter->render();
|
||||||
}
|
}
|
||||||
/*else
|
|
||||||
{
|
|
||||||
mText->writeCentered(SCREEN_FIRST_QUARTER_X, SCORE_WORD_Y - 3, "A game by", -1);
|
|
||||||
mText->writeCentered(SCREEN_FIRST_QUARTER_X, SCORE_NUMBER_Y, "JailDesigner", -1);
|
|
||||||
mText->writeCentered(SCREEN_THIRD_QUARTER_X, HISCORE_WORD_Y - 3, "Intro music by", -1);
|
|
||||||
mText->writeCentered(SCREEN_THIRD_QUARTER_X, HISCORE_NUMBER_Y, "JailDoctor", -1);
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actualiza las variables del jugador
|
// Actualiza las variables del jugador
|
||||||
@@ -1689,10 +1684,12 @@ Uint8 Game::createNewBalloon(float x, int y, Uint8 kind, float velx, float speed
|
|||||||
// Crea una PowerBall
|
// Crea una PowerBall
|
||||||
void Game::createPowerBall()
|
void Game::createPowerBall()
|
||||||
{
|
{
|
||||||
const int posY = (PLAY_AREA_TOP);
|
const int posY = PLAY_AREA_TOP;
|
||||||
|
|
||||||
const int left = PLAY_AREA_LEFT;
|
const int left = PLAY_AREA_LEFT;
|
||||||
const int center = PLAY_AREA_CENTER_X - (BALLOON_WIDTH_4 / 2);
|
const int center = PLAY_AREA_CENTER_X - (BALLOON_WIDTH_4 / 2);
|
||||||
const int right = (PLAY_AREA_RIGHT)-BALLOON_WIDTH_4;
|
const int right = PLAY_AREA_RIGHT - BALLOON_WIDTH_4;
|
||||||
|
|
||||||
const int x[3] = {left, center, right};
|
const int x[3] = {left, center, right};
|
||||||
const int posX = x[rand() % 3];
|
const int posX = x[rand() % 3];
|
||||||
|
|
||||||
@@ -2687,7 +2684,7 @@ void Game::renderMessages()
|
|||||||
{
|
{
|
||||||
if ((mTimeStoppedCounter > 100) || (mTimeStoppedCounter % 10 > 4))
|
if ((mTimeStoppedCounter > 100) || (mTimeStoppedCounter % 10 > 4))
|
||||||
//mText->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_FIRST_QUARTER_Y, "Time Stopped: " + std::to_string(mTimeStoppedCounter / 10));
|
//mText->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_FIRST_QUARTER_Y, "Time Stopped: " + std::to_string(mTimeStoppedCounter / 10));
|
||||||
mText->writeDX(TXT_CENTER | TXT_SHADOW, PLAY_AREA_CENTER_X, PLAY_AREA_FIRST_QUARTER_Y, "Time Stopped: " + std::to_string(mTimeStoppedCounter / 10), 0, noColor, 1, shdwTxtColor);
|
mText->writeDX(TXT_CENTER | TXT_SHADOW, PLAY_AREA_CENTER_X, PLAY_AREA_FIRST_QUARTER_Y, mTextStrings[36] + std::to_string(mTimeStoppedCounter / 10), 0, noColor, 1, shdwTxtColor);
|
||||||
|
|
||||||
if (mTimeStoppedCounter > 100)
|
if (mTimeStoppedCounter > 100)
|
||||||
{
|
{
|
||||||
@@ -2704,11 +2701,11 @@ void Game::renderMessages()
|
|||||||
// D E M O
|
// D E M O
|
||||||
if (mDemo.enabled)
|
if (mDemo.enabled)
|
||||||
if (mDemo.counter % 30 > 14)
|
if (mDemo.counter % 30 > 14)
|
||||||
mTextX2->writeDX(TXT_CENTER | TXT_SHADOW, PLAY_AREA_CENTER_X, PLAY_AREA_FIRST_QUARTER_Y, "D E M O", 0, noColor, 2, shdwTxtColor);
|
mTextX2->writeDX(TXT_CENTER | TXT_SHADOW, PLAY_AREA_CENTER_X, PLAY_AREA_FIRST_QUARTER_Y, mTextStrings[37], 0, noColor, 2, shdwTxtColor);
|
||||||
|
|
||||||
// STAGE NUMBER
|
// STAGE NUMBER
|
||||||
if (mStageBitmapCounter < STAGE_COUNTER)
|
if (mStageBitmapCounter < STAGE_COUNTER)
|
||||||
mTextX2->writeDX(TXT_CENTER | TXT_SHADOW, PLAY_AREA_CENTER_X, mStageBitmapPath[mStageBitmapCounter], "STAGE " + std::to_string(mStage[mCurrentStage].number), 0, noColor, 2, shdwTxtColor);
|
mTextX2->writeDX(TXT_CENTER | TXT_SHADOW, PLAY_AREA_CENTER_X, mStageBitmapPath[mStageBitmapCounter], mTextStrings[38] + std::to_string(mStage[mCurrentStage].number), 0, noColor, 2, shdwTxtColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Habilita el efecto del item de detener el tiempo
|
// Habilita el efecto del item de detener el tiempo
|
||||||
@@ -3026,9 +3023,9 @@ void Game::runGameOverScreen()
|
|||||||
SDL_RenderClear(mRenderer);
|
SDL_RenderClear(mRenderer);
|
||||||
|
|
||||||
// Dibuja los objetos
|
// Dibuja los objetos
|
||||||
mTextX2->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y - (BLOCK * 4), "GAME OVER", 0);
|
mTextX2->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y - (BLOCK * 4), mTextStrings[43], 0);
|
||||||
mText->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y - (BLOCK * 1), "YOUR SCORE: " + std::to_string(mPlayer->getScore()), 0);
|
mText->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y - (BLOCK * 1), mTextStrings[44] + std::to_string(mPlayer->getScore()), 0);
|
||||||
mText->write(PLAY_AREA_CENTER_X - (mText->lenght("RETRY?", 0) / 2), PLAY_AREA_CENTER_Y + BLOCK * 2, "RETRY?", 0);
|
mText->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y + BLOCK * 2, mTextStrings[45], 0);
|
||||||
mMenuGameOver->render();
|
mMenuGameOver->render();
|
||||||
mFade->render();
|
mFade->render();
|
||||||
|
|
||||||
@@ -3082,7 +3079,7 @@ void Game::renderDebugInfo()
|
|||||||
// Indica si se puede crear una powerball
|
// Indica si se puede crear una powerball
|
||||||
bool Game::canPowerBallBeCreated()
|
bool Game::canPowerBallBeCreated()
|
||||||
{
|
{
|
||||||
if ((!mPowerBallEnabled) && (calculateScreenPower() > 0))
|
if ((!mPowerBallEnabled) && (calculateScreenPower() > POWERBALL_SCREENPOWER_MINIMUM))
|
||||||
return true;
|
return true;
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -67,6 +67,7 @@ private:
|
|||||||
|
|
||||||
SDL_Renderer *mRenderer; // El renderizador de la ventana
|
SDL_Renderer *mRenderer; // El renderizador de la ventana
|
||||||
std::string *mFileList; // Lista de ficheros con los recursos
|
std::string *mFileList; // Lista de ficheros con los recursos
|
||||||
|
std::string *mTextStrings; // Vector con los textos del juego
|
||||||
Input *mInput; // Manejador de entrada
|
Input *mInput; // Manejador de entrada
|
||||||
|
|
||||||
Player *mPlayer; // El jugador
|
Player *mPlayer; // El jugador
|
||||||
@@ -182,7 +183,7 @@ private:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
Game(SDL_Renderer *renderer, std::string *filelist, Input *input, bool demo);
|
Game(SDL_Renderer *renderer, std::string *filelist, std::string *textStrings, Input *input, bool demo);
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
~Game();
|
~Game();
|
||||||
|
|||||||
@@ -7,13 +7,12 @@
|
|||||||
const Uint8 SELF = 0;
|
const Uint8 SELF = 0;
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
Instructions::Instructions(SDL_Renderer *renderer, std::string *fileList)
|
Instructions::Instructions(SDL_Renderer *renderer, std::string *fileList, std::string *textStrings)
|
||||||
{
|
{
|
||||||
// Copia la dirección del renderizador
|
// Copia los punteros
|
||||||
mRenderer = renderer;
|
mRenderer = renderer;
|
||||||
|
|
||||||
// Copia la dirección del la lista de ficheros
|
|
||||||
mFileList = fileList;
|
mFileList = fileList;
|
||||||
|
mTextStrings = textStrings;
|
||||||
|
|
||||||
// Reserva memoria para los punteros
|
// Reserva memoria para los punteros
|
||||||
mEventHandler = new SDL_Event();
|
mEventHandler = new SDL_Event();
|
||||||
@@ -157,21 +156,21 @@ void Instructions::run(Uint8 mode)
|
|||||||
SDL_RenderClear(mRenderer);
|
SDL_RenderClear(mRenderer);
|
||||||
|
|
||||||
// Escribe el texto
|
// Escribe el texto
|
||||||
mText->writeDX(TXT_CENTER | TXT_COLOR | TXT_SHADOW, SCREEN_CENTER_X, 8, "OBJECTIVE", 0, orangeColor, 1, shdwTxtColor);
|
mText->writeDX(TXT_CENTER | TXT_COLOR | TXT_SHADOW, SCREEN_CENTER_X, 8, mTextStrings[11], 0, orangeColor, 1, shdwTxtColor);
|
||||||
mText->writeDX(TXT_CENTER | TXT_COLOR | TXT_SHADOW, SCREEN_CENTER_X, 24, "YOU HAVE TO POP AS MANY", 0, noColor, 1, shdwTxtColor);
|
mText->writeDX(TXT_CENTER | TXT_COLOR | TXT_SHADOW, SCREEN_CENTER_X, 24, mTextStrings[12], 0, noColor, 1, shdwTxtColor);
|
||||||
mText->writeDX(TXT_CENTER | TXT_COLOR | TXT_SHADOW, SCREEN_CENTER_X, 34, "BALLOONS AS YOU CAN", 0, noColor, 1, shdwTxtColor);
|
mText->writeDX(TXT_CENTER | TXT_COLOR | TXT_SHADOW, SCREEN_CENTER_X, 34, mTextStrings[13], 0, noColor, 1, shdwTxtColor);
|
||||||
mText->writeDX(TXT_CENTER | TXT_COLOR | TXT_SHADOW, SCREEN_CENTER_X, 48, "DIFFICULTY WILL BE INCREASED", 0, noColor, 1, shdwTxtColor);
|
mText->writeDX(TXT_CENTER | TXT_COLOR | TXT_SHADOW, SCREEN_CENTER_X, 48, mTextStrings[14], 0, noColor, 1, shdwTxtColor);
|
||||||
mText->writeDX(TXT_CENTER | TXT_COLOR | TXT_SHADOW, SCREEN_CENTER_X, 58, "AS YOU SCORE POINTS", 0, noColor, 1, shdwTxtColor);
|
mText->writeDX(TXT_CENTER | TXT_COLOR | TXT_SHADOW, SCREEN_CENTER_X, 58, mTextStrings[15], 0, noColor, 1, shdwTxtColor);
|
||||||
mText->writeDX(TXT_CENTER | TXT_COLOR | TXT_SHADOW, SCREEN_CENTER_X, 75, "ITEMS", 0, orangeColor, 1, shdwTxtColor);
|
mText->writeDX(TXT_CENTER | TXT_COLOR | TXT_SHADOW, SCREEN_CENTER_X, 75, mTextStrings[16], 0, orangeColor, 1, shdwTxtColor);
|
||||||
|
|
||||||
mText->writeShadowed(84, 92, "1.000 POINTS", shdwTxtColor);
|
mText->writeShadowed(84, 92, mTextStrings[17], shdwTxtColor);
|
||||||
mText->writeShadowed(84, 108, "2.500 POINTS", shdwTxtColor);
|
mText->writeShadowed(84, 108, mTextStrings[18], shdwTxtColor);
|
||||||
mText->writeShadowed(84, 124, "5.000 POINTS", shdwTxtColor);
|
mText->writeShadowed(84, 124, mTextStrings[19], shdwTxtColor);
|
||||||
mText->writeShadowed(84, 140, "TIME STOPPER", shdwTxtColor);
|
mText->writeShadowed(84, 140, mTextStrings[20], shdwTxtColor);
|
||||||
mText->writeShadowed(84, 156, "EXTRA HIT", shdwTxtColor);
|
mText->writeShadowed(84, 156, mTextStrings[21], shdwTxtColor);
|
||||||
|
|
||||||
if ((mode == INSTRUCTIONS_MODE_MANUAL) && (mCounter % 50 > 14))
|
if ((mode == INSTRUCTIONS_MODE_MANUAL) && (mCounter % 50 > 14))
|
||||||
mText->writeDX(TXT_CENTER | TXT_COLOR | TXT_SHADOW, SCREEN_CENTER_X, SCREEN_HEIGHT - 12, "PRESS ANY KEY TO RETURN", 0, orangeColor, 1, shdwTxtColor);
|
mText->writeDX(TXT_CENTER | TXT_COLOR | TXT_SHADOW, SCREEN_CENTER_X, SCREEN_HEIGHT - 12, mTextStrings[22], 0, orangeColor, 1, shdwTxtColor);
|
||||||
|
|
||||||
// Disquito
|
// Disquito
|
||||||
mSprite->init(destRect1, mItemTexture, mRenderer);
|
mSprite->init(destRect1, mItemTexture, mRenderer);
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ private:
|
|||||||
SDL_Texture *mBackbuffer; // Textura para usar como backbuffer
|
SDL_Texture *mBackbuffer; // Textura para usar como backbuffer
|
||||||
Sprite *mSprite; // Sprite con la textura de las instrucciones
|
Sprite *mSprite; // Sprite con la textura de las instrucciones
|
||||||
std::string *mFileList; // Lista de ficheros
|
std::string *mFileList; // Lista de ficheros
|
||||||
|
std::string *mTextStrings; // Vector con los textos del juego
|
||||||
Text *mText; // Objeto para escribir texto
|
Text *mText; // Objeto para escribir texto
|
||||||
Uint16 mCounter; // Contador
|
Uint16 mCounter; // Contador
|
||||||
section_t mSection; // Estado del bucle principal para saber si continua o se sale
|
section_t mSection; // Estado del bucle principal para saber si continua o se sale
|
||||||
@@ -42,7 +43,7 @@ private:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
Instructions(SDL_Renderer *renderer, std::string *fileList);
|
Instructions(SDL_Renderer *renderer, std::string *fileList, std::string *textStrings);
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
~Instructions();
|
~Instructions();
|
||||||
|
|||||||
@@ -5,13 +5,12 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
Intro::Intro(SDL_Renderer *renderer, std::string *fileList)
|
Intro::Intro(SDL_Renderer *renderer, std::string *fileList, std::string *textStrings)
|
||||||
{
|
{
|
||||||
// Copia la dirección del renderizador
|
// Copia los punteros
|
||||||
mRenderer = renderer;
|
mRenderer = renderer;
|
||||||
|
|
||||||
// Copia la dirección del la lista de ficheros
|
|
||||||
mFileList = fileList;
|
mFileList = fileList;
|
||||||
|
mTextStrings = textStrings;
|
||||||
|
|
||||||
// Reserva memoria para los punteros
|
// Reserva memoria para los punteros
|
||||||
mEventHandler = new SDL_Event();
|
mEventHandler = new SDL_Event();
|
||||||
@@ -144,31 +143,40 @@ void Intro::init()
|
|||||||
mText[i]->setEnabledTimer(180);
|
mText[i]->setEnabledTimer(180);
|
||||||
}
|
}
|
||||||
|
|
||||||
mText[0]->setCaption("Un dia qualsevol de l'any 2000");
|
// Un dia qualsevol de l'any 2000
|
||||||
|
mText[0]->setCaption(mTextStrings[27]);
|
||||||
mText[0]->setWrittingSpeed(10);
|
mText[0]->setWrittingSpeed(10);
|
||||||
|
|
||||||
mText[1]->setCaption("Tot esta tranquil a la UPV");
|
// Tot esta tranquil a la UPV
|
||||||
|
mText[1]->setCaption(mTextStrings[28]);
|
||||||
mText[1]->setWrittingSpeed(10);
|
mText[1]->setWrittingSpeed(10);
|
||||||
|
|
||||||
mText[2]->setCaption("Fins que un desaprensiu...");
|
// Fins que un desaprensiu...
|
||||||
|
mText[2]->setCaption(mTextStrings[29]);
|
||||||
mText[2]->setWrittingSpeed(15);
|
mText[2]->setWrittingSpeed(15);
|
||||||
|
|
||||||
mText[3]->setCaption("HEY! ME ANE A FERME UN CORTAET...");
|
// HEY! ME ANE A FERME UN CORTAET...
|
||||||
|
mText[3]->setCaption(mTextStrings[30]);
|
||||||
mText[3]->setWrittingSpeed(10);
|
mText[3]->setWrittingSpeed(10);
|
||||||
|
|
||||||
mText[4]->setCaption("UAAAAAAAAAAAAA!!!");
|
// UAAAAAAAAAAAAA!!!
|
||||||
|
mText[4]->setCaption(mTextStrings[31]);
|
||||||
mText[4]->setWrittingSpeed(1);
|
mText[4]->setWrittingSpeed(1);
|
||||||
|
|
||||||
mText[5]->setCaption("Espera un moment...");
|
// Espera un moment...
|
||||||
|
mText[5]->setCaption(mTextStrings[32]);
|
||||||
mText[5]->setWrittingSpeed(20);
|
mText[5]->setWrittingSpeed(20);
|
||||||
|
|
||||||
mText[6]->setCaption("Si resulta que no tinc solt!");
|
// Si resulta que no tinc solt!
|
||||||
|
mText[6]->setCaption(mTextStrings[33]);
|
||||||
mText[6]->setWrittingSpeed(2);
|
mText[6]->setWrittingSpeed(2);
|
||||||
|
|
||||||
mText[7]->setCaption("MERDA DE MAQUINA!");
|
// MERDA DE MAQUINA!
|
||||||
|
mText[7]->setCaption(mTextStrings[34]);
|
||||||
mText[7]->setWrittingSpeed(3);
|
mText[7]->setWrittingSpeed(3);
|
||||||
|
|
||||||
mText[8]->setCaption("Blop... blop... blop...");
|
// Blop... blop... blop...
|
||||||
|
mText[8]->setCaption(mTextStrings[35]);
|
||||||
mText[8]->setWrittingSpeed(20);
|
mText[8]->setWrittingSpeed(20);
|
||||||
|
|
||||||
for (int i = 0; i < INTRO_TOTAL_TEXTS; i++)
|
for (int i = 0; i < INTRO_TOTAL_TEXTS; i++)
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ private:
|
|||||||
SDL_Event *mEventHandler; // Manejador de eventos
|
SDL_Event *mEventHandler; // Manejador de eventos
|
||||||
SDL_Renderer *mRenderer; // El renderizador de la ventana
|
SDL_Renderer *mRenderer; // El renderizador de la ventana
|
||||||
std::string *mFileList; // Lista de ficheros
|
std::string *mFileList; // Lista de ficheros
|
||||||
|
std::string *mTextStrings; // Vector con los textos del juego
|
||||||
section_t mSection; // Estado del bucle principal para saber si continua o se sale
|
section_t mSection; // Estado del bucle principal para saber si continua o se sale
|
||||||
Uint32 mTicks; // Contador de ticks para ajustar la velocidad del programa
|
Uint32 mTicks; // Contador de ticks para ajustar la velocidad del programa
|
||||||
Uint8 mTicksSpeed; // Velocidad a la que se repiten los bucles del programa
|
Uint8 mTicksSpeed; // Velocidad a la que se repiten los bucles del programa
|
||||||
@@ -29,7 +30,7 @@ private:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
Intro(SDL_Renderer *renderer, std::string *fileList);
|
Intro(SDL_Renderer *renderer, std::string *fileList, std::string *textStrings);
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
~Intro();
|
~Intro();
|
||||||
|
|||||||
10
source/lang.cpp
Normal file
10
source/lang.cpp
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
#include "lang.h"
|
||||||
|
|
||||||
|
// Inicializa los textos del juego en el idioma seleccionado
|
||||||
|
void initTextStrings(std::string *textStrings, Uint8 lang)
|
||||||
|
{
|
||||||
|
if ((lang < 0) || (lang > MAX_LANGUAGES))
|
||||||
|
lang = en_UK;
|
||||||
|
for (int i = 0; i < MAX_TEXT_STRINGS; i++)
|
||||||
|
textStrings[i] = gTextStrings[i][lang].c_str();
|
||||||
|
}
|
||||||
272
source/lang.h
Normal file
272
source/lang.h
Normal file
@@ -0,0 +1,272 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "ifdefs.h"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#ifndef LANG_H
|
||||||
|
#define LANG_H
|
||||||
|
|
||||||
|
// iso codes
|
||||||
|
#define es_ES 0
|
||||||
|
#define ba_BA 1
|
||||||
|
#define en_UK 2
|
||||||
|
#define MAX_LANGUAGES 3
|
||||||
|
|
||||||
|
// Textos
|
||||||
|
#define MAX_TEXT_STRINGS 100
|
||||||
|
const std::string gTextStrings[MAX_TEXT_STRINGS][3] =
|
||||||
|
{
|
||||||
|
// 0 - TITULO E INSTRUCCIONES
|
||||||
|
{"JUGAR",
|
||||||
|
"JUGAR",
|
||||||
|
"PLAY"},
|
||||||
|
|
||||||
|
// 1
|
||||||
|
{"OPCIONES",
|
||||||
|
"OPCIONS",
|
||||||
|
"OPTIONS"},
|
||||||
|
|
||||||
|
// 2
|
||||||
|
{"INSTRUCCIONES",
|
||||||
|
"INSTRUCCIONS",
|
||||||
|
"HOW TO PLAY"},
|
||||||
|
|
||||||
|
// 3
|
||||||
|
{"SALIR",
|
||||||
|
"EIXIR",
|
||||||
|
"QUIT"},
|
||||||
|
|
||||||
|
// 4
|
||||||
|
{"VENTANA",
|
||||||
|
"FINESTRA",
|
||||||
|
"WINDOW"},
|
||||||
|
|
||||||
|
// 5
|
||||||
|
{"PANTALLA COMPLETA",
|
||||||
|
"PANTALLA COMPLETA",
|
||||||
|
"FULLSCREEN"},
|
||||||
|
|
||||||
|
// 6
|
||||||
|
{"PANTALLA COMPLETA FALSA",
|
||||||
|
"PANTALLA COMPLETA FALSA",
|
||||||
|
"FAKE FULLSCREEN"},
|
||||||
|
|
||||||
|
// 7
|
||||||
|
{"TAMAÑO DE VENTANA",
|
||||||
|
"TAMANY DE FINESTRA",
|
||||||
|
"WINDOW SIZE"},
|
||||||
|
|
||||||
|
// 8
|
||||||
|
{"IDIOMA",
|
||||||
|
"IDIOMA",
|
||||||
|
"LANGUAGE"},
|
||||||
|
|
||||||
|
// 9
|
||||||
|
{"[ACEPTAR]",
|
||||||
|
"[ACEPTAR]",
|
||||||
|
"[ACCEPT]"},
|
||||||
|
|
||||||
|
// 10
|
||||||
|
{"[CANCELAR]",
|
||||||
|
"[CANCELAR]",
|
||||||
|
"[CANCEL]"},
|
||||||
|
|
||||||
|
// 11
|
||||||
|
{"OBJETIVO",
|
||||||
|
"OBJECTIU",
|
||||||
|
"OBJECTIVE"},
|
||||||
|
|
||||||
|
// 12
|
||||||
|
{"TIENES QUE EXPLOTAR",
|
||||||
|
"HAS D'EXPLOTAR",
|
||||||
|
"YOU HAVE TO POP AS MANY"},
|
||||||
|
|
||||||
|
// 13
|
||||||
|
{"TANTOS GLOBOS COMO PUEDAS",
|
||||||
|
"TANTS GLOBUS COM PUGUES",
|
||||||
|
"BALLOONS AS YOU CAN"},
|
||||||
|
|
||||||
|
// 14
|
||||||
|
{"LA DIFICULTAD SE INCREMENTA",
|
||||||
|
"LA DIFICULTAT AUGMENTA",
|
||||||
|
"DIFFICULTY WILL BE INCREASED"},
|
||||||
|
|
||||||
|
// 15
|
||||||
|
{"A MEDIDA QUE VAS PUNTUANDO",
|
||||||
|
"A MESURA QUE VAS PUNTUANT",
|
||||||
|
"AS YOU SCORE POINTS"},
|
||||||
|
|
||||||
|
// 16
|
||||||
|
{"OBJETOS",
|
||||||
|
"OBJECTES",
|
||||||
|
"ITEMS"},
|
||||||
|
|
||||||
|
// 17
|
||||||
|
{"1.000 PUNTOS",
|
||||||
|
"1.000 PUNTS",
|
||||||
|
"1.000 POINTS"},
|
||||||
|
|
||||||
|
// 18
|
||||||
|
{"2.500 PUNTOS",
|
||||||
|
"2.500 PUNTS",
|
||||||
|
"2.500 POINTS"},
|
||||||
|
|
||||||
|
// 19
|
||||||
|
{"5.000 PUNTOS",
|
||||||
|
"5.000 PUNTS",
|
||||||
|
"5.000 POINTS"},
|
||||||
|
|
||||||
|
// 20
|
||||||
|
{"DETIENE EL TIEMPO",
|
||||||
|
"PARA EL TEMPS",
|
||||||
|
"TIME STOPPER"},
|
||||||
|
|
||||||
|
// 21
|
||||||
|
{"VIDA EXTRA",
|
||||||
|
"VIDA EXTRA",
|
||||||
|
"EXTRA HIT"},
|
||||||
|
|
||||||
|
// 22
|
||||||
|
{"PULSA UNA TECLA PARA VOLVER",
|
||||||
|
"PREM UNA TECLA PER A TORNAR",
|
||||||
|
"PRESS ANY KEY TO RETURN"},
|
||||||
|
|
||||||
|
// 23
|
||||||
|
{"PULSA CUALQUIER TECLA",
|
||||||
|
"PREM QUALSEVOL TECLA",
|
||||||
|
"PRESS ANY KEY"},
|
||||||
|
|
||||||
|
// 24
|
||||||
|
{"ESPAÑOL",
|
||||||
|
"ESPAÑOL (ESPANYOL)",
|
||||||
|
"ESPAÑOL (SPANISH)"},
|
||||||
|
|
||||||
|
// 25
|
||||||
|
{"BALOONCIA (VALENCIANO)",
|
||||||
|
"BALOONCIA",
|
||||||
|
"BALOONCIA (VALENCIAN)"},
|
||||||
|
|
||||||
|
// 26
|
||||||
|
{"ENGLISH (INGLES)",
|
||||||
|
"ENGLISH (ANGLES)",
|
||||||
|
"ENGLISH"},
|
||||||
|
|
||||||
|
// 27 - INTRO
|
||||||
|
{"Un dia cualquiera del año 2000",
|
||||||
|
"Un dia qualsevol de l'any 2000",
|
||||||
|
"Any day of the year 2000"},
|
||||||
|
|
||||||
|
// 28
|
||||||
|
{"Todo esta tranquilo en la UPV",
|
||||||
|
"Tot esta tranquil a la UPV",
|
||||||
|
"Everything is quiet at the UPV"},
|
||||||
|
|
||||||
|
// 29
|
||||||
|
{"Hasta que un desaprensivo...",
|
||||||
|
"Fins que un desaprensiu...",
|
||||||
|
"Until a bastard arrives..."},
|
||||||
|
|
||||||
|
// 30
|
||||||
|
{"HEY! ME VOY A HACER UN TALLADET...",
|
||||||
|
"HEY! ME ANE A FERME UN CORTAET...",
|
||||||
|
" YO! GONNA TAKE A CAFELITO... "},
|
||||||
|
|
||||||
|
// 31
|
||||||
|
{"UAAAAAAAAAAAAA!!!",
|
||||||
|
"UAAAAAAAAAAAAA!!!",
|
||||||
|
"AAAAAAAARGHHHH!!!"},
|
||||||
|
|
||||||
|
// 32
|
||||||
|
{"Espera un momento...",
|
||||||
|
"Espera un moment...",
|
||||||
|
"Wait a moment..."},
|
||||||
|
|
||||||
|
// 33
|
||||||
|
{"Si resulta que no llevo suelto!",
|
||||||
|
"Si resulta que no tinc solt!",
|
||||||
|
" I don't have any loose! "},
|
||||||
|
|
||||||
|
// 34
|
||||||
|
{"MIERDA DE MAQUINA!",
|
||||||
|
"MERDA DE MAQUINA!",
|
||||||
|
"FUCKING MACHINE!"},
|
||||||
|
|
||||||
|
// 35
|
||||||
|
{"Blop... blop... blop...",
|
||||||
|
"Blop... blop... blop...",
|
||||||
|
"Blop... blop... blop..."},
|
||||||
|
|
||||||
|
// 36 - TEXTOS DEL JUEGO
|
||||||
|
{"Tiempo: ",
|
||||||
|
"Temps detes: ",
|
||||||
|
"Time Stopped: "},
|
||||||
|
|
||||||
|
// 37
|
||||||
|
{"D E M O",
|
||||||
|
"D E M O",
|
||||||
|
"D E M O"},
|
||||||
|
|
||||||
|
// 38
|
||||||
|
{"FASE ",
|
||||||
|
"PANTALLA ",
|
||||||
|
"STAGE "},
|
||||||
|
|
||||||
|
// 39 - MARCADOR
|
||||||
|
{"PUNTOS",
|
||||||
|
"PUNTS",
|
||||||
|
"SCORE"},
|
||||||
|
|
||||||
|
// 40
|
||||||
|
{"MAX.PUNT.",
|
||||||
|
"MAX.PUNT.",
|
||||||
|
"HI-SCORE"},
|
||||||
|
|
||||||
|
// 41
|
||||||
|
{"MULT",
|
||||||
|
"MULT",
|
||||||
|
"MULT"},
|
||||||
|
|
||||||
|
// 42
|
||||||
|
{"FASE ",
|
||||||
|
"PANTALLA ",
|
||||||
|
"STAGE "},
|
||||||
|
|
||||||
|
// 43 - PANTALLA DE GAME OVER
|
||||||
|
{"FIN DE JUEGO",
|
||||||
|
"FI DEL JOC",
|
||||||
|
"GAME OVER"},
|
||||||
|
|
||||||
|
// 44
|
||||||
|
{"TU PUNTUACION: ",
|
||||||
|
"ELS TEUS PUNTS: ",
|
||||||
|
"YOUR SCORE: "},
|
||||||
|
|
||||||
|
// 45
|
||||||
|
{"REINTENTAR?",
|
||||||
|
"REINTENTAR?",
|
||||||
|
"RETRY?"},
|
||||||
|
|
||||||
|
// 46 - MENU DE PAUSA
|
||||||
|
{"CONTINUAR",
|
||||||
|
"CONTINUAR",
|
||||||
|
"CONTINUE"},
|
||||||
|
|
||||||
|
// 47
|
||||||
|
{"SALIR DEL JUEGO ",
|
||||||
|
"EIXIR DEL JOC",
|
||||||
|
"LEAVE GAME"},
|
||||||
|
|
||||||
|
// 48 - MENU GAME OVER
|
||||||
|
{"SI",
|
||||||
|
"SI",
|
||||||
|
"YES"},
|
||||||
|
|
||||||
|
// 49
|
||||||
|
{"NO",
|
||||||
|
"NO",
|
||||||
|
"NO"},
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
void initTextStrings(std::string *textStrings, Uint8 lang);
|
||||||
|
|
||||||
|
#endif
|
||||||
125
source/title.cpp
125
source/title.cpp
@@ -5,7 +5,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
Title::Title(SDL_Window *window, SDL_Renderer *renderer, Input *input, std::string *fileList, options_t *options)
|
Title::Title(SDL_Window *window, SDL_Renderer *renderer, Input *input, std::string *fileList, options_t *options, std::string *textStrings)
|
||||||
{
|
{
|
||||||
// Copia las direcciones de los punteros
|
// Copia las direcciones de los punteros
|
||||||
mWindow = window;
|
mWindow = window;
|
||||||
@@ -13,6 +13,7 @@ Title::Title(SDL_Window *window, SDL_Renderer *renderer, Input *input, std::stri
|
|||||||
mInput = input;
|
mInput = input;
|
||||||
mFileList = fileList;
|
mFileList = fileList;
|
||||||
mOptions = options;
|
mOptions = options;
|
||||||
|
mTextStrings = textStrings;
|
||||||
|
|
||||||
// Reserva memoria para los punteros propios
|
// Reserva memoria para los punteros propios
|
||||||
mEventHandler = new SDL_Event();
|
mEventHandler = new SDL_Event();
|
||||||
@@ -95,7 +96,7 @@ Title::~Title()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Inicializa las variables necesarias para la sección 'Title'
|
// Inicializa las variables necesarias para la sección 'Title'
|
||||||
void Title::init(Uint8 subsection)
|
void Title::init(bool demo, Uint8 subsection)
|
||||||
{
|
{
|
||||||
// Carga los recursos
|
// Carga los recursos
|
||||||
loadMedia();
|
loadMedia();
|
||||||
@@ -114,6 +115,7 @@ void Title::init(Uint8 subsection)
|
|||||||
mTicksSpeed = 15;
|
mTicksSpeed = 15;
|
||||||
mText->init(TEXT_FIXED, BLOCK);
|
mText->init(TEXT_FIXED, BLOCK);
|
||||||
mFade->init();
|
mFade->init();
|
||||||
|
mDemo = demo;
|
||||||
|
|
||||||
// Inicializa el bitmap de Coffee
|
// Inicializa el bitmap de Coffee
|
||||||
mCoffeeBitmap->init(mTitleTexture, mRenderer);
|
mCoffeeBitmap->init(mTitleTexture, mRenderer);
|
||||||
@@ -223,10 +225,10 @@ void Title::init(Uint8 subsection)
|
|||||||
|
|
||||||
// Inicializa los objetos de menu
|
// Inicializa los objetos de menu
|
||||||
mMenu.title->init("TITLE", 0, 15 * BLOCK, MENU_BACKGROUND_SOLID);
|
mMenu.title->init("TITLE", 0, 15 * BLOCK, MENU_BACKGROUND_SOLID);
|
||||||
mMenu.title->addItem("PLAY");
|
mMenu.title->addItem(mTextStrings[0]); // PLAY
|
||||||
mMenu.title->addItem("OPTIONS");
|
mMenu.title->addItem(mTextStrings[1]); // OPTIONS
|
||||||
mMenu.title->addItem("HOW TO PLAY", 0, 5);
|
mMenu.title->addItem(mTextStrings[2], 0, 5); // HOW TO PLAY
|
||||||
mMenu.title->addItem("QUIT");
|
mMenu.title->addItem(mTextStrings[3]); // QUIT
|
||||||
mMenu.title->setDefaultActionWhenCancel(3);
|
mMenu.title->setDefaultActionWhenCancel(3);
|
||||||
mMenu.title->setBackgroundColor(0x30, 0x30, 0x40, 192);
|
mMenu.title->setBackgroundColor(0x30, 0x30, 0x40, 192);
|
||||||
mMenu.title->setSelectorColor(0xe5, 0x1c, 0x23, 255);
|
mMenu.title->setSelectorColor(0xe5, 0x1c, 0x23, 255);
|
||||||
@@ -234,20 +236,21 @@ void Title::init(Uint8 subsection)
|
|||||||
mMenu.title->centerMenu(SCREEN_CENTER_X);
|
mMenu.title->centerMenu(SCREEN_CENTER_X);
|
||||||
mMenu.title->centerMenuElements();
|
mMenu.title->centerMenuElements();
|
||||||
|
|
||||||
mMenu.options->init("OPTIONS", 0, 15 * BLOCK, MENU_BACKGROUND_SOLID);
|
mMenu.options->init("OPTIONS", 0, 14 * BLOCK, MENU_BACKGROUND_SOLID);
|
||||||
mMenu.options->addItem("FULLSCREEN");
|
mMenu.options->addItem(mTextStrings[4]);
|
||||||
mMenu.options->addItem("WINDOWS SIZE", 0, 5);
|
mMenu.options->addItem(mTextStrings[7]);
|
||||||
mMenu.options->addItem("[OK]");
|
mMenu.options->addItem(mTextStrings[8], 0, 5);
|
||||||
mMenu.options->addItem("[CANCEL]");
|
mMenu.options->addItem(mTextStrings[9]);
|
||||||
mMenu.options->setDefaultActionWhenCancel(3);
|
mMenu.options->addItem(mTextStrings[10]);
|
||||||
|
mMenu.options->setDefaultActionWhenCancel(4);
|
||||||
mMenu.options->setBackgroundColor(0x30, 0x30, 0x40, 192);
|
mMenu.options->setBackgroundColor(0x30, 0x30, 0x40, 192);
|
||||||
mMenu.options->setSelectorColor(0xe5, 0x1c, 0x23, 255);
|
mMenu.options->setSelectorColor(0xe5, 0x1c, 0x23, 255);
|
||||||
mMenu.options->setSelectorTextColor(0xFF, 0xF1, 0x76);
|
mMenu.options->setSelectorTextColor(0xFF, 0xF1, 0x76);
|
||||||
mMenu.options->centerMenu(SCREEN_CENTER_X);
|
mMenu.options->centerMenu(SCREEN_CENTER_X);
|
||||||
mMenu.options->centerMenuElements();
|
mMenu.options->centerMenuElements();
|
||||||
|
|
||||||
// Actualiza los elementos del menu de opciones con los valores correspondientes
|
// Actualiza los textos de los menus
|
||||||
updateOptionsMenuLabels();
|
updateMenuLabels();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Carga los recursos necesarios para la sección 'Title'
|
// Carga los recursos necesarios para la sección 'Title'
|
||||||
@@ -291,28 +294,54 @@ void Title::switchFullScreenModeVar()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actualiza los elementos del menu de opciones
|
// Actualiza los elementos de los menus
|
||||||
void Title::updateOptionsMenuLabels()
|
void Title::updateMenuLabels()
|
||||||
{
|
{
|
||||||
switch (mOptions->fullScreenMode)
|
switch (mOptions->fullScreenMode)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
mMenu.options->setItemCaption(0, "WINDOWED");
|
mMenu.options->setItemCaption(0, mTextStrings[4]); // WINDOW
|
||||||
break;
|
break;
|
||||||
case SDL_WINDOW_FULLSCREEN:
|
case SDL_WINDOW_FULLSCREEN:
|
||||||
mMenu.options->setItemCaption(0, "FULLSCREEN");
|
mMenu.options->setItemCaption(0, mTextStrings[5]); // FULLSCREEN
|
||||||
break;
|
break;
|
||||||
case SDL_WINDOW_FULLSCREEN_DESKTOP:
|
case SDL_WINDOW_FULLSCREEN_DESKTOP:
|
||||||
mMenu.options->setItemCaption(0, "FAKE FULLSCREEN");
|
mMenu.options->setItemCaption(0, mTextStrings[6]); // FAKE FULLSCREEN
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
mMenu.options->setItemCaption(0, "WINDOWED");
|
mMenu.options->setItemCaption(0, mTextStrings[4]); // WINDOW
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
mMenu.options->setItemCaption(1, "WINDOWS SIZE " + std::to_string(mOptions->windowSize));
|
|
||||||
|
mMenu.options->setItemCaption(1, mTextStrings[7] + " x" + std::to_string(mOptions->windowSize)); // WINDOW SIZE
|
||||||
|
|
||||||
|
switch (mOptions->language)
|
||||||
|
{
|
||||||
|
case es_ES:
|
||||||
|
mMenu.options->setItemCaption(2, mTextStrings[8] + " " + mTextStrings[24]);
|
||||||
|
break;
|
||||||
|
case ba_BA:
|
||||||
|
mMenu.options->setItemCaption(2, mTextStrings[8] + " " + mTextStrings[25]);
|
||||||
|
break;
|
||||||
|
case en_UK:
|
||||||
|
mMenu.options->setItemCaption(2, mTextStrings[8] + " " + mTextStrings[26]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
mMenu.options->setItemCaption(3, mTextStrings[9]);
|
||||||
|
mMenu.options->setItemCaption(4, mTextStrings[10]);
|
||||||
|
|
||||||
mMenu.options->centerMenu(SCREEN_CENTER_X);
|
mMenu.options->centerMenu(SCREEN_CENTER_X);
|
||||||
mMenu.options->centerMenuElements();
|
mMenu.options->centerMenuElements();
|
||||||
|
|
||||||
|
mMenu.title->setItemCaption(0, mTextStrings[0]);
|
||||||
|
mMenu.title->setItemCaption(1, mTextStrings[1]);
|
||||||
|
mMenu.title->setItemCaption(2, mTextStrings[2]);
|
||||||
|
mMenu.title->setItemCaption(3, mTextStrings[3]);
|
||||||
|
|
||||||
|
mMenu.title->centerMenu(SCREEN_CENTER_X);
|
||||||
|
mMenu.title->centerMenuElements();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Aplica las opciones de menu seleccionadas
|
// Aplica las opciones de menu seleccionadas
|
||||||
@@ -320,6 +349,8 @@ void Title::applyOptions()
|
|||||||
{
|
{
|
||||||
SDL_SetWindowFullscreen(mWindow, mOptions->fullScreenMode);
|
SDL_SetWindowFullscreen(mWindow, mOptions->fullScreenMode);
|
||||||
SDL_SetWindowSize(mWindow, SCREEN_WIDTH * mOptions->windowSize, SCREEN_HEIGHT * mOptions->windowSize);
|
SDL_SetWindowSize(mWindow, SCREEN_WIDTH * mOptions->windowSize, SCREEN_HEIGHT * mOptions->windowSize);
|
||||||
|
initTextStrings(mTextStrings, mOptions->language);
|
||||||
|
updateMenuLabels();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bucle para el titulo del juego
|
// Bucle para el titulo del juego
|
||||||
@@ -466,7 +497,6 @@ section_t Title::run(Uint8 subsection)
|
|||||||
case 0: // PLAY
|
case 0: // PLAY
|
||||||
mSection.name = PROG_SECTION_GAME;
|
mSection.name = PROG_SECTION_GAME;
|
||||||
JA_StopMusic();
|
JA_StopMusic();
|
||||||
mDemo = false;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1: // QUIT
|
case 1: // QUIT
|
||||||
@@ -476,15 +506,15 @@ section_t Title::run(Uint8 subsection)
|
|||||||
|
|
||||||
case 2: // TIME OUT
|
case 2: // TIME OUT
|
||||||
mCounter = TITLE_COUNTER;
|
mCounter = TITLE_COUNTER;
|
||||||
//mSection = mNextSection;
|
|
||||||
//mSection.name = PROG_SECTION_TITLE;
|
|
||||||
//mSection.subsection = TITLE_SECTION_INSTRUCTIONS;
|
|
||||||
mMenu.active->reset();
|
mMenu.active->reset();
|
||||||
//toogleTitleNextGS();
|
if (mDemo)
|
||||||
|
{
|
||||||
runDemoGame();
|
runDemoGame();
|
||||||
runInstructions(INSTRUCTIONS_MODE_AUTO);
|
runInstructions(INSTRUCTIONS_MODE_AUTO);
|
||||||
init();
|
init(false);
|
||||||
mDemo = true;
|
}
|
||||||
|
else
|
||||||
|
mSection.name = PROG_SECTION_LOGO;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -509,6 +539,7 @@ section_t Title::run(Uint8 subsection)
|
|||||||
mMenu.active = mMenu.options;
|
mMenu.active = mMenu.options;
|
||||||
mOptions->fullScreenModePrevious = mOptions->fullScreenMode;
|
mOptions->fullScreenModePrevious = mOptions->fullScreenMode;
|
||||||
mOptions->windowSizePrevious = mOptions->windowSize;
|
mOptions->windowSizePrevious = mOptions->windowSize;
|
||||||
|
mOptions->languagePrevious = mOptions->language;
|
||||||
break;
|
break;
|
||||||
case 2: // HOW TO PLAY
|
case 2: // HOW TO PLAY
|
||||||
runInstructions(INSTRUCTIONS_MODE_MANUAL);
|
runInstructions(INSTRUCTIONS_MODE_MANUAL);
|
||||||
@@ -530,25 +561,30 @@ section_t Title::run(Uint8 subsection)
|
|||||||
{
|
{
|
||||||
case 0: // Fullscreen mode
|
case 0: // Fullscreen mode
|
||||||
switchFullScreenModeVar();
|
switchFullScreenModeVar();
|
||||||
updateOptionsMenuLabels();
|
updateMenuLabels();
|
||||||
mMenu.active->deselectItem();
|
|
||||||
break;
|
break;
|
||||||
case 1: // Windows size
|
case 1: // Windows size
|
||||||
mOptions->windowSize++;
|
mOptions->windowSize++;
|
||||||
if (mOptions->windowSize == 5)
|
if (mOptions->windowSize == 5)
|
||||||
mOptions->windowSize = 1;
|
mOptions->windowSize = 1;
|
||||||
updateOptionsMenuLabels();
|
updateMenuLabels();
|
||||||
mMenu.active->deselectItem();
|
|
||||||
break;
|
break;
|
||||||
case 2: // OK
|
case 2: // Language
|
||||||
|
mOptions->language++;
|
||||||
|
if (mOptions->language == 3)
|
||||||
|
mOptions->language = 0;
|
||||||
|
updateMenuLabels();
|
||||||
|
break;
|
||||||
|
case 3: // OK
|
||||||
applyOptions();
|
applyOptions();
|
||||||
mMenu.active->reset();
|
mMenu.active->reset();
|
||||||
mMenu.active = mMenu.title;
|
mMenu.active = mMenu.title;
|
||||||
break;
|
break;
|
||||||
case 3: // CANCEL
|
case 4: // CANCEL
|
||||||
mOptions->fullScreenMode = mOptions->fullScreenModePrevious;
|
mOptions->fullScreenMode = mOptions->fullScreenModePrevious;
|
||||||
mOptions->windowSize = mOptions->windowSizePrevious;
|
mOptions->windowSize = mOptions->windowSizePrevious;
|
||||||
updateOptionsMenuLabels();
|
mOptions->language = mOptions->languagePrevious;
|
||||||
|
updateMenuLabels();
|
||||||
mMenu.active->reset();
|
mMenu.active->reset();
|
||||||
mMenu.active = mMenu.title;
|
mMenu.active = mMenu.title;
|
||||||
break;
|
break;
|
||||||
@@ -602,7 +638,7 @@ section_t Title::run(Uint8 subsection)
|
|||||||
|
|
||||||
// PRESS ANY KEY!
|
// PRESS ANY KEY!
|
||||||
if ((mCounter % 50 > 14) && (mMenuVisible == false))
|
if ((mCounter % 50 > 14) && (mMenuVisible == false))
|
||||||
mText->writeDX(TXT_CENTER | TXT_SHADOW, SCREEN_CENTER_X, PLAY_AREA_THIRD_QUARTER_Y + BLOCK, "PRESS ANY KEY!", 0, noColor, 1, shdwTxtColor);
|
mText->writeDX(TXT_CENTER | TXT_SHADOW, SCREEN_CENTER_X, PLAY_AREA_THIRD_QUARTER_Y + BLOCK, mTextStrings[23], 0, noColor, 1, shdwTxtColor);
|
||||||
|
|
||||||
// Texto con el copyright y versión
|
// Texto con el copyright y versión
|
||||||
mText->writeDX(TXT_CENTER | TXT_SHADOW, SCREEN_CENTER_X, SCREEN_HEIGHT - (BLOCK * 2), TEXT_COPYRIGHT, 0, noColor, 1, shdwTxtColor);
|
mText->writeDX(TXT_CENTER | TXT_SHADOW, SCREEN_CENTER_X, SCREEN_HEIGHT - (BLOCK * 2), TEXT_COPYRIGHT, 0, noColor, 1, shdwTxtColor);
|
||||||
@@ -615,11 +651,14 @@ section_t Title::run(Uint8 subsection)
|
|||||||
}
|
}
|
||||||
else if (mCounter == 0)
|
else if (mCounter == 0)
|
||||||
{
|
{
|
||||||
//mPostFade = 2;
|
if (mDemo)
|
||||||
//mFade->activateFade();
|
{
|
||||||
runDemoGame();
|
runDemoGame();
|
||||||
runInstructions(INSTRUCTIONS_MODE_AUTO);
|
runInstructions(INSTRUCTIONS_MODE_AUTO);
|
||||||
init();
|
init(false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
mSection.name = PROG_SECTION_LOGO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -637,19 +676,15 @@ section_t Title::run(Uint8 subsection)
|
|||||||
// Ejecuta la parte donde se muestran las instrucciones
|
// Ejecuta la parte donde se muestran las instrucciones
|
||||||
void Title::runInstructions(Uint8 mode)
|
void Title::runInstructions(Uint8 mode)
|
||||||
{
|
{
|
||||||
printf("carrega instructions\n");
|
mInstructions = new Instructions(mRenderer, mFileList, mTextStrings);
|
||||||
mInstructions = new Instructions(mRenderer, mFileList);
|
|
||||||
mInstructions->run(mode);
|
mInstructions->run(mode);
|
||||||
delete mInstructions;
|
delete mInstructions;
|
||||||
printf("borra instructions\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ejecuta el juego en modo demo
|
// Ejecuta el juego en modo demo
|
||||||
void Title::runDemoGame()
|
void Title::runDemoGame()
|
||||||
{
|
{
|
||||||
printf("carrega joc\n");
|
mDemoGame = new Game(mRenderer, mFileList, mTextStrings, mInput, true);
|
||||||
mDemoGame = new Game(mRenderer, mFileList, mInput, true);
|
|
||||||
mDemoGame->run();
|
mDemoGame->run();
|
||||||
delete mDemoGame;
|
delete mDemoGame;
|
||||||
printf("borra joc\n");
|
|
||||||
}
|
}
|
||||||
@@ -36,12 +36,13 @@ private:
|
|||||||
SDL_Event *mEventHandler; // Manejador de eventos
|
SDL_Event *mEventHandler; // Manejador de eventos
|
||||||
SDL_Rect mBackgroundWindow; // Ventana visible para la textura de fondo del titulo
|
SDL_Rect mBackgroundWindow; // Ventana visible para la textura de fondo del titulo
|
||||||
SDL_Renderer *mRenderer; // El renderizador de la ventana
|
SDL_Renderer *mRenderer; // El renderizador de la ventana
|
||||||
SDL_Texture *mBackbuffer; // Textura para usar como backbuffer
|
//SDL_Texture *mBackbuffer; // Textura para usar como backbuffer
|
||||||
SDL_Texture *mBackground; // Textura dibujar el fondo del titulo
|
SDL_Texture *mBackground; // Textura dibujar el fondo del titulo
|
||||||
SmartSprite *mCoffeeBitmap; // Sprite con la palabra COFFEE para la pantalla de titulo
|
SmartSprite *mCoffeeBitmap; // Sprite con la palabra COFFEE para la pantalla de titulo
|
||||||
SmartSprite *mCrisisBitmap; // Sprite con la palabra CRISIS para la pantalla de titulo
|
SmartSprite *mCrisisBitmap; // Sprite con la palabra CRISIS para la pantalla de titulo
|
||||||
Sprite *mTile; // Sprite para dibujar el fondo de pantalla del título
|
Sprite *mTile; // Sprite para dibujar el fondo de pantalla del título
|
||||||
std::string *mFileList; // Lista de ficheros
|
std::string *mFileList; // Lista de ficheros
|
||||||
|
std::string *mTextStrings; // Vector con los textos del juego
|
||||||
Uint16 mBackgroundCounter; // Temporizador para el fondo de tiles de la pantalla de titulo
|
Uint16 mBackgroundCounter; // Temporizador para el fondo de tiles de la pantalla de titulo
|
||||||
Uint16 mCounter; // Temporizador para la pantalla de titulo
|
Uint16 mCounter; // Temporizador para la pantalla de titulo
|
||||||
Uint32 mTicks; // Contador de ticks para ajustar la velocidad del programa
|
Uint32 mTicks; // Contador de ticks para ajustar la velocidad del programa
|
||||||
@@ -75,8 +76,8 @@ private:
|
|||||||
// Cambia el valor de la variable de modo de pantalla completa
|
// Cambia el valor de la variable de modo de pantalla completa
|
||||||
void switchFullScreenModeVar();
|
void switchFullScreenModeVar();
|
||||||
|
|
||||||
// Actualiza los elementos del menu de opciones
|
// Actualiza los elementos de los menus
|
||||||
void updateOptionsMenuLabels();
|
void updateMenuLabels();
|
||||||
|
|
||||||
// Aplica las opciones de menu seleccionadas
|
// Aplica las opciones de menu seleccionadas
|
||||||
void applyOptions();
|
void applyOptions();
|
||||||
@@ -89,16 +90,13 @@ private:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
Title(SDL_Window *window, SDL_Renderer *renderer, Input *input, std::string *fileList, options_t *options);
|
Title(SDL_Window *window, SDL_Renderer *renderer, Input *input, std::string *fileList, options_t *options, std::string *textStrings);
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
~Title();
|
~Title();
|
||||||
|
|
||||||
// Inicializa las variables necesarias para la sección 'Title'
|
// Inicializa las variables necesarias para la sección 'Title'
|
||||||
void init(Uint8 subsection = TITLE_SECTION_1);
|
void init(bool demo = true, Uint8 subsection = TITLE_SECTION_1);
|
||||||
|
|
||||||
// Resetea las variables necesarias para la sección 'Title'
|
|
||||||
void reset(Uint8 subsection = TITLE_SECTION_1);
|
|
||||||
|
|
||||||
// Bucle para el titulo del juego
|
// Bucle para el titulo del juego
|
||||||
section_t run(Uint8 subsection = TITLE_SECTION_1);
|
section_t run(Uint8 subsection = TITLE_SECTION_1);
|
||||||
|
|||||||
@@ -46,6 +46,8 @@ struct options_t
|
|||||||
Uint32 fullScreenModePrevious; // Usado por si se cancelan los cambios en el menu de opciones
|
Uint32 fullScreenModePrevious; // Usado por si se cancelan los cambios en el menu de opciones
|
||||||
Uint8 windowSize; // Contiene el valor del tamaño de la ventana
|
Uint8 windowSize; // Contiene el valor del tamaño de la ventana
|
||||||
Uint8 windowSizePrevious; // Usado por si se cancelan los cambios en el menu de opciones
|
Uint8 windowSizePrevious; // Usado por si se cancelan los cambios en el menu de opciones
|
||||||
|
Uint8 language; // Idioma usado en el juego
|
||||||
|
Uint8 languagePrevious; // Usado por si se cancelan los cambios en el menu de opciones
|
||||||
};
|
};
|
||||||
|
|
||||||
// Calcula el cuadrado de la distancia entre dos puntos
|
// Calcula el cuadrado de la distancia entre dos puntos
|
||||||
|
|||||||
Reference in New Issue
Block a user