Varios arreglos d'estil en el codi i llevar metodes que ja no servien

This commit is contained in:
2024-10-21 22:47:00 +02:00
parent 236d6f58b6
commit 1d0c2e01a5
8 changed files with 82 additions and 128 deletions

View File

@@ -7,6 +7,7 @@ game.play_area.rect.y 0 # Rectangulo con la posición de la zona de juego
game.play_area.rect.w 320 # Rectangulo con la posición de la zona de juego
game.play_area.rect.h 216 # Rectangulo con la posición de la zona de juego
game.enter_name_seconds 30 # Duración en segundos para introducir el nombre al finalizar la partida
game.game_text.dest_y
## FADE
fade.num_squares_width 160

View File

@@ -90,7 +90,7 @@ Director::Director(int argc, const char *argv[])
// Carga el fichero de puntuaciones
{
auto manager = std::make_unique<ManageHiScoreTable>(&options.game.hi_score_table);
auto manager = std::make_unique<ManageHiScoreTable>(options.game.hi_score_table);
if (overrides.clear_hi_score_table)
{
manager->clear();

View File

@@ -64,8 +64,8 @@ Game::Game(int player_id, int current_stage, bool demo)
explosions_ = std::make_unique<Explosions>();
balloon_formations_ = std::make_unique<BalloonFormations>();
// Carga los recursos
loadMedia();
// Asigna los recursos a variables privadas del objeto
setResources();
// Inicializa los vectores con los datos para la demo
if (demo_.enabled)
@@ -86,39 +86,6 @@ Game::Game(int player_id, int current_stage, bool demo)
canvas_ = SDL_CreateTexture(renderer_, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, param.game.play_area.rect.w, param.game.play_area.rect.h);
SDL_SetTextureBlendMode(canvas_, SDL_BLENDMODE_BLEND);
// Inicializa las variables necesarias para la sección 'Game'
init(player_id);
}
Game::~Game()
{
// Guarda las puntuaciones en un fichero
if (!demo_.enabled)
{
auto manager = std::make_unique<ManageHiScoreTable>(&options.game.hi_score_table);
manager->saveToFile(asset_->get("score.bin"));
}
#ifdef RECORDING
saveDemoFile(Asset::get()->get("demo1.bin"), demo_.data.at(0));
#endif
// Elimina todos los objetos contenidos en vectores
deleteAllVectorObjects();
// Libera los recursos
unloadMedia();
Scoreboard::destroy();
SDL_DestroyTexture(canvas_);
}
// Inicializa las variables necesarias para la sección 'Game'
void Game::init(int player_id)
{
// Elimina qualquier jugador que hubiese antes de crear los nuevos
players_.clear();
// Crea los dos jugadores
auto player1 = std::make_unique<Player>(1, (param.game.play_area.first_quarter_x * ((0 * 2) + 1)) - 11, param.game.play_area.rect.h - 30, demo_.enabled, &param.game.play_area.rect, player_textures_[0], player_animations_);
player1->setScoreBoardPanel(SCOREBOARD_LEFT_PANEL);
@@ -134,14 +101,12 @@ void Game::init(int player_id)
player2->setController(controller2);
players_.push_back(std::move(player2));
// Obtiene mediante "playerID" el jugador que va a empezar jugar
auto main_player = getPlayer(player_id);
// Cambia el estado del jugador seleccionado
main_player->setStatusPlaying(PlayerStatus::PLAYING);
// Como es el principio del juego, empieza sin inmunidad
main_player->setInvulnerable(false);
// Activa el jugador que coincide con el "player_id"
{
auto player = getPlayer(player_id);
player->setStatusPlaying(PlayerStatus::PLAYING);
player->setInvulnerable(false);
}
// Variables relacionadas con la dificultad
switch (difficulty_)
@@ -150,8 +115,7 @@ void Game::init(int player_id)
{
default_balloon_speed_ = BALLOON_SPEED_1;
difficulty_score_multiplier_ = 0.5f;
difficulty_color_ = difficulty_easy_color;
scoreboard_->setColor(difficulty_color_);
scoreboard_->setColor(scoreboard_easy_color);
break;
}
@@ -159,8 +123,7 @@ void Game::init(int player_id)
{
default_balloon_speed_ = BALLOON_SPEED_1;
difficulty_score_multiplier_ = 1.0f;
difficulty_color_ = difficulty_normal_color;
scoreboard_->setColor(scoreboard_color);
scoreboard_->setColor(scoreboard_normal_color);
break;
}
@@ -168,8 +131,7 @@ void Game::init(int player_id)
{
default_balloon_speed_ = BALLOON_SPEED_5;
difficulty_score_multiplier_ = 1.5f;
difficulty_color_ = difficulty_hard_color;
scoreboard_->setColor(difficulty_color_);
scoreboard_->setColor(scoreboard_hard_color);
break;
}
@@ -299,11 +261,26 @@ void Game::init(int player_id)
smart_sprites_.clear();
}
// Carga los recursos necesarios para la sección 'Game'
void Game::loadMedia()
Game::~Game()
{
unloadMedia();
// Guarda las puntuaciones en un fichero
if (!demo_.enabled)
{
auto manager = std::make_unique<ManageHiScoreTable>(options.game.hi_score_table);
manager->saveToFile(asset_->get("score.bin"));
}
#ifdef RECORDING
saveDemoFile(Asset::get()->get("demo1.bin"), demo_.data.at(0));
#endif
Scoreboard::destroy();
SDL_DestroyTexture(canvas_);
}
// Asigna los recursos a variables privadas del objeto
void Game::setResources()
{
// Texturas
{
bullet_texture_ = Resource::get()->getTexture("bullet.png");
@@ -403,23 +380,6 @@ void Game::loadMedia()
}
}
// Libera los recursos previamente cargados
void Game::unloadMedia()
{
// Texturas
game_text_textures_.clear();
balloon_textures_.clear();
explosions_textures_.clear();
item_textures_.clear();
player_textures_.clear();
// Animaciones
player_animations_.clear();
balloon_animations_.clear();
explosions_animations_.clear();
item_animations_.clear();
}
// Crea una formación de enemigos
void Game::deployBalloonFormation()
{
@@ -1945,16 +1905,6 @@ void Game::checkEvents()
}
}
// Elimina todos los objetos contenidos en vectores
void Game::deleteAllVectorObjects()
{
players_.clear();
balloons_.clear();
bullets_.clear();
items_.clear();
smart_sprites_.clear();
}
// Recarga las texturas
void Game::reloadTextures()
{
@@ -2014,8 +1964,8 @@ void Game::pause(bool value)
// Añade una puntuación a la tabla de records
void Game::addScoreToScoreBoard(const std::string &name, int score)
{
const auto entry = (HiScoreEntry){trim(name), score};
auto manager = std::make_unique<ManageHiScoreTable>(&options.game.hi_score_table);
const auto entry = HiScoreEntry(trim(name), score);
auto manager = std::make_unique<ManageHiScoreTable>(options.game.hi_score_table);
manager->add(entry);
manager->saveToFile(asset_->get("score.bin"));
}

View File

@@ -76,6 +76,12 @@ private:
int item_clock_odds; // Probabilidad de aparición del objeto
int item_coffee_odds; // Probabilidad de aparición del objeto
int item_coffee_machine_odds; // Probabilidad de aparición del objeto
// Constructor con valores predeterminados
Helper(bool nc = false, bool ncm = false, bool npb = false, int c = 0, int ido = 0, int igo = 0, int ipo = 0, int ico = 0, int icoffo = 0, int icmo = 0)
: need_coffee(nc), need_coffee_machine(ncm), need_power_ball(npb), counter(c),
item_disk_odds(ido), item_gavina_odds(igo), item_pacmar_odds(ipo), item_clock_odds(ico),
item_coffee_odds(icoffo), item_coffee_machine_odds(icmo) {}
};
// Constantes
@@ -164,7 +170,6 @@ private:
int game_completed_counter_; // Contador para el tramo final, cuando se ha completado la partida y ya no aparecen más enemigos
GameDifficulty difficulty_; // Dificultad del juego
float difficulty_score_multiplier_; // Multiplicador de puntos en función de la dificultad
Color difficulty_color_; // Color asociado a la dificultad
int last_stage_reached_; // Contiene el número de la última pantalla que se ha alcanzado
Demo demo_; // Variable con todas las variables relacionadas con el modo demo
int total_power_to_complete_game_; // La suma del poder necesario para completar todas las fases
@@ -183,14 +188,8 @@ private:
// Comprueba los eventos que hay en cola
void checkEvents();
// Inicializa las variables necesarias para la sección 'Game'
void init(int player_id);
// Carga los recursos necesarios para la sección 'Game'
void loadMedia();
// Libera los recursos previamente cargados
void unloadMedia();
// Asigna los recursos a variables privadas del objeto
void setResources();
// Crea una formación de enemigos
void deployBalloonFormation();
@@ -366,9 +365,6 @@ private:
// Comprueba si todos los jugadores han terminado de jugar
bool allPlayersAreNotPlaying();
// Elimina todos los objetos contenidos en vectores
void deleteAllVectorObjects();
// Recarga las texturas
void reloadTextures();

View File

@@ -6,42 +6,38 @@
#include <iostream> // for basic_ostream, char_traits, operator<<
#include "utils.h" // for HiScoreEntry
// Constructor
ManageHiScoreTable::ManageHiScoreTable(std::vector<HiScoreEntry> *table)
: table_(table) {}
// Resetea la tabla a los valores por defecto
void ManageHiScoreTable::clear()
{
// Limpia la tabla
table_->clear();
table_.clear();
// Añade 10 entradas predefinidas
table_->push_back({"Bry", 1000000});
table_->push_back({"Usufondo", 500000});
table_->push_back({"G.Lucas", 100000});
table_->push_back({"P.Delgat", 50000});
table_->push_back({"P.Arrabalera", 10000});
table_->push_back({"Pelechano", 5000});
table_->push_back({"Sahuquillo", 1000});
table_->push_back({"Bacteriol", 500});
table_->push_back({"Pepe", 200});
table_->push_back({"Rosita", 100});
table_.push_back({"Bry", 1000000});
table_.push_back({"Usufondo", 500000});
table_.push_back({"G.Lucas", 100000});
table_.push_back({"P.Delgat", 50000});
table_.push_back({"P.Arrabalera", 10000});
table_.push_back({"Pelechano", 5000});
table_.push_back({"Sahuquillo", 1000});
table_.push_back({"Bacteriol", 500});
table_.push_back({"Pepe", 200});
table_.push_back({"Rosita", 100});
}
// Añade un elemento a la tabla
void ManageHiScoreTable::add(HiScoreEntry entry)
{
// Añade la entrada a la tabla
table_->push_back(entry);
table_.push_back(entry);
// Ordena la tabla
sort();
// Deja solo las 10 primeras entradas
if (static_cast<int>(table_->size()) > 10)
if (static_cast<int>(table_.size()) > 10)
{
table_->resize(10);
table_.resize(10);
}
}
@@ -53,7 +49,7 @@ void ManageHiScoreTable::sort()
bool operator()(const HiScoreEntry &a, const HiScoreEntry &b) const { return a.score > b.score; }
} custom_less;
std::sort(table_->begin(), table_->end(), custom_less);
std::sort(table_.begin(), table_.end(), custom_less);
}
// Carga la tabla con los datos de un fichero
@@ -68,7 +64,7 @@ bool ManageHiScoreTable::loadFromFile(const std::string &file_path)
const std::string file_name = file_path.substr(file_path.find_last_of("\\/") + 1);
std::cout << "Reading file: " << file_name << std::endl;
for (auto &entry : *table_)
for (auto &entry : table_)
{
int nameSize = 0;
@@ -116,12 +112,12 @@ bool ManageHiScoreTable::saveToFile(const std::string &file_path)
if (file)
{
// Guarda los datos
for (int i = 0; i < (int)table_->size(); ++i)
for (int i = 0; i < (int)table_.size(); ++i)
{
SDL_RWwrite(file, &table_->at(i).score, sizeof(int), 1);
const int nameSize = (int)table_->at(i).name.size();
SDL_RWwrite(file, &table_.at(i).score, sizeof(int), 1);
const int nameSize = (int)table_.at(i).name.size();
SDL_RWwrite(file, &nameSize, sizeof(int), 1);
SDL_RWwrite(file, table_->at(i).name.c_str(), nameSize, 1);
SDL_RWwrite(file, table_.at(i).name.c_str(), nameSize, 1);
}
std::cout << "Writing file: " << file_name.c_str() << std::endl;

View File

@@ -17,14 +17,15 @@ class ManageHiScoreTable
{
private:
// Variables
std::vector<HiScoreEntry> *table_; // Tabla con los records
std::vector<HiScoreEntry> &table_; // Tabla con los records
// Ordena la tabla
void sort();
public:
// Constructor
explicit ManageHiScoreTable(std::vector<HiScoreEntry> *table);
explicit ManageHiScoreTable(std::vector<HiScoreEntry> &table)
: table_(table) {} // Inicialización en el constructor
// Destructor
~ManageHiScoreTable() = default;

View File

@@ -16,10 +16,9 @@ const Color bg_color = {0x27, 0x27, 0x36};
const Color no_color = {0xFF, 0xFF, 0xFF};
const Color shdw_txt_color = {0x43, 0x43, 0x4F};
const Color separator_color = {0x0D, 0x1A, 0x2B};
const Color scoreboard_color = {0x2E, 0x3F, 0x47};
const Color difficulty_easy_color = {0x4B, 0x69, 0x2F};
const Color difficulty_normal_color = {0xFF, 0x7A, 0x00};
const Color difficulty_hard_color = {0x76, 0x42, 0x8A};
const Color scoreboard_easy_color = {0x4B, 0x69, 0x2F};
const Color scoreboard_normal_color = {0x2E, 0x3F, 0x47};
const Color scoreboard_hard_color = {0x76, 0x42, 0x8A};
const Color flash_color = {0xFF, 0xFF, 0xFF};
const Color fade_color = {0x27, 0x27, 0x36};
const Color orange_color = {0xFF, 0x7A, 0x00};

View File

@@ -71,6 +71,10 @@ struct HiScoreEntry
{
std::string name; // Nombre
int score; // Puntuación
// Constructor
HiScoreEntry(const std::string &n = "", int s = 0)
: name(n), score(s) {}
};
struct DemoKeys
@@ -96,6 +100,14 @@ struct Demo
int counter; // Contador para el modo demo
DemoKeys keys; // Variable con las pulsaciones de teclas del modo demo
std::vector<DemoData> data; // Vector con diferentes sets de datos con los movimientos para la demo
// Constructor por defecto
Demo()
: enabled(false), recording(false), counter(0), keys(), data() {}
// Constructor con parámetros
Demo(bool e, bool r, int c, const DemoKeys &k, const std::vector<DemoData> &d)
: enabled(e), recording(r), counter(c), keys(k), data(d) {}
};
// Estructura para las opciones de la ventana
@@ -308,10 +320,9 @@ extern const Color bg_color;
extern const Color no_color;
extern const Color shdw_txt_color;
extern const Color separator_color;
extern const Color scoreboard_color;
extern const Color difficulty_easy_color;
extern const Color difficulty_normal_color;
extern const Color difficulty_hard_color;
extern const Color scoreboard_easy_color;
extern const Color scoreboard_normal_color;
extern const Color scoreboard_hard_color;
extern const Color flash_color;
extern const Color fade_color;
extern const Color orange_color;