#pragma once #include // Para std::string #include // 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) {} }; using Table = std::vector; // --- Clase ManageHiScoreTable --- class ManageHiScoreTable { public: // --- Constantes --- static constexpr int NO_ENTRY = -1; // Constructor y destructor explicit ManageHiScoreTable(Table &table) : table_(table) {} ~ManageHiScoreTable() = default; // --- 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 };