working on 2p
This commit is contained in:
@@ -17,7 +17,7 @@ Bullet::~Bullet()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Iniciador
|
// Iniciador
|
||||||
void Bullet::init(int x, int y, int kind, bool poweredUp, LTexture *texture, SDL_Renderer *renderer)
|
void Bullet::init(int x, int y, int kind, bool poweredUp, int owner, LTexture *texture, SDL_Renderer *renderer)
|
||||||
{
|
{
|
||||||
// Posición inicial del objeto
|
// Posición inicial del objeto
|
||||||
mPosX = x;
|
mPosX = x;
|
||||||
@@ -33,6 +33,9 @@ void Bullet::init(int x, int y, int kind, bool poweredUp, LTexture *texture, SDL
|
|||||||
// Tipo de bala
|
// Tipo de bala
|
||||||
mKind = kind;
|
mKind = kind;
|
||||||
|
|
||||||
|
// Identificador del dueño del objeto
|
||||||
|
mOwner = -1;
|
||||||
|
|
||||||
// Textura con los gráficos del objeto
|
// Textura con los gráficos del objeto
|
||||||
mSprite->setTexture(texture);
|
mSprite->setTexture(texture);
|
||||||
|
|
||||||
@@ -157,7 +160,7 @@ void Bullet::testMove()
|
|||||||
// Deshabilita el objeto
|
// Deshabilita el objeto
|
||||||
void Bullet::erase()
|
void Bullet::erase()
|
||||||
{
|
{
|
||||||
init(0, 0, 0, false, nullptr, nullptr);
|
init(0, 0, 0, false, -1, nullptr, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Comprueba si el objeto está activo
|
// Comprueba si el objeto está activo
|
||||||
@@ -209,6 +212,12 @@ int Bullet::getKind()
|
|||||||
return mKind;
|
return mKind;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Obtiene el valor de la variable
|
||||||
|
int Bullet::getOwner()
|
||||||
|
{
|
||||||
|
return mOwner;
|
||||||
|
}
|
||||||
|
|
||||||
// Obtiene el circulo de colisión
|
// Obtiene el circulo de colisión
|
||||||
circle_t &Bullet::getCollider()
|
circle_t &Bullet::getCollider()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ private:
|
|||||||
int mVelX; // Velocidad en el eje X
|
int mVelX; // Velocidad en el eje X
|
||||||
int mVelY; // Velocidad en el eje Y
|
int mVelY; // Velocidad en el eje Y
|
||||||
int mKind; // Tipo de objeto
|
int mKind; // Tipo de objeto
|
||||||
|
int mOwner; // Identificador del dueño del objeto
|
||||||
Sprite *mSprite; // Sprite con los graficos y métodos de pintado
|
Sprite *mSprite; // Sprite con los graficos y métodos de pintado
|
||||||
circle_t mCollider; // Circulo de colisión del objeto
|
circle_t mCollider; // Circulo de colisión del objeto
|
||||||
|
|
||||||
@@ -30,7 +31,7 @@ public:
|
|||||||
~Bullet();
|
~Bullet();
|
||||||
|
|
||||||
// Iniciador
|
// Iniciador
|
||||||
void init(int x, int y, int kind, bool poweredUp, LTexture *texture, SDL_Renderer *renderer);
|
void init(int x, int y, int kind, bool poweredUp, int owner, LTexture *texture, SDL_Renderer *renderer);
|
||||||
|
|
||||||
// Pinta el objeto en pantalla
|
// Pinta el objeto en pantalla
|
||||||
void render();
|
void render();
|
||||||
@@ -62,6 +63,9 @@ public:
|
|||||||
// Obtiene el valor de la variable
|
// Obtiene el valor de la variable
|
||||||
int getKind();
|
int getKind();
|
||||||
|
|
||||||
|
// Obtiene el valor de la variable
|
||||||
|
int getOwner();
|
||||||
|
|
||||||
// Obtiene el circulo de colisión
|
// Obtiene el circulo de colisión
|
||||||
circle_t &getCollider();
|
circle_t &getCollider();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1552,8 +1552,6 @@ void Game::renderScoreBoard()
|
|||||||
if (mPlayer[0]->isAlive())
|
if (mPlayer[0]->isAlive())
|
||||||
mSpriteScoreBoard->render();
|
mSpriteScoreBoard->render();
|
||||||
|
|
||||||
//if (!mDemo.enabled)
|
|
||||||
{
|
|
||||||
// SCORE
|
// SCORE
|
||||||
mText->writeCentered(PLAY_AREA_CENTER_FIRST_QUARTER_X, SCORE_WORD_Y - 6, mTextStrings[39], 0);
|
mText->writeCentered(PLAY_AREA_CENTER_FIRST_QUARTER_X, SCORE_WORD_Y - 6, mTextStrings[39], 0);
|
||||||
mText->writeCentered(PLAY_AREA_CENTER_FIRST_QUARTER_X, SCORE_NUMBER_Y - 6, updateScoreText(mScore), 0);
|
mText->writeCentered(PLAY_AREA_CENTER_FIRST_QUARTER_X, SCORE_NUMBER_Y - 6, updateScoreText(mScore), 0);
|
||||||
@@ -1580,7 +1578,6 @@ void Game::renderScoreBoard()
|
|||||||
const float percent = (mStage[mCurrentStage].currentPower * 40.0f) / mStage[mCurrentStage].powerToComplete;
|
const float percent = (mStage[mCurrentStage].currentPower * 40.0f) / mStage[mCurrentStage].powerToComplete;
|
||||||
mSpritePowerMeter->setSpriteClip(296, 184, (int)percent, 8);
|
mSpritePowerMeter->setSpriteClip(296, 184, (int)percent, 8);
|
||||||
mSpritePowerMeter->render();
|
mSpritePowerMeter->render();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actualiza las variables del jugador
|
// Actualiza las variables del jugador
|
||||||
@@ -2102,10 +2099,11 @@ void Game::checkBulletBalloonCollision()
|
|||||||
if (mBalloon[i]->isEnabled() && (!mBalloon[i]->isInvulnerable()) && mBullet[j]->isActive())
|
if (mBalloon[i]->isEnabled() && (!mBalloon[i]->isInvulnerable()) && mBullet[j]->isActive())
|
||||||
if (checkCollision(mBalloon[i]->getCollider(), mBullet[j]->getCollider()))
|
if (checkCollision(mBalloon[i]->getCollider(), mBullet[j]->getCollider()))
|
||||||
{
|
{
|
||||||
// Otorga los puntos correspondientes al globo
|
// Otorga los puntos correspondientes al globo al jugador que disparó la bala
|
||||||
mPlayer[0]->incScoreMultiplier();
|
const int index = mBullet[j]->getOwner();
|
||||||
mPlayer[0]->addScore(Uint32(mBalloon[i]->getScore() * mPlayer[0]->getScoreMultiplier()));
|
mPlayer[index]->incScoreMultiplier();
|
||||||
setScore(mPlayer[0]->getScore());
|
mPlayer[index]->addScore(Uint32(mBalloon[i]->getScore() * mPlayer[index]->getScoreMultiplier()));
|
||||||
|
setScore(mPlayer[index]->getScore());
|
||||||
updateHiScore();
|
updateHiScore();
|
||||||
|
|
||||||
// Explota el globo
|
// Explota el globo
|
||||||
@@ -2167,9 +2165,9 @@ void Game::resetBullets()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Crea un objeto bala
|
// Crea un objeto bala
|
||||||
void Game::createBullet(int x, int y, Uint8 kind, bool poweredUp)
|
void Game::createBullet(int x, int y, Uint8 kind, bool poweredUp, int owner)
|
||||||
{
|
{
|
||||||
mBullet[getBulletFreeIndex()]->init(x, y, kind, poweredUp, mTextureBullet, mRenderer);
|
mBullet[getBulletFreeIndex()]->init(x, y, kind, poweredUp, owner, mTextureBullet, mRenderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actualiza los items
|
// Actualiza los items
|
||||||
@@ -2688,37 +2686,38 @@ void Game::checkGameInput()
|
|||||||
// Modo Demo activo
|
// Modo Demo activo
|
||||||
if (mDemo.enabled)
|
if (mDemo.enabled)
|
||||||
{
|
{
|
||||||
|
const int index = 0;
|
||||||
if (mDemo.dataFile[mDemo.counter].left == 1)
|
if (mDemo.dataFile[mDemo.counter].left == 1)
|
||||||
mPlayer[0]->setInput(INPUT_LEFT);
|
mPlayer[index]->setInput(INPUT_LEFT);
|
||||||
|
|
||||||
if (mDemo.dataFile[mDemo.counter].right == 1)
|
if (mDemo.dataFile[mDemo.counter].right == 1)
|
||||||
mPlayer[0]->setInput(INPUT_RIGHT);
|
mPlayer[index]->setInput(INPUT_RIGHT);
|
||||||
|
|
||||||
if (mDemo.dataFile[mDemo.counter].noInput == 1)
|
if (mDemo.dataFile[mDemo.counter].noInput == 1)
|
||||||
mPlayer[0]->setInput(NO_INPUT);
|
mPlayer[index]->setInput(NO_INPUT);
|
||||||
|
|
||||||
if (mDemo.dataFile[mDemo.counter].fire == 1)
|
if (mDemo.dataFile[mDemo.counter].fire == 1)
|
||||||
if (mPlayer[0]->canFire())
|
if (mPlayer[index]->canFire())
|
||||||
{
|
{
|
||||||
mPlayer[0]->setInput(INPUT_FIRE_UP);
|
mPlayer[index]->setInput(INPUT_FIRE_UP);
|
||||||
createBullet(mPlayer[0]->getPosX() + (mPlayer[0]->getWidth() / 2) - 4, mPlayer[0]->getPosY() + (mPlayer[0]->getHeight() / 2), BULLET_UP, mPlayer[0]->isPowerUp());
|
createBullet(mPlayer[index]->getPosX() + (mPlayer[index]->getWidth() / 2) - 4, mPlayer[index]->getPosY() + (mPlayer[index]->getHeight() / 2), BULLET_UP, mPlayer[index]->isPowerUp(), index);
|
||||||
mPlayer[0]->setFireCooldown(10);
|
mPlayer[index]->setFireCooldown(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mDemo.dataFile[mDemo.counter].fireLeft == 1)
|
if (mDemo.dataFile[mDemo.counter].fireLeft == 1)
|
||||||
if (mPlayer[0]->canFire())
|
if (mPlayer[index]->canFire())
|
||||||
{
|
{
|
||||||
mPlayer[0]->setInput(INPUT_FIRE_LEFT);
|
mPlayer[index]->setInput(INPUT_FIRE_LEFT);
|
||||||
createBullet(mPlayer[0]->getPosX() + (mPlayer[0]->getWidth() / 2) - 4, mPlayer[0]->getPosY() + (mPlayer[0]->getHeight() / 2), BULLET_UP, mPlayer[0]->isPowerUp());
|
createBullet(mPlayer[index]->getPosX() + (mPlayer[index]->getWidth() / 2) - 4, mPlayer[index]->getPosY() + (mPlayer[index]->getHeight() / 2), BULLET_UP, mPlayer[index]->isPowerUp(), index);
|
||||||
mPlayer[0]->setFireCooldown(10);
|
mPlayer[index]->setFireCooldown(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mDemo.dataFile[mDemo.counter].fireRight == 1)
|
if (mDemo.dataFile[mDemo.counter].fireRight == 1)
|
||||||
if (mPlayer[0]->canFire())
|
if (mPlayer[index]->canFire())
|
||||||
{
|
{
|
||||||
mPlayer[0]->setInput(INPUT_FIRE_RIGHT);
|
mPlayer[index]->setInput(INPUT_FIRE_RIGHT);
|
||||||
createBullet(mPlayer[0]->getPosX() + (mPlayer[0]->getWidth() / 2) - 4, mPlayer[0]->getPosY() + (mPlayer[0]->getHeight() / 2), BULLET_UP, mPlayer[0]->isPowerUp());
|
createBullet(mPlayer[index]->getPosX() + (mPlayer[index]->getWidth() / 2) - 4, mPlayer[index]->getPosY() + (mPlayer[index]->getHeight() / 2), BULLET_UP, mPlayer[index]->isPowerUp(), index);
|
||||||
mPlayer[0]->setFireCooldown(10);
|
mPlayer[index]->setFireCooldown(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Comprueba el input de pausa
|
// Comprueba el input de pausa
|
||||||
@@ -2763,7 +2762,7 @@ void Game::checkGameInput()
|
|||||||
if (mPlayer[i]->canFire())
|
if (mPlayer[i]->canFire())
|
||||||
{
|
{
|
||||||
mPlayer[i]->setInput(INPUT_FIRE_UP);
|
mPlayer[i]->setInput(INPUT_FIRE_UP);
|
||||||
createBullet(mPlayer[i]->getPosX() + (mPlayer[i]->getWidth() / 2) - 4, mPlayer[i]->getPosY() + (mPlayer[i]->getHeight() / 2), BULLET_UP, mPlayer[i]->isPowerUp());
|
createBullet(mPlayer[i]->getPosX() + (mPlayer[i]->getWidth() / 2) - 4, mPlayer[i]->getPosY() + (mPlayer[i]->getHeight() / 2), BULLET_UP, mPlayer[i]->isPowerUp(), i);
|
||||||
mPlayer[i]->setFireCooldown(10);
|
mPlayer[i]->setFireCooldown(10);
|
||||||
|
|
||||||
// Reproduce el sonido de disparo
|
// Reproduce el sonido de disparo
|
||||||
@@ -2779,7 +2778,7 @@ void Game::checkGameInput()
|
|||||||
if (mPlayer[i]->canFire())
|
if (mPlayer[i]->canFire())
|
||||||
{
|
{
|
||||||
mPlayer[i]->setInput(INPUT_FIRE_LEFT);
|
mPlayer[i]->setInput(INPUT_FIRE_LEFT);
|
||||||
createBullet(mPlayer[i]->getPosX() + (mPlayer[i]->getWidth() / 2) - 4, mPlayer[i]->getPosY() + (mPlayer[i]->getHeight() / 2), BULLET_LEFT, mPlayer[i]->isPowerUp());
|
createBullet(mPlayer[i]->getPosX() + (mPlayer[i]->getWidth() / 2) - 4, mPlayer[i]->getPosY() + (mPlayer[i]->getHeight() / 2), BULLET_LEFT, mPlayer[i]->isPowerUp(), i);
|
||||||
mPlayer[i]->setFireCooldown(10);
|
mPlayer[i]->setFireCooldown(10);
|
||||||
|
|
||||||
// Reproduce el sonido de disparo
|
// Reproduce el sonido de disparo
|
||||||
@@ -2795,7 +2794,7 @@ void Game::checkGameInput()
|
|||||||
if (mPlayer[i]->canFire())
|
if (mPlayer[i]->canFire())
|
||||||
{
|
{
|
||||||
mPlayer[i]->setInput(INPUT_FIRE_RIGHT);
|
mPlayer[i]->setInput(INPUT_FIRE_RIGHT);
|
||||||
createBullet(mPlayer[i]->getPosX() + (mPlayer[i]->getWidth() / 2) - 4, mPlayer[i]->getPosY() + (mPlayer[i]->getHeight() / 2), BULLET_RIGHT, mPlayer[i]->isPowerUp());
|
createBullet(mPlayer[i]->getPosX() + (mPlayer[i]->getWidth() / 2) - 4, mPlayer[i]->getPosY() + (mPlayer[i]->getHeight() / 2), BULLET_RIGHT, mPlayer[i]->isPowerUp(), i);
|
||||||
mPlayer[i]->setFireCooldown(10);
|
mPlayer[i]->setFireCooldown(10);
|
||||||
|
|
||||||
// Reproduce el sonido de disparo
|
// Reproduce el sonido de disparo
|
||||||
|
|||||||
@@ -348,7 +348,7 @@ public:
|
|||||||
void resetBullets();
|
void resetBullets();
|
||||||
|
|
||||||
// Crea un objeto bala
|
// Crea un objeto bala
|
||||||
void createBullet(int x, int y, Uint8 kind, bool poweredUp);
|
void createBullet(int x, int y, Uint8 kind, bool poweredUp, int owner);
|
||||||
|
|
||||||
// Actualiza los items
|
// Actualiza los items
|
||||||
void updateItems();
|
void updateItems();
|
||||||
|
|||||||
@@ -37,13 +37,12 @@ un tipo asociado diferente a NO_KIND
|
|||||||
#include "director.h"
|
#include "director.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <ctime>
|
|
||||||
|
|
||||||
int main(int argc, char *args[])
|
int main(int argc, char *args[])
|
||||||
{
|
{
|
||||||
// Inicia el generador de numeros aleatorios
|
// Inicia el generador de numeros aleatorios
|
||||||
//srand(time(nullptr));
|
//srand(time(nullptr));
|
||||||
std::srand(static_cast<unsigned int>(std::time(nullptr)));
|
std::srand(static_cast<unsigned int>(SDL_GetTicks()));
|
||||||
|
|
||||||
// Crea el objeto mDirector
|
// Crea el objeto mDirector
|
||||||
Director *mDirector = new Director(args[0]);
|
Director *mDirector = new Director(args[0]);
|
||||||
|
|||||||
Reference in New Issue
Block a user