Creada la classe ManageHiScoreTable
This commit is contained in:
@@ -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;
|
||||||
|
}
|
||||||
@@ -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
|
||||||
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