55 lines
1.5 KiB
C++
55 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include <string> // Para std::string
|
|
#include <vector> // Para std::vector
|
|
|
|
/*
|
|
Esta clase sirve para añadir elementos HiScoreEntry a un vector (tabla), de manera
|
|
que la tabla siempre está ordenada.
|
|
|
|
Además tiene un método para dejar la tabla con sus valores iniciales y métodos para
|
|
leer y escribir la tabla a un fichero.
|
|
*/
|
|
|
|
// --- Estructura para las entradas de la tabla de records ---
|
|
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) {}
|
|
};
|
|
|
|
// --- Clase ManageHiScoreTable ---
|
|
class ManageHiScoreTable
|
|
{
|
|
public:
|
|
// Constructor
|
|
explicit ManageHiScoreTable(std::vector<HiScoreEntry> &table)
|
|
: table_(table) {}
|
|
|
|
// Destructor
|
|
~ManageHiScoreTable() = default;
|
|
|
|
// Resetea la tabla a los valores por defecto
|
|
void clear();
|
|
|
|
// Añade un elemento a la tabla (devuelve la posición en la que se inserta)
|
|
int add(const HiScoreEntry &entry);
|
|
|
|
// Carga la tabla con los datos de un fichero
|
|
bool loadFromFile(const std::string &file_path);
|
|
|
|
// Guarda la tabla en un fichero
|
|
bool saveToFile(const std::string &file_path);
|
|
|
|
private:
|
|
// Referencia a la tabla con los records
|
|
std::vector<HiScoreEntry> &table_;
|
|
|
|
// Ordena la tabla internamente
|
|
void sort();
|
|
}; |