Trabajando en poder continuar la partida al morir
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
#include "game.h"
|
||||
|
||||
// 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
|
||||
mRenderer = renderer;
|
||||
@@ -15,6 +15,8 @@ Game::Game(int numPlayers, SDL_Renderer *renderer, Screen *screen, std::string *
|
||||
// Pasa variables
|
||||
mDemo.enabled = demo;
|
||||
mNumPlayers = numPlayers;
|
||||
mCurrentStage = currentStage;
|
||||
mLastStageReached = currentStage;
|
||||
if (mNumPlayers == 1)
|
||||
{
|
||||
mOptions->input[0].deviceType = INPUT_USE_ANY;
|
||||
@@ -338,7 +340,7 @@ void Game::init()
|
||||
mMenaceCurrent = 0;
|
||||
mMenaceThreshold = 0;
|
||||
mHiScoreAchieved = false;
|
||||
mCurrentStage = 0;
|
||||
// mCurrentStage = 0;
|
||||
mStageBitmapCounter = STAGE_COUNTER;
|
||||
mDeathCounter = DEATH_COUNTER;
|
||||
mTimeStopped = false;
|
||||
@@ -365,7 +367,7 @@ void Game::init()
|
||||
mPowerBallCounter = 0;
|
||||
mCoffeeMachineEnabled = false;
|
||||
mPostFade = 0;
|
||||
mLastStageReached = 0;
|
||||
// mLastStageReached = 0;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
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);
|
||||
@@ -1687,8 +1689,9 @@ void Game::updateStage()
|
||||
{
|
||||
// Cambio de fase
|
||||
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
|
||||
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
|
||||
@@ -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
|
||||
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
|
||||
{
|
||||
if (mPlayer[i]->isAlive())
|
||||
{
|
||||
mPlayer[i]->addScore(1000000);
|
||||
}
|
||||
}
|
||||
updateHiScore();
|
||||
JA_StopMusic();
|
||||
}
|
||||
@@ -1711,12 +1718,18 @@ void Game::updateStage()
|
||||
|
||||
// Incrementa el contador del bitmap que aparece mostrando el cambio de fase
|
||||
if (mStageBitmapCounter < STAGE_COUNTER)
|
||||
{
|
||||
mStageBitmapCounter++;
|
||||
}
|
||||
|
||||
// Si el juego se ha completado, el bitmap se detiene en el centro de la pantalla
|
||||
if (mGameCompleted)
|
||||
{
|
||||
if (mStageBitmapCounter > 100)
|
||||
{
|
||||
mStageBitmapCounter = 100;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Actualiza el estado de muerte
|
||||
@@ -1732,13 +1745,21 @@ void Game::updateDeath()
|
||||
{
|
||||
// Animación
|
||||
if ((mPlayer[i]->getDeathCounter() / 5) % 4 == 0)
|
||||
{
|
||||
mSmartSprite[mPlayer[i]->mDeathIndex]->setSpriteClip(24 * 0, 24, 24, 24);
|
||||
}
|
||||
else if ((mPlayer[i]->getDeathCounter() / 5) % 4 == 1)
|
||||
{
|
||||
mSmartSprite[mPlayer[i]->mDeathIndex]->setSpriteClip(24 * 1, 24, 24, 24);
|
||||
}
|
||||
else if ((mPlayer[i]->getDeathCounter() / 5) % 4 == 2)
|
||||
{
|
||||
mSmartSprite[mPlayer[i]->mDeathIndex]->setSpriteClip(24 * 2, 24, 24, 24);
|
||||
}
|
||||
else if ((mPlayer[i]->getDeathCounter() / 5) % 4 == 3)
|
||||
{
|
||||
mSmartSprite[mPlayer[i]->mDeathIndex]->setSpriteClip(24 * 3, 24, 24, 24);
|
||||
}
|
||||
|
||||
// Rebote en los laterales
|
||||
if (mSmartSprite[mPlayer[i]->mDeathIndex]->getVelX() > 0)
|
||||
@@ -3522,12 +3543,12 @@ void Game::initPaths()
|
||||
{
|
||||
mStageBitmapPath[i] = (mSin[(int)((i * 1.8f) + 90)] * (distance) + centerPoint);
|
||||
}
|
||||
|
||||
|
||||
else if (i < secondPart)
|
||||
{
|
||||
mStageBitmapPath[i] = (int)centerPoint;
|
||||
}
|
||||
|
||||
|
||||
else
|
||||
{
|
||||
mStageBitmapPath[i] = (mSin[(int)(((i - 149) * 1.8f) + 90)] * (centerPoint + 17) - 17);
|
||||
|
||||
Reference in New Issue
Block a user