Muntat a c++14 per a make_unique
Mes autos, const i constexpr perl codi Ara la classe Screen es un poc pitjor
This commit is contained in:
@@ -52,12 +52,14 @@ Game::Game(int playerID, int currentStage, bool demo, JA_Music_t *music)
|
||||
difficulty = options.game.difficulty;
|
||||
|
||||
// Crea los objetos
|
||||
fade = new Fade(renderer);
|
||||
eventHandler = new SDL_Event();
|
||||
scoreboard = new Scoreboard(renderer);
|
||||
background = new Background(renderer);
|
||||
explosions = new Explosions();
|
||||
enemyFormations = new EnemyFormations();
|
||||
Scoreboard::init(renderer);
|
||||
scoreboard = Scoreboard::get();
|
||||
eventHandler = std::make_unique<SDL_Event>();
|
||||
fade = std::make_unique<Fade>(renderer);
|
||||
|
||||
background = std::make_unique<Background>(renderer);
|
||||
explosions = std::make_unique<Explosions>();
|
||||
enemyFormations = std::make_unique<EnemyFormations>();
|
||||
|
||||
// Carga los recursos
|
||||
loadMedia();
|
||||
@@ -65,17 +67,17 @@ Game::Game(int playerID, int currentStage, bool demo, JA_Music_t *music)
|
||||
// Inicializa los vectores con los datos para la demo
|
||||
if (demo)
|
||||
{ // Aleatoriza la asignación del fichero
|
||||
const int index1 = rand() % 2;
|
||||
const int index2 = (index1 + 1) % 2;
|
||||
const auto index1 = rand() % 2;
|
||||
const auto index2 = (index1 + 1) % 2;
|
||||
loadDemoFile(asset->get("demo1.bin"), &this->demo.dataFile[index1]);
|
||||
loadDemoFile(asset->get("demo2.bin"), &this->demo.dataFile[index2]);
|
||||
}
|
||||
|
||||
background->setPos(param.game.playArea.rect);
|
||||
|
||||
n1000Sprite = new SmartSprite(gameTextTexture);
|
||||
n2500Sprite = new SmartSprite(gameTextTexture);
|
||||
n5000Sprite = new SmartSprite(gameTextTexture);
|
||||
n1000Sprite = std::make_unique<SmartSprite>(gameTextTexture.get());
|
||||
n2500Sprite = std::make_unique<SmartSprite>(gameTextTexture.get());
|
||||
n5000Sprite = std::make_unique<SmartSprite>(gameTextTexture.get());
|
||||
|
||||
explosions->addTexture(1, explosionsTextures[0], explosionsAnimations[0]);
|
||||
explosions->addTexture(2, explosionsTextures[1], explosionsAnimations[1]);
|
||||
@@ -92,9 +94,8 @@ Game::Game(int playerID, int currentStage, bool demo, JA_Music_t *music)
|
||||
Game::~Game()
|
||||
{
|
||||
// Guarda las puntuaciones en un fichero
|
||||
ManageHiScoreTable *manager = new ManageHiScoreTable(&options.game.hiScoreTable);
|
||||
auto manager = std::make_unique<ManageHiScoreTable>(&options.game.hiScoreTable);
|
||||
manager->saveToFile(asset->get("score.bin"));
|
||||
delete manager;
|
||||
#ifdef RECORDING
|
||||
saveDemoFile(asset->get("demo1.bin"));
|
||||
#endif
|
||||
@@ -105,18 +106,8 @@ Game::~Game()
|
||||
// Libera los recursos
|
||||
unloadMedia();
|
||||
|
||||
delete scoreboard;
|
||||
delete background;
|
||||
delete explosions;
|
||||
delete enemyFormations;
|
||||
|
||||
delete fade;
|
||||
delete eventHandler;
|
||||
|
||||
delete n1000Sprite;
|
||||
delete n2500Sprite;
|
||||
delete n5000Sprite;
|
||||
|
||||
Scoreboard::destroy();
|
||||
|
||||
SDL_DestroyTexture(canvas);
|
||||
}
|
||||
|
||||
@@ -163,7 +154,7 @@ void Game::init(int playerID)
|
||||
// Variables relacionadas con la dificultad
|
||||
switch (difficulty)
|
||||
{
|
||||
case DIFFICULTY_EASY:
|
||||
case gameDifficulty::EASY:
|
||||
{
|
||||
defaultEnemySpeed = BALLOON_SPEED_1;
|
||||
difficultyScoreMultiplier = 0.5f;
|
||||
@@ -172,7 +163,7 @@ void Game::init(int playerID)
|
||||
break;
|
||||
}
|
||||
|
||||
case DIFFICULTY_NORMAL:
|
||||
case gameDifficulty::NORMAL:
|
||||
{
|
||||
defaultEnemySpeed = BALLOON_SPEED_1;
|
||||
difficultyScoreMultiplier = 1.0f;
|
||||
@@ -181,7 +172,7 @@ void Game::init(int playerID)
|
||||
break;
|
||||
}
|
||||
|
||||
case DIFFICULTY_HARD:
|
||||
case gameDifficulty::HARD:
|
||||
{
|
||||
defaultEnemySpeed = BALLOON_SPEED_5;
|
||||
difficultyScoreMultiplier = 1.5f;
|
||||
@@ -312,10 +303,10 @@ void Game::init(int playerID)
|
||||
evaluateAndSetMenace();
|
||||
|
||||
// Inicializa el bitmap de 1000 puntos
|
||||
const int height = 15;
|
||||
const int sprite1Width = 35;
|
||||
const int sprite2Width = 38;
|
||||
const int sprite3Width = 39;
|
||||
constexpr int height = 15;
|
||||
constexpr int sprite1Width = 35;
|
||||
constexpr int sprite2Width = 38;
|
||||
constexpr int sprite3Width = 39;
|
||||
n1000Sprite->setPosX(0);
|
||||
n1000Sprite->setPosY(0);
|
||||
n1000Sprite->setWidth(sprite1Width);
|
||||
@@ -379,8 +370,8 @@ void Game::loadMedia()
|
||||
explosionsTextures.clear();
|
||||
|
||||
// Texturas
|
||||
bulletTexture = new Texture(renderer, asset->get("bullet.png"));
|
||||
gameTextTexture = new Texture(renderer, asset->get("game_text.png"));
|
||||
bulletTexture = std::make_unique<Texture>(renderer, asset->get("bullet.png"));
|
||||
gameTextTexture = std::make_unique<Texture>(renderer, asset->get("game_text.png"));
|
||||
|
||||
// Texturas - Globos
|
||||
Texture *balloon1Texture = new Texture(renderer, asset->get("balloon1.png"));
|
||||
@@ -566,9 +557,6 @@ void Game::loadMedia()
|
||||
void Game::unloadMedia()
|
||||
{
|
||||
// Texturas
|
||||
delete bulletTexture;
|
||||
delete gameTextTexture;
|
||||
|
||||
for (auto texture : player1Textures)
|
||||
{
|
||||
if (texture)
|
||||
@@ -1059,7 +1047,7 @@ void Game::setBalloonSpeed(float speed)
|
||||
void Game::incBalloonSpeed()
|
||||
{
|
||||
// La velocidad solo se incrementa en el modo normal
|
||||
if (difficulty == DIFFICULTY_NORMAL)
|
||||
if (difficulty == gameDifficulty::NORMAL)
|
||||
{
|
||||
if (enemySpeed == BALLOON_SPEED_1)
|
||||
{
|
||||
@@ -1089,7 +1077,7 @@ void Game::incBalloonSpeed()
|
||||
void Game::decBalloonSpeed()
|
||||
{
|
||||
// La velocidad solo se decrementa en el modo normal
|
||||
if (difficulty == DIFFICULTY_NORMAL)
|
||||
if (difficulty == gameDifficulty::NORMAL)
|
||||
{
|
||||
if (enemySpeed == BALLOON_SPEED_5)
|
||||
{
|
||||
@@ -1383,21 +1371,21 @@ void Game::checkPlayerItemCollision(Player *player)
|
||||
case ITEM_POINTS_1_DISK:
|
||||
player->addScore(1000);
|
||||
updateHiScore();
|
||||
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (n1000Sprite->getWidth() / 2), player->getPosY(), n1000Sprite);
|
||||
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (n1000Sprite->getWidth() / 2), player->getPosY(), n1000Sprite.get());
|
||||
JA_PlaySound(itemPickUpSound);
|
||||
break;
|
||||
|
||||
case ITEM_POINTS_2_GAVINA:
|
||||
player->addScore(2500);
|
||||
updateHiScore();
|
||||
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (n2500Sprite->getWidth() / 2), player->getPosY(), n2500Sprite);
|
||||
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (n2500Sprite->getWidth() / 2), player->getPosY(), n2500Sprite.get());
|
||||
JA_PlaySound(itemPickUpSound);
|
||||
break;
|
||||
|
||||
case ITEM_POINTS_3_PACMAR:
|
||||
player->addScore(5000);
|
||||
updateHiScore();
|
||||
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (n5000Sprite->getWidth() / 2), player->getPosY(), n5000Sprite);
|
||||
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (n5000Sprite->getWidth() / 2), player->getPosY(), n5000Sprite.get());
|
||||
JA_PlaySound(itemPickUpSound);
|
||||
break;
|
||||
|
||||
@@ -1411,7 +1399,7 @@ void Game::checkPlayerItemCollision(Player *player)
|
||||
{
|
||||
player->addScore(5000);
|
||||
updateHiScore();
|
||||
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (n5000Sprite->getWidth() / 2), player->getPosY(), n5000Sprite);
|
||||
createItemScoreSprite(item->getPosX() + (item->getWidth() / 2) - (n5000Sprite->getWidth() / 2), player->getPosY(), n5000Sprite.get());
|
||||
}
|
||||
player->giveExtraHit();
|
||||
JA_PlaySound(itemPickUpSound);
|
||||
@@ -1517,7 +1505,7 @@ void Game::renderBullets()
|
||||
// Crea un objeto bala
|
||||
void Game::createBullet(int x, int y, BulletType kind, bool poweredUp, int owner)
|
||||
{
|
||||
Bullet *b = new Bullet(x, y, kind, poweredUp, owner, &(param.game.playArea.rect), bulletTexture);
|
||||
Bullet *b = new Bullet(x, y, kind, poweredUp, owner, &(param.game.playArea.rect), bulletTexture.get());
|
||||
bullets.push_back(b);
|
||||
}
|
||||
|
||||
@@ -2629,7 +2617,7 @@ bool Game::allPlayersAreNotPlaying()
|
||||
// Comprueba los eventos que hay en cola
|
||||
void Game::checkEvents()
|
||||
{
|
||||
while (SDL_PollEvent(eventHandler) != 0)
|
||||
while (SDL_PollEvent(eventHandler.get()) != 0)
|
||||
{
|
||||
// Evento de salida de la aplicación
|
||||
if (eventHandler->type == SDL_QUIT)
|
||||
@@ -2815,11 +2803,10 @@ void Game::pause(bool value)
|
||||
// Añade una puntuación a la tabla de records
|
||||
void Game::addScoreToScoreBoard(std::string name, int score)
|
||||
{
|
||||
const hiScoreEntry_t entry = {trim(name), score};
|
||||
ManageHiScoreTable *manager = new ManageHiScoreTable(&options.game.hiScoreTable);
|
||||
const auto entry = (hiScoreEntry_t){trim(name), score};
|
||||
auto manager = std::make_unique<ManageHiScoreTable>(&options.game.hiScoreTable);
|
||||
manager->add(entry);
|
||||
manager->saveToFile(asset->get("score.bin"));
|
||||
delete manager;
|
||||
}
|
||||
|
||||
// Comprueba el estado de los jugadores
|
||||
@@ -2860,7 +2847,6 @@ void Game::checkPlayersStatusPlaying()
|
||||
{
|
||||
const playerStatus nextPlayerStatus = IsEligibleForHighScore(player->getScore()) ? playerStatus::ENTERING_NAME : playerStatus::CONTINUE;
|
||||
demo.enabled ? player->setStatusPlaying(playerStatus::WAITING) : player->setStatusPlaying(nextPlayerStatus);
|
||||
// addScoreToScoreBoard(player->getName(), player->getScore());
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user