|
|
|
|
@@ -1552,35 +1552,32 @@ void Game::renderScoreBoard()
|
|
|
|
|
if (mPlayer[0]->isAlive())
|
|
|
|
|
mSpriteScoreBoard->render();
|
|
|
|
|
|
|
|
|
|
//if (!mDemo.enabled)
|
|
|
|
|
{
|
|
|
|
|
// SCORE
|
|
|
|
|
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);
|
|
|
|
|
// SCORE
|
|
|
|
|
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, mTextStrings[40], 0);
|
|
|
|
|
mText->writeCentered(PLAY_AREA_CENTER_THIRD_QUARTER_X, HISCORE_NUMBER_Y - 6, updateScoreText(mHiScore), 0);
|
|
|
|
|
// HI-SCORE
|
|
|
|
|
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, mTextStrings[41], color);
|
|
|
|
|
// MULT
|
|
|
|
|
color.g = 255;
|
|
|
|
|
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[0]->getScoreMultiplier()).substr(0, 1), color, 1);
|
|
|
|
|
mText->writeShadowed(PLAY_AREA_CENTER_X - 2, SCORE_WORD_Y + 12, ".", color);
|
|
|
|
|
mText->writeShadowed(PLAY_AREA_CENTER_X + 4, SCORE_WORD_Y + 12, std::to_string(mPlayer[0]->getScoreMultiplier()).substr(2, 1), color);
|
|
|
|
|
color.g = 192;
|
|
|
|
|
mTextX2->writeShadowed(PLAY_AREA_CENTER_X - 16, SCORE_WORD_Y + 5, std::to_string(mPlayer[0]->getScoreMultiplier()).substr(0, 1), color, 1);
|
|
|
|
|
mText->writeShadowed(PLAY_AREA_CENTER_X - 2, SCORE_WORD_Y + 12, ".", color);
|
|
|
|
|
mText->writeShadowed(PLAY_AREA_CENTER_X + 4, SCORE_WORD_Y + 12, std::to_string(mPlayer[0]->getScoreMultiplier()).substr(2, 1), color);
|
|
|
|
|
|
|
|
|
|
// STAGE
|
|
|
|
|
mText->writeCentered(PLAY_AREA_CENTER_FIRST_QUARTER_X, SCORE_NUMBER_Y + 4, mTextStrings[42] + std::to_string(mStage[mCurrentStage].number), 0);
|
|
|
|
|
// STAGE
|
|
|
|
|
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);
|
|
|
|
|
mSpritePowerMeter->render();
|
|
|
|
|
const float percent = (mStage[mCurrentStage].currentPower * 40.0f) / mStage[mCurrentStage].powerToComplete;
|
|
|
|
|
mSpritePowerMeter->setSpriteClip(296, 184, (int)percent, 8);
|
|
|
|
|
mSpritePowerMeter->render();
|
|
|
|
|
}
|
|
|
|
|
// POWER
|
|
|
|
|
mSpritePowerMeter->setSpriteClip(256, 184, 40, 8);
|
|
|
|
|
mSpritePowerMeter->render();
|
|
|
|
|
const float percent = (mStage[mCurrentStage].currentPower * 40.0f) / mStage[mCurrentStage].powerToComplete;
|
|
|
|
|
mSpritePowerMeter->setSpriteClip(296, 184, (int)percent, 8);
|
|
|
|
|
mSpritePowerMeter->render();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Actualiza las variables del jugador
|
|
|
|
|
@@ -2102,19 +2099,20 @@ void Game::checkBulletBalloonCollision()
|
|
|
|
|
if (mBalloon[i]->isEnabled() && (!mBalloon[i]->isInvulnerable()) && mBullet[j]->isActive())
|
|
|
|
|
if (checkCollision(mBalloon[i]->getCollider(), mBullet[j]->getCollider()))
|
|
|
|
|
{
|
|
|
|
|
// Otorga los puntos correspondientes al globo
|
|
|
|
|
mPlayer[0]->incScoreMultiplier();
|
|
|
|
|
mPlayer[0]->addScore(Uint32(mBalloon[i]->getScore() * mPlayer[0]->getScoreMultiplier()));
|
|
|
|
|
setScore(mPlayer[0]->getScore());
|
|
|
|
|
// Otorga los puntos correspondientes al globo al jugador que disparó la bala
|
|
|
|
|
const int index = mBullet[j]->getOwner();
|
|
|
|
|
mPlayer[index]->incScoreMultiplier();
|
|
|
|
|
mPlayer[index]->addScore(Uint32(mBalloon[i]->getScore() * mPlayer[index]->getScoreMultiplier()));
|
|
|
|
|
setScore(mPlayer[index]->getScore());
|
|
|
|
|
updateHiScore();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Explota el globo
|
|
|
|
|
popBalloon(i);
|
|
|
|
|
|
|
|
|
|
// Si no es el modo demo, genera un sonido
|
|
|
|
|
if (!mDemo.enabled)
|
|
|
|
|
JA_PlaySound(mSoundBalloon);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Destruye la bala
|
|
|
|
|
mBullet[j]->erase();
|
|
|
|
|
|
|
|
|
|
@@ -2167,9 +2165,9 @@ void Game::resetBullets()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Crea un objeto bala
|
|
|
|
|
void Game::createBullet(int x, int y, Uint8 kind, bool poweredUp)
|
|
|
|
|
void Game::createBullet(int x, int y, Uint8 kind, bool poweredUp, int owner)
|
|
|
|
|
{
|
|
|
|
|
mBullet[getBulletFreeIndex()]->init(x, y, kind, poweredUp, mTextureBullet, mRenderer);
|
|
|
|
|
mBullet[getBulletFreeIndex()]->init(x, y, kind, poweredUp, owner, mTextureBullet, mRenderer);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Actualiza los items
|
|
|
|
|
@@ -2688,37 +2686,38 @@ void Game::checkGameInput()
|
|
|
|
|
// Modo Demo activo
|
|
|
|
|
if (mDemo.enabled)
|
|
|
|
|
{
|
|
|
|
|
const int index = 0;
|
|
|
|
|
if (mDemo.dataFile[mDemo.counter].left == 1)
|
|
|
|
|
mPlayer[0]->setInput(INPUT_LEFT);
|
|
|
|
|
mPlayer[index]->setInput(INPUT_LEFT);
|
|
|
|
|
|
|
|
|
|
if (mDemo.dataFile[mDemo.counter].right == 1)
|
|
|
|
|
mPlayer[0]->setInput(INPUT_RIGHT);
|
|
|
|
|
mPlayer[index]->setInput(INPUT_RIGHT);
|
|
|
|
|
|
|
|
|
|
if (mDemo.dataFile[mDemo.counter].noInput == 1)
|
|
|
|
|
mPlayer[0]->setInput(NO_INPUT);
|
|
|
|
|
mPlayer[index]->setInput(NO_INPUT);
|
|
|
|
|
|
|
|
|
|
if (mDemo.dataFile[mDemo.counter].fire == 1)
|
|
|
|
|
if (mPlayer[0]->canFire())
|
|
|
|
|
if (mPlayer[index]->canFire())
|
|
|
|
|
{
|
|
|
|
|
mPlayer[0]->setInput(INPUT_FIRE_UP);
|
|
|
|
|
createBullet(mPlayer[0]->getPosX() + (mPlayer[0]->getWidth() / 2) - 4, mPlayer[0]->getPosY() + (mPlayer[0]->getHeight() / 2), BULLET_UP, mPlayer[0]->isPowerUp());
|
|
|
|
|
mPlayer[0]->setFireCooldown(10);
|
|
|
|
|
mPlayer[index]->setInput(INPUT_FIRE_UP);
|
|
|
|
|
createBullet(mPlayer[index]->getPosX() + (mPlayer[index]->getWidth() / 2) - 4, mPlayer[index]->getPosY() + (mPlayer[index]->getHeight() / 2), BULLET_UP, mPlayer[index]->isPowerUp(), index);
|
|
|
|
|
mPlayer[index]->setFireCooldown(10);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (mDemo.dataFile[mDemo.counter].fireLeft == 1)
|
|
|
|
|
if (mPlayer[0]->canFire())
|
|
|
|
|
if (mPlayer[index]->canFire())
|
|
|
|
|
{
|
|
|
|
|
mPlayer[0]->setInput(INPUT_FIRE_LEFT);
|
|
|
|
|
createBullet(mPlayer[0]->getPosX() + (mPlayer[0]->getWidth() / 2) - 4, mPlayer[0]->getPosY() + (mPlayer[0]->getHeight() / 2), BULLET_UP, mPlayer[0]->isPowerUp());
|
|
|
|
|
mPlayer[0]->setFireCooldown(10);
|
|
|
|
|
mPlayer[index]->setInput(INPUT_FIRE_LEFT);
|
|
|
|
|
createBullet(mPlayer[index]->getPosX() + (mPlayer[index]->getWidth() / 2) - 4, mPlayer[index]->getPosY() + (mPlayer[index]->getHeight() / 2), BULLET_UP, mPlayer[index]->isPowerUp(), index);
|
|
|
|
|
mPlayer[index]->setFireCooldown(10);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (mDemo.dataFile[mDemo.counter].fireRight == 1)
|
|
|
|
|
if (mPlayer[0]->canFire())
|
|
|
|
|
if (mPlayer[index]->canFire())
|
|
|
|
|
{
|
|
|
|
|
mPlayer[0]->setInput(INPUT_FIRE_RIGHT);
|
|
|
|
|
createBullet(mPlayer[0]->getPosX() + (mPlayer[0]->getWidth() / 2) - 4, mPlayer[0]->getPosY() + (mPlayer[0]->getHeight() / 2), BULLET_UP, mPlayer[0]->isPowerUp());
|
|
|
|
|
mPlayer[0]->setFireCooldown(10);
|
|
|
|
|
mPlayer[index]->setInput(INPUT_FIRE_RIGHT);
|
|
|
|
|
createBullet(mPlayer[index]->getPosX() + (mPlayer[index]->getWidth() / 2) - 4, mPlayer[index]->getPosY() + (mPlayer[index]->getHeight() / 2), BULLET_UP, mPlayer[index]->isPowerUp(), index);
|
|
|
|
|
mPlayer[index]->setFireCooldown(10);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Comprueba el input de pausa
|
|
|
|
|
@@ -2763,7 +2762,7 @@ void Game::checkGameInput()
|
|
|
|
|
if (mPlayer[i]->canFire())
|
|
|
|
|
{
|
|
|
|
|
mPlayer[i]->setInput(INPUT_FIRE_UP);
|
|
|
|
|
createBullet(mPlayer[i]->getPosX() + (mPlayer[i]->getWidth() / 2) - 4, mPlayer[i]->getPosY() + (mPlayer[i]->getHeight() / 2), BULLET_UP, mPlayer[i]->isPowerUp());
|
|
|
|
|
createBullet(mPlayer[i]->getPosX() + (mPlayer[i]->getWidth() / 2) - 4, mPlayer[i]->getPosY() + (mPlayer[i]->getHeight() / 2), BULLET_UP, mPlayer[i]->isPowerUp(), i);
|
|
|
|
|
mPlayer[i]->setFireCooldown(10);
|
|
|
|
|
|
|
|
|
|
// Reproduce el sonido de disparo
|
|
|
|
|
@@ -2779,7 +2778,7 @@ void Game::checkGameInput()
|
|
|
|
|
if (mPlayer[i]->canFire())
|
|
|
|
|
{
|
|
|
|
|
mPlayer[i]->setInput(INPUT_FIRE_LEFT);
|
|
|
|
|
createBullet(mPlayer[i]->getPosX() + (mPlayer[i]->getWidth() / 2) - 4, mPlayer[i]->getPosY() + (mPlayer[i]->getHeight() / 2), BULLET_LEFT, mPlayer[i]->isPowerUp());
|
|
|
|
|
createBullet(mPlayer[i]->getPosX() + (mPlayer[i]->getWidth() / 2) - 4, mPlayer[i]->getPosY() + (mPlayer[i]->getHeight() / 2), BULLET_LEFT, mPlayer[i]->isPowerUp(), i);
|
|
|
|
|
mPlayer[i]->setFireCooldown(10);
|
|
|
|
|
|
|
|
|
|
// Reproduce el sonido de disparo
|
|
|
|
|
@@ -2795,7 +2794,7 @@ void Game::checkGameInput()
|
|
|
|
|
if (mPlayer[i]->canFire())
|
|
|
|
|
{
|
|
|
|
|
mPlayer[i]->setInput(INPUT_FIRE_RIGHT);
|
|
|
|
|
createBullet(mPlayer[i]->getPosX() + (mPlayer[i]->getWidth() / 2) - 4, mPlayer[i]->getPosY() + (mPlayer[i]->getHeight() / 2), BULLET_RIGHT, mPlayer[i]->isPowerUp());
|
|
|
|
|
createBullet(mPlayer[i]->getPosX() + (mPlayer[i]->getWidth() / 2) - 4, mPlayer[i]->getPosY() + (mPlayer[i]->getHeight() / 2), BULLET_RIGHT, mPlayer[i]->isPowerUp(), i);
|
|
|
|
|
mPlayer[i]->setFireCooldown(10);
|
|
|
|
|
|
|
|
|
|
// Reproduce el sonido de disparo
|
|
|
|
|
|