Creada la classe ManageHiScoreTable
This commit is contained in:
@@ -211,4 +211,15 @@ JA_Music_t *getMusic(std::vector<music_file_t> music, std::string name)
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
@@ -76,6 +76,13 @@ struct section_t
|
||||
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
|
||||
struct demoKeys_t
|
||||
{
|
||||
@@ -142,8 +149,9 @@ struct op_audio_t
|
||||
// Estructura para las opciones del juego
|
||||
struct op_game_t
|
||||
{
|
||||
Uint8 difficulty; // Dificultad del juego
|
||||
Uint8 language; // Idioma usado en el juego
|
||||
Uint8 difficulty; // Dificultad del juego
|
||||
Uint8 language; // Idioma usado en el juego
|
||||
std::vector<hiScoreEntry_t> hiScoreTable; // Tabla con las mejores puntuaciones
|
||||
};
|
||||
|
||||
// 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
|
||||
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
|
||||
58
source/manage_hiscore_table.cpp
Normal file
58
source/manage_hiscore_table.cpp
Normal 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);
|
||||
}
|
||||
28
source/manage_hiscore_table.h
Normal file
28
source/manage_hiscore_table.h
Normal 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);
|
||||
};
|
||||
Reference in New Issue
Block a user