Me voy a la cama. Sigo con la reescritura de todo el código
This commit is contained in:
1 parent
35e7abcd3c
commit
c8bebfd2d9
74 files changed
+365
-379
No files matched your search
Binary file not shown.
File renamed without changes.
File renamed without changes.
Binary file not shown.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+8
-12
@@ -2,22 +2,11 @@
|
||||
#include "balloon.h"
|
||||
|
||||
// Constructor
|
||||
Balloon::Balloon()
|
||||
Balloon::Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 creationtimer, LTexture *texture, SDL_Renderer *renderer)
|
||||
{
|
||||
mSprite = new AnimatedSprite();
|
||||
disable();
|
||||
}
|
||||
|
||||
// Destructor
|
||||
Balloon::~Balloon()
|
||||
{
|
||||
delete mSprite;
|
||||
mSprite = nullptr;
|
||||
}
|
||||
|
||||
// Inicializador
|
||||
void Balloon::init(float x, float y, Uint8 kind, float velx, float speed, Uint16 creationtimer, LTexture *texture, SDL_Renderer *renderer)
|
||||
{
|
||||
const Uint8 NUM_FRAMES_BALLON = 10;
|
||||
const Uint8 NUM_FRAMES_BALLON_POP = 12;
|
||||
const Uint8 NUM_FRAMES_BALLON_BORN = 10;
|
||||
@@ -435,6 +424,13 @@ void Balloon::init(float x, float y, Uint8 kind, float velx, float speed, Uint16
|
||||
mSprite->setSpriteClip(mSprite->getAnimationClip(0, 0));
|
||||
}
|
||||
|
||||
// Destructor
|
||||
Balloon::~Balloon()
|
||||
{
|
||||
delete mSprite;
|
||||
mSprite = nullptr;
|
||||
}
|
||||
|
||||
// Centra el globo en la posición X
|
||||
void Balloon::allignTo(int x)
|
||||
{
|
||||
|
||||
+1
-4
@@ -146,14 +146,11 @@ private:
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
Balloon();
|
||||
Balloon(float x, float y, Uint8 kind, float velx, float speed, Uint16 creationtimer, LTexture *texture, SDL_Renderer *renderer);
|
||||
|
||||
// Destructor
|
||||
~Balloon();
|
||||
|
||||
// Inicializador
|
||||
void init(float x, float y, Uint8 kind, float velx, float speed, Uint16 creationtimer, LTexture *texture, SDL_Renderer *renderer);
|
||||
|
||||
// Centra el globo en la posición X
|
||||
void allignTo(int x);
|
||||
|
||||
|
||||
+57
-59
@@ -177,75 +177,73 @@ bool Director::initSDL()
|
||||
// Crea el indice de ficheros
|
||||
bool Director::setFileList()
|
||||
{
|
||||
// Ficheros binarios
|
||||
asset->add("data/score.bin", t_data, false);
|
||||
asset->add("data/demo.bin", t_data);
|
||||
asset->add("data/config.bin", t_data, false);
|
||||
// Ficheros de configuración
|
||||
asset->add("data/config/score.bin", t_data, false);
|
||||
asset->add("data/config/demo.bin", t_data);
|
||||
asset->add("data/config/config.bin", t_data, false);
|
||||
asset->add("data/config/gamecontrollerdb.txt", t_data);
|
||||
|
||||
// Musicas
|
||||
asset->add("media/music/intro.ogg", t_music);
|
||||
asset->add("media/music/playing.ogg", t_music);
|
||||
asset->add("media/music/title.ogg", t_music);
|
||||
asset->add("data/music/intro.ogg", t_music);
|
||||
asset->add("data/music/playing.ogg", t_music);
|
||||
asset->add("data/music/title.ogg", t_music);
|
||||
|
||||
// Sonidos
|
||||
asset->add("media/sound/balloon.wav", t_sound);
|
||||
asset->add("media/sound/bubble1.wav", t_sound);
|
||||
asset->add("media/sound/bubble2.wav", t_sound);
|
||||
asset->add("media/sound/bubble3.wav", t_sound);
|
||||
asset->add("media/sound/bubble4.wav", t_sound);
|
||||
asset->add("media/sound/bullet.wav", t_sound);
|
||||
asset->add("media/sound/coffeeout.wav", t_sound);
|
||||
asset->add("media/sound/hiscore.wav", t_sound);
|
||||
asset->add("media/sound/itemdrop.wav", t_sound);
|
||||
asset->add("media/sound/itempickup.wav", t_sound);
|
||||
asset->add("media/sound/menu_cancel.wav", t_sound);
|
||||
asset->add("media/sound/menu_move.wav", t_sound);
|
||||
asset->add("media/sound/menu_select.wav", t_sound);
|
||||
asset->add("media/sound/player_collision.wav", t_sound);
|
||||
asset->add("media/sound/stage_change.wav", t_sound);
|
||||
asset->add("media/sound/title.wav", t_sound);
|
||||
asset->add("media/sound/clock.wav", t_sound);
|
||||
asset->add("media/sound/powerball.wav", t_sound);
|
||||
asset->add("data/sound/balloon.wav", t_sound);
|
||||
asset->add("data/sound/bubble1.wav", t_sound);
|
||||
asset->add("data/sound/bubble2.wav", t_sound);
|
||||
asset->add("data/sound/bubble3.wav", t_sound);
|
||||
asset->add("data/sound/bubble4.wav", t_sound);
|
||||
asset->add("data/sound/bullet.wav", t_sound);
|
||||
asset->add("data/sound/coffeeout.wav", t_sound);
|
||||
asset->add("data/sound/hiscore.wav", t_sound);
|
||||
asset->add("data/sound/itemdrop.wav", t_sound);
|
||||
asset->add("data/sound/itempickup.wav", t_sound);
|
||||
asset->add("data/sound/menu_cancel.wav", t_sound);
|
||||
asset->add("data/sound/menu_move.wav", t_sound);
|
||||
asset->add("data/sound/menu_select.wav", t_sound);
|
||||
asset->add("data/sound/player_collision.wav", t_sound);
|
||||
asset->add("data/sound/stage_change.wav", t_sound);
|
||||
asset->add("data/sound/title.wav", t_sound);
|
||||
asset->add("data/sound/clock.wav", t_sound);
|
||||
asset->add("data/sound/powerball.wav", t_sound);
|
||||
|
||||
// Texturas
|
||||
asset->add("media/gfx/balloon.png", t_bitmap);
|
||||
asset->add("media/gfx/bullet.png", t_bitmap);
|
||||
asset->add("media/gfx/game_bg.png", t_bitmap);
|
||||
asset->add("media/gfx/game_text.png", t_bitmap);
|
||||
asset->add("media/gfx/intro.png", t_bitmap);
|
||||
asset->add("media/gfx/items.png", t_bitmap);
|
||||
asset->add("media/gfx/logo.png", t_bitmap);
|
||||
asset->add("media/gfx/player1_body.png", t_bitmap);
|
||||
asset->add("media/gfx/player1_death.png", t_bitmap);
|
||||
asset->add("media/gfx/player1_legs.png", t_bitmap);
|
||||
asset->add("media/gfx/title.png", t_bitmap);
|
||||
asset->add("media/gfx/player1_head.png", t_bitmap);
|
||||
asset->add("media/gfx/player2_body.png", t_bitmap);
|
||||
asset->add("media/gfx/player2_death.png", t_bitmap);
|
||||
asset->add("media/gfx/player2_legs.png", t_bitmap);
|
||||
asset->add("media/gfx/player2_head.png", t_bitmap);
|
||||
asset->add("data/gfx/balloon.png", t_bitmap);
|
||||
asset->add("data/gfx/bullet.png", t_bitmap);
|
||||
asset->add("data/gfx/game_bg.png", t_bitmap);
|
||||
asset->add("data/gfx/game_text.png", t_bitmap);
|
||||
asset->add("data/gfx/intro.png", t_bitmap);
|
||||
asset->add("data/gfx/items.png", t_bitmap);
|
||||
asset->add("data/gfx/logo.png", t_bitmap);
|
||||
asset->add("data/gfx/player1_body.png", t_bitmap);
|
||||
asset->add("data/gfx/player1_death.png", t_bitmap);
|
||||
asset->add("data/gfx/player1_legs.png", t_bitmap);
|
||||
asset->add("data/gfx/title.png", t_bitmap);
|
||||
asset->add("data/gfx/player1_head.png", t_bitmap);
|
||||
asset->add("data/gfx/player2_body.png", t_bitmap);
|
||||
asset->add("data/gfx/player2_death.png", t_bitmap);
|
||||
asset->add("data/gfx/player2_legs.png", t_bitmap);
|
||||
asset->add("data/gfx/player2_head.png", t_bitmap);
|
||||
|
||||
// Fuentes
|
||||
asset->add("media/font/8bithud.png", t_font);
|
||||
asset->add("media/font/8bithud.txt", t_font);
|
||||
asset->add("media/font/nokia.png", t_font);
|
||||
asset->add("media/font/nokia_big2.png", t_font);
|
||||
asset->add("media/font/nokia.txt", t_font);
|
||||
asset->add("media/font/nokia2.png", t_font);
|
||||
asset->add("media/font/nokia2.txt", t_font);
|
||||
asset->add("media/font/nokia_big2.txt", t_font);
|
||||
asset->add("media/font/smb2_big.png", t_font);
|
||||
asset->add("media/font/smb2_big.txt", t_font);
|
||||
asset->add("media/font/smb2.png", t_font);
|
||||
asset->add("media/font/smb2.txt", t_font);
|
||||
asset->add("data/font/8bithud.png", t_font);
|
||||
asset->add("data/font/8bithud.txt", t_font);
|
||||
asset->add("data/font/nokia.png", t_font);
|
||||
asset->add("data/font/nokia_big2.png", t_font);
|
||||
asset->add("data/font/nokia.txt", t_font);
|
||||
asset->add("data/font/nokia2.png", t_font);
|
||||
asset->add("data/font/nokia2.txt", t_font);
|
||||
asset->add("data/font/nokia_big2.txt", t_font);
|
||||
asset->add("data/font/smb2_big.png", t_font);
|
||||
asset->add("data/font/smb2_big.txt", t_font);
|
||||
asset->add("data/font/smb2.png", t_font);
|
||||
asset->add("data/font/smb2.txt", t_font);
|
||||
|
||||
// Textos
|
||||
asset->add("media/lang/es_ES.txt", t_lang);
|
||||
asset->add("media/lang/en_UK.txt", t_lang);
|
||||
asset->add("media/lang/ba_BA.txt", t_lang);
|
||||
|
||||
// DATA
|
||||
asset->add("data/gamecontrollerdb.txt", t_data);
|
||||
asset->add("data/lang/es_ES.txt", t_lang);
|
||||
asset->add("data/lang/en_UK.txt", t_lang);
|
||||
asset->add("data/lang/ba_BA.txt", t_lang);
|
||||
|
||||
return asset->check();
|
||||
}
|
||||
|
||||
+177
-159
@@ -24,7 +24,21 @@ Game::Game(int numPlayers, int currentStage, SDL_Renderer *renderer, Screen *scr
|
||||
mDifficulty = mOptions->difficulty;
|
||||
|
||||
// Crea los objetos
|
||||
for (int i = 0; i < mNumPlayers; i++)
|
||||
// Vector de jugadores
|
||||
if (mNumPlayers == 1)
|
||||
{
|
||||
Player *player = new Player(PLAY_AREA_CENTER_X - 11, PLAY_AREA_BOTTOM - 24, mTexturePlayer1Legs, mTexturePlayer1Body, mTexturePlayer1Head, mTexturePlayer1Death, mRenderer);
|
||||
players.push_back(player);
|
||||
}
|
||||
|
||||
else if (mNumPlayers == 2)
|
||||
{
|
||||
Player *player1 = new Player((PLAY_AREA_CENTER_FIRST_QUARTER_X * ((0 * 2) + 1)) - 11, PLAY_AREA_BOTTOM - 24, mTexturePlayer1Legs, mTexturePlayer1Body, mTexturePlayer1Head, mTexturePlayer1Death, mRenderer);
|
||||
Player *player2 = new Player((PLAY_AREA_CENTER_FIRST_QUARTER_X * ((1 * 2) + 1)) - 11, PLAY_AREA_BOTTOM - 24, mTexturePlayer2Legs, mTexturePlayer2Body, mTexturePlayer2Head, mTexturePlayer2Death, mRenderer);
|
||||
players.push_back(player1);
|
||||
players.push_back(player2);
|
||||
}
|
||||
/*for (int i = 0; i < mNumPlayers; i++)
|
||||
{
|
||||
mPlayer[i] = new Player();
|
||||
}
|
||||
@@ -41,13 +55,13 @@ Game::Game(int numPlayers, int currentStage, SDL_Renderer *renderer, Screen *scr
|
||||
|
||||
for (int i = 0; i < MAX_ITEMS; i++)
|
||||
{
|
||||
mItem[i] = new Item();
|
||||
mItem[i] = new Item(mTextureItems, mRenderer);
|
||||
}
|
||||
|
||||
for (int i = 0; i < MAX_SMART_SPRITES; i++)
|
||||
{
|
||||
mSmartSprite[i] = new SmartSprite();
|
||||
}
|
||||
mSmartSprite[i] = new SmartSprite(nullptr, mRenderer);
|
||||
}*/
|
||||
|
||||
mTextureBalloon = new LTexture(mRenderer, mAsset->get("balloon.png"));
|
||||
mTextureBullet = new LTexture(mRenderer, mAsset->get("bullet.png"));
|
||||
@@ -81,9 +95,11 @@ Game::Game(int numPlayers, int currentStage, SDL_Renderer *renderer, Screen *scr
|
||||
mClouds1b = new MovingSprite(256, 0, 256, 52, -0.4f, 0.0f, 0.0f, 0.0f, mTextureGameBG, mRenderer);
|
||||
mClouds2a = new MovingSprite(0, 52, 256, 32, -0.2f, 0.0f, 0.0f, 0.0f, mTextureGameBG, mRenderer);
|
||||
mClouds2b = new MovingSprite(256, 52, 256, 32, -0.2f, 0.0f, 0.0f, 0.0f, mTextureGameBG, mRenderer);
|
||||
m1000Bitmap = new SmartSprite();
|
||||
m2500Bitmap = new SmartSprite();
|
||||
m5000Bitmap = new SmartSprite();
|
||||
|
||||
m1000Bitmap = new SmartSprite(mTextureGameText, mRenderer);
|
||||
m2500Bitmap = new SmartSprite(mTextureGameText, mRenderer);
|
||||
m5000Bitmap = new SmartSprite(mTextureGameText, mRenderer);
|
||||
|
||||
mSpriteBackground = new Sprite(0, 0, GAME_WIDTH, GAME_HEIGHT, mTextureGameBG, mRenderer);
|
||||
mSpriteGetReady = new Sprite(0, PLAY_AREA_CENTER_Y - 10, 109, 20, mTextureGameText, mRenderer);
|
||||
mSpriteGradient = new Sprite(0, 0, GAME_WIDTH, GAME_HEIGHT, mTextureGameBG, mRenderer);
|
||||
@@ -105,35 +121,30 @@ Game::~Game()
|
||||
mLang = nullptr;
|
||||
mInput = nullptr;
|
||||
|
||||
for (int i = 0; i < mNumPlayers; i++)
|
||||
for (auto player : players)
|
||||
{
|
||||
delete mPlayer[i];
|
||||
mPlayer[i] = nullptr;
|
||||
}
|
||||
delete player;
|
||||
};
|
||||
|
||||
for (int i = 0; i < MAX_BALLOONS; i++)
|
||||
for (auto ballon : ballons)
|
||||
{
|
||||
delete mBalloon[i];
|
||||
mBalloon[i] = nullptr;
|
||||
}
|
||||
delete ballon;
|
||||
};
|
||||
|
||||
for (int i = 0; i < MAX_BULLETS; i++)
|
||||
for (auto bullet : bullets)
|
||||
{
|
||||
delete mBullet[i];
|
||||
mBullet[i] = nullptr;
|
||||
}
|
||||
delete bullet;
|
||||
};
|
||||
|
||||
for (int i = 0; i < MAX_ITEMS; i++)
|
||||
for (auto item : items)
|
||||
{
|
||||
delete mItem[i];
|
||||
mItem[i] = nullptr;
|
||||
}
|
||||
delete item;
|
||||
};
|
||||
|
||||
for (int i = 0; i < MAX_SMART_SPRITES; i++)
|
||||
for (auto smartSprite : smartSprites)
|
||||
{
|
||||
delete mSmartSprite[i];
|
||||
mSmartSprite[i] = nullptr;
|
||||
}
|
||||
delete smartSprite;
|
||||
};
|
||||
|
||||
mTextureBalloon->unload();
|
||||
delete mTextureBalloon;
|
||||
@@ -277,7 +288,9 @@ void Game::initSin()
|
||||
{
|
||||
// Vector con los valores del seno para 360 grados
|
||||
for (int i = 0; i < 360; i++)
|
||||
{
|
||||
mSin[i] = SDL_sinf((float)i * 3.14f / 180.0f);
|
||||
}
|
||||
}
|
||||
|
||||
// Inicializa las variables necesarias para la sección 'Game'
|
||||
@@ -428,18 +441,6 @@ void Game::init()
|
||||
mSpriteScoreBoard->setSpriteClip(0, 160, 256, 32);
|
||||
mSpritePowerMeter->setSpriteClip(256, 192 - 8, 40, 8);
|
||||
|
||||
// Vector de jugadores
|
||||
if (mNumPlayers == 1)
|
||||
{
|
||||
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);
|
||||
mPlayer[1]->init((PLAY_AREA_CENTER_FIRST_QUARTER_X * ((1 * 2) + 1)) - 11, PLAY_AREA_BOTTOM - 24, mTexturePlayer2Legs, mTexturePlayer2Body, mTexturePlayer2Head, mTexturePlayer2Death, mRenderer);
|
||||
}
|
||||
|
||||
// Establece a cero todos los valores del vector de objetos globo
|
||||
resetBalloons();
|
||||
|
||||
@@ -459,7 +460,7 @@ void Game::init()
|
||||
mSpriteGetReady->setSpriteClip(0, 0, 109, 20);
|
||||
|
||||
// Inicializa el bitmap de 1000 puntos
|
||||
m1000Bitmap->init(mTextureGameText, mRenderer);
|
||||
m1000Bitmap->init();
|
||||
m1000Bitmap->setPosX(0);
|
||||
m1000Bitmap->setPosY(0);
|
||||
m1000Bitmap->setWidth(26);
|
||||
@@ -475,7 +476,7 @@ void Game::init()
|
||||
m1000Bitmap->setDestY(0);
|
||||
|
||||
// Inicializa el bitmap de 2500 puntos
|
||||
m2500Bitmap->init(mTextureGameText, mRenderer);
|
||||
m2500Bitmap->init();
|
||||
m2500Bitmap->setPosX(0);
|
||||
m2500Bitmap->setPosY(0);
|
||||
m2500Bitmap->setWidth(28);
|
||||
@@ -491,7 +492,7 @@ void Game::init()
|
||||
m2500Bitmap->setDestY(0);
|
||||
|
||||
// Inicializa el bitmap de 5000 puntos
|
||||
m5000Bitmap->init(mTextureGameText, mRenderer);
|
||||
m5000Bitmap->init();
|
||||
m5000Bitmap->setPosX(0);
|
||||
m5000Bitmap->setPosY(0);
|
||||
m5000Bitmap->setWidth(28);
|
||||
@@ -1497,11 +1498,12 @@ void Game::setHiScore(Uint32 score)
|
||||
void Game::updateHiScore()
|
||||
{
|
||||
// Si la puntuación actual es mayor que la máxima puntuación
|
||||
for (int i = 0; i < mNumPlayers; i++)
|
||||
if (mPlayer[i]->getScore() > mHiScore)
|
||||
for (auto player : players)
|
||||
// for (int i = 0; i < mNumPlayers; i++)
|
||||
if (player->getScore() > mHiScore)
|
||||
{
|
||||
// Actualiza la máxima puntuación
|
||||
mHiScore = mPlayer[i]->getScore();
|
||||
mHiScore = player->getScore();
|
||||
|
||||
// Almacena la máxima puntuación en el fichero junto con un checksum
|
||||
mScoreDataFile[0] = mHiScore;
|
||||
@@ -1574,21 +1576,21 @@ void Game::renderScoreBoard()
|
||||
|
||||
// PLAYER1 - SCORE
|
||||
mTextScoreBoard->writeCentered(offsetLeft, offset1, mLang->getText(53));
|
||||
mTextScoreBoard->writeCentered(offsetLeft, offset2, updateScoreText(mPlayer[0]->getScore()));
|
||||
mTextScoreBoard->writeCentered(offsetLeft, offset2, updateScoreText(players[0]->getScore()));
|
||||
|
||||
// PLAYER1 - MULT
|
||||
mTextScoreBoard->writeCentered(offsetLeft, offset3, mLang->getText(55));
|
||||
mTextScoreBoard->writeCentered(offsetLeft, offset4, std::to_string(mPlayer[0]->getScoreMultiplier()).substr(0, 3));
|
||||
mTextScoreBoard->writeCentered(offsetLeft, offset4, std::to_string(players[0]->getScoreMultiplier()).substr(0, 3));
|
||||
|
||||
if (mNumPlayers == 2)
|
||||
{
|
||||
// PLAYER2 - SCORE
|
||||
mTextScoreBoard->writeCentered(offsetRight, offset1, mLang->getText(54));
|
||||
mTextScoreBoard->writeCentered(offsetRight, offset2, updateScoreText(mPlayer[1]->getScore()));
|
||||
mTextScoreBoard->writeCentered(offsetRight, offset2, updateScoreText(players[1]->getScore()));
|
||||
|
||||
// PLAYER2 - MULT
|
||||
mTextScoreBoard->writeCentered(offsetRight, offset3, mLang->getText(55));
|
||||
mTextScoreBoard->writeCentered(offsetRight, offset4, std::to_string(mPlayer[1]->getScoreMultiplier()).substr(0, 3));
|
||||
mTextScoreBoard->writeCentered(offsetRight, offset4, std::to_string(players[1]->getScoreMultiplier()).substr(0, 3));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1620,24 +1622,29 @@ void Game::renderScoreBoard()
|
||||
// Actualiza las variables del jugador
|
||||
void Game::updatePlayer()
|
||||
{
|
||||
for (int i = 0; i < mNumPlayers; i++)
|
||||
for (auto player : players)
|
||||
// for (int i = 0; i < mNumPlayers; i++)
|
||||
{
|
||||
mPlayer[i]->update();
|
||||
player->update();
|
||||
|
||||
// Comprueba la colisión entre el jugador y los globos
|
||||
if (checkPlayerBalloonCollision(i))
|
||||
if (checkPlayerBalloonCollision(player))
|
||||
{
|
||||
if (mPlayer[i]->isAlive())
|
||||
if (player->isAlive())
|
||||
{
|
||||
if (mDemo.enabled)
|
||||
{
|
||||
mSection = {PROG_SECTION_TITLE, TITLE_SECTION_INSTRUCTIONS};
|
||||
}
|
||||
else
|
||||
killPlayer(i);
|
||||
{
|
||||
killPlayer(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Comprueba las colisiones entre el jugador y los items
|
||||
checkPlayerItemCollision(i);
|
||||
checkPlayerItemCollision(player);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1657,11 +1664,12 @@ void Game::updateStage()
|
||||
destroyAllBalloons(); // Destruye a todos los enemigos
|
||||
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
|
||||
for (auto player : players)
|
||||
// for (int i = 0; i < mNumPlayers; i++) // Añade un millon de puntos a los jugadores que queden vivos
|
||||
{
|
||||
if (mPlayer[i]->isAlive())
|
||||
if (player->isAlive())
|
||||
{
|
||||
mPlayer[i]->addScore(1000000);
|
||||
player->addScore(1000000);
|
||||
}
|
||||
}
|
||||
updateHiScore();
|
||||
@@ -1696,47 +1704,48 @@ void Game::updateDeath()
|
||||
{
|
||||
// Comprueba si todos los jugadores estan muertos
|
||||
bool allAreDead = true;
|
||||
for (int i = 0; i < mNumPlayers; i++)
|
||||
for (auto player : players)
|
||||
// for (int i = 0; i < mNumPlayers; i++)
|
||||
{
|
||||
allAreDead &= (!mPlayer[i]->isAlive());
|
||||
allAreDead &= (!player->isAlive());
|
||||
|
||||
if (!mPlayer[i]->isAlive())
|
||||
if (!player->isAlive())
|
||||
{
|
||||
// Animación
|
||||
if ((mPlayer[i]->getDeathCounter() / 5) % 4 == 0)
|
||||
if ((player->getDeathCounter() / 5) % 4 == 0)
|
||||
{
|
||||
mSmartSprite[mPlayer[i]->mDeathIndex]->setSpriteClip(24 * 0, 24, 24, 24);
|
||||
smartSprites[player->mDeathIndex]->setSpriteClip(24 * 0, 24, 24, 24);
|
||||
}
|
||||
else if ((mPlayer[i]->getDeathCounter() / 5) % 4 == 1)
|
||||
else if ((player->getDeathCounter() / 5) % 4 == 1)
|
||||
{
|
||||
mSmartSprite[mPlayer[i]->mDeathIndex]->setSpriteClip(24 * 1, 24, 24, 24);
|
||||
smartSprites[player->mDeathIndex]->setSpriteClip(24 * 1, 24, 24, 24);
|
||||
}
|
||||
else if ((mPlayer[i]->getDeathCounter() / 5) % 4 == 2)
|
||||
else if ((player->getDeathCounter() / 5) % 4 == 2)
|
||||
{
|
||||
mSmartSprite[mPlayer[i]->mDeathIndex]->setSpriteClip(24 * 2, 24, 24, 24);
|
||||
smartSprites[player->mDeathIndex]->setSpriteClip(24 * 2, 24, 24, 24);
|
||||
}
|
||||
else if ((mPlayer[i]->getDeathCounter() / 5) % 4 == 3)
|
||||
else if ((player->getDeathCounter() / 5) % 4 == 3)
|
||||
{
|
||||
mSmartSprite[mPlayer[i]->mDeathIndex]->setSpriteClip(24 * 3, 24, 24, 24);
|
||||
smartSprites[player->mDeathIndex]->setSpriteClip(24 * 3, 24, 24, 24);
|
||||
}
|
||||
|
||||
// Rebote en los laterales
|
||||
if (mSmartSprite[mPlayer[i]->mDeathIndex]->getVelX() > 0)
|
||||
if (smartSprites[player->mDeathIndex]->getVelX() > 0)
|
||||
{
|
||||
if (mSmartSprite[mPlayer[i]->mDeathIndex]->getPosX() > (GAME_WIDTH - mSmartSprite[mPlayer[i]->mDeathIndex]->getWidth()))
|
||||
if (smartSprites[player->mDeathIndex]->getPosX() > (GAME_WIDTH - smartSprites[player->mDeathIndex]->getWidth()))
|
||||
{
|
||||
mSmartSprite[mPlayer[i]->mDeathIndex]->setPosX(GAME_WIDTH - mSmartSprite[mPlayer[i]->mDeathIndex]->getWidth());
|
||||
mSmartSprite[mPlayer[i]->mDeathIndex]->setVelX(mSmartSprite[mPlayer[i]->mDeathIndex]->getVelX() * (-1));
|
||||
mSmartSprite[mPlayer[i]->mDeathIndex]->setDestX(mSmartSprite[mPlayer[i]->mDeathIndex]->getDestX() * (-1));
|
||||
smartSprites[player->mDeathIndex]->setPosX(GAME_WIDTH - smartSprites[player->mDeathIndex]->getWidth());
|
||||
smartSprites[player->mDeathIndex]->setVelX(smartSprites[player->mDeathIndex]->getVelX() * (-1));
|
||||
smartSprites[player->mDeathIndex]->setDestX(smartSprites[player->mDeathIndex]->getDestX() * (-1));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mSmartSprite[mPlayer[i]->mDeathIndex]->getPosX() < 0)
|
||||
if (smartSprites[player->mDeathIndex]->getPosX() < 0)
|
||||
{
|
||||
mSmartSprite[mPlayer[i]->mDeathIndex]->setPosX(0);
|
||||
mSmartSprite[mPlayer[i]->mDeathIndex]->setVelX(mSmartSprite[mPlayer[i]->mDeathIndex]->getVelX() * (-1));
|
||||
mSmartSprite[mPlayer[i]->mDeathIndex]->setDestX(mSmartSprite[mPlayer[i]->mDeathIndex]->getDestX() * (-1));
|
||||
smartSprites[player->mDeathIndex]->setPosX(0);
|
||||
smartSprites[player->mDeathIndex]->setVelX(smartSprites[player->mDeathIndex]->getVelX() * (-1));
|
||||
smartSprites[player->mDeathIndex]->setDestX(smartSprites[player->mDeathIndex]->getDestX() * (-1));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1810,37 +1819,29 @@ void Game::renderDeathFade(int counter)
|
||||
// Actualiza los globos
|
||||
void Game::updateBalloons()
|
||||
{
|
||||
for (int i = 0; i < MAX_BALLOONS; i++)
|
||||
mBalloon[i]->update();
|
||||
for (auto balloon : balloons)
|
||||
// for (int i = 0; i < MAX_BALLOONS; i++)
|
||||
balloon->update();
|
||||
}
|
||||
|
||||
// Pinta en pantalla todos los globos activos
|
||||
void Game::renderBalloons()
|
||||
{
|
||||
for (int i = 0; i < MAX_BALLOONS; i++)
|
||||
for (auto balloon : balloons)
|
||||
// for (int i = 0; i < MAX_BALLOONS; i++)
|
||||
{
|
||||
mBalloon[i]->render();
|
||||
if ((mDebug.enabled) && (mBalloon[i]->isPopping() == false))
|
||||
mText->writeCentered(mBalloon[i]->getPosX() + (mBalloon[i]->getWidth() / 2), mBalloon[i]->getPosY() - 8, std::to_string(i));
|
||||
balloon->render();
|
||||
if ((mDebug.enabled) && (balloon->isPopping() == false))
|
||||
mText->writeCentered(balloon->getPosX() + (balloon->getWidth() / 2), balloon->getPosY() - 8, std::to_string(i));
|
||||
}
|
||||
}
|
||||
|
||||
// Devuelve el primer indice no activo del vector de globos
|
||||
Uint8 Game::getBalloonFreeIndex()
|
||||
{
|
||||
for (int i = 0; i < MAX_BALLOONS; i++)
|
||||
if (!mBalloon[i]->isEnabled())
|
||||
return i;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Crea un globo nuevo en el vector de globos
|
||||
Uint8 Game::createNewBalloon(float x, int y, Uint8 kind, float velx, float speed, Uint16 creationtimer, LTexture *texture)
|
||||
{
|
||||
const Uint8 index = getBalloonFreeIndex();
|
||||
mBalloon[index]->init(x, y, kind, velx, speed, creationtimer, texture, mRenderer);
|
||||
return index;
|
||||
Balloon *b = new Balloon(x, y, kind, velx, speed, creationtimer, texture, mRenderer);
|
||||
balloons.push_back(b);
|
||||
return (Uint8)(balloons.size() - 1);
|
||||
}
|
||||
|
||||
// Crea una PowerBall
|
||||
@@ -1855,7 +1856,9 @@ void Game::createPowerBall()
|
||||
const int x[3] = {left, center, right};
|
||||
const int posX = x[rand() % 3];
|
||||
|
||||
mBalloon[getBalloonFreeIndex()]->init(posX, posY, POWER_BALL, BALLOON_VELX_POSITIVE * (((rand() % 2) * 2) - 1), mEnemySpeed, 100, mTextureBalloon, mRenderer);
|
||||
Balloon *b = new Balloon(posX, posY, POWER_BALL, BALLOON_VELX_POSITIVE * (((rand() % 2) * 2) - 1), mEnemySpeed, 100, mTextureBalloon, mRenderer);
|
||||
balloons.push_back(b);
|
||||
|
||||
mPowerBallEnabled = true;
|
||||
mPowerBallCounter = POWERBALL_COUNTER;
|
||||
}
|
||||
@@ -1863,16 +1866,25 @@ void Game::createPowerBall()
|
||||
// Establece a cero todos los valores del vector de objetos globo
|
||||
void Game::resetBalloons()
|
||||
{
|
||||
for (int i = 0; i < MAX_BALLOONS; i++)
|
||||
mBalloon[i]->disable();
|
||||
for (auto balloon : balloons)
|
||||
// for (int i = 0; i < MAX_BALLOONS; i++)
|
||||
{
|
||||
balloon->disable();
|
||||
}
|
||||
}
|
||||
|
||||
// Establece la velocidad de los globos
|
||||
void Game::setBalloonSpeed(float speed)
|
||||
{
|
||||
for (int i = 0; i < MAX_BALLOONS; i++)
|
||||
if (mBalloon[i]->isEnabled())
|
||||
mBalloon[i]->setSpeed(speed);
|
||||
for (auto balloon : balloons)
|
||||
|
||||
// for (int i = 0; i < MAX_BALLOONS; i++)
|
||||
{
|
||||
if (balloon->isEnabled())
|
||||
{
|
||||
balloon->setSpeed(speed);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Incrementa la velocidad de los globos
|
||||
@@ -1951,7 +1963,7 @@ void Game::updateBalloonSpeed()
|
||||
}
|
||||
|
||||
// Explosiona un globo. Lo destruye y crea otros dos si es el caso
|
||||
void Game::popBalloon(Uint8 index)
|
||||
void Game::popBalloon(Balloon *balloon)
|
||||
{
|
||||
// Aumenta el poder de la fase
|
||||
increaseStageCurrentPower(1);
|
||||
@@ -2159,62 +2171,67 @@ bool Game::checkPlayerBalloonCollision(int index)
|
||||
}
|
||||
|
||||
// Comprueba la colisión entre el jugador y los items
|
||||
void Game::checkPlayerItemCollision(int index)
|
||||
void Game::checkPlayerItemCollision(Player *player)
|
||||
{
|
||||
if (mPlayer[index]->isAlive())
|
||||
for (int i = 0; i < MAX_ITEMS; i++)
|
||||
{
|
||||
if (mItem[i]->isEnabled())
|
||||
{
|
||||
if (checkCollision(mPlayer[index]->getCollider(), mItem[i]->getCollider()))
|
||||
{
|
||||
switch (mItem[i]->getClass())
|
||||
{
|
||||
case ITEM_POINTS_1_DISK:
|
||||
mPlayer[index]->addScore(1000);
|
||||
updateHiScore();
|
||||
createItemScoreSprite(mItem[i]->getPosX() + (mItem[i]->getWidth() / 2) - (m1000Bitmap->getWidth() / 2), mPlayer[index]->getPosY(), m1000Bitmap);
|
||||
JA_PlaySound(mSoundItemPickup);
|
||||
break;
|
||||
case ITEM_POINTS_2_GAVINA:
|
||||
mPlayer[index]->addScore(2500);
|
||||
updateHiScore();
|
||||
createItemScoreSprite(mItem[i]->getPosX() + (mItem[i]->getWidth() / 2) - (m2500Bitmap->getWidth() / 2), mPlayer[index]->getPosY(), m2500Bitmap);
|
||||
JA_PlaySound(mSoundItemPickup);
|
||||
break;
|
||||
case ITEM_POINTS_3_PACMAR:
|
||||
mPlayer[index]->addScore(5000);
|
||||
updateHiScore();
|
||||
createItemScoreSprite(mItem[i]->getPosX() + (mItem[i]->getWidth() / 2) - (m5000Bitmap->getWidth() / 2), mPlayer[index]->getPosY(), m5000Bitmap);
|
||||
JA_PlaySound(mSoundItemPickup);
|
||||
break;
|
||||
case ITEM_CLOCK:
|
||||
enableTimeStopItem();
|
||||
JA_PlaySound(mSoundItemPickup);
|
||||
break;
|
||||
case ITEM_COFFEE:
|
||||
if (mPlayer[index]->getCoffees() == 2)
|
||||
{
|
||||
mPlayer[index]->addScore(5000);
|
||||
updateHiScore();
|
||||
createItemScoreSprite(mItem[i]->getPosX() + (mItem[i]->getWidth() / 2) - (m5000Bitmap->getWidth() / 2), mPlayer[index]->getPosY(), m5000Bitmap);
|
||||
}
|
||||
mPlayer[index]->giveExtraHit();
|
||||
JA_PlaySound(mSoundItemPickup);
|
||||
break;
|
||||
case ITEM_COFFEE_MACHINE:
|
||||
mPlayer[index]->setPowerUp(true);
|
||||
JA_PlaySound(mSoundItemPickup);
|
||||
mCoffeeMachineEnabled = false;
|
||||
break;
|
||||
if (!player->isAlive())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
for (auto item : items)
|
||||
// for (int i = 0; i < MAX_ITEMS; i++)
|
||||
{
|
||||
if (item->isEnabled())
|
||||
{
|
||||
if (checkCollision(player->getCollider(), item->getCollider()))
|
||||
{
|
||||
switch (item->getClass())
|
||||
{
|
||||
case ITEM_POINTS_1_DISK:
|
||||
player->addScore(1000);
|
||||
updateHiScore();
|
||||
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (m1000Bitmap->getWidth() / 2), player->getPosY(), m1000Bitmap);
|
||||
JA_PlaySound(mSoundItemPickup);
|
||||
break;
|
||||
case ITEM_POINTS_2_GAVINA:
|
||||
player->addScore(2500);
|
||||
updateHiScore();
|
||||
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (m2500Bitmap->getWidth() / 2), player->getPosY(), m2500Bitmap);
|
||||
JA_PlaySound(mSoundItemPickup);
|
||||
break;
|
||||
case ITEM_POINTS_3_PACMAR:
|
||||
player->addScore(5000);
|
||||
updateHiScore();
|
||||
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (m5000Bitmap->getWidth() / 2), player->getPosY(), m5000Bitmap);
|
||||
JA_PlaySound(mSoundItemPickup);
|
||||
break;
|
||||
case ITEM_CLOCK:
|
||||
enableTimeStopItem();
|
||||
JA_PlaySound(mSoundItemPickup);
|
||||
break;
|
||||
case ITEM_COFFEE:
|
||||
if (player->getCoffees() == 2)
|
||||
{
|
||||
player->addScore(5000);
|
||||
updateHiScore();
|
||||
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (m5000Bitmap->getWidth() / 2), player->getPosY(), m5000Bitmap);
|
||||
}
|
||||
mItem[i]->erase();
|
||||
player->giveExtraHit();
|
||||
JA_PlaySound(mSoundItemPickup);
|
||||
break;
|
||||
case ITEM_COFFEE_MACHINE:
|
||||
player->setPowerUp(true);
|
||||
JA_PlaySound(mSoundItemPickup);
|
||||
mCoffeeMachineEnabled = false;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
item->erase();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Comprueba y procesa la colisión entre las balas y los globos
|
||||
@@ -2441,7 +2458,7 @@ Uint8 Game::dropItem()
|
||||
// Crea un objeto item
|
||||
void Game::createItem(int x, int y, Uint8 kind)
|
||||
{
|
||||
mItem[getItemFreeIndex()]->init(kind, x, y, mTextureItems, mRenderer);
|
||||
mItem[getItemFreeIndex()]->init(kind, x, y);
|
||||
}
|
||||
|
||||
// Crea un objeto SmartSprite para mostrar la puntuación al coger un objeto
|
||||
@@ -2494,7 +2511,7 @@ void Game::throwCoffee(int x, int y)
|
||||
{
|
||||
const Uint8 index = getSmartSpriteFreeIndex();
|
||||
|
||||
mSmartSprite[index]->init(mTextureItems, mRenderer);
|
||||
mSmartSprite[index]->init();
|
||||
mSmartSprite[index]->setPosX(x - 8);
|
||||
mSmartSprite[index]->setPosY(y - 8);
|
||||
mSmartSprite[index]->setWidth(16);
|
||||
@@ -2519,7 +2536,8 @@ void Game::throwPlayer(int x, int y, int index)
|
||||
const int sentit = ((rand() % 2) ? 1 : -1);
|
||||
|
||||
mPlayer[index]->mDeathIndex = getSmartSpriteFreeIndex();
|
||||
mSmartSprite[mPlayer[index]->mDeathIndex]->init(mPlayer[index]->getDeadTexture(), mRenderer);
|
||||
// mSmartSprite[mPlayer[index]->mDeathIndex]->init(mPlayer[index]->getDeadTexture(), mRenderer);
|
||||
mSmartSprite[mPlayer[index]->mDeathIndex]->setTexture(mPlayer[index]->getDeadTexture());
|
||||
mSmartSprite[mPlayer[index]->mDeathIndex]->setPosX(x);
|
||||
mSmartSprite[mPlayer[index]->mDeathIndex]->setPosY(y);
|
||||
mSmartSprite[mPlayer[index]->mDeathIndex]->setWidth(24);
|
||||
@@ -2572,12 +2590,12 @@ void Game::resetSmartSprites()
|
||||
{
|
||||
for (int i = 0; i < MAX_SMART_SPRITES; i++)
|
||||
{
|
||||
mSmartSprite[i]->erase();
|
||||
mSmartSprite[i]->init();
|
||||
}
|
||||
}
|
||||
|
||||
// Acciones a realizar cuando el jugador muere
|
||||
void Game::killPlayer(int index)
|
||||
void Game::killPlayer(Player *player)
|
||||
{
|
||||
if (!mPlayer[index]->isInvulnerable())
|
||||
{
|
||||
|
||||
+30
-37
@@ -132,29 +132,34 @@ private:
|
||||
Screen *mScreen; // Objeto encargado de dibujar en pantalla
|
||||
Asset *mAsset; // Objeto que gestiona todos los ficheros de recursos
|
||||
Lang *mLang; // Objeto para gestionar los textos en diferentes idiomas
|
||||
Input *mInput; // Manejador de entrada
|
||||
|
||||
int mNumPlayers; // Numero de jugadores
|
||||
Player *mPlayer[2]; // Vector con los jugadores jugador
|
||||
Input *mInput; // Manejador de entrada
|
||||
// Player *mPlayer[2]; // Vector con los jugadores jugador
|
||||
// Balloon *mBalloon[MAX_BALLOONS]; // Vector con los objetos globo
|
||||
// Bullet *mBullet[MAX_BULLETS]; // Vector con los objetos bala
|
||||
// Item *mItem[MAX_ITEMS]; // Vector con los objetos item
|
||||
// SmartSprite *mSmartSprite[MAX_SMART_SPRITES]; // Vector para almacenar y gestionar SmartSprites
|
||||
|
||||
Balloon *mBalloon[MAX_BALLOONS]; // Vector con los objetos globo
|
||||
Bullet *mBullet[MAX_BULLETS]; // Vector con los objetos bala
|
||||
Item *mItem[MAX_ITEMS]; // Vector con los objetos item
|
||||
SmartSprite *mSmartSprite[MAX_SMART_SPRITES]; // Vector para almacenar y gestionar SmartSprites
|
||||
int mNumPlayers; // Numero de jugadores
|
||||
std::vector<Player *> players; // Vector con los jugadores
|
||||
std::vector<Balloon *> balloons; // Vector con los globos
|
||||
std::vector<Bullet *> bullets; // Vector con las balas
|
||||
std::vector<Item *> items; // Vector con los items
|
||||
std::vector<SmartSprite *> smartSprites; // Vector con los smartsprites
|
||||
|
||||
LTexture *mTextureBalloon; // Textura para los enemigos
|
||||
LTexture *mTextureBullet; // Textura para las balas
|
||||
LTexture *mTextureGameBG; // Textura para el fondo del juego
|
||||
LTexture *mTextureGameText; // Textura para los sprites con textos
|
||||
LTexture *mTextureItems; // Textura para los items
|
||||
LTexture *mTexturePlayer1Head; // Textura para la cabeza del jugador1
|
||||
LTexture *mTexturePlayer1Body; // Textura para el cuerpo del jugador1
|
||||
LTexture *mTexturePlayer1Death; // Textura para la animación de muerte del jugador1
|
||||
LTexture *mTexturePlayer1Legs; // Textura para las piernas del jugador
|
||||
LTexture *mTexturePlayer2Head; // Textura para la cabeza del jugador2
|
||||
LTexture *mTexturePlayer2Body; // Textura para el cuerpo del jugador2
|
||||
LTexture *mTexturePlayer2Death; // Textura para la animación de muerte del jugador2
|
||||
LTexture *mTexturePlayer2Legs; // Textura para las piernas del jugador
|
||||
LTexture *mTextureBalloon; // Textura para los enemigos
|
||||
LTexture *mTextureBullet; // Textura para las balas
|
||||
LTexture *mTextureGameBG; // Textura para el fondo del juego
|
||||
LTexture *mTextureGameText; // Textura para los sprites con textos
|
||||
LTexture *mTextureItems; // Textura para los items
|
||||
LTexture *mTexturePlayer1Head; // Textura para la cabeza del jugador1
|
||||
LTexture *mTexturePlayer1Body; // Textura para el cuerpo del jugador1
|
||||
LTexture *mTexturePlayer1Death; // Textura para la animación de muerte del jugador1
|
||||
LTexture *mTexturePlayer1Legs; // Textura para las piernas del jugador
|
||||
LTexture *mTexturePlayer2Head; // Textura para la cabeza del jugador2
|
||||
LTexture *mTexturePlayer2Body; // Textura para el cuerpo del jugador2
|
||||
LTexture *mTexturePlayer2Death; // Textura para la animación de muerte del jugador2
|
||||
LTexture *mTexturePlayer2Legs; // Textura para las piernas del jugador
|
||||
|
||||
Text *mText; // Fuente para los textos del juego
|
||||
Text *mTextBig; // Fuente de texto grande
|
||||
@@ -311,9 +316,6 @@ private:
|
||||
// Pinta en pantalla todos los globos activos
|
||||
void renderBalloons();
|
||||
|
||||
// Devuelve el primer indice no activo del vector de globos
|
||||
Uint8 getBalloonFreeIndex();
|
||||
|
||||
// Crea un globo nuevo en el vector de globos
|
||||
Uint8 createNewBalloon(float x, int y, Uint8 kind, float velx, float speed, Uint16 stoppedcounter, LTexture *texture);
|
||||
|
||||
@@ -336,10 +338,10 @@ private:
|
||||
void updateBalloonSpeed();
|
||||
|
||||
// Explosiona un globo. Lo destruye y crea otros dos si es el caso
|
||||
void popBalloon(Uint8 index);
|
||||
void popBalloon(Balloon *balloon);
|
||||
|
||||
// Explosiona un globo. Lo destruye
|
||||
void destroyBalloon(Uint8 index);
|
||||
void destroyBalloon(Balloon *balloon);
|
||||
|
||||
// Explosiona todos los globos
|
||||
void popAllBalloons();
|
||||
@@ -357,10 +359,10 @@ private:
|
||||
Uint8 countBalloons();
|
||||
|
||||
// Comprueba la colisión entre el jugador y los globos activos
|
||||
bool checkPlayerBalloonCollision(int index);
|
||||
bool checkPlayerBalloonCollision(Player *player);
|
||||
|
||||
// Comprueba la colisión entre el jugador y los items
|
||||
void checkPlayerItemCollision(int index);
|
||||
void checkPlayerItemCollision(Player *player);
|
||||
|
||||
// Comprueba la colisión entre las balas y los globos
|
||||
void checkBulletBalloonCollision();
|
||||
@@ -371,9 +373,6 @@ private:
|
||||
// Pinta las balas activas
|
||||
void renderBullets();
|
||||
|
||||
// Devuelve el primer indice no activo del vector de balas
|
||||
Uint8 getBulletFreeIndex();
|
||||
|
||||
// Establece a cero todos los valores del vector de objetos bala
|
||||
void resetBullets();
|
||||
|
||||
@@ -386,9 +385,6 @@ private:
|
||||
// Pinta los items activos
|
||||
void renderItems();
|
||||
|
||||
// Devuelve el primer indice no activo del vector de items
|
||||
Uint8 getItemFreeIndex();
|
||||
|
||||
// Establece a cero todos los valores del vector de objetos item
|
||||
void resetItems();
|
||||
|
||||
@@ -419,14 +415,11 @@ private:
|
||||
// Pinta los SmartSprites activos
|
||||
void renderSmartSprites();
|
||||
|
||||
// Devuelve el primer indice no activo del vector de SmartSprites
|
||||
Uint8 getSmartSpriteFreeIndex();
|
||||
|
||||
// Establece a cero todos los valores del vector de objetos SmafrtSprite
|
||||
void resetSmartSprites();
|
||||
|
||||
// Acciones a realizar cuando el jugador muere
|
||||
void killPlayer(int index);
|
||||
void killPlayer(Player *player);
|
||||
|
||||
// Obtiene el valor de la variable
|
||||
Uint8 getSubsection();
|
||||
|
||||
+1
-14
@@ -13,7 +13,7 @@ Instructions::Instructions(SDL_Renderer *renderer, Screen *screen, Asset *mAsset
|
||||
|
||||
// Reserva memoria para los punteros
|
||||
mEventHandler = new SDL_Event();
|
||||
mItemTexture = new LTexture(mRenderer);
|
||||
mItemTexture = new LTexture(mRenderer,mAsset->get("items.png"));
|
||||
mSprite = new Sprite(0, 0, GAME_WIDTH, GAME_HEIGHT, mItemTexture, mRenderer);
|
||||
mText = new Text(mAsset->get("smb2.png"), mAsset->get("smb2.txt"), mRenderer);
|
||||
|
||||
@@ -50,22 +50,9 @@ Instructions::~Instructions()
|
||||
mBackbuffer = nullptr;
|
||||
}
|
||||
|
||||
// Carga los recursos necesarios para la sección 'Instructions'
|
||||
bool Instructions::loadMedia()
|
||||
{
|
||||
bool success = true;
|
||||
|
||||
success &= loadTextureFromFile(mItemTexture, mAsset->get("items.png"), mRenderer);
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
// Inicializa las variables necesarias para la sección 'Instructions'
|
||||
void Instructions::init()
|
||||
{
|
||||
// Carga los recursos
|
||||
loadMedia();
|
||||
|
||||
// Inicializa variables
|
||||
mSection.name = SELF;
|
||||
mTicks = 0;
|
||||
|
||||
@@ -38,9 +38,6 @@ private:
|
||||
Uint8 mTicksSpeed; // Velocidad a la que se repiten los bucles del programa
|
||||
bool mManualQuit; // Indica si se quiere salir del modo manual
|
||||
|
||||
// Carga los recursos
|
||||
bool loadMedia();
|
||||
|
||||
// Actualiza las variables
|
||||
void update();
|
||||
|
||||
|
||||
+6
-7
@@ -11,12 +11,12 @@ Intro::Intro(SDL_Renderer *renderer, Screen *screen, Asset *mAsset, Lang *lang)
|
||||
|
||||
// Reserva memoria para los punteros
|
||||
mEventHandler = new SDL_Event();
|
||||
mBitmapTexture = new LTexture(mRenderer);
|
||||
mBitmapTexture = new LTexture(mRenderer,mAsset->get("intro.png"));
|
||||
mText = new Text(mAsset->get("nokia.png"), mAsset->get("nokia.txt"), mRenderer);
|
||||
|
||||
for (int i = 0; i < INTRO_TOTAL_BITMAPS; i++)
|
||||
{
|
||||
mBitmap[i] = new SmartSprite();
|
||||
mBitmap[i] = new SmartSprite(mBitmapTexture, mRenderer);
|
||||
}
|
||||
|
||||
for (int i = 0; i < INTRO_TOTAL_TEXTS; i++)
|
||||
@@ -45,7 +45,7 @@ Intro::~Intro()
|
||||
delete mBitmap[i];
|
||||
mBitmap[i] = nullptr;
|
||||
}
|
||||
|
||||
|
||||
for (int i = 0; i < INTRO_TOTAL_TEXTS; i++)
|
||||
{
|
||||
delete mWriter[i];
|
||||
@@ -67,12 +67,14 @@ void Intro::init()
|
||||
|
||||
// Inicializa el vector de eventos de la intro
|
||||
for (int i = 0; i < INTRO_TOTAL_EVENTS; i++)
|
||||
{
|
||||
mEvents[i] = EVENT_WAITING;
|
||||
}
|
||||
|
||||
// Inicializa los bitmaps de la intro
|
||||
for (int i = 0; i < INTRO_TOTAL_BITMAPS; i++)
|
||||
{
|
||||
mBitmap[i]->init(mBitmapTexture, mRenderer);
|
||||
mBitmap[i]->init();
|
||||
mBitmap[i]->setId(i);
|
||||
mBitmap[i]->setIntroEvents(&mEvents[0]);
|
||||
mBitmap[i]->setWidth(128);
|
||||
@@ -191,9 +193,6 @@ bool Intro::loadMedia()
|
||||
{
|
||||
bool success = true;
|
||||
|
||||
// Texturas
|
||||
success &= loadTextureFromFile(mBitmapTexture, mAsset->get("intro.png"), mRenderer);
|
||||
|
||||
// Musicas
|
||||
mMusic = JA_LoadMusic(mAsset->get("intro.ogg").c_str());
|
||||
|
||||
|
||||
+17
-13
@@ -2,12 +2,23 @@
|
||||
#include "item.h"
|
||||
|
||||
// Constructor
|
||||
Item::Item(Uint8 value, float x, float y, LTexture *texture, SDL_Renderer *renderer)
|
||||
Item::Item(LTexture *texture, SDL_Renderer *renderer)
|
||||
{
|
||||
mSprite = new AnimatedSprite(texture, renderer);
|
||||
mClass = NO_KIND;
|
||||
init(NO_KIND, 0.0f, 0.0f);
|
||||
}
|
||||
|
||||
mClass = value;
|
||||
// Destructor
|
||||
Item::~Item()
|
||||
{
|
||||
delete mSprite;
|
||||
mSprite = nullptr;
|
||||
}
|
||||
|
||||
// Inicializador
|
||||
void Item::init(Uint8 type, float x, float y)
|
||||
{
|
||||
mClass = type;
|
||||
mEnabled = true;
|
||||
mTimeToLive = 600;
|
||||
mPosX = x;
|
||||
@@ -32,7 +43,7 @@ Item::Item(Uint8 value, float x, float y, LTexture *texture, SDL_Renderer *rende
|
||||
mSprite->setPosX(mPosX);
|
||||
mSprite->setPosY(mPosY);
|
||||
|
||||
switch (value)
|
||||
switch (type)
|
||||
{
|
||||
case NO_KIND:
|
||||
mEnabled = false;
|
||||
@@ -93,13 +104,6 @@ Item::Item(Uint8 value, float x, float y, LTexture *texture, SDL_Renderer *rende
|
||||
}
|
||||
}
|
||||
|
||||
// Destructor
|
||||
Item::~Item()
|
||||
{
|
||||
delete mSprite;
|
||||
mSprite = nullptr;
|
||||
}
|
||||
|
||||
// Centra el objeto en la posición X
|
||||
void Item::allignTo(int x)
|
||||
{
|
||||
@@ -195,7 +199,7 @@ void Item::move()
|
||||
// Pone a cero todos los valores del objeto
|
||||
void Item::erase()
|
||||
{
|
||||
//init(NO_KIND, 0, 0, nullptr, nullptr);
|
||||
// init(NO_KIND, 0, 0, nullptr, nullptr);
|
||||
}
|
||||
|
||||
// Actualiza el objeto a su posicion, animación y controla los contadores
|
||||
@@ -205,7 +209,7 @@ void Item::update()
|
||||
{
|
||||
move();
|
||||
shiftColliders();
|
||||
mSprite->animate(0);
|
||||
mSprite->animate();
|
||||
updateTimeToLive();
|
||||
checkTimeToLive();
|
||||
}
|
||||
|
||||
+4
-1
@@ -43,11 +43,14 @@ public:
|
||||
Uint16 mTimeToLive; // Temporizador con el tiempo que el objeto está presente
|
||||
|
||||
// Constructor
|
||||
Item(Uint8 value, float x, float y, LTexture *texture, SDL_Renderer *renderer);
|
||||
Item(LTexture *texture, SDL_Renderer *renderer);
|
||||
|
||||
// Destructor
|
||||
~Item();
|
||||
|
||||
// Inicializador
|
||||
void init(Uint8 type, float x, float y);
|
||||
|
||||
// Centra el objeto en la posición X
|
||||
void allignTo(int x);
|
||||
|
||||
|
||||
@@ -906,4 +906,13 @@ void Menu::setPos(int x, int y)
|
||||
void Menu::setBackgroundType(int value)
|
||||
{
|
||||
backgroundType = value;
|
||||
}
|
||||
|
||||
// Establece la fuente de texto que se utilizará
|
||||
void Menu::setText(std::string font_png, std::string font_txt)
|
||||
{
|
||||
if (!text)
|
||||
{
|
||||
text = new Text(asset->get(font_png), asset->get(font_txt), renderer);
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -217,8 +217,8 @@ public:
|
||||
// Establece el tipo de fondo del menu
|
||||
void setBackgroundType(int value);
|
||||
|
||||
|
||||
// hacer procedimientos para establecer el titulo, la x, la y, la tipografia y el tipo de fondo
|
||||
// Establece la fuente de texto que se utilizará
|
||||
void setText(std::string font_png, std::string font_txt);
|
||||
};
|
||||
|
||||
#endif
|
||||
+16
-14
@@ -2,11 +2,20 @@
|
||||
#include "player.h"
|
||||
|
||||
// Constructor
|
||||
Player::Player()
|
||||
Player::Player(float x, int y, LTexture *textureLegs, LTexture *textureBody, LTexture *textureHead, LTexture *textureDead, SDL_Renderer *renderer)
|
||||
{
|
||||
mSpriteLegs = new AnimatedSprite();
|
||||
mSpriteBody = new AnimatedSprite();
|
||||
mSpriteHead = new AnimatedSprite();
|
||||
mSpriteLegs = new AnimatedSprite(textureLegs, renderer);
|
||||
mSpriteBody = new AnimatedSprite(textureBody, renderer);
|
||||
mSpriteHead = new AnimatedSprite(textureHead, renderer);
|
||||
|
||||
// Copia punteros
|
||||
mPlayerDeadTexture = textureDead;
|
||||
|
||||
// Establece la posición inicial del jugador
|
||||
mPosX = x;
|
||||
mPosY = y;
|
||||
|
||||
init();
|
||||
}
|
||||
|
||||
// Destructor
|
||||
@@ -23,11 +32,8 @@ Player::~Player()
|
||||
}
|
||||
|
||||
// Iniciador
|
||||
void Player::init(float x, int y, LTexture *textureLegs, LTexture *textureBody, LTexture *textureHead, LTexture *textureDead, SDL_Renderer *renderer)
|
||||
void Player::init()
|
||||
{
|
||||
// Copia punteros
|
||||
mPlayerDeadTexture = textureDead;
|
||||
|
||||
// Inicializa variables de estado
|
||||
mAlive = true;
|
||||
mDeathCounter = DEATH_COUNTER;
|
||||
@@ -47,10 +53,6 @@ void Player::init(float x, int y, LTexture *textureLegs, LTexture *textureBody,
|
||||
mWidth = 3 * BLOCK;
|
||||
mHeight = 3 * BLOCK;
|
||||
|
||||
// Establece la posición inicial del jugador
|
||||
mPosX = x;
|
||||
mPosY = y;
|
||||
|
||||
// Establece el tamaño del circulo de colisión
|
||||
mCollider.r = 7;
|
||||
|
||||
@@ -75,8 +77,8 @@ void Player::init(float x, int y, LTexture *textureLegs, LTexture *textureBody,
|
||||
|
||||
// Inicia el sprite
|
||||
mSpriteLegs->init();
|
||||
mSpriteBody->init(textureBody, renderer);
|
||||
mSpriteHead->init(textureHead, renderer);
|
||||
mSpriteBody->init();
|
||||
mSpriteHead->init();
|
||||
|
||||
// Establece el alto y ancho del sprite
|
||||
mSpriteLegs->setWidth(mWidth);
|
||||
|
||||
+2
-2
@@ -97,13 +97,13 @@ public:
|
||||
Uint16 mPowerUpCounter; // Temporizador para el modo PowerUp
|
||||
|
||||
// Constructor
|
||||
Player();
|
||||
Player(float x, int y, LTexture *textureLegs, LTexture *textureBody, LTexture *textureHead, LTexture *textureDead, SDL_Renderer *renderer);
|
||||
|
||||
// Destructor
|
||||
~Player();
|
||||
|
||||
// Iniciador
|
||||
void init(float x, int y, LTexture *textureLegs, LTexture *textureBody, LTexture *textureHead, LTexture *textureDead, SDL_Renderer *renderer);
|
||||
void init();
|
||||
|
||||
// Actua en consecuencia de la entrada recibida
|
||||
void setInput(Uint8 input);
|
||||
|
||||
+4
-11
@@ -2,8 +2,10 @@
|
||||
#include "smartsprite.h"
|
||||
|
||||
// Constructor
|
||||
SmartSprite::SmartSprite()
|
||||
SmartSprite::SmartSprite(LTexture *texture, SDL_Renderer *renderer)
|
||||
{
|
||||
setTexture(texture);
|
||||
setRenderer(renderer);
|
||||
}
|
||||
|
||||
// Destructor
|
||||
@@ -12,11 +14,8 @@ SmartSprite::~SmartSprite()
|
||||
}
|
||||
|
||||
// Inicializador
|
||||
void SmartSprite::init(LTexture *texture, SDL_Renderer *renderer)
|
||||
void SmartSprite::init()
|
||||
{
|
||||
setTexture(texture);
|
||||
setRenderer(renderer);
|
||||
|
||||
setPosX(0);
|
||||
setPosY(0);
|
||||
setWidth(0);
|
||||
@@ -48,12 +47,6 @@ void SmartSprite::init(LTexture *texture, SDL_Renderer *renderer)
|
||||
introEvents = nullptr;
|
||||
}
|
||||
|
||||
// Pone a cero los elementos del objeto
|
||||
void SmartSprite::erase()
|
||||
{
|
||||
init(nullptr, nullptr);
|
||||
}
|
||||
|
||||
// Obtiene el valor de la variable
|
||||
bool SmartSprite::isEnabled()
|
||||
{
|
||||
|
||||
@@ -21,16 +21,13 @@ private:
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
SmartSprite();
|
||||
SmartSprite(LTexture *texture, SDL_Renderer *renderer);
|
||||
|
||||
// Destructor
|
||||
~SmartSprite();
|
||||
|
||||
// Inicializador
|
||||
void init(LTexture *texture, SDL_Renderer *renderer);
|
||||
|
||||
// Pone a cero los elementos del objeto
|
||||
void erase();
|
||||
void init();
|
||||
|
||||
// Obtiene el valor de la variable
|
||||
bool isEnabled();
|
||||
|
||||
+29
-36
@@ -15,18 +15,21 @@ Title::Title(SDL_Window *window, SDL_Renderer *renderer, Screen *screen, Input *
|
||||
// Reserva memoria para los punteros propios
|
||||
mEventHandler = new SDL_Event();
|
||||
mFade = new Fade(renderer);
|
||||
mTitleTexture = new LTexture(mRenderer);
|
||||
mItemsTexture = new LTexture(mRenderer);
|
||||
mCoffeeBitmap = new SmartSprite();
|
||||
mCrisisBitmap = new SmartSprite();
|
||||
mDustBitmapL = new AnimatedSprite();
|
||||
mDustBitmapR = new AnimatedSprite();
|
||||
|
||||
mTitleTexture = new LTexture(mRenderer, mAsset->get("title.png"));
|
||||
mItemsTexture = new LTexture(mRenderer, mAsset->get("items.png"));
|
||||
|
||||
mCoffeeBitmap = new SmartSprite(mTitleTexture, mRenderer);
|
||||
mCrisisBitmap = new SmartSprite(mTitleTexture, mRenderer);
|
||||
mDustBitmapL = new AnimatedSprite(mTitleTexture, mRenderer);
|
||||
mDustBitmapR = new AnimatedSprite(mTitleTexture, mRenderer);
|
||||
|
||||
mTile = new Sprite();
|
||||
mGradient = new Sprite();
|
||||
mText = new Text(mAsset->get("smb2.png"), mAsset->get("smb2.txt"), mRenderer);
|
||||
mText2 = new Text(mAsset->get("8bithud.png"), mAsset->get("8bithud.txt"), mRenderer);
|
||||
mMenu.title = new Menu(mRenderer, mText, mInput, mAsset);
|
||||
mMenu.options = new Menu(mRenderer, mText, mInput, mAsset);
|
||||
mMenu.title = new Menu(mRenderer, mInput, mAsset);
|
||||
mMenu.options = new Menu(mRenderer, mInput, mAsset);
|
||||
|
||||
// Crea la textura para el mosaico de fondo
|
||||
mBackground = SDL_CreateTexture(mRenderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, GAME_WIDTH * 2, GAME_HEIGHT * 2);
|
||||
@@ -67,14 +70,6 @@ Title::~Title()
|
||||
delete mItemsTexture;
|
||||
mItemsTexture = nullptr;
|
||||
|
||||
mTextTexture->unload();
|
||||
delete mTextTexture;
|
||||
mTextTexture = nullptr;
|
||||
|
||||
mTextTexture2->unload();
|
||||
delete mTextTexture2;
|
||||
mTextTexture2 = nullptr;
|
||||
|
||||
delete mCoffeeBitmap;
|
||||
mCoffeeBitmap = nullptr;
|
||||
|
||||
@@ -154,7 +149,6 @@ void Title::init(bool demo, Uint8 subsection)
|
||||
}
|
||||
|
||||
// Inicializa el bitmap de Coffee
|
||||
mCoffeeBitmap->init(mTitleTexture, mRenderer);
|
||||
mCoffeeBitmap->setId(0);
|
||||
mCoffeeBitmap->setIntroEvents(&mEvents[0]);
|
||||
mCoffeeBitmap->setPosX(45);
|
||||
@@ -172,7 +166,6 @@ void Title::init(bool demo, Uint8 subsection)
|
||||
mCoffeeBitmap->setDestY(11);
|
||||
|
||||
// Inicializa el bitmap de Crisis
|
||||
mCrisisBitmap->init(mTitleTexture, mRenderer);
|
||||
mCrisisBitmap->setId(1);
|
||||
mCrisisBitmap->setIntroEvents(&mEvents[0]);
|
||||
mCrisisBitmap->setPosX(60);
|
||||
@@ -190,14 +183,12 @@ void Title::init(bool demo, Uint8 subsection)
|
||||
mCrisisBitmap->setDestY(57);
|
||||
|
||||
// Inicializa el bitmap de DustRight
|
||||
mDustBitmapR->init(mTitleTexture, mRenderer);
|
||||
mDustBitmapR->setPosX(218);
|
||||
mDustBitmapR->setPosY(47);
|
||||
mDustBitmapR->setWidth(16);
|
||||
mDustBitmapR->setHeight(14);
|
||||
mDustBitmapR->setCurrentFrame(0);
|
||||
mDustBitmapR->setAnimationCounter(0);
|
||||
mDustBitmapR->setAnimationNumFrames(0, 7);
|
||||
mDustBitmapR->setAnimationSpeed(0, 8);
|
||||
mDustBitmapR->setAnimationLoop(0, false);
|
||||
mDustBitmapR->setAnimationFrames(0, 0, 160 + (mDustBitmapR->getWidth() * 0), 80, mDustBitmapR->getWidth(), mDustBitmapR->getHeight());
|
||||
@@ -209,14 +200,12 @@ void Title::init(bool demo, Uint8 subsection)
|
||||
mDustBitmapR->setAnimationFrames(0, 6, 160 + (mDustBitmapR->getWidth() * 6), 80, mDustBitmapR->getWidth(), mDustBitmapR->getHeight());
|
||||
|
||||
// Inicializa el bitmap de DustLeft
|
||||
mDustBitmapL->init(mTitleTexture, mRenderer);
|
||||
mDustBitmapL->setPosX(33);
|
||||
mDustBitmapL->setPosY(47);
|
||||
mDustBitmapL->setWidth(16);
|
||||
mDustBitmapL->setHeight(14);
|
||||
mDustBitmapL->setCurrentFrame(0);
|
||||
mDustBitmapL->setAnimationCounter(0);
|
||||
mDustBitmapL->setAnimationNumFrames(0, 7);
|
||||
mDustBitmapL->setAnimationSpeed(0, 8);
|
||||
mDustBitmapL->setAnimationLoop(0, false);
|
||||
mDustBitmapL->setAnimationFrames(0, 0, 160 + (mDustBitmapL->getWidth() * 0), 66, mDustBitmapL->getWidth(), mDustBitmapL->getHeight());
|
||||
@@ -233,7 +222,9 @@ void Title::init(bool demo, Uint8 subsection)
|
||||
|
||||
// Inicializa el vector de eventos de la pantalla de titulo
|
||||
for (int i = 0; i < TITLE_TOTAL_EVENTS; i++)
|
||||
{
|
||||
mEvents[i] = EVENT_WAITING;
|
||||
}
|
||||
|
||||
// Crea el mosaico de fondo del titulo
|
||||
createTiledBackground();
|
||||
@@ -246,22 +237,30 @@ void Title::init(bool demo, Uint8 subsection)
|
||||
|
||||
// Inicializa los valores del vector con los valores del seno
|
||||
for (int i = 0; i < 360; i++)
|
||||
{
|
||||
mSin[i] = SDL_sinf((float)i * 3.14f / 180.0f);
|
||||
}
|
||||
|
||||
// Inicializa los objetos de menu
|
||||
mMenu.title->init("TITLE", 0, (14 * BLOCK) + 4, MENU_BACKGROUND_TRANSPARENT);
|
||||
mMenu.title->setText(mAsset->get("smb2.png"), mAsset->get("smb2.txt"));
|
||||
mMenu.title->setName("TITLE");
|
||||
mMenu.title->setPos(0, (14 * BLOCK) + 4);
|
||||
mMenu.title->setBackgroundType(MENU_BACKGROUND_TRANSPARENT);
|
||||
mMenu.title->addItem(mLang->getText(51), 2); // 1 PLAYER
|
||||
mMenu.title->addItem(mLang->getText(52), 7); // 2 PLAYERS
|
||||
mMenu.title->addItem(mLang->getText(1), 7); // OPTIONS
|
||||
mMenu.title->addItem(mLang->getText(3)); // QUIT
|
||||
mMenu.title->setDefaultActionWhenCancel(3);
|
||||
mMenu.title->setBackgroundColor(0x30, 0x30, 0x40, 192);
|
||||
mMenu.title->setSelectorColor(0xe5, 0x1c, 0x23, 0);
|
||||
mMenu.title->setSelectorTextColor(0xFF, 0xB4, 0x00);
|
||||
mMenu.title->setBackgroundColor({0x30, 0x30, 0x40}, 192);
|
||||
mMenu.title->setSelectorColor({0xe5, 0x1c, 0x23}, 0);
|
||||
mMenu.title->setSelectorTextColor({0xFF, 0xB4, 0x00});
|
||||
mMenu.title->centerMenuOnX(SCREEN_CENTER_X);
|
||||
mMenu.title->centerMenuElementsOnX();
|
||||
|
||||
mMenu.options->init("OPTIONS", 0, BLOCK, MENU_BACKGROUND_TRANSPARENT);
|
||||
mMenu.options->setText(mAsset->get("smb2.png"), mAsset->get("smb2.txt"));
|
||||
mMenu.options->setName("OPTIONS");
|
||||
mMenu.options->setPos(0, BLOCK);
|
||||
mMenu.options->setBackgroundType(MENU_BACKGROUND_TRANSPARENT);
|
||||
mMenu.options->addItem(mLang->getText(59), 7); // (0) DIFFICULTY
|
||||
mMenu.options->addItem(mLang->getText(62), 2, true, false, true); // (1) PLAYER 1 CONTROLS
|
||||
mMenu.options->addItem(mLang->getText(69), 7, false, false); // (2) KEYBOARD
|
||||
@@ -277,9 +276,9 @@ void Title::init(bool demo, Uint8 subsection)
|
||||
mMenu.options->addItem(mLang->getText(9), 2); // (12) ACCEPT
|
||||
mMenu.options->addItem(mLang->getText(10)); // (13) CANCEL
|
||||
mMenu.options->setDefaultActionWhenCancel(13);
|
||||
mMenu.options->setBackgroundColor(0x30, 0x30, 0x40, 192);
|
||||
mMenu.options->setSelectorColor(0xe5, 0x1c, 0x23, 255);
|
||||
mMenu.options->setSelectorTextColor(0xFF, 0xF1, 0x76);
|
||||
mMenu.options->setBackgroundColor({0x30, 0x30, 0x40}, 192);
|
||||
mMenu.options->setSelectorColor({0xe5, 0x1c, 0x23}, 255);
|
||||
mMenu.options->setSelectorTextColor({0xFF, 0xF1, 0x76});
|
||||
mMenu.options->centerMenuOnX(SCREEN_CENTER_X);
|
||||
mMenu.options->centerMenuOnY(SCREEN_CENTER_Y);
|
||||
|
||||
@@ -293,12 +292,6 @@ bool Title::loadMedia()
|
||||
// Indicador de éxito en la carga
|
||||
bool success = true;
|
||||
|
||||
// Texturas
|
||||
success &= loadTextureFromFile(mTitleTexture, mAsset->get("title.png"), mRenderer);
|
||||
success &= loadTextureFromFile(mItemsTexture, mAsset->get("items.png"), mRenderer);
|
||||
success &= loadTextureFromFile(mTextTexture, mAsset->get("smb2.png"), mRenderer);
|
||||
success &= loadTextureFromFile(mTextTexture2, mAsset->get("8bithud.png"), mRenderer);
|
||||
|
||||
// Sonidos
|
||||
mSound = JA_LoadSound(mAsset->get("title.wav").c_str());
|
||||
|
||||
|
||||
Reference in new issue
Block a user