Files
jdd_opendingux/source/cheevos.h
Sergio Valor Martínez fc01676df2 Singletonejant
Borrat menu.cpp que no estava gastantse...mmm.. desde mai
2025-02-22 18:27:23 +01:00

70 lines
1.8 KiB
C++

#pragma once
#include <string> // Para string
#include <vector> // Para vector
class Screen;
struct options_t;
// 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 valid; // Indica si se puede obtener el logro
// Constructor vacío
Achievement() : id(0), icon(0), completed(false), valid(true) {}
// Constructor parametrizado
Achievement(int id, const std::string &caption, const std::string &description, int icon, bool completed = false, bool valid = true)
: id(id), caption(caption), description(description), icon(icon), completed(completed), valid(valid) {}
};
class Cheevos
{
private:
// Variables
std::vector<Achievement> cheevos_; // 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
// Inicializa los logros
void init();
// Busca un logro por id y devuelve el índice
int find(int id);
// Carga el estado de los logros desde un fichero
void loadFromFile();
// Guarda el estado de los logros en un fichero
void saveToFile();
public:
// Constructor
Cheevos(const std::string &file);
// Destructor
~Cheevos();
// Desbloquea un logro
void unlock(int id);
// Invalida un logro
void invalidate(int id);
// Habilita o deshabilita los logros
void enable(bool value) { enabled_ = value; }
// Lista los logros
std::vector<Achievement> list() { return cheevos_; }
// Devuelve el número total de logros desbloqueados
int unlocked();
// Devuelve el número total de logros
int count() { return cheevos_.size(); }
};