Dual input for P1 done

This commit is contained in:
2021-08-29 22:03:48 +02:00
parent 02b528ea8c
commit 224b176108
9 changed files with 113 additions and 137 deletions

View File

@@ -5,19 +5,22 @@
#endif
// Constructor
Game::Game(int numPlayers, SDL_Renderer *renderer, std::string *filelist, Lang *lang, Input *input1, Input *input2, bool demo, int difficulty)
Game::Game(int numPlayers, SDL_Renderer *renderer, std::string *filelist, Lang *lang, Input *input, bool demo, options_t *options)
{
// Copia los punteros
mRenderer = renderer;
mFileList = filelist;
mLang = lang;
mInput[0] = input1;
mInput[1] = input2;
mInput = input;
mOptions = options;
mOnePlayerControl = mOptions->input[0];
// Pasa variables
mDemo.enabled = demo;
mNumPlayers = numPlayers;
mDifficulty = difficulty;
if (mNumPlayers == 1)
mOptions->input[0] = INPUT_USE_ANY;
mDifficulty = mOptions->difficulty;
// Crea los objetos
for (int i = 0; i < mNumPlayers; i++)
@@ -52,8 +55,8 @@ Game::Game(int numPlayers, SDL_Renderer *renderer, std::string *filelist, Lang *
mTextScoreBoard = new Text(mFileList[46], mTextureTextScoreBoard, mRenderer);
mTextBig = new Text(mFileList[47], mTextureTextBig, mRenderer);
mMenuGameOver = new Menu(mRenderer, mText, mInput[0], mFileList);
mMenuPause = new Menu(mRenderer, mText, mInput[0], mFileList);
mMenuGameOver = new Menu(mRenderer, mText, mInput, mFileList);
mMenuPause = new Menu(mRenderer, mText, mInput, mFileList);
mFade = new Fade(mRenderer);
mEventHandler = new SDL_Event();
@@ -90,11 +93,12 @@ Game::~Game()
saveScoreFile();
saveDemoFile();
mOptions->input[0] = mOnePlayerControl;
mRenderer = nullptr;
mFileList = nullptr;
mLang = nullptr;
mInput[0] = nullptr;
mInput[1] = nullptr;
mInput = nullptr;
for (int i = 0; i < mNumPlayers; i++)
{
@@ -315,10 +319,6 @@ void Game::init()
mMenaceThreshold = 0;
mHiScoreAchieved = false;
mCurrentStage = 0;
// BORRAR
mCurrentStage = 9;
mStageBitmapCounter = STAGE_COUNTER;
mDeathCounter = DEATH_COUNTER;
mExplosionTime = false;
@@ -370,9 +370,6 @@ void Game::init()
initEnemyPools();
initGameStages();
// BORRAR
mStage[mCurrentStage].currentPower = mStage[mCurrentStage].powerToComplete - 10;
// Modo debug
mDebug.enabled = false;
mDebug.enemySet = 0;
@@ -1704,7 +1701,7 @@ void Game::updateStage()
{
// Cambio de fase
mCurrentStage++;
if (mCurrentStage == 10)
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
@@ -1715,6 +1712,7 @@ void Game::updateStage()
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();
}
JA_PlaySound(mSoundStageChange);
@@ -2844,7 +2842,7 @@ void Game::checkGameInput()
}
// Comprueba el input de pausa
if (mInput[0]->checkInput(INPUT_BUTTON_PAUSE, REPEAT_FALSE))
if (mInput->checkInput(INPUT_BUTTON_PAUSE, REPEAT_FALSE))
mSection.name = PROG_SECTION_TITLE;
// Incrementa el contador de la demo
@@ -2859,7 +2857,7 @@ void Game::checkGameInput()
if (mPlayer[i]->isAlive())
{
// Input a la izquierda
if (mInput[i]->checkInput(INPUT_LEFT, REPEAT_TRUE))
if (mInput->checkInput(INPUT_LEFT, REPEAT_TRUE, mOptions->input[i]))
{
mPlayer[i]->setInput(INPUT_LEFT);
mDemo.keys.left = 1;
@@ -2867,7 +2865,7 @@ void Game::checkGameInput()
else
{
// Input a la derecha
if (mInput[i]->checkInput(INPUT_RIGHT, REPEAT_TRUE))
if (mInput->checkInput(INPUT_RIGHT, REPEAT_TRUE, mOptions->input[i]))
{
mPlayer[i]->setInput(INPUT_RIGHT);
mDemo.keys.right = 1;
@@ -2880,7 +2878,7 @@ void Game::checkGameInput()
}
}
// Comprueba el input de disparar al centro
if (mInput[i]->checkInput(INPUT_BUTTON_2, REPEAT_TRUE))
if (mInput->checkInput(INPUT_BUTTON_2, REPEAT_TRUE, mOptions->input[i]))
{
if (mPlayer[i]->canFire())
{
@@ -2896,7 +2894,7 @@ void Game::checkGameInput()
}
// Comprueba el input de disparar a la izquierda
if (mInput[i]->checkInput(INPUT_BUTTON_1, REPEAT_TRUE))
if (mInput->checkInput(INPUT_BUTTON_1, REPEAT_TRUE, mOptions->input[i]))
{
if (mPlayer[i]->canFire())
{
@@ -2912,7 +2910,7 @@ void Game::checkGameInput()
}
// Comprueba el input de disparar a la derecha
if (mInput[i]->checkInput(INPUT_BUTTON_3, REPEAT_TRUE))
if (mInput->checkInput(INPUT_BUTTON_3, REPEAT_TRUE, mOptions->input[i]))
{
if (mPlayer[i]->canFire())
{
@@ -2928,7 +2926,7 @@ void Game::checkGameInput()
}
// Comprueba el input de pausa
if (mInput[i]->checkInput(INPUT_CANCEL, REPEAT_FALSE))
if (mInput->checkInput(INPUT_CANCEL, REPEAT_FALSE, mOptions->input[i]))
{
mSection.subsection = GAME_SECTION_PAUSE;