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.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.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.enter_name_seconds 30 # Duración en segundos para introducir el nombre al finalizar la partida
game.game_text.dest_y
## FADE ## FADE
fade.num_squares_width 160 fade.num_squares_width 160

View File

@@ -90,7 +90,7 @@ Director::Director(int argc, const char *argv[])
// Carga el fichero de puntuaciones // 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) if (overrides.clear_hi_score_table)
{ {
manager->clear(); manager->clear();

View File

@@ -64,8 +64,8 @@ Game::Game(int player_id, int current_stage, bool demo)
explosions_ = std::make_unique<Explosions>(); explosions_ = std::make_unique<Explosions>();
balloon_formations_ = std::make_unique<BalloonFormations>(); balloon_formations_ = std::make_unique<BalloonFormations>();
// Carga los recursos // Asigna los recursos a variables privadas del objeto
loadMedia(); setResources();
// Inicializa los vectores con los datos para la demo // Inicializa los vectores con los datos para la demo
if (demo_.enabled) 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); 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); 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 // 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_); 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); player1->setScoreBoardPanel(SCOREBOARD_LEFT_PANEL);
@@ -134,14 +101,12 @@ void Game::init(int player_id)
player2->setController(controller2); player2->setController(controller2);
players_.push_back(std::move(player2)); players_.push_back(std::move(player2));
// Obtiene mediante "playerID" el jugador que va a empezar jugar // Activa el jugador que coincide con el "player_id"
auto main_player = getPlayer(player_id); {
auto player = getPlayer(player_id);
// Cambia el estado del jugador seleccionado player->setStatusPlaying(PlayerStatus::PLAYING);
main_player->setStatusPlaying(PlayerStatus::PLAYING); player->setInvulnerable(false);
}
// Como es el principio del juego, empieza sin inmunidad
main_player->setInvulnerable(false);
// Variables relacionadas con la dificultad // Variables relacionadas con la dificultad
switch (difficulty_) switch (difficulty_)
@@ -150,8 +115,7 @@ void Game::init(int player_id)
{ {
default_balloon_speed_ = BALLOON_SPEED_1; default_balloon_speed_ = BALLOON_SPEED_1;
difficulty_score_multiplier_ = 0.5f; difficulty_score_multiplier_ = 0.5f;
difficulty_color_ = difficulty_easy_color; scoreboard_->setColor(scoreboard_easy_color);
scoreboard_->setColor(difficulty_color_);
break; break;
} }
@@ -159,8 +123,7 @@ void Game::init(int player_id)
{ {
default_balloon_speed_ = BALLOON_SPEED_1; default_balloon_speed_ = BALLOON_SPEED_1;
difficulty_score_multiplier_ = 1.0f; difficulty_score_multiplier_ = 1.0f;
difficulty_color_ = difficulty_normal_color; scoreboard_->setColor(scoreboard_normal_color);
scoreboard_->setColor(scoreboard_color);
break; break;
} }
@@ -168,8 +131,7 @@ void Game::init(int player_id)
{ {
default_balloon_speed_ = BALLOON_SPEED_5; default_balloon_speed_ = BALLOON_SPEED_5;
difficulty_score_multiplier_ = 1.5f; difficulty_score_multiplier_ = 1.5f;
difficulty_color_ = difficulty_hard_color; scoreboard_->setColor(scoreboard_hard_color);
scoreboard_->setColor(difficulty_color_);
break; break;
} }
@@ -299,11 +261,26 @@ void Game::init(int player_id)
smart_sprites_.clear(); smart_sprites_.clear();
} }
// Carga los recursos necesarios para la sección 'Game' Game::~Game()
void Game::loadMedia()
{ {
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 // Texturas
{ {
bullet_texture_ = Resource::get()->getTexture("bullet.png"); 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 // Crea una formación de enemigos
void Game::deployBalloonFormation() 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 // Recarga las texturas
void Game::reloadTextures() void Game::reloadTextures()
{ {
@@ -2014,8 +1964,8 @@ void Game::pause(bool value)
// Añade una puntuación a la tabla de records // Añade una puntuación a la tabla de records
void Game::addScoreToScoreBoard(const std::string &name, int score) void Game::addScoreToScoreBoard(const std::string &name, int score)
{ {
const auto entry = (HiScoreEntry){trim(name), score}; const auto entry = HiScoreEntry(trim(name), score);
auto manager = std::make_unique<ManageHiScoreTable>(&options.game.hi_score_table); auto manager = std::make_unique<ManageHiScoreTable>(options.game.hi_score_table);
manager->add(entry); manager->add(entry);
manager->saveToFile(asset_->get("score.bin")); 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_clock_odds; // Probabilidad de aparición del objeto
int item_coffee_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 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 // 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 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 GameDifficulty difficulty_; // Dificultad del juego
float difficulty_score_multiplier_; // Multiplicador de puntos en función de la dificultad 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 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 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 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 // Comprueba los eventos que hay en cola
void checkEvents(); void checkEvents();
// Inicializa las variables necesarias para la sección 'Game' // Asigna los recursos a variables privadas del objeto
void init(int player_id); void setResources();
// Carga los recursos necesarios para la sección 'Game'
void loadMedia();
// Libera los recursos previamente cargados
void unloadMedia();
// Crea una formación de enemigos // Crea una formación de enemigos
void deployBalloonFormation(); void deployBalloonFormation();
@@ -366,9 +365,6 @@ private:
// Comprueba si todos los jugadores han terminado de jugar // Comprueba si todos los jugadores han terminado de jugar
bool allPlayersAreNotPlaying(); bool allPlayersAreNotPlaying();
// Elimina todos los objetos contenidos en vectores
void deleteAllVectorObjects();
// Recarga las texturas // Recarga las texturas
void reloadTextures(); void reloadTextures();

View File

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

View File

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

View File

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

View File

@@ -71,6 +71,10 @@ struct HiScoreEntry
{ {
std::string name; // Nombre std::string name; // Nombre
int score; // Puntuación int score; // Puntuación
// Constructor
HiScoreEntry(const std::string &n = "", int s = 0)
: name(n), score(s) {}
}; };
struct DemoKeys struct DemoKeys
@@ -96,6 +100,14 @@ struct Demo
int counter; // Contador para el modo demo int counter; // Contador para el modo demo
DemoKeys keys; // Variable con las pulsaciones de teclas del 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 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 // Estructura para las opciones de la ventana
@@ -308,10 +320,9 @@ extern const Color bg_color;
extern const Color no_color; extern const Color no_color;
extern const Color shdw_txt_color; extern const Color shdw_txt_color;
extern const Color separator_color; extern const Color separator_color;
extern const Color scoreboard_color; extern const Color scoreboard_easy_color;
extern const Color difficulty_easy_color; extern const Color scoreboard_normal_color;
extern const Color difficulty_normal_color; extern const Color scoreboard_hard_color;
extern const Color difficulty_hard_color;
extern const Color flash_color; extern const Color flash_color;
extern const Color fade_color; extern const Color fade_color;
extern const Color orange_color; extern const Color orange_color;