working on new text engine

This commit is contained in:
2021-08-26 18:14:56 +02:00
parent 6d2fd16ec2
commit 3cb822ee6c
11 changed files with 664 additions and 60 deletions

View File

@@ -42,10 +42,12 @@ Game::Game(int numPlayers, SDL_Renderer *renderer, std::string *filelist, std::s
mTexturePlayer2Death = new LTexture();
mTexturePlayer2Legs = new LTexture();
mTextureText = new LTexture();
mTextureText2 = new LTexture();
mTextureTextScoreBoard = new LTexture();
mTextureTextBig = new LTexture();
mText = new Text(mFileList[46], mTextureText, mRenderer);
mTextX2 = new Text(mFileList[46], mTextureText2, mRenderer);
mText = new Text(mFileList[48], mTextureText, mRenderer);
mTextScoreBoard = new Text(mFileList[46], mTextureTextScoreBoard, mRenderer);
mTextBig = new Text(mFileList[47], mTextureTextBig, mRenderer);
mMenuGameOver = new Menu(mRenderer, mText, mInput[0], mFileList);
mMenuPause = new Menu(mRenderer, mText, mInput[0], mFileList);
@@ -169,15 +171,22 @@ Game::~Game()
delete mTextureText;
mTextureText = nullptr;
mTextureText2->unload();
delete mTextureText2;
mTextureText2 = nullptr;
mTextureTextScoreBoard->unload();
delete mTextureTextScoreBoard;
mTextureTextScoreBoard = nullptr;
mTextureTextBig->unload();
delete mTextureTextBig;
mTextureTextBig = nullptr;
delete mText;
mText = nullptr;
delete mTextX2;
mTextX2 = nullptr;
delete mTextScoreBoard;
mTextScoreBoard = nullptr;
delete mTextureTextBig;
mTextureTextBig = nullptr;
delete mMenuGameOver;
mMenuGameOver = nullptr;
@@ -345,7 +354,8 @@ void Game::init()
// Inicializa los objetos de texto
mText->init();
mTextX2->init();
mTextScoreBoard->init();
mTextBig->init();
// Inicializa el objeto con el menu de pausa
mMenuPause->init("PAUSE", 0, 12 * BLOCK, MENU_BACKGROUND_SOLID);
@@ -485,8 +495,9 @@ bool Game::loadMedia()
bool success = true;
// Texturas
success &= loadTextureFromFile(mTextureText, mFileList[27], mRenderer);
success &= loadTextureFromFile(mTextureText2, mFileList[29], mRenderer);
success &= loadTextureFromFile(mTextureText, mFileList[30], mRenderer);
success &= loadTextureFromFile(mTextureTextScoreBoard, mFileList[27], mRenderer);
success &= loadTextureFromFile(mTextureTextBig, mFileList[29], mRenderer);
success &= loadTextureFromFile(mTexturePlayer1Legs, mFileList[39], mRenderer);
success &= loadTextureFromFile(mTexturePlayer1Head, mFileList[41], mRenderer);
@@ -1581,41 +1592,38 @@ void Game::renderScoreBoard()
mSpritePowerMeter->setSpriteClip(296, 184, (int)percent, 8);
mSpritePowerMeter->render();
*/
const int offset1 = 163;
const int offset1 = 162;
const int offset2 = offset1 + 7;
const int offset3 = offset2 + 7;
const int offset4 = offset3 + 7;
// PLAYER1 - SCORE
mText->write(PLAY_AREA_LEFT, offset1, mTextStrings[53], 0);
mText->write(PLAY_AREA_LEFT, offset2, updateScoreText(mPlayer[0]->getScore()), 0);
mTextScoreBoard->writeCentered(49/2, offset1, mTextStrings[53]);
mTextScoreBoard->write(PLAY_AREA_LEFT+1, offset2, updateScoreText(mPlayer[0]->getScore()));
// PLAYER1 - MULT
mText->write(PLAY_AREA_LEFT, offset3, mTextStrings[55], 0);
mText->write(PLAY_AREA_LEFT + (8 * 7), offset3, std::to_string(mPlayer[0]->getScoreMultiplier()), 0);
mTextScoreBoard->write(PLAY_AREA_LEFT+1, offset3, mTextStrings[55] + std::to_string(mPlayer[0]->getScoreMultiplier()).substr(0, 3));
if (mNumPlayers == 2)
{
// PLAYER2 - SCORE
mText->write(PLAY_AREA_RIGHT - (8 * 8), offset1, mTextStrings[54], 0);
mText->write(PLAY_AREA_RIGHT - (8 * 7), offset2, updateScoreText(mPlayer[1]->getScore()), 0);
mTextScoreBoard->writeCentered(PLAY_AREA_RIGHT - (49/2), offset1, mTextStrings[54]);
mTextScoreBoard->write(PLAY_AREA_RIGHT - 49, offset2, updateScoreText(mPlayer[1]->getScore()));
// PLAYER2 - MULT
mText->write(PLAY_AREA_RIGHT - (8 * 10), offset3, mTextStrings[55], 0);
mText->write(PLAY_AREA_RIGHT - (8 * 5), offset3, std::to_string(mPlayer[1]->getScoreMultiplier()), 0);
mTextScoreBoard->write(PLAY_AREA_RIGHT - (8 * 10), offset3, mTextStrings[55]+std::to_string(mPlayer[1]->getScoreMultiplier()).substr(0, 3));
}
else
{
// PLAYER2 - SCORE
mText->write(PLAY_AREA_RIGHT - (8 * 9), offset1, mTextStrings[54], 0);
mText->write(PLAY_AREA_RIGHT - (8 * 7), offset2, "0000000", 0);
mTextScoreBoard->writeCentered(PLAY_AREA_RIGHT - (49/2), offset1, mTextStrings[54]);
mTextScoreBoard->write(PLAY_AREA_RIGHT - 49, offset2, "0000000");
// PLAYER2 - MULT
mText->write(PLAY_AREA_RIGHT - (8 * 10), offset3, mTextStrings[55], 0);
mText->write(PLAY_AREA_RIGHT - (8 * 3), offset3, "1.0", 0);
mTextScoreBoard->write(PLAY_AREA_RIGHT - (8 * 10), offset3, mTextStrings[55] + "1.0");
}
// STAGE
mText->writeCentered(PLAY_AREA_CENTER_X, offset1, mTextStrings[42] + std::to_string(mStage[mCurrentStage].number), 0);
mTextScoreBoard->writeCentered(PLAY_AREA_CENTER_X, offset1, mTextStrings[57] + std::to_string(mStage[mCurrentStage].number));
// POWER
//mSpritePowerMeter->setSpriteClip(256, 184, 40, 8);
@@ -1625,7 +1633,7 @@ void Game::renderScoreBoard()
//mSpritePowerMeter->render();
// HI-SCORE
mText->writeCentered(PLAY_AREA_CENTER_X, offset4, mTextStrings[40] + "0000000", 0);
mTextScoreBoard->writeCentered(PLAY_AREA_CENTER_X, offset4, mTextStrings[56] + "0000000");
}
// Actualiza las variables del jugador
@@ -1804,7 +1812,7 @@ void Game::renderBalloons()
{
mBalloon[i]->render();
if ((mDebug.enabled) && (mBalloon[i]->isPopping() == false))
mText->writeCentered(mBalloon[i]->getPosX() + (mBalloon[i]->getWidth() / 2), mBalloon[i]->getPosY() - 8, std::to_string(i), 0);
mText->writeCentered(mBalloon[i]->getPosX() + (mBalloon[i]->getWidth() / 2), mBalloon[i]->getPosY() - 8, std::to_string(i));
}
}
@@ -2893,7 +2901,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, mTextStrings[36] + 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), 1, noColor, 1, shdwTxtColor);
if (mTimeStoppedCounter > 100)
{
@@ -2910,7 +2918,7 @@ 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, mTextStrings[37], 0, noColor, 2, shdwTxtColor);
mTextBig->writeDX(TXT_CENTER | TXT_SHADOW, PLAY_AREA_CENTER_X, PLAY_AREA_FIRST_QUARTER_Y, mTextStrings[37], 0, noColor, 2, shdwTxtColor);
// STAGE NUMBER
std::string text = mTextStrings[38] + std::to_string(mStage[mCurrentStage].number);
@@ -2918,7 +2926,7 @@ void Game::renderMessages()
text = mTextStrings[50];
if (mStageBitmapCounter < STAGE_COUNTER)
mTextX2->writeDX(TXT_CENTER | TXT_SHADOW, PLAY_AREA_CENTER_X, mStageBitmapPath[mStageBitmapCounter], text, 0, noColor, 2, shdwTxtColor);
mTextBig->writeDX(TXT_CENTER | TXT_SHADOW, PLAY_AREA_CENTER_X, mStageBitmapPath[mStageBitmapCounter], text, 1, noColor, 2, shdwTxtColor);
}
// Habilita el efecto del item de detener el tiempo
@@ -3243,9 +3251,9 @@ void Game::runGameOverScreen()
SDL_RenderClear(mRenderer);
// Dibuja los objetos
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[0]->getScore()), 0);
mText->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y + BLOCK * 2, mTextStrings[45], 0);
mTextBig->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y - (BLOCK * 4), mTextStrings[43]);
mText->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y - (BLOCK * 1), mTextStrings[44] + std::to_string(mPlayer[0]->getScore()));
mText->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y + BLOCK * 2, mTextStrings[45]);
mMenuGameOver->render();
mFade->render();