forked from jaildesigner-jailgames/jaildoctors_dilemma
89 lines
2.0 KiB
C++
89 lines
2.0 KiB
C++
#pragma once
|
|
#include <SDL2/SDL.h>
|
|
#include "jail_engine/screen.h"
|
|
#include "jail_engine/utils.h"
|
|
#include "online.h"
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#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
|
|
Online *online; // Objeto para gestionar la lectura y escritura de datos en el servidor remoto
|
|
|
|
// Variables
|
|
std::vector<cheevos_t> 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
|
|
void load();
|
|
|
|
// Guarda el estado de los logros
|
|
void save();
|
|
|
|
// Carga el estado de los logros desde un fichero
|
|
void loadFromFile();
|
|
|
|
// Guarda el estado de los logros en un fichero
|
|
void saveToFile();
|
|
|
|
// Carga el estado de los logros desde el servidor online
|
|
void loadFromServer();
|
|
|
|
// Guarda el estado de los logros en el servidor online
|
|
void saveToServer();
|
|
|
|
public:
|
|
// Constructor
|
|
Cheevos(Screen *screen, options_t *options, std::string file, Online *online);
|
|
|
|
// 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);
|
|
|
|
// Lista los logros
|
|
std::vector<cheevos_t> list();
|
|
|
|
// Devuelve el número total de logros desbloqueados
|
|
int unlocked();
|
|
|
|
// Devuelve el número total de logros
|
|
int count();
|
|
|
|
// Vuelve a cargar los logros desde el origen
|
|
void reload();
|
|
};
|
|
|
|
#endif
|