multi lang support

This commit is contained in:
2021-04-27 22:28:00 +02:00
parent a0e94035db
commit 176d0d4f90
14 changed files with 510 additions and 162 deletions

View File

@@ -5,11 +5,12 @@
#endif
// 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;
mFileList = filelist;
mTextStrings = textStrings;
mInput = input;
mDemo.enabled = demo;
@@ -300,8 +301,8 @@ void Game::init()
// Inicializa el objeto con el menu de pausa
mMenuPause->init("PAUSE", 0, 12 * BLOCK, MENU_BACKGROUND_SOLID);
mMenuPause->addItem("CONTINUE");
mMenuPause->addItem("EXIT TO TITLE");
mMenuPause->addItem(mTextStrings[46]);
mMenuPause->addItem(mTextStrings[47]);
mMenuPause->setDefaultActionWhenCancel(0);
mMenuPause->setBackgroundColor(0x29, 0x39, 0x41, 240);
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
mMenuGameOver->init("GAME OVER", 0, PLAY_AREA_CENTER_Y + BLOCK * 4, MENU_BACKGROUND_TRANSPARENT);
mMenuGameOver->addItem("YES");
mMenuGameOver->addItem("NO");
mMenuGameOver->addItem(mTextStrings[48]);
mMenuGameOver->addItem(mTextStrings[49]);
mMenuGameOver->setDefaultActionWhenCancel(1);
mMenuGameOver->setBackgroundColor(0, 0, 0, 255);
mMenuGameOver->setSelectorColor(0x54, 0x6e, 0x7a, 255);
@@ -1362,6 +1363,7 @@ void Game::deployEnemyFormation()
// Crea una powerball
createPowerBall();
// Da un poco de margen para que se creen mas enemigos
mEnemyDeployCounter = 50;
}
else
@@ -1491,16 +1493,16 @@ void Game::renderScoreBoard()
//if (!mDemo.enabled)
{
// 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);
// 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);
// MULT
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;
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);
// 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
mSpritePowerMeter->setSpriteClip(256, 184, 40, 8);
@@ -1517,13 +1519,6 @@ void Game::renderScoreBoard()
mSpritePowerMeter->setSpriteClip(296, 184, (int)percent, 8);
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
@@ -1689,10 +1684,12 @@ Uint8 Game::createNewBalloon(float x, int y, Uint8 kind, float velx, float speed
// Crea una PowerBall
void Game::createPowerBall()
{
const int posY = (PLAY_AREA_TOP);
const int posY = PLAY_AREA_TOP;
const int left = PLAY_AREA_LEFT;
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 posX = x[rand() % 3];
@@ -2687,7 +2684,7 @@ void Game::renderMessages()
{
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->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)
{
@@ -2704,11 +2701,11 @@ void Game::renderMessages()
// D E M O
if (mDemo.enabled)
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
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
@@ -3026,9 +3023,9 @@ void Game::runGameOverScreen()
SDL_RenderClear(mRenderer);
// Dibuja los objetos
mTextX2->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y - (BLOCK * 4), "GAME OVER", 0);
mText->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y - (BLOCK * 1), "YOUR SCORE: " + 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);
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), mTextStrings[44] + std::to_string(mPlayer->getScore()), 0);
mText->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y + BLOCK * 2, mTextStrings[45], 0);
mMenuGameOver->render();
mFade->render();
@@ -3082,7 +3079,7 @@ void Game::renderDebugInfo()
// Indica si se puede crear una powerball
bool Game::canPowerBallBeCreated()
{
if ((!mPowerBallEnabled) && (calculateScreenPower() > 0))
if ((!mPowerBallEnabled) && (calculateScreenPower() > POWERBALL_SCREENPOWER_MINIMUM))
return true;
else
return false;