43 lines
1.6 KiB
C++
43 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include <string> // Para std::string
|
|
#include <vector> // Para std::vector
|
|
|
|
// --- Estructuras ---
|
|
struct HiScoreEntry {
|
|
std::string name; // Nombre
|
|
int score; // Puntuación
|
|
bool one_credit_complete; // Indica si se ha conseguido 1CC
|
|
|
|
// Constructor
|
|
explicit HiScoreEntry(const std::string &n = "", int s = 0, bool occ = false)
|
|
: name(n.substr(0, 6)), score(s), one_credit_complete(occ) {}
|
|
};
|
|
|
|
// --- Tipos ---
|
|
using Table = std::vector<HiScoreEntry>; // Tabla de puntuaciones
|
|
|
|
// --- Clase ManageHiScoreTable ---
|
|
class ManageHiScoreTable {
|
|
public:
|
|
// --- Constantes ---
|
|
static constexpr int NO_ENTRY = -1;
|
|
|
|
// --- Constructor y destructor ---
|
|
explicit ManageHiScoreTable(Table &table) // Constructor con referencia a tabla
|
|
: table_(table) {}
|
|
~ManageHiScoreTable() = default; // Destructor
|
|
|
|
// --- Métodos públicos ---
|
|
void clear(); // Resetea la tabla a los valores por defecto
|
|
auto add(const HiScoreEntry &entry) -> int; // Añade un elemento a la tabla (devuelve la posición en la que se inserta)
|
|
auto loadFromFile(const std::string &file_path) -> bool; // Carga la tabla con los datos de un fichero
|
|
auto saveToFile(const std::string &file_path) -> bool; // Guarda la tabla en un fichero
|
|
|
|
private:
|
|
// --- Variables privadas ---
|
|
Table &table_; // Referencia a la tabla con los records
|
|
|
|
// --- Métodos privados ---
|
|
void sort(); // Ordena la tabla
|
|
}; |