Empezado a escribir datos de estadisticas en el servidor

This commit is contained in:
2022-11-19 12:07:36 +01:00
parent bc84968b23
commit c35be7d21c
5 changed files with 50 additions and 12 deletions

View File

@@ -22,7 +22,7 @@ Director::Director(int argc, char *argv[])
#endif #endif
// Crea e inicializa las opciones del programa // Crea e inicializa las opciones del programa
iniOptions(); initOptions();
// Comprueba los parametros del programa // Comprueba los parametros del programa
checkProgramArguments(argc, argv); checkProgramArguments(argc, argv);
@@ -59,7 +59,7 @@ Director::Director(int argc, char *argv[])
music = JA_LoadMusic(asset->get("title.ogg").c_str()); music = JA_LoadMusic(asset->get("title.ogg").c_str());
// Inicializa los servicios online // Inicializa los servicios online
//initOnline(); initOnline();
} }
Director::~Director() Director::~Director()
@@ -132,7 +132,7 @@ void Director::initOnline()
} }
// Crea e inicializa las opciones del programa // Crea e inicializa las opciones del programa
void Director::iniOptions() void Director::initOptions()
{ {
// Crea el puntero a la estructura de opciones // Crea el puntero a la estructura de opciones
options = new options_t; options = new options_t;
@@ -161,9 +161,13 @@ void Director::iniOptions()
// Online // Online
options->online.enabled = false; options->online.enabled = false;
options->online.server = ""; options->online.server = "jaildoctor.duckdns.org";
options->online.port = 0; options->online.port = 9911;
#ifdef DEBUG
options->online.gameID = "jaildoctors_dilemma_test"; options->online.gameID = "jaildoctors_dilemma_test";
#else
options->online.gameID = "jaildoctors_dilemma";
#endif
options->online.jailerID = ""; options->online.jailerID = "";
} }

View File

@@ -51,12 +51,12 @@ private:
section_t section; // Sección y subsección actual del programa; section_t section; // Sección y subsección actual del programa;
std::string systemFolder; // Carpeta del sistema donde guardar datos std::string systemFolder; // Carpeta del sistema donde guardar datos
// Crea e inicializa las opciones del programa
void initOptions();
// Inicializa los servicios online // Inicializa los servicios online
void initOnline(); void initOnline();
// Crea e inicializa las opciones del programa
void iniOptions();
// Comprueba los parametros del programa // Comprueba los parametros del programa
void checkProgramArguments(int argc, char *argv[]); void checkProgramArguments(int argc, char *argv[]);

View File

@@ -40,7 +40,7 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as
text = new Text(resource->getOffset("smb2.txt"), resource->getTexture("smb2.png"), renderer); text = new Text(resource->getOffset("smb2.txt"), resource->getTexture("smb2.png"), renderer);
music = JA_LoadMusic(asset->get("game.ogg").c_str()); music = JA_LoadMusic(asset->get("game.ogg").c_str());
deathSound = JA_LoadSound(asset->get("death.wav").c_str()); deathSound = JA_LoadSound(asset->get("death.wav").c_str());
stats = new Stats(asset->get("stats.csv")); stats = new Stats(asset->get("stats.csv"), options);
stats->addVisit(room->getName()); stats->addVisit(room->getName());
// Inicializa el resto de variables // Inicializa el resto de variables

View File

@@ -1,11 +1,13 @@
#include "stats.h" #include "stats.h"
#include "common/jscore.h"
#include <iostream> #include <iostream>
#include <fstream> #include <fstream>
#include <sstream> #include <sstream>
// Constructor // Constructor
Stats::Stats(std::string file) Stats::Stats(std::string file, options_t *options)
{ {
this->options = options;
filePath = file; filePath = file;
list.clear(); list.clear();
loadFromFile(); loadFromFile();
@@ -17,6 +19,7 @@ Stats::~Stats()
#ifndef DEBUG #ifndef DEBUG
saveToFile(); saveToFile();
#endif #endif
saveToServer();
list.clear(); list.clear();
} }
@@ -131,6 +134,15 @@ bool Stats::loadFromFile()
return success; return success;
} }
// Carga las estadisticas desde un servidor
bool Stats::loadFromServer()
{
if (options->online.enabled)
{
jscore::getUserData(options->online.gameID, options->online.jailerID);
}
}
// Guarda las estadisticas en un fichero // Guarda las estadisticas en un fichero
void Stats::saveToFile() void Stats::saveToFile()
{ {
@@ -155,4 +167,17 @@ void Stats::saveToFile()
// Cierra el fichero // Cierra el fichero
file.close(); file.close();
}
// Guarda las estadisticas en un servidor
void Stats::saveToServer()
{
if (options->online.enabled)
{
for (auto item : list)
{
const std::string data = item.name + ";" + std::to_string(item.visited) + ";" + std::to_string(item.died);
jscore::setUserData(options->online.gameID, options->online.jailerID, data);
}
}
} }

View File

@@ -17,9 +17,12 @@ struct stats_t
class Stats class Stats
{ {
private: private:
// Punteros y objetos
options_t *options;
// Variables // Variables
std::vector<stats_t> list; // Lista con las estadisticas por habitación std::vector<stats_t> list; // Lista con las estadisticas por habitación
std::string filePath; // Fichero con las estadísticas std::string filePath; // Fichero con las estadísticas
// Busca una entrada en la lista por nombre // Busca una entrada en la lista por nombre
int findByName(std::string name); int findByName(std::string name);
@@ -27,12 +30,18 @@ private:
// Carga las estadisticas desde un fichero // Carga las estadisticas desde un fichero
bool loadFromFile(); bool loadFromFile();
// Carga las estadisticas desde un servidor
bool loadFromServer();
// Guarda las estadisticas en un fichero // Guarda las estadisticas en un fichero
void saveToFile(); void saveToFile();
// Guarda las estadisticas en un servidor
void saveToServer();
public: public:
// Constructor // Constructor
Stats(std::string file); Stats(std::string file, options_t *options);
// Destructor // Destructor
~Stats(); ~Stats();