added difficulty (speed and points)
This commit is contained in:
@@ -578,9 +578,9 @@ void Director::runTitle()
|
|||||||
void Director::runGame()
|
void Director::runGame()
|
||||||
{
|
{
|
||||||
if (mSection.subsection == GAME_SECTION_PLAY_1P)
|
if (mSection.subsection == GAME_SECTION_PLAY_1P)
|
||||||
mGame = new Game(1, mRenderer, mFileList, mLang, mInput1, mInput2, false);
|
mGame = new Game(1, mRenderer, mFileList, mLang, mInput1, mInput2, false, mOptions->difficulty);
|
||||||
if (mSection.subsection == GAME_SECTION_PLAY_2P)
|
if (mSection.subsection == GAME_SECTION_PLAY_2P)
|
||||||
mGame = new Game(2, mRenderer, mFileList, mLang, mInput1, mInput2, false);
|
mGame = new Game(2, mRenderer, mFileList, mLang, mInput1, mInput2, false, mOptions->difficulty);
|
||||||
setSection(mGame->run());
|
setSection(mGame->run());
|
||||||
delete mGame;
|
delete mGame;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
Game::Game(int numPlayers, SDL_Renderer *renderer, std::string *filelist, Lang *lang, Input *input1, Input *input2, bool demo)
|
Game::Game(int numPlayers, SDL_Renderer *renderer, std::string *filelist, Lang *lang, Input *input1, Input *input2, bool demo, int difficulty)
|
||||||
{
|
{
|
||||||
// Copia los punteros
|
// Copia los punteros
|
||||||
mRenderer = renderer;
|
mRenderer = renderer;
|
||||||
@@ -13,8 +13,11 @@ Game::Game(int numPlayers, SDL_Renderer *renderer, std::string *filelist, Lang *
|
|||||||
mLang = lang;
|
mLang = lang;
|
||||||
mInput[0] = input1;
|
mInput[0] = input1;
|
||||||
mInput[1] = input2;
|
mInput[1] = input2;
|
||||||
|
|
||||||
|
// Pasa variables
|
||||||
mDemo.enabled = demo;
|
mDemo.enabled = demo;
|
||||||
mNumPlayers = numPlayers;
|
mNumPlayers = numPlayers;
|
||||||
|
mDifficulty = difficulty;
|
||||||
|
|
||||||
// Crea los objetos
|
// Crea los objetos
|
||||||
for (int i = 0; i < mNumPlayers; i++)
|
for (int i = 0; i < mNumPlayers; i++)
|
||||||
@@ -284,6 +287,26 @@ void Game::init()
|
|||||||
mTicksSpeed = 15;
|
mTicksSpeed = 15;
|
||||||
|
|
||||||
// Inicializa las variables
|
// Inicializa las variables
|
||||||
|
switch (mDifficulty)
|
||||||
|
{
|
||||||
|
case DIFFICULTY_EASY:
|
||||||
|
mDefaultEnemySpeed = BALLOON_SPEED_1;
|
||||||
|
mDifficultyScoreMultiplier = 0.5f;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DIFFICULTY_NORMAL:
|
||||||
|
mDefaultEnemySpeed = BALLOON_SPEED_1;
|
||||||
|
mDifficultyScoreMultiplier = 1.0f;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DIFFICULTY_HARD:
|
||||||
|
mDefaultEnemySpeed = BALLOON_SPEED_5;
|
||||||
|
mDifficultyScoreMultiplier = 1.5f;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
mGameCompleted = false;
|
mGameCompleted = false;
|
||||||
mGameCompletedCounter = 0;
|
mGameCompletedCounter = 0;
|
||||||
mSection.name = PROG_SECTION_GAME;
|
mSection.name = PROG_SECTION_GAME;
|
||||||
@@ -303,7 +326,7 @@ void Game::init()
|
|||||||
mBalloonsPopped = 0;
|
mBalloonsPopped = 0;
|
||||||
mLastEnemyDeploy = 0;
|
mLastEnemyDeploy = 0;
|
||||||
mEnemyDeployCounter = 0;
|
mEnemyDeployCounter = 0;
|
||||||
mEnemySpeed = BALLOON_SPEED_1;
|
mEnemySpeed = mDefaultEnemySpeed;
|
||||||
mEffect.flash = false;
|
mEffect.flash = false;
|
||||||
mEffect.shake = false;
|
mEffect.shake = false;
|
||||||
mEffect.shakeCounter = SHAKE_COUNTER;
|
mEffect.shakeCounter = SHAKE_COUNTER;
|
||||||
@@ -1677,7 +1700,7 @@ void Game::updateStage()
|
|||||||
}
|
}
|
||||||
JA_PlaySound(mSoundStageChange);
|
JA_PlaySound(mSoundStageChange);
|
||||||
mStageBitmapCounter = 0;
|
mStageBitmapCounter = 0;
|
||||||
mEnemySpeed = BALLOON_SPEED_1;
|
mEnemySpeed = mDefaultEnemySpeed;
|
||||||
setBalloonSpeed(mEnemySpeed);
|
setBalloonSpeed(mEnemySpeed);
|
||||||
mEffect.flash = true;
|
mEffect.flash = true;
|
||||||
mEffect.shake = true;
|
mEffect.shake = true;
|
||||||
@@ -1866,6 +1889,9 @@ void Game::setBalloonSpeed(float speed)
|
|||||||
|
|
||||||
// Incrementa la velocidad de los globos
|
// Incrementa la velocidad de los globos
|
||||||
void Game::incBalloonSpeed()
|
void Game::incBalloonSpeed()
|
||||||
|
{
|
||||||
|
// La velocidad solo se incrementa en el modo normal
|
||||||
|
if (mDifficulty == DIFFICULTY_NORMAL)
|
||||||
{
|
{
|
||||||
if (mEnemySpeed == BALLOON_SPEED_1)
|
if (mEnemySpeed == BALLOON_SPEED_1)
|
||||||
mEnemySpeed = BALLOON_SPEED_2;
|
mEnemySpeed = BALLOON_SPEED_2;
|
||||||
@@ -1878,9 +1904,13 @@ void Game::incBalloonSpeed()
|
|||||||
|
|
||||||
setBalloonSpeed(mEnemySpeed);
|
setBalloonSpeed(mEnemySpeed);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Decrementa la velocidad de los globos
|
// Decrementa la velocidad de los globos
|
||||||
void Game::decBalloonSpeed()
|
void Game::decBalloonSpeed()
|
||||||
|
{
|
||||||
|
// La velocidad solo se decrementa en el modo normal
|
||||||
|
if (mDifficulty == DIFFICULTY_NORMAL)
|
||||||
{
|
{
|
||||||
if (mEnemySpeed == BALLOON_SPEED_5)
|
if (mEnemySpeed == BALLOON_SPEED_5)
|
||||||
mEnemySpeed = BALLOON_SPEED_4;
|
mEnemySpeed = BALLOON_SPEED_4;
|
||||||
@@ -1893,6 +1923,7 @@ void Game::decBalloonSpeed()
|
|||||||
|
|
||||||
setBalloonSpeed(mEnemySpeed);
|
setBalloonSpeed(mEnemySpeed);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Actualiza la velocidad de los globos en funcion del poder acumulado de la fase
|
// Actualiza la velocidad de los globos en funcion del poder acumulado de la fase
|
||||||
void Game::updateBalloonSpeed()
|
void Game::updateBalloonSpeed()
|
||||||
@@ -2010,7 +2041,7 @@ 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()));
|
mPlayer[0]->addScore(Uint32(score * mPlayer[0]->getScoreMultiplier()*mDifficultyScoreMultiplier));
|
||||||
//setScore(mPlayer[0]->getScore());
|
//setScore(mPlayer[0]->getScore());
|
||||||
updateHiScore();
|
updateHiScore();
|
||||||
|
|
||||||
@@ -2165,7 +2196,7 @@ void Game::checkBulletBalloonCollision()
|
|||||||
// Otorga los puntos correspondientes al globo al jugador que disparó la bala
|
// Otorga los puntos correspondientes al globo al jugador que disparó la bala
|
||||||
int index = mBullet[j]->getOwner();
|
int index = mBullet[j]->getOwner();
|
||||||
mPlayer[index]->incScoreMultiplier();
|
mPlayer[index]->incScoreMultiplier();
|
||||||
mPlayer[index]->addScore(Uint32(mBalloon[i]->getScore() * mPlayer[index]->getScoreMultiplier()));
|
mPlayer[index]->addScore(Uint32(mBalloon[i]->getScore() * mPlayer[index]->getScoreMultiplier() * mDifficultyScoreMultiplier));
|
||||||
//setScore(mPlayer[index]->getScore());
|
//setScore(mPlayer[index]->getScore());
|
||||||
updateHiScore();
|
updateHiScore();
|
||||||
|
|
||||||
|
|||||||
@@ -179,6 +179,7 @@ private:
|
|||||||
Uint8 mLastEnemyDeploy; // Guarda cual ha sido la última formación desplegada para no repetir;
|
Uint8 mLastEnemyDeploy; // Guarda cual ha sido la última formación desplegada para no repetir;
|
||||||
Uint8 mEnemyDeployCounter; // Cuando se lanza una formación, se le da un valor y no sale otra hasta que llegue a cero
|
Uint8 mEnemyDeployCounter; // Cuando se lanza una formación, se le da un valor y no sale otra hasta que llegue a cero
|
||||||
float mEnemySpeed; // Velocidad a la que se mueven los enemigos
|
float mEnemySpeed; // Velocidad a la que se mueven los enemigos
|
||||||
|
float mDefaultEnemySpeed; // Velocidad base de los enemigos, sin incrementar
|
||||||
effect_t mEffect; // Variable para gestionar los efectos visuales
|
effect_t mEffect; // Variable para gestionar los efectos visuales
|
||||||
helper_t mHelper; // Variable para gestionar las ayudas
|
helper_t mHelper; // Variable para gestionar las ayudas
|
||||||
bool mPowerBallEnabled; // Indica si hay una powerball ya activa
|
bool mPowerBallEnabled; // Indica si hay una powerball ya activa
|
||||||
@@ -188,6 +189,8 @@ private:
|
|||||||
float mSin[360]; // Vector con los valores del seno para 360 grados
|
float mSin[360]; // Vector con los valores del seno para 360 grados
|
||||||
bool mGameCompleted; // Indica si se ha completado la partida, llegando al final de la ultima pantalla
|
bool mGameCompleted; // Indica si se ha completado la partida, llegando al final de la ultima pantalla
|
||||||
int mGameCompletedCounter; // Contador para el tramo final, cuando se ha completado la partida y ya no aparecen más enemigos
|
int mGameCompletedCounter; // Contador para el tramo final, cuando se ha completado la partida y ya no aparecen más enemigos
|
||||||
|
int mDifficulty; // Dificultad del juego
|
||||||
|
float mDifficultyScoreMultiplier; // Multiplicador de puntos en función de la dificultad
|
||||||
|
|
||||||
struct demo_t
|
struct demo_t
|
||||||
{
|
{
|
||||||
@@ -210,7 +213,7 @@ private:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
Game(int numPlayers, SDL_Renderer *renderer, std::string *filelist, Lang *lang, Input *input1, Input *input2, bool demo);
|
Game(int numPlayers, SDL_Renderer *renderer, std::string *filelist, Lang *lang, Input *input1, Input *input2, bool demo, int difficulty);
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
~Game();
|
~Game();
|
||||||
|
|||||||
Reference in New Issue
Block a user