forked from jaildesigner-jailgames/jaildoctors_dilemma
style: deixant guapetes les capçaleres de les classes
This commit is contained in:
@@ -4,88 +4,52 @@
|
||||
#include <utility>
|
||||
#include <vector> // Para vector
|
||||
|
||||
// Struct para los logros
|
||||
struct Achievement {
|
||||
int id; // Identificador del logro
|
||||
std::string caption; // Texto con el nombre del logro
|
||||
std::string description; // Texto que describe el logro
|
||||
int icon; // Indice del icono a utilizar en la notificación
|
||||
bool completed; // Indica si se ha obtenido el logro
|
||||
bool obtainable; // Indica si se puede obtener el logro
|
||||
|
||||
// Constructor vacío
|
||||
Achievement()
|
||||
: id(0),
|
||||
icon(0),
|
||||
completed(false),
|
||||
obtainable(true) {}
|
||||
|
||||
// Constructor parametrizado
|
||||
Achievement(int id, std::string caption, std::string description, int icon, bool completed = false, bool obtainable = true)
|
||||
: id(id),
|
||||
caption(std::move(caption)),
|
||||
description(std::move(description)),
|
||||
icon(icon),
|
||||
completed(completed),
|
||||
obtainable(obtainable) {}
|
||||
};
|
||||
|
||||
class Cheevos {
|
||||
public:
|
||||
// Tipos anidados (públicos porque se usan en la interfaz)
|
||||
struct Achievement {
|
||||
int id{0}; // Identificador del logro
|
||||
std::string caption{}; // Texto con el nombre del logro
|
||||
std::string description{}; // Texto que describe el logro
|
||||
int icon{0}; // Indice del icono a utilizar en la notificación
|
||||
bool completed{false}; // Indica si se ha obtenido el logro
|
||||
bool obtainable{true}; // Indica si se puede obtener el logro
|
||||
};
|
||||
|
||||
using Achievements = std::vector<Achievement>; // Type alias para vector de logros
|
||||
|
||||
// Gestión singleton
|
||||
static void init(const std::string& file); // Inicialización
|
||||
static void destroy(); // Destrucción
|
||||
static auto get() -> Cheevos*; // Acceso al singleton
|
||||
|
||||
// Gestión de logros
|
||||
void unlock(int id); // Desbloquea un logro
|
||||
void setUnobtainable(int id); // Invalida un logro
|
||||
void clearUnobtainableState(); // Elimina el estado "no obtenible"
|
||||
void enable(bool value) { enabled_ = value; } // Habilita o deshabilita los logros
|
||||
|
||||
// Consultas
|
||||
[[nodiscard]] auto list() const -> const Achievements& { return cheevos_list_; } // Lista los logros
|
||||
auto getTotalUnlockedAchievements() -> int; // Devuelve logros desbloqueados
|
||||
auto size() -> int { return cheevos_list_.size(); } // Devuelve número total de logros
|
||||
|
||||
private:
|
||||
// [SINGLETON] Objeto privado
|
||||
static Cheevos* cheevos;
|
||||
// Constantes singleton
|
||||
static Cheevos* cheevos; // [SINGLETON] Objeto privado
|
||||
|
||||
// Variables
|
||||
std::vector<Achievement> cheevos_list_; // Listado de logros
|
||||
bool enabled_ = true; // Indica si los logros se pueden obtener
|
||||
std::string file_; // Fichero donde leer/almacenar el estado de los logros
|
||||
// Métodos privados
|
||||
void init(); // Inicializa los logros
|
||||
auto find(int id) -> int; // Busca un logro por id y devuelve el índice
|
||||
void loadFromFile(); // Carga el estado de los logros desde un fichero
|
||||
void saveToFile(); // Guarda el estado de los logros en un fichero
|
||||
|
||||
// Inicializa los logros
|
||||
void init();
|
||||
|
||||
// Busca un logro por id y devuelve el índice
|
||||
auto find(int id) -> int;
|
||||
|
||||
// Carga el estado de los logros desde un fichero
|
||||
void loadFromFile();
|
||||
|
||||
// Guarda el estado de los logros en un fichero
|
||||
void saveToFile();
|
||||
|
||||
// Constructor
|
||||
// Constructor y destructor privados [SINGLETON]
|
||||
explicit Cheevos(std::string file);
|
||||
|
||||
// Destructor
|
||||
~Cheevos();
|
||||
|
||||
public:
|
||||
// [SINGLETON] Crearemos el objeto con esta función estática
|
||||
static void init(const std::string& file);
|
||||
|
||||
// [SINGLETON] Destruiremos el objeto con esta función estática
|
||||
static void destroy();
|
||||
|
||||
// [SINGLETON] Con este método obtenemos el objeto y podemos trabajar con él
|
||||
static auto get() -> Cheevos*;
|
||||
|
||||
// Desbloquea un logro
|
||||
void unlock(int id);
|
||||
|
||||
// Invalida un logro
|
||||
void setUnobtainable(int id);
|
||||
|
||||
// Elimina el estado "no obtenible"
|
||||
void clearUnobtainableState();
|
||||
|
||||
// Habilita o deshabilita los logros
|
||||
void enable(bool value) { enabled_ = value; }
|
||||
|
||||
// Lista los logros
|
||||
[[nodiscard]] auto list() const -> const std::vector<Achievement>& { return cheevos_list_; }
|
||||
|
||||
// Devuelve el número total de logros desbloqueados
|
||||
auto getTotalUnlockedAchievements() -> int;
|
||||
|
||||
// Devuelve el número total de logros
|
||||
auto size() -> int { return cheevos_list_.size(); }
|
||||
// Variables miembro
|
||||
Achievements cheevos_list_; // Listado de logros
|
||||
bool enabled_{true}; // Indica si los logros se pueden obtener
|
||||
std::string file_; // Fichero donde leer/almacenar el estado de los logros
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user