#pragma once #include #include "jail_engine/screen.h" #include "jail_engine/utils.h" #include #include #ifndef CHEEVOS_H #define CHEEVOS_H struct cheevos_t { 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 }; class Cheevos { private: // Punteros y objetos Screen *screen; // Objeto encargado de dibujar en pantalla options_t *options; // Puntero a las opciones del juego // Variables std::vector cheevos; // Listado de logros bool enabled; // Indica si los logros se pueden obtener std::string file; // Fichero done leer/almacenar el estado de los logros // Inicializa los logros void init(); // Busca un logro por id y devuelve el indice 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(Screen *screen, options_t *options, 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); }; #endif