Trabajando en poder continuar la partida al morir
This commit is contained in:
+2
-2
@@ -488,9 +488,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, mScreen, mFileList, mLang, mInput, false, mOptions);
|
mGame = new Game(1, 0, mRenderer, mScreen, mFileList, mLang, mInput, false, mOptions);
|
||||||
if (mSection.subsection == GAME_SECTION_PLAY_2P)
|
if (mSection.subsection == GAME_SECTION_PLAY_2P)
|
||||||
mGame = new Game(2, mRenderer, mScreen, mFileList, mLang, mInput, false, mOptions);
|
mGame = new Game(2, 0, mRenderer, mScreen, mFileList, mLang, mInput, false, mOptions);
|
||||||
setSection(mGame->run());
|
setSection(mGame->run());
|
||||||
delete mGame;
|
delete mGame;
|
||||||
}
|
}
|
||||||
|
|||||||
+29
-8
@@ -1,7 +1,7 @@
|
|||||||
#include "game.h"
|
#include "game.h"
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
Game::Game(int numPlayers, SDL_Renderer *renderer, Screen *screen, std::string *filelist, Lang *lang, Input *input, bool demo, options_t *options)
|
Game::Game(int numPlayers, int currentStage, SDL_Renderer *renderer, Screen *screen, std::string *filelist, Lang *lang, Input *input, bool demo, options_t *options)
|
||||||
{
|
{
|
||||||
// Copia los punteros
|
// Copia los punteros
|
||||||
mRenderer = renderer;
|
mRenderer = renderer;
|
||||||
@@ -15,6 +15,8 @@ Game::Game(int numPlayers, SDL_Renderer *renderer, Screen *screen, std::string *
|
|||||||
// Pasa variables
|
// Pasa variables
|
||||||
mDemo.enabled = demo;
|
mDemo.enabled = demo;
|
||||||
mNumPlayers = numPlayers;
|
mNumPlayers = numPlayers;
|
||||||
|
mCurrentStage = currentStage;
|
||||||
|
mLastStageReached = currentStage;
|
||||||
if (mNumPlayers == 1)
|
if (mNumPlayers == 1)
|
||||||
{
|
{
|
||||||
mOptions->input[0].deviceType = INPUT_USE_ANY;
|
mOptions->input[0].deviceType = INPUT_USE_ANY;
|
||||||
@@ -338,7 +340,7 @@ void Game::init()
|
|||||||
mMenaceCurrent = 0;
|
mMenaceCurrent = 0;
|
||||||
mMenaceThreshold = 0;
|
mMenaceThreshold = 0;
|
||||||
mHiScoreAchieved = false;
|
mHiScoreAchieved = false;
|
||||||
mCurrentStage = 0;
|
// mCurrentStage = 0;
|
||||||
mStageBitmapCounter = STAGE_COUNTER;
|
mStageBitmapCounter = STAGE_COUNTER;
|
||||||
mDeathCounter = DEATH_COUNTER;
|
mDeathCounter = DEATH_COUNTER;
|
||||||
mTimeStopped = false;
|
mTimeStopped = false;
|
||||||
@@ -365,7 +367,7 @@ void Game::init()
|
|||||||
mPowerBallCounter = 0;
|
mPowerBallCounter = 0;
|
||||||
mCoffeeMachineEnabled = false;
|
mCoffeeMachineEnabled = false;
|
||||||
mPostFade = 0;
|
mPostFade = 0;
|
||||||
mLastStageReached = 0;
|
// mLastStageReached = 0;
|
||||||
|
|
||||||
if (mDemo.enabled)
|
if (mDemo.enabled)
|
||||||
{
|
{
|
||||||
@@ -452,7 +454,7 @@ void Game::init()
|
|||||||
{
|
{
|
||||||
mPlayer[0]->init(PLAY_AREA_CENTER_X - 11, PLAY_AREA_BOTTOM - 24, mTexturePlayer1Legs, mTexturePlayer1Body, mTexturePlayer1Head, mTexturePlayer1Death, mRenderer);
|
mPlayer[0]->init(PLAY_AREA_CENTER_X - 11, PLAY_AREA_BOTTOM - 24, mTexturePlayer1Legs, mTexturePlayer1Body, mTexturePlayer1Head, mTexturePlayer1Death, mRenderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (mNumPlayers == 2)
|
else if (mNumPlayers == 2)
|
||||||
{
|
{
|
||||||
mPlayer[0]->init((PLAY_AREA_CENTER_FIRST_QUARTER_X * ((0 * 2) + 1)) - 11, PLAY_AREA_BOTTOM - 24, mTexturePlayer1Legs, mTexturePlayer1Body, mTexturePlayer1Head, mTexturePlayer1Death, mRenderer);
|
mPlayer[0]->init((PLAY_AREA_CENTER_FIRST_QUARTER_X * ((0 * 2) + 1)) - 11, PLAY_AREA_BOTTOM - 24, mTexturePlayer1Legs, mTexturePlayer1Body, mTexturePlayer1Head, mTexturePlayer1Death, mRenderer);
|
||||||
@@ -1687,8 +1689,9 @@ void Game::updateStage()
|
|||||||
{
|
{
|
||||||
// Cambio de fase
|
// Cambio de fase
|
||||||
mCurrentStage++;
|
mCurrentStage++;
|
||||||
if (mCurrentStage == 10) // Ha llegado al final el juego
|
mLastStageReached = mCurrentStage;
|
||||||
{
|
if (mCurrentStage == 10)
|
||||||
|
{ // Ha llegado al final el juego
|
||||||
mGameCompleted = true; // Marca el juego como completado
|
mGameCompleted = true; // Marca el juego como completado
|
||||||
mCurrentStage = 9; // Deja el valor dentro de los limites
|
mCurrentStage = 9; // Deja el valor dentro de los limites
|
||||||
mStage[mCurrentStage].currentPower = 0; // Deja el poder a cero para que no vuelva a entrar en esta condición
|
mStage[mCurrentStage].currentPower = 0; // Deja el poder a cero para que no vuelva a entrar en esta condición
|
||||||
@@ -1696,8 +1699,12 @@ void Game::updateStage()
|
|||||||
mStage[mCurrentStage].currentPower = 0; // Vuelve a dejar el poder a cero, por lo que hubiera podido subir al destruir todos lo globos
|
mStage[mCurrentStage].currentPower = 0; // Vuelve a dejar el poder a cero, por lo que hubiera podido subir al destruir todos lo globos
|
||||||
mMenaceCurrent = 255; // Sube el nivel de amenaza para que no cree mas globos
|
mMenaceCurrent = 255; // Sube el nivel de amenaza para que no cree mas globos
|
||||||
for (int i = 0; i < mNumPlayers; i++) // Añade un millon de puntos a los jugadores que queden vivos
|
for (int i = 0; i < mNumPlayers; i++) // Añade un millon de puntos a los jugadores que queden vivos
|
||||||
|
{
|
||||||
if (mPlayer[i]->isAlive())
|
if (mPlayer[i]->isAlive())
|
||||||
|
{
|
||||||
mPlayer[i]->addScore(1000000);
|
mPlayer[i]->addScore(1000000);
|
||||||
|
}
|
||||||
|
}
|
||||||
updateHiScore();
|
updateHiScore();
|
||||||
JA_StopMusic();
|
JA_StopMusic();
|
||||||
}
|
}
|
||||||
@@ -1711,12 +1718,18 @@ void Game::updateStage()
|
|||||||
|
|
||||||
// Incrementa el contador del bitmap que aparece mostrando el cambio de fase
|
// Incrementa el contador del bitmap que aparece mostrando el cambio de fase
|
||||||
if (mStageBitmapCounter < STAGE_COUNTER)
|
if (mStageBitmapCounter < STAGE_COUNTER)
|
||||||
|
{
|
||||||
mStageBitmapCounter++;
|
mStageBitmapCounter++;
|
||||||
|
}
|
||||||
|
|
||||||
// Si el juego se ha completado, el bitmap se detiene en el centro de la pantalla
|
// Si el juego se ha completado, el bitmap se detiene en el centro de la pantalla
|
||||||
if (mGameCompleted)
|
if (mGameCompleted)
|
||||||
|
{
|
||||||
if (mStageBitmapCounter > 100)
|
if (mStageBitmapCounter > 100)
|
||||||
|
{
|
||||||
mStageBitmapCounter = 100;
|
mStageBitmapCounter = 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actualiza el estado de muerte
|
// Actualiza el estado de muerte
|
||||||
@@ -1732,13 +1745,21 @@ void Game::updateDeath()
|
|||||||
{
|
{
|
||||||
// Animación
|
// Animación
|
||||||
if ((mPlayer[i]->getDeathCounter() / 5) % 4 == 0)
|
if ((mPlayer[i]->getDeathCounter() / 5) % 4 == 0)
|
||||||
|
{
|
||||||
mSmartSprite[mPlayer[i]->mDeathIndex]->setSpriteClip(24 * 0, 24, 24, 24);
|
mSmartSprite[mPlayer[i]->mDeathIndex]->setSpriteClip(24 * 0, 24, 24, 24);
|
||||||
|
}
|
||||||
else if ((mPlayer[i]->getDeathCounter() / 5) % 4 == 1)
|
else if ((mPlayer[i]->getDeathCounter() / 5) % 4 == 1)
|
||||||
|
{
|
||||||
mSmartSprite[mPlayer[i]->mDeathIndex]->setSpriteClip(24 * 1, 24, 24, 24);
|
mSmartSprite[mPlayer[i]->mDeathIndex]->setSpriteClip(24 * 1, 24, 24, 24);
|
||||||
|
}
|
||||||
else if ((mPlayer[i]->getDeathCounter() / 5) % 4 == 2)
|
else if ((mPlayer[i]->getDeathCounter() / 5) % 4 == 2)
|
||||||
|
{
|
||||||
mSmartSprite[mPlayer[i]->mDeathIndex]->setSpriteClip(24 * 2, 24, 24, 24);
|
mSmartSprite[mPlayer[i]->mDeathIndex]->setSpriteClip(24 * 2, 24, 24, 24);
|
||||||
|
}
|
||||||
else if ((mPlayer[i]->getDeathCounter() / 5) % 4 == 3)
|
else if ((mPlayer[i]->getDeathCounter() / 5) % 4 == 3)
|
||||||
|
{
|
||||||
mSmartSprite[mPlayer[i]->mDeathIndex]->setSpriteClip(24 * 3, 24, 24, 24);
|
mSmartSprite[mPlayer[i]->mDeathIndex]->setSpriteClip(24 * 3, 24, 24, 24);
|
||||||
|
}
|
||||||
|
|
||||||
// Rebote en los laterales
|
// Rebote en los laterales
|
||||||
if (mSmartSprite[mPlayer[i]->mDeathIndex]->getVelX() > 0)
|
if (mSmartSprite[mPlayer[i]->mDeathIndex]->getVelX() > 0)
|
||||||
@@ -3522,12 +3543,12 @@ void Game::initPaths()
|
|||||||
{
|
{
|
||||||
mStageBitmapPath[i] = (mSin[(int)((i * 1.8f) + 90)] * (distance) + centerPoint);
|
mStageBitmapPath[i] = (mSin[(int)((i * 1.8f) + 90)] * (distance) + centerPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (i < secondPart)
|
else if (i < secondPart)
|
||||||
{
|
{
|
||||||
mStageBitmapPath[i] = (int)centerPoint;
|
mStageBitmapPath[i] = (int)centerPoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mStageBitmapPath[i] = (mSin[(int)(((i - 149) * 1.8f) + 90)] * (centerPoint + 17) - 17);
|
mStageBitmapPath[i] = (mSin[(int)(((i - 149) * 1.8f) + 90)] * (centerPoint + 17) - 17);
|
||||||
|
|||||||
+1
-1
@@ -518,7 +518,7 @@ private:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
Game(int numPlayers, SDL_Renderer *renderer, Screen *screen, std::string *filelist, Lang *lang, Input *input, bool demo, options_t *options);
|
Game(int numPlayers, int currentStage, SDL_Renderer *renderer, Screen *screen, std::string *filelist, Lang *lang, Input *input, bool demo, options_t *options);
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
~Game();
|
~Game();
|
||||||
|
|||||||
+1
-1
@@ -924,7 +924,7 @@ void Title::runInstructions(Uint8 mode)
|
|||||||
// Ejecuta el juego en modo demo
|
// Ejecuta el juego en modo demo
|
||||||
void Title::runDemoGame()
|
void Title::runDemoGame()
|
||||||
{
|
{
|
||||||
mDemoGame = new Game(1, mRenderer, mScreen, mFileList, mLang, mInput, true, mOptions);
|
mDemoGame = new Game(1, 0, mRenderer, mScreen, mFileList, mLang, mInput, true, mOptions);
|
||||||
mDemoGame->run();
|
mDemoGame->run();
|
||||||
delete mDemoGame;
|
delete mDemoGame;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user