bug fixes

This commit is contained in:
2021-09-01 14:04:34 +02:00
parent 0b996ea321
commit 658bb71441
7 changed files with 92 additions and 25 deletions

View File

@@ -151,4 +151,8 @@ DESACTIVADA
## 75 - MENU DE OPCIONES ## 75 - MENU DE OPCIONES
ENDAVANT! ENDAVANT!
## 76 - JUEGO ## 76 - JUEGO
1.000.000 DE PUNTS! 1.000.000 DE PUNTS!
## 77 - PANTALLA DE GAME OVER
PUNTS J1:
## 78 - PANTALLA DE GAME OVER
PUNTS J2:

View File

@@ -149,6 +149,10 @@ ON
## 74 - MENU DE OPCIONES ## 74 - MENU DE OPCIONES
OFF OFF
## 75 - JUEGO ## 75 - JUEGO
GET READY! Get Ready!
## 76 - JUEGO ## 76 - JUEGO
1.000.000 POINTS! 1.000.000 POINTS!
## 77 - PANTALLA DE GAME OVER
PLAYER1 SCORE:
## 78 - PANTALLA DE GAME OVER
PLAYER2 SCORE:

View File

@@ -151,4 +151,8 @@ DESACTIVADA
## 75 - MENU DE OPCIONES ## 75 - MENU DE OPCIONES
ADELANTE! ADELANTE!
## 76 - JUEGO ## 76 - JUEGO
1.000.000 DE PUNTOS! 1.000.000 DE PUNTOS!
## 77 - PANTALLA DE GAME OVER
PUNTUACION J1:
## 78 - PANTALLA DE GAME OVER
PUNTUACION J2:

View File

@@ -257,7 +257,9 @@ void Director::setFileList()
mFileList[27] = mExecutablePath + "/" + "../media/font/8bithud.png"; mFileList[27] = mExecutablePath + "/" + "../media/font/8bithud.png";
mFileList[46] = mExecutablePath + "/" + "../media/font/8bithud.txt"; mFileList[46] = mExecutablePath + "/" + "../media/font/8bithud.txt";
mFileList[28] = mExecutablePath + "/" + "../media/font/nokia.png"; mFileList[28] = mExecutablePath + "/" + "../media/font/nokia.png";
mFileList[54] = mExecutablePath + "/" + "../media/font/nokia_big.png";
mFileList[52] = mExecutablePath + "/" + "../media/font/nokia.txt"; mFileList[52] = mExecutablePath + "/" + "../media/font/nokia.txt";
mFileList[55] = mExecutablePath + "/" + "../media/font/nokia_big.txt";
mFileList[29] = mExecutablePath + "/" + "../media/font/smb2_big.png"; mFileList[29] = mExecutablePath + "/" + "../media/font/smb2_big.png";
mFileList[47] = mExecutablePath + "/" + "../media/font/smb2_big.txt"; mFileList[47] = mExecutablePath + "/" + "../media/font/smb2_big.txt";
mFileList[30] = mExecutablePath + "/" + "../media/font/smb2.png"; mFileList[30] = mExecutablePath + "/" + "../media/font/smb2.png";

View File

@@ -50,10 +50,14 @@ Game::Game(int numPlayers, SDL_Renderer *renderer, std::string *filelist, Lang *
mTextureText = new LTexture(); mTextureText = new LTexture();
mTextureTextScoreBoard = new LTexture(); mTextureTextScoreBoard = new LTexture();
mTextureTextBig = new LTexture(); mTextureTextBig = new LTexture();
mTextureTextNokia = new LTexture();
mTextureTextNokiaBig = new LTexture();
mText = new Text(mFileList[48], mTextureText, mRenderer); mText = new Text(mFileList[48], mTextureText, mRenderer);
mTextScoreBoard = new Text(mFileList[46], mTextureTextScoreBoard, mRenderer); mTextScoreBoard = new Text(mFileList[46], mTextureTextScoreBoard, mRenderer);
mTextBig = new Text(mFileList[47], mTextureTextBig, mRenderer); mTextBig = new Text(mFileList[47], mTextureTextBig, mRenderer);
mTextNokia = new Text(mFileList[52], mTextureTextNokia, mRenderer);
mTextNokiaBig = new Text(mFileList[55], mTextureTextNokiaBig, mRenderer);
mMenuGameOver = new Menu(mRenderer, mText, mInput, mFileList); mMenuGameOver = new Menu(mRenderer, mText, mInput, mFileList);
mMenuPause = new Menu(mRenderer, mText, mInput, mFileList); mMenuPause = new Menu(mRenderer, mText, mInput, mFileList);
@@ -190,14 +194,28 @@ Game::~Game()
delete mTextureTextBig; delete mTextureTextBig;
mTextureTextBig = nullptr; mTextureTextBig = nullptr;
mTextureTextNokia->unload();
delete mTextureTextNokia;
mTextureTextNokia = nullptr;
mTextureTextNokiaBig->unload();
delete mTextureTextNokiaBig;
mTextureTextNokiaBig = nullptr;
delete mText; delete mText;
mText = nullptr; mText = nullptr;
delete mTextBig;
mTextBig = nullptr;
delete mTextScoreBoard; delete mTextScoreBoard;
mTextScoreBoard = nullptr; mTextScoreBoard = nullptr;
delete mTextureTextBig; delete mTextNokia;
mTextureTextBig = nullptr; mTextNokia = nullptr;
delete mTextNokiaBig;
mTextNokiaBig = nullptr;
delete mMenuGameOver; delete mMenuGameOver;
mMenuGameOver = nullptr; mMenuGameOver = nullptr;
@@ -523,6 +541,8 @@ bool Game::loadMedia()
success &= loadTextureFromFile(mTextureText, mFileList[30], mRenderer); success &= loadTextureFromFile(mTextureText, mFileList[30], mRenderer);
success &= loadTextureFromFile(mTextureTextScoreBoard, mFileList[27], mRenderer); success &= loadTextureFromFile(mTextureTextScoreBoard, mFileList[27], mRenderer);
success &= loadTextureFromFile(mTextureTextBig, mFileList[29], mRenderer); success &= loadTextureFromFile(mTextureTextBig, mFileList[29], mRenderer);
success &= loadTextureFromFile(mTextureTextNokia, mFileList[28], mRenderer);
success &= loadTextureFromFile(mTextureTextNokiaBig, mFileList[54], mRenderer);
success &= loadTextureFromFile(mTexturePlayer1Legs, mFileList[39], mRenderer); success &= loadTextureFromFile(mTexturePlayer1Legs, mFileList[39], mRenderer);
success &= loadTextureFromFile(mTexturePlayer1Head, mFileList[41], mRenderer); success &= loadTextureFromFile(mTexturePlayer1Head, mFileList[41], mRenderer);
@@ -2065,8 +2085,8 @@ void Game::destroyBalloon(Uint8 index)
} }
// Otorga los puntos correspondientes al globo // Otorga los puntos correspondientes al globo
mPlayer[0]->addScore(Uint32(score * mPlayer[0]->getScoreMultiplier() * mDifficultyScoreMultiplier)); for (int i = 0; i < mNumPlayers; i++)
//setScore(mPlayer[0]->getScore()); mPlayer[i]->addScore(Uint32(score * mPlayer[i]->getScoreMultiplier() * mDifficultyScoreMultiplier));
updateHiScore(); updateHiScore();
// Aumenta el poder de la fase // Aumenta el poder de la fase
@@ -2259,7 +2279,7 @@ void Game::moveBullets()
for (int i = 0; i < MAX_BULLETS; i++) for (int i = 0; i < MAX_BULLETS; i++)
if (mBullet[i]->isActive()) if (mBullet[i]->isActive())
if (mBullet[i]->move() == MSG_BULLET_OUT) if (mBullet[i]->move() == MSG_BULLET_OUT)
mPlayer[0]->decScoreMultiplier(); mPlayer[mBullet[i]->getOwner()]->decScoreMultiplier();
} }
// Pinta las balas activas // Pinta las balas activas
@@ -2861,7 +2881,7 @@ void Game::checkGameInput()
if (mPlayer[i]->isAlive()) if (mPlayer[i]->isAlive())
{ {
// Input a la izquierda // Input a la izquierda
if (mInput->checkInput(INPUT_LEFT, REPEAT_TRUE, mOptions->input[i].deviceType)) if (mInput->checkInput(INPUT_LEFT, REPEAT_TRUE, mOptions->input[i].deviceType, mOptions->input[i].id))
{ {
mPlayer[i]->setInput(INPUT_LEFT); mPlayer[i]->setInput(INPUT_LEFT);
mDemo.keys.left = 1; mDemo.keys.left = 1;
@@ -2869,7 +2889,7 @@ void Game::checkGameInput()
else else
{ {
// Input a la derecha // Input a la derecha
if (mInput->checkInput(INPUT_RIGHT, REPEAT_TRUE, mOptions->input[i].deviceType)) if (mInput->checkInput(INPUT_RIGHT, REPEAT_TRUE, mOptions->input[i].deviceType, mOptions->input[i].id))
{ {
mPlayer[i]->setInput(INPUT_RIGHT); mPlayer[i]->setInput(INPUT_RIGHT);
mDemo.keys.right = 1; mDemo.keys.right = 1;
@@ -2882,7 +2902,7 @@ void Game::checkGameInput()
} }
} }
// Comprueba el input de disparar al centro // Comprueba el input de disparar al centro
if (mInput->checkInput(INPUT_BUTTON_2, REPEAT_TRUE, mOptions->input[i].deviceType)) if (mInput->checkInput(INPUT_BUTTON_2, REPEAT_TRUE, mOptions->input[i].deviceType, mOptions->input[i].id))
{ {
if (mPlayer[i]->canFire()) if (mPlayer[i]->canFire())
{ {
@@ -2898,7 +2918,7 @@ void Game::checkGameInput()
} }
// Comprueba el input de disparar a la izquierda // Comprueba el input de disparar a la izquierda
if (mInput->checkInput(INPUT_BUTTON_1, REPEAT_TRUE, mOptions->input[i].deviceType)) if (mInput->checkInput(INPUT_BUTTON_1, REPEAT_TRUE, mOptions->input[i].deviceType, mOptions->input[i].id))
{ {
if (mPlayer[i]->canFire()) if (mPlayer[i]->canFire())
{ {
@@ -2914,7 +2934,7 @@ void Game::checkGameInput()
} }
// Comprueba el input de disparar a la derecha // Comprueba el input de disparar a la derecha
if (mInput->checkInput(INPUT_BUTTON_3, REPEAT_TRUE, mOptions->input[i].deviceType)) if (mInput->checkInput(INPUT_BUTTON_3, REPEAT_TRUE, mOptions->input[i].deviceType, mOptions->input[i].id))
{ {
if (mPlayer[i]->canFire()) if (mPlayer[i]->canFire())
{ {
@@ -2930,7 +2950,7 @@ void Game::checkGameInput()
} }
// Comprueba el input de pausa // Comprueba el input de pausa
if (mInput->checkInput(INPUT_CANCEL, REPEAT_FALSE, mOptions->input[i].deviceType)) if (mInput->checkInput(INPUT_CANCEL, REPEAT_FALSE, mOptions->input[i].deviceType, mOptions->input[i].id))
{ {
mSection.subsection = GAME_SECTION_PAUSE; mSection.subsection = GAME_SECTION_PAUSE;
@@ -2961,7 +2981,8 @@ void Game::renderMessages()
//mSpriteGetReady->render(); //mSpriteGetReady->render();
const color_t color = {0x17, 0x17, 0x26}; const color_t color = {0x17, 0x17, 0x26};
//mTextBig->writeShadowed((int)mGetReadyBitmapPath[mCounter], PLAY_AREA_CENTER_Y - 8, mLang->getText(75), color, 2); //mTextBig->writeShadowed((int)mGetReadyBitmapPath[mCounter], PLAY_AREA_CENTER_Y - 8, mLang->getText(75), color, 2);
mTextBig->writeDX(TXT_STROKE, (int)mGetReadyBitmapPath[mCounter], PLAY_AREA_CENTER_Y - 8, mLang->getText(75), 1, noColor, 1, shdwTxtColor); //mTextBig->writeDX(TXT_STROKE, (int)mGetReadyBitmapPath[mCounter], PLAY_AREA_CENTER_Y - 8, mLang->getText(75), 1, noColor, 1, shdwTxtColor);
mTextNokiaBig->write((int)mGetReadyBitmapPath[mCounter], PLAY_AREA_CENTER_Y - 8, mLang->getText(75), -4);
} }
// Time Stopped // Time Stopped
@@ -3273,7 +3294,7 @@ void Game::runGameOverScreen()
{ {
// Guarda los puntos // Guarda los puntos
saveScoreFile(); saveScoreFile();
// Reinicia el menu // Reinicia el menu
mMenuGameOver->reset(); mMenuGameOver->reset();
@@ -3330,8 +3351,17 @@ void Game::runGameOverScreen()
SDL_RenderClear(mRenderer); SDL_RenderClear(mRenderer);
// Dibuja los objetos // Dibuja los objetos
mTextBig->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y - (BLOCK * 4), mLang->getText(43)); if (mNumPlayers == 1)
mText->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y - (BLOCK * 1), mLang->getText(44) + std::to_string(mPlayer[0]->getScore())); {
mTextBig->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y - (BLOCK * 4), mLang->getText(43));
mText->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y - (BLOCK * 1), mLang->getText(44) + std::to_string(mPlayer[0]->getScore()));
}
else
{
mTextBig->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y - 36, mLang->getText(43));
mText->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y - 12, mLang->getText(77) + std::to_string(mPlayer[0]->getScore()));
mText->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y, mLang->getText(78) + std::to_string(mPlayer[1]->getScore()));
}
mText->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y + BLOCK * 2, mLang->getText(45)); mText->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y + BLOCK * 2, mLang->getText(45));
mMenuGameOver->render(); mMenuGameOver->render();
mFade->render(); mFade->render();
@@ -3427,7 +3457,7 @@ void Game::initPaths()
} }
// Letrero de GetReady // Letrero de GetReady
const int size = mTextBig->lenght(mLang->getText(75)); const int size = mTextBig->lenght(mLang->getText(75), -4);
const float start1 = PLAY_AREA_LEFT - size; const float start1 = PLAY_AREA_LEFT - size;
const float finish1 = PLAY_AREA_CENTER_X - (size / 2); const float finish1 = PLAY_AREA_CENTER_X - (size / 2);
@@ -3470,6 +3500,7 @@ void Game::updateGameCompleted()
// Actualiza las variables de ayuda // Actualiza las variables de ayuda
void Game::updateHelper() void Game::updateHelper()
{ {
// El ayudante solo funciona para un jugador
// Solo ofrece ayuda cuando la amenaza o la velocidad es elevada // Solo ofrece ayuda cuando la amenaza o la velocidad es elevada
if (mMenaceCurrent > 15) if (mMenaceCurrent > 15)
{ {

View File

@@ -108,10 +108,14 @@ private:
LTexture *mTextureText; // Textura para el texto del juego LTexture *mTextureText; // Textura para el texto del juego
LTexture *mTextureTextScoreBoard; // Textura para el texto del marcador LTexture *mTextureTextScoreBoard; // Textura para el texto del marcador
LTexture *mTextureTextBig; // Textura para el texto grande LTexture *mTextureTextBig; // Textura para el texto grande
LTexture *mTextureTextNokia; // Textura para la fuente de texto Nokia
LTexture *mTextureTextNokiaBig; // Textura para la fuente de texto Nokia grande
Text *mText; // Fuente para los textos del juego Text *mText; // Fuente para los textos del juego
Text *mTextScoreBoard; // Fuente para el marcador del juego
Text *mTextBig; // Fuente de texto grande Text *mTextBig; // Fuente de texto grande
Text *mTextScoreBoard; // Fuente para el marcador del juego
Text *mTextNokia; // Otra fuente de texto para mesajes
Text *mTextNokiaBig; // Y la versión en grande
Menu *mMenuGameOver; // Menú de la pantalla de game over Menu *mMenuGameOver; // Menú de la pantalla de game over
Menu *mMenuPause; // Menú de la pantalla de pausa Menu *mMenuPause; // Menú de la pantalla de pausa

View File

@@ -136,7 +136,7 @@ void Title::init(bool demo, Uint8 subsection)
mFade->init(0x17, 0x17, 0x26); mFade->init(0x17, 0x17, 0x26);
mDemo = demo; mDemo = demo;
if (!mInput->gameControllerFound()) //if (!mInput->gameControllerFound())
{ {
mOptions->input[0].id = 0; mOptions->input[0].id = 0;
mOptions->input[0].name = "KEYBOARD"; mOptions->input[0].name = "KEYBOARD";
@@ -152,6 +152,13 @@ void Title::init(bool demo, Uint8 subsection)
mDeviceIndex[0] = mAvailableInputDevices.size() - 1; mDeviceIndex[0] = mAvailableInputDevices.size() - 1;
mDeviceIndex[1] = 0; mDeviceIndex[1] = 0;
if (mInput->gameControllerFound())
{
mOptions->input[1].id = mAvailableInputDevices[mDeviceIndex[1]].id;
mOptions->input[1].name = mAvailableInputDevices[mDeviceIndex[1]].name;
mOptions->input[1].deviceType = mAvailableInputDevices[mDeviceIndex[1]].deviceType;
}
// Inicializa el bitmap de Coffee // Inicializa el bitmap de Coffee
mCoffeeBitmap->init(mTitleTexture, mRenderer); mCoffeeBitmap->init(mTitleTexture, mRenderer);
mCoffeeBitmap->setId(0); mCoffeeBitmap->setId(0);
@@ -942,18 +949,29 @@ bool Title::updatePlayerInputs(int numPlayer)
} }
else // Si hay mas de un dispositivo, se recorre el vector else // Si hay mas de un dispositivo, se recorre el vector
{ {
printf("numplayer:%i\n",numPlayer);
printf("deviceindex:%i\n",mDeviceIndex[numPlayer]);
// Incrementa el indice // Incrementa el indice
if (mDeviceIndex[numPlayer] < numDevices - 1) if (mDeviceIndex[numPlayer] < numDevices - 1)
mDeviceIndex[numPlayer]++; mDeviceIndex[numPlayer]++;
else else
mDeviceIndex[numPlayer] = 0; mDeviceIndex[numPlayer] = 0;
printf("deviceindex:%i\n",mDeviceIndex[numPlayer]);
// Si coincide con el del otro jugador, se lo intercambian // Si coincide con el del otro jugador, se lo intercambian
if (mDeviceIndex[0] == mDeviceIndex[1]) if (mDeviceIndex[0] == mDeviceIndex[1])
{ {
const int temp = mDeviceIndex[0]; printf("%i:%i\n",mDeviceIndex[0],mDeviceIndex[1]);
mDeviceIndex[0] = mDeviceIndex[1];
mDeviceIndex[1] = temp; //const int temp = mDeviceIndex[0];
//mDeviceIndex[0] = mDeviceIndex[1];
//mDeviceIndex[1] = temp;
const int theOtherPlayer = (numPlayer + 1) % 2;
mDeviceIndex[theOtherPlayer]--;
if (mDeviceIndex[theOtherPlayer] < 0)
mDeviceIndex[theOtherPlayer]=numDevices-1;
printf("%i:%i\n",mDeviceIndex[0],mDeviceIndex[1]);
} }
// Copia el dispositivo marcado por el indice a la variable de opciones de cada jugador // Copia el dispositivo marcado por el indice a la variable de opciones de cada jugador