#pragma once

#include <string> // for string
#include <vector> // for vector
struct HiScoreEntry;

/*
    Esta clase sirve para añadir elementos hiScoreEntry_r 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
*/

// Clase ManageHiScoreTable
class ManageHiScoreTable
{
private:
    // Variables
    std::vector<HiScoreEntry> *table; // Tabla con los records

    // Ordena la tabla
    void sort();

public:
    // Constructor
    ManageHiScoreTable(std::vector<HiScoreEntry> *table);

    // Destructor
    ~ManageHiScoreTable() = default;

    // Resetea la tabla a los valores por defecto
    void clear();

    // Añade un elemento a la tabla
    void add(HiScoreEntry entry);

    // Carga la tabla con los datos de un fichero
    bool loadFromFile(std::string filePath);

    // Guarda la tabla en un fichero
    bool saveToFile(std::string filePath);
};