#pragma once #include // Para std::string #include // 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& name = "", int score = 0, bool one_credit_complete = false) : name(name.substr(0, 6)), score(score), one_credit_complete(one_credit_complete) {} }; // --- Tipos --- using Table = std::vector; // 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 };