added poerup and helper
This commit is contained in:
107
source/game.cpp
107
source/game.cpp
@@ -219,6 +219,7 @@ Game::~Game()
|
||||
JA_DeleteSound(mSoundBubble4);
|
||||
JA_DeleteSound(mSoundClock);
|
||||
JA_DeleteSound(mSoundPowerBall);
|
||||
JA_DeleteSound(mSoundCollision);
|
||||
|
||||
JA_DeleteMusic(mMusicPlaying);
|
||||
}
|
||||
@@ -253,7 +254,7 @@ void Game::init()
|
||||
mMenaceThreshold = 0;
|
||||
mScore = 0;
|
||||
mHiScoreAchieved = false;
|
||||
mCurrentStage = 9;
|
||||
mCurrentStage = 0;
|
||||
mStageBitmapCounter = STAGE_COUNTER;
|
||||
mDeathCounter = DEATH_COUNTER;
|
||||
mExplosionTime = false;
|
||||
@@ -269,7 +270,18 @@ void Game::init()
|
||||
mEffect.flash = false;
|
||||
mEffect.shake = false;
|
||||
mEffect.shakeCounter = SHAKE_COUNTER;
|
||||
mHelper.needCoffee = false;
|
||||
mHelper.needCoffeeMachine = false;
|
||||
mHelper.needPowerBall = false;
|
||||
mHelper.counter = HELP_COUNTER;
|
||||
mHelper.itemPoints1Odds = ITEM_POINTS_1_DISK_ODDS;
|
||||
mHelper.itemPoints2Odds = ITEM_POINTS_2_GAVINA_ODDS;
|
||||
mHelper.itemPoints3Odds = ITEM_POINTS_3_PACMAR_ODDS;
|
||||
mHelper.itemClockOdds = ITEM_CLOCK_ODDS;
|
||||
mHelper.itemCoffeeOdds = ITEM_COFFEE_ODDS;
|
||||
mHelper.itemCoffeeMachineOdds = ITEM_COFFEE_MACHINE_ODDS;
|
||||
mPowerBallEnabled = false;
|
||||
mCoffeeMachineEnabled = false;
|
||||
mPostFade = 0;
|
||||
|
||||
if (mDemo.enabled)
|
||||
@@ -468,6 +480,7 @@ bool Game::loadMedia()
|
||||
mSoundPlayerCollision = JA_LoadSound(mFileList[19].c_str());
|
||||
mSoundPowerBall = JA_LoadSound(mFileList[23].c_str());
|
||||
mSoundStageChange = JA_LoadSound(mFileList[20].c_str());
|
||||
mSoundCollision = JA_LoadSound(mFileList[21].c_str());
|
||||
|
||||
// Musicas
|
||||
mMusicPlaying = JA_LoadMusic(mFileList[4].c_str());
|
||||
@@ -1617,10 +1630,14 @@ void Game::updateDeath()
|
||||
}
|
||||
|
||||
// Animación
|
||||
if ((mDeathCounter / 5) % 2 == 0)
|
||||
mSmartSprite[mDeathIndex]->setSpriteClip(0, 0, 24, 24);
|
||||
else
|
||||
mSmartSprite[mDeathIndex]->setSpriteClip(24, 0, 24, 24);
|
||||
if ((mDeathCounter / 5) % 4 == 0)
|
||||
mSmartSprite[mDeathIndex]->setSpriteClip(24 * 0, 24, 24, 24);
|
||||
else if ((mDeathCounter / 5) % 4 == 1)
|
||||
mSmartSprite[mDeathIndex]->setSpriteClip(24 * 1, 24, 24, 24);
|
||||
else if ((mDeathCounter / 5) % 4 == 2)
|
||||
mSmartSprite[mDeathIndex]->setSpriteClip(24 * 2, 24, 24, 24);
|
||||
else if ((mDeathCounter / 5) % 4 == 3)
|
||||
mSmartSprite[mDeathIndex]->setSpriteClip(24 * 3, 24, 24, 24);
|
||||
|
||||
// Rebote en los laterales
|
||||
if (mSmartSprite[mDeathIndex]->getVelX() > 0)
|
||||
@@ -2026,6 +2043,7 @@ void Game::checkPlayerItemCollision()
|
||||
case ITEM_COFFEE_MACHINE:
|
||||
mPlayer->setPowerUp(true);
|
||||
JA_PlaySound(mSoundItemPickup);
|
||||
mCoffeeMachineEnabled = false;
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -2055,7 +2073,10 @@ void Game::checkBulletBalloonCollision()
|
||||
if ((droppeditem != NO_KIND) && !(mDemo.enabled) && !(mDemo.recording))
|
||||
{
|
||||
createItem(mBalloon[i]->getPosX(), mBalloon[i]->getPosY(), droppeditem);
|
||||
JA_PlaySound(mSoundItemDrop);
|
||||
if (droppeditem != ITEM_COFFEE_MACHINE)
|
||||
JA_PlaySound(mSoundItemDrop);
|
||||
else
|
||||
mCoffeeMachineEnabled = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -2105,7 +2126,11 @@ void Game::createBullet(int x, int y, Uint8 kind, bool poweredUp)
|
||||
void Game::updateItems()
|
||||
{
|
||||
for (int i = 0; i < MAX_ITEMS; i++)
|
||||
mItem[i]->update();
|
||||
if (mItem[i]->update() == 1)
|
||||
{
|
||||
JA_PlaySound(mSoundCollision);
|
||||
mEffect.shake = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Pinta los items activos
|
||||
@@ -2135,39 +2160,56 @@ void Game::resetItems()
|
||||
// Devuelve un item en función del azar
|
||||
Uint8 Game::dropItem()
|
||||
{
|
||||
if (mPlayer->isPowerUp())
|
||||
/*if (mPlayer->isPowerUp() || (mCoffeeMachineEnabled))
|
||||
return NO_KIND;
|
||||
else
|
||||
return ITEM_COFFEE_MACHINE;
|
||||
return ITEM_COFFEE_MACHINE;*/
|
||||
|
||||
const Uint8 luckyNumber = rand() % 99;
|
||||
const Uint8 luckyNumber = rand() % 100;
|
||||
const Uint8 item = rand() % 6;
|
||||
|
||||
switch (item)
|
||||
{
|
||||
case 0:
|
||||
if (luckyNumber < 10)
|
||||
if (luckyNumber < mHelper.itemPoints1Odds)
|
||||
return ITEM_POINTS_1_DISK;
|
||||
break;
|
||||
case 1:
|
||||
if (luckyNumber < 6)
|
||||
if (luckyNumber < mHelper.itemPoints2Odds)
|
||||
return ITEM_POINTS_2_GAVINA;
|
||||
break;
|
||||
case 2:
|
||||
if (luckyNumber < 3)
|
||||
if (luckyNumber < mHelper.itemPoints3Odds)
|
||||
return ITEM_POINTS_3_PACMAR;
|
||||
break;
|
||||
case 3:
|
||||
if (luckyNumber < 5)
|
||||
if (luckyNumber < mHelper.itemClockOdds)
|
||||
return ITEM_CLOCK;
|
||||
break;
|
||||
case 4:
|
||||
if (luckyNumber < 5)
|
||||
if (luckyNumber < mHelper.itemCoffeeOdds)
|
||||
{
|
||||
mHelper.itemCoffeeOdds = ITEM_COFFEE_ODDS;
|
||||
return ITEM_COFFEE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mHelper.needCoffee)
|
||||
mHelper.itemCoffeeOdds++;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (luckyNumber < 4)
|
||||
return ITEM_COFFEE_MACHINE;
|
||||
if (luckyNumber < mHelper.itemCoffeeMachineOdds)
|
||||
{
|
||||
mHelper.itemCoffeeMachineOdds = ITEM_COFFEE_MACHINE_ODDS;
|
||||
if ((!mCoffeeMachineEnabled) && (mHelper.needCoffeeMachine))
|
||||
return ITEM_COFFEE_MACHINE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mHelper.needCoffeeMachine)
|
||||
mHelper.itemCoffeeMachineOdds++;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -2217,7 +2259,10 @@ void Game::updateShakeEffect()
|
||||
if (mEffect.shakeCounter > 0)
|
||||
mEffect.shakeCounter--;
|
||||
else
|
||||
{
|
||||
mEffect.shake = false;
|
||||
mEffect.shakeCounter = SHAKE_COUNTER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2464,6 +2509,9 @@ void Game::updatePlayField()
|
||||
updateEnemyDeployCounter();
|
||||
updateShakeEffect();
|
||||
|
||||
// Actualiza el ayudante
|
||||
updateHelper();
|
||||
|
||||
// Comprueba las colisiones entre globos y balas
|
||||
checkBulletBalloonCollision();
|
||||
|
||||
@@ -2512,7 +2560,7 @@ void Game::updateBackground()
|
||||
// Dibuja el fondo
|
||||
void Game::renderBackground()
|
||||
{
|
||||
const float gradientNumber = std::min(((float)mBalloonsPopped / 900.0f), 3.0f);
|
||||
const float gradientNumber = std::min(((float)mBalloonsPopped / 1000.0f), 3.0f);
|
||||
const float percent = gradientNumber - (int)gradientNumber;
|
||||
const int alpha = std::max((255 - (int)(255 * percent)), 0);
|
||||
|
||||
@@ -3212,4 +3260,27 @@ void Game::updateGameCompleted()
|
||||
|
||||
if (mGameCompletedCounter == 500)
|
||||
mSection.subsection = GAME_SECTION_GAMEOVER;
|
||||
}
|
||||
|
||||
// Actualiza las variables de ayuda
|
||||
void Game::updateHelper()
|
||||
{
|
||||
// Solo ofrece ayuda cuando la amenaza o la velocidad es elevada
|
||||
if (mMenaceCurrent > 15)
|
||||
{
|
||||
if (mPlayer->getCoffees() == 0)
|
||||
mHelper.needCoffee = true;
|
||||
else
|
||||
mHelper.needCoffee = false;
|
||||
|
||||
if (!mPlayer->isPowerUp())
|
||||
mHelper.needCoffeeMachine = true;
|
||||
else
|
||||
mHelper.needCoffeeMachine = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
mHelper.needCoffee = false;
|
||||
mHelper.needCoffeeMachine = false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user