Quitadas todas las variables globales y transformadas en punteros
This commit is contained in:
@@ -1,11 +1,27 @@
|
|||||||
#include "balloon.h"
|
#include "balloon.h"
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
Balloon::Balloon()
|
Balloon::Balloon(SDL_Renderer *gRenderer)
|
||||||
{
|
{
|
||||||
|
this->gRenderer = gRenderer;
|
||||||
|
|
||||||
|
gBalloonTexture = new LTexture(gRenderer);
|
||||||
|
|
||||||
|
// Carga los gráficos de los globos
|
||||||
|
if (!gBalloonTexture->loadFromFile("media/gfx/balloon.png"))
|
||||||
|
{
|
||||||
|
printf("Failed to load balloon texture!\n");
|
||||||
|
}
|
||||||
|
|
||||||
init(0, 0, NO_KIND, BALLON_VELX_POSITIVE, 0);
|
init(0, 0, NO_KIND, BALLON_VELX_POSITIVE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Destructor
|
||||||
|
Balloon::~Balloon()
|
||||||
|
{
|
||||||
|
gBalloonTexture->free();
|
||||||
|
}
|
||||||
|
|
||||||
// Inicializador
|
// Inicializador
|
||||||
void Balloon::init(int x, int y, Uint8 kind, float velx, Uint16 creationtimer)
|
void Balloon::init(int x, int y, Uint8 kind, float velx, Uint16 creationtimer)
|
||||||
{
|
{
|
||||||
@@ -133,7 +149,7 @@ void Balloon::init(int x, int y, Uint8 kind, float velx, Uint16 creationtimer)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Textura con los gráficos del sprite
|
// Textura con los gráficos del sprite
|
||||||
mSprite.setTexture(gBalloonTexture);
|
mSprite.setTexture(*gBalloonTexture);
|
||||||
|
|
||||||
// Alto y ancho del sprite
|
// Alto y ancho del sprite
|
||||||
mSprite.setWidth(mWidth);
|
mSprite.setWidth(mWidth);
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
#include "sprite.h"
|
#include "sprite.h"
|
||||||
#include "const.h"
|
#include "const.h"
|
||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
#include "globals2.h"
|
|
||||||
|
|
||||||
#ifndef BALLOON_H
|
#ifndef BALLOON_H
|
||||||
#define BALLOON_H
|
#define BALLOON_H
|
||||||
@@ -13,7 +12,10 @@ class Balloon
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
Balloon();
|
Balloon(SDL_Renderer *gRenderer);
|
||||||
|
|
||||||
|
// Destructor
|
||||||
|
~Balloon();
|
||||||
|
|
||||||
// Inicializador
|
// Inicializador
|
||||||
void init(int x, int y, Uint8 kind, float velx, Uint16 creationtimer);
|
void init(int x, int y, Uint8 kind, float velx, Uint16 creationtimer);
|
||||||
@@ -97,6 +99,11 @@ public:
|
|||||||
Circle &getCollider();
|
Circle &getCollider();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// El renderizador de la ventana
|
||||||
|
SDL_Renderer *gRenderer;
|
||||||
|
|
||||||
|
LTexture *gBalloonTexture;
|
||||||
|
|
||||||
// Posición X,Y del objeto globo
|
// Posición X,Y del objeto globo
|
||||||
float mPosX;
|
float mPosX;
|
||||||
int mPosY;
|
int mPosY;
|
||||||
|
|||||||
@@ -1,11 +1,27 @@
|
|||||||
#include "bullet.h"
|
#include "bullet.h"
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
Bullet::Bullet()
|
Bullet::Bullet(SDL_Renderer *gRenderer)
|
||||||
{
|
{
|
||||||
|
this->gRenderer = gRenderer;
|
||||||
|
|
||||||
|
gBulletTexture = new LTexture(gRenderer);
|
||||||
|
|
||||||
|
// Carga los gráficos de las balas
|
||||||
|
if (!gBulletTexture->loadFromFile("media/gfx/bullet.png"))
|
||||||
|
{
|
||||||
|
printf("Failed to load bullet texture!\n");
|
||||||
|
}
|
||||||
|
|
||||||
init(0, 0, NO_KIND);
|
init(0, 0, NO_KIND);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Destructor
|
||||||
|
Bullet::~Bullet()
|
||||||
|
{
|
||||||
|
gBulletTexture->free();
|
||||||
|
}
|
||||||
|
|
||||||
// Iniciador
|
// Iniciador
|
||||||
void Bullet::init(int x, int y, int kind)
|
void Bullet::init(int x, int y, int kind)
|
||||||
{
|
{
|
||||||
@@ -24,7 +40,7 @@ void Bullet::init(int x, int y, int kind)
|
|||||||
mKind = kind;
|
mKind = kind;
|
||||||
|
|
||||||
// Textura con los gráficos del objeto
|
// Textura con los gráficos del objeto
|
||||||
mSprite.setTexture(gBulletTexture);
|
mSprite.setTexture(*gBulletTexture);
|
||||||
|
|
||||||
// Alto y ancho del sprite
|
// Alto y ancho del sprite
|
||||||
mSprite.setWidth(mWidth);
|
mSprite.setWidth(mWidth);
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
#include "sprite.h"
|
#include "sprite.h"
|
||||||
#include "const.h"
|
#include "const.h"
|
||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
#include "globals2.h"
|
|
||||||
|
|
||||||
#ifndef BULLET_H
|
#ifndef BULLET_H
|
||||||
#define BULLET_H
|
#define BULLET_H
|
||||||
@@ -13,7 +12,10 @@ class Bullet
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
Bullet();
|
Bullet(SDL_Renderer *gRenderer);
|
||||||
|
|
||||||
|
// Destructor
|
||||||
|
~Bullet();
|
||||||
|
|
||||||
// Iniciador
|
// Iniciador
|
||||||
void init(int x, int y, int kind);
|
void init(int x, int y, int kind);
|
||||||
@@ -54,6 +56,11 @@ public:
|
|||||||
Circle &getCollider();
|
Circle &getCollider();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// El renderizador de la ventana
|
||||||
|
SDL_Renderer *gRenderer;
|
||||||
|
|
||||||
|
LTexture *gBulletTexture;
|
||||||
|
|
||||||
// Posición X/Y del objeto
|
// Posición X/Y del objeto
|
||||||
int mPosX;
|
int mPosX;
|
||||||
int mPosY;
|
int mPosY;
|
||||||
|
|||||||
@@ -27,8 +27,10 @@ bool checkCollision(Circle &a, Circle &b)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
GameDirector::GameDirector()
|
GameDirector::GameDirector(SDL_Renderer *gRenderer)
|
||||||
{
|
{
|
||||||
|
this->gRenderer = gRenderer;
|
||||||
|
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,6 +52,34 @@ GameDirector::~GameDirector()
|
|||||||
// Libera el mando
|
// Libera el mando
|
||||||
SDL_JoystickClose(gGameController);
|
SDL_JoystickClose(gGameController);
|
||||||
gGameController = NULL;
|
gGameController = NULL;
|
||||||
|
|
||||||
|
// Libera texturas
|
||||||
|
gGameBackgroundTexture->free();
|
||||||
|
gTitleBackgroundTexture->free();
|
||||||
|
gWhiteFontTexture->free();
|
||||||
|
gBlackFontTexture->free();
|
||||||
|
gMiscTexture->free();
|
||||||
|
|
||||||
|
// Libera objetos
|
||||||
|
delete player;
|
||||||
|
delete menuPause;
|
||||||
|
delete menuTitle;
|
||||||
|
|
||||||
|
for (Uint8 i = 0; i < mMaxBalloons; i++)
|
||||||
|
{
|
||||||
|
if (balloon[i])
|
||||||
|
{
|
||||||
|
delete balloon[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < mMaxBullets; i++)
|
||||||
|
{
|
||||||
|
if (bullet[i])
|
||||||
|
{
|
||||||
|
delete bullet[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Iniciador
|
// Iniciador
|
||||||
@@ -83,6 +113,41 @@ void GameDirector::init()
|
|||||||
printf("Failed to load bullet sound effect! SDL_mixer Error: %s\n", Mix_GetError());
|
printf("Failed to load bullet sound effect! SDL_mixer Error: %s\n", Mix_GetError());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gGameBackgroundTexture = new LTexture(gRenderer);
|
||||||
|
// Carga los gráficos del fondo del juego
|
||||||
|
if (!gGameBackgroundTexture->loadFromFile("media/gfx/background.png"))
|
||||||
|
{
|
||||||
|
printf("Failed to load game background texture!\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
gTitleBackgroundTexture = new LTexture(gRenderer);
|
||||||
|
// Carga los gráficos del fondo de la pantalla de titulo
|
||||||
|
if (!gTitleBackgroundTexture->loadFromFile("media/gfx/title.png"))
|
||||||
|
{
|
||||||
|
printf("Failed to load title texture!\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
gMiscTexture = new LTexture(gRenderer);
|
||||||
|
// Carga varios gráficos para varios propósitos
|
||||||
|
if (!gMiscTexture->loadFromFile("media/gfx/misc.png"))
|
||||||
|
{
|
||||||
|
printf("Failed to load misc texture!\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
gWhiteFontTexture = new LTexture(gRenderer);
|
||||||
|
// Carga los gráficos para el texto blanco
|
||||||
|
if (!gWhiteFontTexture->loadFromFile("media/gfx/white_font.png"))
|
||||||
|
{
|
||||||
|
printf("Failed to load white font texture!\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
gBlackFontTexture = new LTexture(gRenderer);
|
||||||
|
// Carga los gráficos para el texto negro
|
||||||
|
if (!gBlackFontTexture->loadFromFile("media/gfx/black_font.png"))
|
||||||
|
{
|
||||||
|
printf("Failed to load black font texture!\n");
|
||||||
|
}
|
||||||
|
|
||||||
// Comprueba los mandos
|
// Comprueba los mandos
|
||||||
if (SDL_NumJoysticks() < 1)
|
if (SDL_NumJoysticks() < 1)
|
||||||
{
|
{
|
||||||
@@ -115,7 +180,8 @@ void GameDirector::init()
|
|||||||
mGetReady = true;
|
mGetReady = true;
|
||||||
|
|
||||||
// Objeto jugador
|
// Objeto jugador
|
||||||
player.init();
|
player = new Player(gRenderer);
|
||||||
|
player->init();
|
||||||
|
|
||||||
// Establece a cero todos los valores del vector de objetos globo
|
// Establece a cero todos los valores del vector de objetos globo
|
||||||
resetBalloons();
|
resetBalloons();
|
||||||
@@ -139,26 +205,28 @@ void GameDirector::init()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Los fondos
|
// Los fondos
|
||||||
gameBackground.init(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT - (0 * BLOCK), &gGameBackgroundTexture);
|
gameBackground.init(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT - (0 * BLOCK), gGameBackgroundTexture);
|
||||||
titleBackground.init(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, &gTitleBackgroundTexture);
|
titleBackground.init(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, gTitleBackgroundTexture);
|
||||||
|
|
||||||
// Objetos texto, uno de cada color
|
// Objetos texto, uno de cada color
|
||||||
whiteText.init(&gWhiteFontTexture);
|
whiteText.init(gWhiteFontTexture);
|
||||||
blackText.init(&gBlackFontTexture);
|
blackText.init(gBlackFontTexture);
|
||||||
|
|
||||||
// Inicializa el objeto con el menu del titulo
|
// Inicializa el objeto con el menu del titulo
|
||||||
menuTitle.init(0, 16 * BLOCK, MENU_SELECTOR_WHITE, MENU_BACKGROUND_TRANSPARENT);
|
menuTitle = new Menu(gRenderer);
|
||||||
menuTitle.addItem("START");
|
menuTitle->init(0, 16 * BLOCK, MENU_SELECTOR_WHITE, MENU_BACKGROUND_TRANSPARENT);
|
||||||
menuTitle.addItem("EXIT");
|
menuTitle->addItem("START");
|
||||||
menuTitle.setBackgroundColor(0, 0, 0, 255);
|
menuTitle->addItem("EXIT");
|
||||||
menuTitle.centerMenuOnScreen();
|
menuTitle->setBackgroundColor(0, 0, 0, 255);
|
||||||
|
menuTitle->centerMenuOnScreen();
|
||||||
|
|
||||||
// Inicializa el objeto con el menu de pausa
|
// Inicializa el objeto con el menu de pausa
|
||||||
menuPause.init(0, 12 * BLOCK, MENU_SELECTOR_WHITE, MENU_BACKGROUND_SOLID);
|
menuPause = new Menu(gRenderer);
|
||||||
menuPause.addItem("CONTINUE");
|
menuPause->init(0, 12 * BLOCK, MENU_SELECTOR_WHITE, MENU_BACKGROUND_SOLID);
|
||||||
menuPause.addItem("EXIT TO TITLE");
|
menuPause->addItem("CONTINUE");
|
||||||
menuPause.setBackgroundColor(0x73, 0x27, 0x5c, 255);
|
menuPause->addItem("EXIT TO TITLE");
|
||||||
menuPause.centerMenuOnScreen();
|
menuPause->setBackgroundColor(0x73, 0x27, 0x5c, 255);
|
||||||
|
menuPause->centerMenuOnScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hace una pausa de milisegundos
|
// Hace una pausa de milisegundos
|
||||||
@@ -242,9 +310,9 @@ void GameDirector::moveBalloons()
|
|||||||
{
|
{
|
||||||
for (Uint8 i = 0; i < mMaxBalloons; i++)
|
for (Uint8 i = 0; i < mMaxBalloons; i++)
|
||||||
{
|
{
|
||||||
if (balloon[i].isActive())
|
if (balloon[i]->isActive())
|
||||||
{
|
{
|
||||||
balloon[i].move();
|
balloon[i]->move();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -254,9 +322,9 @@ void GameDirector::renderBalloons()
|
|||||||
{
|
{
|
||||||
for (Uint8 i = 0; i < mMaxBalloons; i++)
|
for (Uint8 i = 0; i < mMaxBalloons; i++)
|
||||||
{
|
{
|
||||||
if (balloon[i].isActive())
|
if (balloon[i]->isActive())
|
||||||
{
|
{
|
||||||
balloon[i].render();
|
balloon[i]->render();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -268,7 +336,7 @@ Uint8 GameDirector::getBallonFreeIndex()
|
|||||||
|
|
||||||
for (Uint8 i = 0; i < mMaxBalloons; i++)
|
for (Uint8 i = 0; i < mMaxBalloons; i++)
|
||||||
{
|
{
|
||||||
if (balloon[i].isActive() == false)
|
if (balloon[i]->isActive() == false)
|
||||||
{
|
{
|
||||||
index = i;
|
index = i;
|
||||||
break;
|
break;
|
||||||
@@ -282,7 +350,8 @@ Uint8 GameDirector::getBallonFreeIndex()
|
|||||||
Uint8 GameDirector::createNewBalloon(int x, int y, Uint8 kind, float velx, Uint16 creationtimer)
|
Uint8 GameDirector::createNewBalloon(int x, int y, Uint8 kind, float velx, Uint16 creationtimer)
|
||||||
{
|
{
|
||||||
Uint8 index = getBallonFreeIndex();
|
Uint8 index = getBallonFreeIndex();
|
||||||
balloon[index].init(x, y, kind, velx, creationtimer);
|
balloon[index] = new Balloon(gRenderer);
|
||||||
|
balloon[index]->init(x, y, kind, velx, creationtimer);
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -291,38 +360,38 @@ void GameDirector::resetBalloons()
|
|||||||
{
|
{
|
||||||
for (Uint8 i = 0; i < mMaxBalloons; i++)
|
for (Uint8 i = 0; i < mMaxBalloons; i++)
|
||||||
{
|
{
|
||||||
balloon[i].erase();
|
balloon[i]->erase();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Explosiona un globo. Lo destruye y crea otros dos si es el caso
|
// Explosiona un globo. Lo destruye y crea otros dos si es el caso
|
||||||
void GameDirector::popBalloon(Uint8 index)
|
void GameDirector::popBalloon(Uint8 index)
|
||||||
{
|
{
|
||||||
if (balloon[index].isActive())
|
if (balloon[index]->isActive())
|
||||||
{
|
{
|
||||||
Uint8 kind = balloon[index].getKind();
|
Uint8 kind = balloon[index]->getKind();
|
||||||
Uint8 freeIndex = 0;
|
Uint8 freeIndex = 0;
|
||||||
switch (kind)
|
switch (kind)
|
||||||
{
|
{
|
||||||
// Si es del tipo más pequeño, simplemente elimina el globo
|
// Si es del tipo más pequeño, simplemente elimina el globo
|
||||||
case BALLOON_1:
|
case BALLOON_1:
|
||||||
balloon[index].erase();
|
balloon[index]->erase();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// En cualquier otro caso, crea dos globos de un tipo inferior
|
// En cualquier otro caso, crea dos globos de un tipo inferior
|
||||||
default:
|
default:
|
||||||
freeIndex = getBallonFreeIndex();
|
freeIndex = getBallonFreeIndex();
|
||||||
balloon[freeIndex].init(0, balloon[index].getPosY(), balloon[index].getKind() - 1, BALLON_VELX_NEGATIVE, 0);
|
balloon[freeIndex]->init(0, balloon[index]->getPosY(), balloon[index]->getKind() - 1, BALLON_VELX_NEGATIVE, 0);
|
||||||
balloon[freeIndex].allignTo(balloon[index].getPosX() + (balloon[index].getWidth() / 2));
|
balloon[freeIndex]->allignTo(balloon[index]->getPosX() + (balloon[index]->getWidth() / 2));
|
||||||
balloon[freeIndex].setVelY(-2.5);
|
balloon[freeIndex]->setVelY(-2.5);
|
||||||
|
|
||||||
freeIndex = getBallonFreeIndex();
|
freeIndex = getBallonFreeIndex();
|
||||||
balloon[freeIndex].init(0, balloon[index].getPosY(), balloon[index].getKind() - 1, BALLON_VELX_POSITIVE, 0);
|
balloon[freeIndex]->init(0, balloon[index]->getPosY(), balloon[index]->getKind() - 1, BALLON_VELX_POSITIVE, 0);
|
||||||
balloon[freeIndex].allignTo(balloon[index].getPosX() + (balloon[index].getWidth() / 2));
|
balloon[freeIndex]->allignTo(balloon[index]->getPosX() + (balloon[index]->getWidth() / 2));
|
||||||
balloon[freeIndex].setVelY(-2.5);
|
balloon[freeIndex]->setVelY(-2.5);
|
||||||
|
|
||||||
// Elimina el globo
|
// Elimina el globo
|
||||||
balloon[index].erase();
|
balloon[index]->erase();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -333,9 +402,9 @@ void GameDirector::stopAllBalloons()
|
|||||||
{
|
{
|
||||||
for (Uint8 i = 0; i < mMaxBalloons; i++)
|
for (Uint8 i = 0; i < mMaxBalloons; i++)
|
||||||
{
|
{
|
||||||
if (balloon[i].isActive())
|
if (balloon[i]->isActive())
|
||||||
{
|
{
|
||||||
balloon[i].setStop(true);
|
balloon[i]->setStop(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -345,9 +414,9 @@ void GameDirector::startAllBalloons()
|
|||||||
{
|
{
|
||||||
for (Uint8 i = 0; i < mMaxBalloons; i++)
|
for (Uint8 i = 0; i < mMaxBalloons; i++)
|
||||||
{
|
{
|
||||||
if (balloon[i].isActive())
|
if (balloon[i]->isActive())
|
||||||
{
|
{
|
||||||
balloon[i].setStop(false);
|
balloon[i]->setStop(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -358,7 +427,7 @@ Uint8 GameDirector::countBalloons()
|
|||||||
Uint8 num = 0;
|
Uint8 num = 0;
|
||||||
for (Uint8 i = 0; i < mMaxBalloons; i++)
|
for (Uint8 i = 0; i < mMaxBalloons; i++)
|
||||||
{
|
{
|
||||||
if (balloon[i].isActive())
|
if (balloon[i]->isActive())
|
||||||
{
|
{
|
||||||
++num;
|
++num;
|
||||||
}
|
}
|
||||||
@@ -372,9 +441,9 @@ bool GameDirector::checkPlayerBallonCollision()
|
|||||||
bool result = false;
|
bool result = false;
|
||||||
for (Uint8 i = 0; i < mMaxBalloons; i++)
|
for (Uint8 i = 0; i < mMaxBalloons; i++)
|
||||||
{
|
{
|
||||||
if (balloon[i].isActive())
|
if (balloon[i]->isActive())
|
||||||
{
|
{
|
||||||
if (checkCollision(player.getCollider(), balloon[i].getCollider()))
|
if (checkCollision(player->getCollider(), balloon[i]->getCollider()))
|
||||||
{
|
{
|
||||||
result = true;
|
result = true;
|
||||||
break;
|
break;
|
||||||
@@ -391,16 +460,16 @@ void GameDirector::processBulletBallonCollision()
|
|||||||
{
|
{
|
||||||
for (Uint8 j = 0; j < mMaxBullets; j++)
|
for (Uint8 j = 0; j < mMaxBullets; j++)
|
||||||
{
|
{
|
||||||
if (balloon[i].isActive() && !(balloon[i].isInvulnerable()) && bullet[j].isActive())
|
if (balloon[i]->isActive() && !(balloon[i]->isInvulnerable()) && bullet[j]->isActive())
|
||||||
{
|
{
|
||||||
if (checkCollision(balloon[i].getCollider(), bullet[j].getCollider()))
|
if (checkCollision(balloon[i]->getCollider(), bullet[j]->getCollider()))
|
||||||
{
|
{
|
||||||
player.addScore(balloon[i].getScore());
|
player->addScore(balloon[i]->getScore());
|
||||||
setScore(player.getScore());
|
setScore(player->getScore());
|
||||||
updateHiScore();
|
updateHiScore();
|
||||||
popBalloon(i);
|
popBalloon(i);
|
||||||
Mix_PlayChannel(-1, gPopBalloonFX, 0);
|
Mix_PlayChannel(-1, gPopBalloonFX, 0);
|
||||||
bullet[j].erase();
|
bullet[j]->erase();
|
||||||
calculateMenaceLevel();
|
calculateMenaceLevel();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -414,9 +483,9 @@ void GameDirector::moveBullets()
|
|||||||
{
|
{
|
||||||
for (Uint8 i = 0; i < mMaxBullets; i++)
|
for (Uint8 i = 0; i < mMaxBullets; i++)
|
||||||
{
|
{
|
||||||
if (bullet[i].isActive())
|
if (bullet[i]->isActive())
|
||||||
{
|
{
|
||||||
bullet[i].move();
|
bullet[i]->move();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -426,9 +495,9 @@ void GameDirector::renderBullets()
|
|||||||
{
|
{
|
||||||
for (Uint8 i = 0; i < mMaxBullets; i++)
|
for (Uint8 i = 0; i < mMaxBullets; i++)
|
||||||
{
|
{
|
||||||
if (bullet[i].isActive())
|
if (bullet[i]->isActive())
|
||||||
{
|
{
|
||||||
bullet[i].render();
|
bullet[i]->render();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -440,7 +509,7 @@ Uint8 GameDirector::getBulletFreeIndex()
|
|||||||
|
|
||||||
for (int i = 0; i < mMaxBullets; i++)
|
for (int i = 0; i < mMaxBullets; i++)
|
||||||
{
|
{
|
||||||
if (bullet[i].isActive() == false)
|
if (bullet[i]->isActive() == false)
|
||||||
{
|
{
|
||||||
index = i;
|
index = i;
|
||||||
break;
|
break;
|
||||||
@@ -455,14 +524,16 @@ void GameDirector::resetBullets()
|
|||||||
{
|
{
|
||||||
for (Uint8 i = 0; i < mMaxBullets; i++)
|
for (Uint8 i = 0; i < mMaxBullets; i++)
|
||||||
{
|
{
|
||||||
bullet[i].init(0, 0, NO_KIND);
|
bullet[i]->init(0, 0, NO_KIND);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Crea un objeto bala
|
// Crea un objeto bala
|
||||||
void GameDirector::createBullet(int x, int y, Uint8 kind)
|
void GameDirector::createBullet(int x, int y, Uint8 kind)
|
||||||
{
|
{
|
||||||
bullet[getBulletFreeIndex()].init(x, y, kind);
|
const int index = getBulletFreeIndex();
|
||||||
|
bullet[index] = new Bullet(gRenderer);
|
||||||
|
bullet[index]->init(x, y, kind);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calcula y establece el valor de amenaza en funcion de los globos activos
|
// Calcula y establece el valor de amenaza en funcion de los globos activos
|
||||||
@@ -471,7 +542,7 @@ void GameDirector::calculateMenaceLevel()
|
|||||||
mMenaceLevel = 0;
|
mMenaceLevel = 0;
|
||||||
for (Uint8 i = 0; i < mMaxBalloons; i++)
|
for (Uint8 i = 0; i < mMaxBalloons; i++)
|
||||||
{
|
{
|
||||||
switch (balloon[i].getKind())
|
switch (balloon[i]->getKind())
|
||||||
{
|
{
|
||||||
case BALLOON_1:
|
case BALLOON_1:
|
||||||
mMenaceLevel += 1;
|
mMenaceLevel += 1;
|
||||||
@@ -514,7 +585,7 @@ void GameDirector::checkMenaceLevel()
|
|||||||
Uint8 index = 0;
|
Uint8 index = 0;
|
||||||
|
|
||||||
// Obtiene el centro del jugador en el eje X
|
// Obtiene el centro del jugador en el eje X
|
||||||
int x = player.getPosX() + (player.getWidth() / 2);
|
int x = player->getPosX() + (player->getWidth() / 2);
|
||||||
|
|
||||||
// Crea un globo sobre el jugador en dirección hacia el centro
|
// Crea un globo sobre el jugador en dirección hacia el centro
|
||||||
if (x < (PLAY_AREA_WIDTH / 2))
|
if (x < (PLAY_AREA_WIDTH / 2))
|
||||||
@@ -525,7 +596,7 @@ void GameDirector::checkMenaceLevel()
|
|||||||
{
|
{
|
||||||
index = createNewBalloon(0, PLAY_AREA_TOP + BLOCK - 37, BALLOON_4, BALLON_VELX_NEGATIVE, 400);
|
index = createNewBalloon(0, PLAY_AREA_TOP + BLOCK - 37, BALLOON_4, BALLON_VELX_NEGATIVE, 400);
|
||||||
}
|
}
|
||||||
balloon[index].allignTo(x);
|
balloon[index]->allignTo(x);
|
||||||
|
|
||||||
// Recalcula el nivel de amenaza con el nuevo globo
|
// Recalcula el nivel de amenaza con el nuevo globo
|
||||||
calculateMenaceLevel();
|
calculateMenaceLevel();
|
||||||
@@ -541,26 +612,26 @@ void GameDirector::checkGameInput()
|
|||||||
// Si está pulsada la tecla izquierda o el mando hacia la izquierda
|
// Si está pulsada la tecla izquierda o el mando hacia la izquierda
|
||||||
if ((keystates[SDL_SCANCODE_LEFT] != 0) || (SDL_JoystickGetAxis(gGameController, 0) < -JOYSTICK_DEAD_ZONE))
|
if ((keystates[SDL_SCANCODE_LEFT] != 0) || (SDL_JoystickGetAxis(gGameController, 0) < -JOYSTICK_DEAD_ZONE))
|
||||||
{
|
{
|
||||||
player.checkInput(INPUT_LEFT);
|
player->checkInput(INPUT_LEFT);
|
||||||
}
|
}
|
||||||
// Si está pulsada la tecla derecha o el mando hacia la derecha
|
// Si está pulsada la tecla derecha o el mando hacia la derecha
|
||||||
else if ((keystates[SDL_SCANCODE_RIGHT] != 0) || (SDL_JoystickGetAxis(gGameController, 0) > JOYSTICK_DEAD_ZONE))
|
else if ((keystates[SDL_SCANCODE_RIGHT] != 0) || (SDL_JoystickGetAxis(gGameController, 0) > JOYSTICK_DEAD_ZONE))
|
||||||
{
|
{
|
||||||
player.checkInput(INPUT_RIGHT);
|
player->checkInput(INPUT_RIGHT);
|
||||||
}
|
}
|
||||||
// Ninguna de las dos direcciones pulsadas
|
// Ninguna de las dos direcciones pulsadas
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player.checkInput(NO_INPUT);
|
player->checkInput(NO_INPUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Comprobamos la tecla o el botón de disparo central
|
// Comprobamos la tecla o el botón de disparo central
|
||||||
if ((SDL_JoystickGetButton(gGameController, BUTTON_X)) || (keystates[SDL_SCANCODE_W] != 0))
|
if ((SDL_JoystickGetButton(gGameController, BUTTON_X)) || (keystates[SDL_SCANCODE_W] != 0))
|
||||||
{
|
{
|
||||||
if (player.canFire())
|
if (player->canFire())
|
||||||
{
|
{
|
||||||
createBullet(player.getPosX() + (player.getWidth() / 2) - 4, player.getPosY(), BULLET_UP);
|
createBullet(player->getPosX() + (player->getWidth() / 2) - 4, player->getPosY(), BULLET_UP);
|
||||||
player.setFireCooldown(10);
|
player->setFireCooldown(10);
|
||||||
|
|
||||||
// Reproduce el sonido de disparo
|
// Reproduce el sonido de disparo
|
||||||
Mix_PlayChannel(-1, gBulletFX, 0);
|
Mix_PlayChannel(-1, gBulletFX, 0);
|
||||||
@@ -570,10 +641,10 @@ void GameDirector::checkGameInput()
|
|||||||
// Comprobamos la tecla o el botón de disparo izquierdo
|
// Comprobamos la tecla o el botón de disparo izquierdo
|
||||||
if ((SDL_JoystickGetButton(gGameController, BUTTON_Y)) || (keystates[SDL_SCANCODE_Q] != 0))
|
if ((SDL_JoystickGetButton(gGameController, BUTTON_Y)) || (keystates[SDL_SCANCODE_Q] != 0))
|
||||||
{
|
{
|
||||||
if (player.canFire())
|
if (player->canFire())
|
||||||
{
|
{
|
||||||
createBullet(player.getPosX() + (player.getWidth() / 2) - 4, player.getPosY(), BULLET_LEFT);
|
createBullet(player->getPosX() + (player->getWidth() / 2) - 4, player->getPosY(), BULLET_LEFT);
|
||||||
player.setFireCooldown(10);
|
player->setFireCooldown(10);
|
||||||
|
|
||||||
// Reproduce el sonido de disparo
|
// Reproduce el sonido de disparo
|
||||||
Mix_PlayChannel(-1, gBulletFX, 0);
|
Mix_PlayChannel(-1, gBulletFX, 0);
|
||||||
@@ -583,10 +654,10 @@ void GameDirector::checkGameInput()
|
|||||||
// Comprobamos la tecla o el botón de disparo derecho
|
// Comprobamos la tecla o el botón de disparo derecho
|
||||||
if ((SDL_JoystickGetButton(gGameController, BUTTON_A)) || (keystates[SDL_SCANCODE_E] != 0))
|
if ((SDL_JoystickGetButton(gGameController, BUTTON_A)) || (keystates[SDL_SCANCODE_E] != 0))
|
||||||
{
|
{
|
||||||
if (player.canFire())
|
if (player->canFire())
|
||||||
{
|
{
|
||||||
createBullet(player.getPosX() + (player.getWidth() / 2) - 4, player.getPosY(), BULLET_RIGHT);
|
createBullet(player->getPosX() + (player->getWidth() / 2) - 4, player->getPosY(), BULLET_RIGHT);
|
||||||
player.setFireCooldown(10);
|
player->setFireCooldown(10);
|
||||||
|
|
||||||
// Reproduce el sonido de disparo
|
// Reproduce el sonido de disparo
|
||||||
Mix_PlayChannel(-1, gBulletFX, 0);
|
Mix_PlayChannel(-1, gBulletFX, 0);
|
||||||
@@ -795,7 +866,7 @@ void GameDirector::renderGetReady()
|
|||||||
if (mGetReady)
|
if (mGetReady)
|
||||||
{
|
{
|
||||||
Sprite sprite;
|
Sprite sprite;
|
||||||
sprite.setTexture(gMiscTexture);
|
sprite.setTexture(*gMiscTexture);
|
||||||
sprite.setWidth(53);
|
sprite.setWidth(53);
|
||||||
sprite.setHeight(10);
|
sprite.setHeight(10);
|
||||||
sprite.setPosX((PLAY_AREA_WIDTH / 2) - (sprite.getWidth() / 2));
|
sprite.setPosX((PLAY_AREA_WIDTH / 2) - (sprite.getWidth() / 2));
|
||||||
@@ -837,27 +908,27 @@ void GameDirector::runTitle()
|
|||||||
|
|
||||||
// Dibuja los objetos
|
// Dibuja los objetos
|
||||||
titleBackground.render();
|
titleBackground.render();
|
||||||
menuTitle.render(whiteText);
|
menuTitle->render(whiteText);
|
||||||
|
|
||||||
// Actualiza la pantalla
|
// Actualiza la pantalla
|
||||||
SDL_RenderPresent(gRenderer);
|
SDL_RenderPresent(gRenderer);
|
||||||
|
|
||||||
// Comprueba las entradas para el menu
|
// Comprueba las entradas para el menu
|
||||||
checkMenuInput(&menuTitle);
|
checkMenuInput(menuTitle);
|
||||||
|
|
||||||
// Comprueba si se ha seleccionado algún item del menú
|
// Comprueba si se ha seleccionado algún item del menú
|
||||||
switch (menuTitle.getItemSelected())
|
switch (menuTitle->getItemSelected())
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
setGameStatus(GAME_STATE_PLAYING);
|
setGameStatus(GAME_STATE_PLAYING);
|
||||||
menuTitle.resetMenu();
|
menuTitle->resetMenu();
|
||||||
renderTransition(1);
|
renderTransition(1);
|
||||||
Mix_HaltMusic();
|
Mix_HaltMusic();
|
||||||
SDL_Delay(1200);
|
SDL_Delay(1200);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
setGameStatus(GAME_STATE_QUIT);
|
setGameStatus(GAME_STATE_QUIT);
|
||||||
menuTitle.resetMenu();
|
menuTitle->resetMenu();
|
||||||
renderTransition(1);
|
renderTransition(1);
|
||||||
Mix_HaltMusic();
|
Mix_HaltMusic();
|
||||||
break;
|
break;
|
||||||
@@ -938,7 +1009,7 @@ void GameDirector::runGame()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Actualiza el jugador
|
// Actualiza el jugador
|
||||||
player.update();
|
player->update();
|
||||||
|
|
||||||
// Mueve los globos
|
// Mueve los globos
|
||||||
moveBalloons();
|
moveBalloons();
|
||||||
@@ -979,9 +1050,9 @@ void GameDirector::runGame()
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
// whiteText.write(0, 0, std::to_string(mMenaceLevelThreshold));
|
// whiteText.write(0, 0, std::to_string(mMenaceLevelThreshold));
|
||||||
// whiteText.write(0, BLOCK, std::to_string(player.getPosX() + player.getWidth()));
|
// whiteText.write(0, BLOCK, std::to_string(player->getPosX() + player->getWidth()));
|
||||||
renderBullets();
|
renderBullets();
|
||||||
player.render();
|
player->render();
|
||||||
renderScoreBoard(whiteText);
|
renderScoreBoard(whiteText);
|
||||||
renderGetReady();
|
renderGetReady();
|
||||||
|
|
||||||
@@ -1006,26 +1077,26 @@ void GameDirector::runPausedGame()
|
|||||||
gameBackground.render();
|
gameBackground.render();
|
||||||
renderBalloons();
|
renderBalloons();
|
||||||
renderBullets();
|
renderBullets();
|
||||||
player.render();
|
player->render();
|
||||||
renderScoreBoard(whiteText);
|
renderScoreBoard(whiteText);
|
||||||
menuPause.render(whiteText);
|
menuPause->render(whiteText);
|
||||||
|
|
||||||
// Limpia la pantalla
|
// Limpia la pantalla
|
||||||
SDL_RenderPresent(gRenderer);
|
SDL_RenderPresent(gRenderer);
|
||||||
|
|
||||||
// Comprueba las entradas para el menu
|
// Comprueba las entradas para el menu
|
||||||
checkMenuInput(&menuPause);
|
checkMenuInput(menuPause);
|
||||||
|
|
||||||
// Comprueba si se ha seleccionado algún item del menú
|
// Comprueba si se ha seleccionado algún item del menú
|
||||||
switch (menuPause.getItemSelected())
|
switch (menuPause->getItemSelected())
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
setGameStatus(GAME_STATE_PLAYING);
|
setGameStatus(GAME_STATE_PLAYING);
|
||||||
menuPause.resetMenu();
|
menuPause->resetMenu();
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
setGameStatus(GAME_STATE_TITLE);
|
setGameStatus(GAME_STATE_TITLE);
|
||||||
menuPause.resetMenu();
|
menuPause->resetMenu();
|
||||||
renderTransition(1);
|
renderTransition(1);
|
||||||
init();
|
init();
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class GameDirector
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
GameDirector();
|
GameDirector(SDL_Renderer *gRenderer);
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
~GameDirector();
|
~GameDirector();
|
||||||
@@ -129,6 +129,9 @@ public:
|
|||||||
void runPausedGame();
|
void runPausedGame();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// El renderizador de la ventana
|
||||||
|
SDL_Renderer *gRenderer = NULL;
|
||||||
|
|
||||||
// Objetos con la música del juego
|
// Objetos con la música del juego
|
||||||
Mix_Music *gTitleMusic = NULL;
|
Mix_Music *gTitleMusic = NULL;
|
||||||
Mix_Music *gPlayingMusic = NULL;
|
Mix_Music *gPlayingMusic = NULL;
|
||||||
@@ -140,21 +143,28 @@ private:
|
|||||||
// Manejador para el mando 1
|
// Manejador para el mando 1
|
||||||
SDL_Joystick *gGameController = NULL;
|
SDL_Joystick *gGameController = NULL;
|
||||||
|
|
||||||
|
// Texturas
|
||||||
|
LTexture *gGameBackgroundTexture;
|
||||||
|
LTexture *gTitleBackgroundTexture;
|
||||||
|
LTexture *gWhiteFontTexture;
|
||||||
|
LTexture *gBlackFontTexture;
|
||||||
|
LTexture *gMiscTexture;
|
||||||
|
|
||||||
// Manejador de eventos
|
// Manejador de eventos
|
||||||
SDL_Event eventHandler;
|
SDL_Event eventHandler;
|
||||||
|
|
||||||
// El jugador
|
// El jugador
|
||||||
Player player;
|
Player *player;
|
||||||
|
|
||||||
// Vector con los objetos globo
|
// Vector con los objetos globo
|
||||||
Balloon balloon[50];
|
Balloon *balloon[50];
|
||||||
#ifdef TEST
|
#ifdef TEST
|
||||||
Balloon balloonTest;
|
Balloon balloonTest;
|
||||||
Bullet bulletTest;
|
Bullet bulletTest;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Vector con los objetos bala
|
// Vector con los objetos bala
|
||||||
Bullet bullet[50];
|
Bullet *bullet[50];
|
||||||
|
|
||||||
// Fondo del juego
|
// Fondo del juego
|
||||||
Background gameBackground;
|
Background gameBackground;
|
||||||
@@ -169,10 +179,10 @@ private:
|
|||||||
Text blackText;
|
Text blackText;
|
||||||
|
|
||||||
// Menu de la pantalla de título
|
// Menu de la pantalla de título
|
||||||
Menu menuTitle;
|
Menu *menuTitle;
|
||||||
|
|
||||||
// Menú de la pantalla de pausa
|
// Menú de la pantalla de pausa
|
||||||
Menu menuPause;
|
Menu *menuPause;
|
||||||
|
|
||||||
// Indicador para el bucle principal
|
// Indicador para el bucle principal
|
||||||
Uint8 mGameStatus;
|
Uint8 mGameStatus;
|
||||||
|
|||||||
@@ -15,9 +15,4 @@ struct Circle
|
|||||||
Uint8 r;
|
Uint8 r;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//El renderizador de la ventana
|
|
||||||
SDL_Renderer *gRenderer = NULL;
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include "ltexture.h"
|
|
||||||
|
|
||||||
#ifndef GLOBALS2_H
|
|
||||||
#define GLOBALS2_H
|
|
||||||
|
|
||||||
//Texturas con gráficos
|
|
||||||
LTexture gPlayerTexture;
|
|
||||||
LTexture gGameBackgroundTexture;
|
|
||||||
LTexture gTitleBackgroundTexture;
|
|
||||||
LTexture gWhiteFontTexture;
|
|
||||||
LTexture gBlackFontTexture;
|
|
||||||
LTexture gMenuTexture;
|
|
||||||
LTexture gBalloonTexture;
|
|
||||||
LTexture gBulletTexture;
|
|
||||||
LTexture gMiscTexture;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
#include "ltexture.h"
|
#include "ltexture.h"
|
||||||
|
|
||||||
LTexture::LTexture()
|
LTexture::LTexture(SDL_Renderer *gRenderer)
|
||||||
{
|
{
|
||||||
|
this->gRenderer = gRenderer;
|
||||||
|
|
||||||
// Initialize
|
// Initialize
|
||||||
mTexture = NULL;
|
mTexture = NULL;
|
||||||
mWidth = 0;
|
mWidth = 0;
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ class LTexture
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// Initializes variables
|
// Initializes variables
|
||||||
LTexture();
|
LTexture(SDL_Renderer *gRenderer);
|
||||||
|
|
||||||
// Deallocates memory
|
// Deallocates memory
|
||||||
~LTexture();
|
~LTexture();
|
||||||
@@ -55,6 +55,9 @@ class LTexture
|
|||||||
Uint32 getPixel32(unsigned int x, unsigned int y);
|
Uint32 getPixel32(unsigned int x, unsigned int y);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// El renderizador de la ventana
|
||||||
|
SDL_Renderer *gRenderer = NULL;
|
||||||
|
|
||||||
// The actual hardware texture
|
// The actual hardware texture
|
||||||
SDL_Texture *mTexture;
|
SDL_Texture *mTexture;
|
||||||
void *mPixels;
|
void *mPixels;
|
||||||
|
|||||||
@@ -43,7 +43,6 @@ un tipo asociado diferente a NO_KIND
|
|||||||
#include "const.h"
|
#include "const.h"
|
||||||
#include "gamedirector.h"
|
#include "gamedirector.h"
|
||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
#include "globals2.h"
|
|
||||||
#include "ltexture.h"
|
#include "ltexture.h"
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
#include "player.h"
|
#include "player.h"
|
||||||
@@ -57,6 +56,9 @@ un tipo asociado diferente a NO_KIND
|
|||||||
// La ventana donde dibujamos
|
// La ventana donde dibujamos
|
||||||
SDL_Window *gWindow = NULL;
|
SDL_Window *gWindow = NULL;
|
||||||
|
|
||||||
|
// El renderizador de la ventana
|
||||||
|
SDL_Renderer *gRenderer = NULL;
|
||||||
|
|
||||||
// Arranca SDL y crea la ventana
|
// Arranca SDL y crea la ventana
|
||||||
bool init();
|
bool init();
|
||||||
|
|
||||||
@@ -131,91 +133,9 @@ bool init()
|
|||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Carga todos los recursos
|
|
||||||
bool loadMedia()
|
|
||||||
{
|
|
||||||
//Indicador de éxito en la carga
|
|
||||||
bool success = true;
|
|
||||||
|
|
||||||
//Carga los gráficos del jugador
|
|
||||||
if (!gPlayerTexture.loadFromFile("media/gfx/player.png"))
|
|
||||||
{
|
|
||||||
printf("Failed to load player texture!\n");
|
|
||||||
success = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Carga los gráficos de los globos
|
|
||||||
if (!gBalloonTexture.loadFromFile("media/gfx/balloon.png"))
|
|
||||||
{
|
|
||||||
printf("Failed to load balloon texture!\n");
|
|
||||||
success = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Carga los gráficos de las balas
|
|
||||||
if (!gBulletTexture.loadFromFile("media/gfx/bullet.png"))
|
|
||||||
{
|
|
||||||
printf("Failed to load bullet texture!\n");
|
|
||||||
success = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Carga los gráficos del fondo del juego
|
|
||||||
if (!gGameBackgroundTexture.loadFromFile("media/gfx/background.png"))
|
|
||||||
{
|
|
||||||
printf("Failed to load game background texture!\n");
|
|
||||||
success = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Carga los gráficos del fondo de la pantalla de titulo
|
|
||||||
if (!gTitleBackgroundTexture.loadFromFile("media/gfx/title.png"))
|
|
||||||
{
|
|
||||||
printf("Failed to load title texture!\n");
|
|
||||||
success = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Carga varios gráficos para varios propósitos
|
|
||||||
if (!gMiscTexture.loadFromFile("media/gfx/misc.png"))
|
|
||||||
{
|
|
||||||
printf("Failed to load misc texture!\n");
|
|
||||||
success = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Carga los gráficos para el menu
|
|
||||||
if (!gMenuTexture.loadFromFile("media/gfx/menu.png"))
|
|
||||||
{
|
|
||||||
printf("Failed to load menu texture!\n");
|
|
||||||
success = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Carga los gráficos para el texto blanco
|
|
||||||
if (!gWhiteFontTexture.loadFromFile("media/gfx/white_font.png"))
|
|
||||||
{
|
|
||||||
printf("Failed to load white font texture!\n");
|
|
||||||
success = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Carga los gráficos para el texto negro
|
|
||||||
if (!gBlackFontTexture.loadFromFile("media/gfx/black_font.png"))
|
|
||||||
{
|
|
||||||
printf("Failed to load black font texture!\n");
|
|
||||||
success = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return success;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Libera todos los recursos y cierra SDL
|
// Libera todos los recursos y cierra SDL
|
||||||
void close()
|
void close()
|
||||||
{
|
{
|
||||||
//Libera todas las imagenes
|
|
||||||
gPlayerTexture.free();
|
|
||||||
gGameBackgroundTexture.free();
|
|
||||||
gTitleBackgroundTexture.free();
|
|
||||||
gWhiteFontTexture.free();
|
|
||||||
gBlackFontTexture.free();
|
|
||||||
gMenuTexture.free();
|
|
||||||
gBalloonTexture.free();
|
|
||||||
gMiscTexture.free();
|
|
||||||
|
|
||||||
// Destruye la ventana
|
// Destruye la ventana
|
||||||
SDL_DestroyRenderer(gRenderer);
|
SDL_DestroyRenderer(gRenderer);
|
||||||
SDL_DestroyWindow(gWindow);
|
SDL_DestroyWindow(gWindow);
|
||||||
@@ -237,15 +157,9 @@ int main(int argc, char *args[])
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//Carga los recursos
|
|
||||||
if (!loadMedia())
|
|
||||||
{
|
|
||||||
printf("Failed to load media!\n");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
// Crea el objeto gameDirector
|
// Crea el objeto gameDirector
|
||||||
GameDirector gameDirector;
|
GameDirector gameDirector(gRenderer);
|
||||||
|
|
||||||
// Inicializa el objeto gameDirector
|
// Inicializa el objeto gameDirector
|
||||||
gameDirector.init();
|
gameDirector.init();
|
||||||
|
|||||||
@@ -1,11 +1,26 @@
|
|||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
Menu::Menu()
|
Menu::Menu(SDL_Renderer *gRenderer)
|
||||||
{
|
{
|
||||||
|
this->gRenderer = gRenderer;
|
||||||
|
|
||||||
|
gMenuTexture = new LTexture(gRenderer);
|
||||||
|
// Carga los gráficos para el menu
|
||||||
|
if (!gMenuTexture->loadFromFile("media/gfx/menu.png"))
|
||||||
|
{
|
||||||
|
printf("Failed to load menu texture!\n");
|
||||||
|
}
|
||||||
|
|
||||||
init(0, 0, 0, MENU_BACKGROUND_SOLID);
|
init(0, 0, 0, MENU_BACKGROUND_SOLID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Destructor
|
||||||
|
Menu::~Menu()
|
||||||
|
{
|
||||||
|
gMenuTexture->free();
|
||||||
|
}
|
||||||
|
|
||||||
// Inicializador
|
// Inicializador
|
||||||
void Menu::init(int x, int y, int offset_sprite_selector, int backgroundType)
|
void Menu::init(int x, int y, int offset_sprite_selector, int backgroundType)
|
||||||
{
|
{
|
||||||
@@ -29,7 +44,7 @@ void Menu::init(int x, int y, int offset_sprite_selector, int backgroundType)
|
|||||||
mSelectorSprite.setHeight(8);
|
mSelectorSprite.setHeight(8);
|
||||||
mSelectorSprite.setPosX(0);
|
mSelectorSprite.setPosX(0);
|
||||||
mSelectorSprite.setPosY(0);
|
mSelectorSprite.setPosY(0);
|
||||||
mSelectorSprite.setTexture(gMenuTexture);
|
mSelectorSprite.setTexture(*gMenuTexture);
|
||||||
mSelectorSprite.setSpriteClip(offset_sprite_selector, 0, mSelectorSprite.getWidth(), mSelectorSprite.getHeight());
|
mSelectorSprite.setSpriteClip(offset_sprite_selector, 0, mSelectorSprite.getWidth(), mSelectorSprite.getHeight());
|
||||||
|
|
||||||
// Elementos del menu
|
// Elementos del menu
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
#include "sprite.h"
|
#include "sprite.h"
|
||||||
#include "const.h"
|
#include "const.h"
|
||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
#include "globals2.h"
|
|
||||||
#include "text.h"
|
#include "text.h"
|
||||||
|
|
||||||
#ifndef MENU_H
|
#ifndef MENU_H
|
||||||
@@ -14,7 +13,10 @@ class Menu
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
Menu();
|
Menu(SDL_Renderer *gRenderer);
|
||||||
|
|
||||||
|
// Destructor
|
||||||
|
~Menu();
|
||||||
|
|
||||||
// Inicializador
|
// Inicializador
|
||||||
void init(int x, int y, int offset_sprite_selector, int backgroundType);
|
void init(int x, int y, int offset_sprite_selector, int backgroundType);
|
||||||
@@ -56,6 +58,11 @@ public:
|
|||||||
void addItem(std::string text);
|
void addItem(std::string text);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// El renderizador de la ventana
|
||||||
|
SDL_Renderer *gRenderer;
|
||||||
|
|
||||||
|
LTexture *gMenuTexture;
|
||||||
|
|
||||||
// Posicion X/Y del texto del primer elemento del menu
|
// Posicion X/Y del texto del primer elemento del menu
|
||||||
int mPosX;
|
int mPosX;
|
||||||
int mPosY;
|
int mPosY;
|
||||||
|
|||||||
@@ -1,11 +1,27 @@
|
|||||||
#include "player.h"
|
#include "player.h"
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
Player::Player()
|
Player::Player(SDL_Renderer *gRenderer)
|
||||||
{
|
{
|
||||||
|
this->gRenderer = gRenderer;
|
||||||
|
|
||||||
|
gPlayerTexture = new LTexture(gRenderer);
|
||||||
|
|
||||||
|
// Carga los gráficos del jugador
|
||||||
|
if (!gPlayerTexture->loadFromFile("media/gfx/player.png"))
|
||||||
|
{
|
||||||
|
printf("Failed to load player texture!\n");
|
||||||
|
}
|
||||||
|
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Destructor
|
||||||
|
Player::~Player()
|
||||||
|
{
|
||||||
|
gPlayerTexture->free();
|
||||||
|
}
|
||||||
|
|
||||||
// Iniciador
|
// Iniciador
|
||||||
void Player::init()
|
void Player::init()
|
||||||
{
|
{
|
||||||
@@ -52,7 +68,7 @@ void Player::init()
|
|||||||
mSprite.setPosY(mPosY);
|
mSprite.setPosY(mPosY);
|
||||||
|
|
||||||
// Set sprite sheet
|
// Set sprite sheet
|
||||||
mSprite.setTexture(gPlayerTexture);
|
mSprite.setTexture(*gPlayerTexture);
|
||||||
|
|
||||||
// Set status
|
// Set status
|
||||||
mStatus = PLAYER_STATE_STOPPED;
|
mStatus = PLAYER_STATE_STOPPED;
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
#include "spriteanimated.h"
|
#include "spriteanimated.h"
|
||||||
#include "const.h"
|
#include "const.h"
|
||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
#include "globals2.h"
|
|
||||||
|
|
||||||
#ifndef PLAYER_H
|
#ifndef PLAYER_H
|
||||||
#define PLAYER_H
|
#define PLAYER_H
|
||||||
@@ -13,7 +12,10 @@ class Player
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
Player();
|
Player(SDL_Renderer *gRenderer);
|
||||||
|
|
||||||
|
// DEstructor
|
||||||
|
~Player();
|
||||||
|
|
||||||
// Iniciador
|
// Iniciador
|
||||||
void init();
|
void init();
|
||||||
@@ -70,6 +72,11 @@ public:
|
|||||||
Circle &getCollider();
|
Circle &getCollider();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// El renderizador de la ventana
|
||||||
|
SDL_Renderer *gRenderer;
|
||||||
|
|
||||||
|
LTexture *gPlayerTexture;
|
||||||
|
|
||||||
// Posición X, Y del jugador
|
// Posición X, Y del jugador
|
||||||
float mPosX;
|
float mPosX;
|
||||||
int mPosY;
|
int mPosY;
|
||||||
|
|||||||
@@ -51,7 +51,6 @@ public:
|
|||||||
// Establece el valor de la variable
|
// Establece el valor de la variable
|
||||||
void setTexture(LTexture &texture);
|
void setTexture(LTexture &texture);
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Posición X,Y donde dibujar el sprite
|
// Posición X,Y donde dibujar el sprite
|
||||||
int mPosX;
|
int mPosX;
|
||||||
|
|||||||
@@ -38,7 +38,8 @@ void Text::init(LTexture *texture)
|
|||||||
|
|
||||||
// Escribe el texto en pantalla
|
// Escribe el texto en pantalla
|
||||||
void Text::write(int x, int y, std::string text)
|
void Text::write(int x, int y, std::string text)
|
||||||
{;
|
{
|
||||||
|
;
|
||||||
for (Uint8 i = 0; i < text.length(); ++i)
|
for (Uint8 i = 0; i < text.length(); ++i)
|
||||||
{
|
{
|
||||||
mSprite.setSpriteClip(mOffset[int(text[i])].x, mOffset[int(text[i])].y, 8, 8);
|
mSprite.setSpriteClip(mOffset[int(text[i])].x, mOffset[int(text[i])].y, 8, 8);
|
||||||
|
|||||||
BIN
super_pang_clone_linux
Normal file
BIN
super_pang_clone_linux
Normal file
Binary file not shown.
Reference in New Issue
Block a user