Creada la classe ManageHiScoreTable

This commit is contained in:
2024-07-13 17:57:15 +02:00
parent ebbe84da64
commit 6eef3ada55
4 changed files with 110 additions and 2 deletions

View File

@@ -212,3 +212,14 @@ JA_Music_t *getMusic(std::vector<music_file_t> music, std::string name)
return nullptr; return nullptr;
} }
// Ordena las entradas de la tabla de records
hiScoreEntry_t sortHiScoreTable(hiScoreEntry_t entry1, hiScoreEntry_t entry2)
{
if (entry1.score > entry2.score)
{
return entry1;
}
return entry2;
}

View File

@@ -76,6 +76,13 @@ struct section_t
Uint8 subsection; Uint8 subsection;
}; };
// Estructura para las entradas de la tabla de recirds
struct hiScoreEntry_t
{
std::string name; // Nombre
int score; // Puntuación
};
// Estructura para mapear el teclado usado en la demo // Estructura para mapear el teclado usado en la demo
struct demoKeys_t struct demoKeys_t
{ {
@@ -142,8 +149,9 @@ struct op_audio_t
// Estructura para las opciones del juego // Estructura para las opciones del juego
struct op_game_t struct op_game_t
{ {
Uint8 difficulty; // Dificultad del juego Uint8 difficulty; // Dificultad del juego
Uint8 language; // Idioma usado en el juego Uint8 language; // Idioma usado en el juego
std::vector<hiScoreEntry_t> hiScoreTable; // Tabla con las mejores puntuaciones
}; };
// Estructura para los controles del juego // Estructura para los controles del juego
@@ -238,4 +246,7 @@ JA_Sound_t *getSound(std::vector<sound_file_t> sounds, std::string name);
// Obtiene el fichero de música a partir de un nombre // Obtiene el fichero de música a partir de un nombre
JA_Music_t *getMusic(std::vector<music_file_t> music, std::string name); JA_Music_t *getMusic(std::vector<music_file_t> music, std::string name);
// Ordena las entradas de la tabla de records
hiScoreEntry_t sortHiScoreTable(hiScoreEntry_t entry1, hiScoreEntry_t entry2);
#endif #endif

View File

@@ -0,0 +1,58 @@
#include "manage_hiscore_table.h"
// Constructor
ManageHiScoreTable::ManageHiScoreTable(std::vector<hiScoreEntry_t> *table)
{
this->table = table;
}
// Destructor
ManageHiScoreTable::~ManageHiScoreTable()
{
}
// Borra toda la tabla
void ManageHiScoreTable::clear()
{
// Limpia la tabla
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});
}
// Añade un elemento a la tabla
void ManageHiScoreTable::add(hiScoreEntry_t entry)
{
// Añade la entrada a la tabla
table->push_back(entry);
// Ordena la tabla
sort();
// Deja solo las 10 primeras entradas
if ((int)table->size() >= 10)
{
table->resize(table->size() - 10);
}
}
// Ordena la tabla
void ManageHiScoreTable::sort()
{
struct
{
bool operator()(hiScoreEntry_t a, hiScoreEntry_t b) const { return a.score < b.score; }
} customLess;
std::sort(table->begin(), table->end(), customLess);
}

View File

@@ -0,0 +1,28 @@
#pragma once
#include <algorithm>
#include "common/utils.h"
// Clase ManageHiScoreTable
class ManageHiScoreTable
{
private:
// Variables
std::vector<hiScoreEntry_t> *table; // Tabla con los records
// Ordena la tabla
void sort();
public:
// Constructor
ManageHiScoreTable(std::vector<hiScoreEntry_t> *table);
// Destructor
~ManageHiScoreTable();
// Borra toda la tabla
void clear();
// Añade un elemento a la tabla
void add(hiScoreEntry_t entry);
};