From c35be7d21c5ae1217bde31d5f08cfd81bfa27cd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Valor=20Mart=C3=ADnez?= Date: Sat, 19 Nov 2022 12:07:36 +0100 Subject: [PATCH] Empezado a escribir datos de estadisticas en el servidor --- source/director.cpp | 14 +++++++++----- source/director.h | 6 +++--- source/game.cpp | 2 +- source/stats.cpp | 27 ++++++++++++++++++++++++++- source/stats.h | 13 +++++++++++-- 5 files changed, 50 insertions(+), 12 deletions(-) diff --git a/source/director.cpp b/source/director.cpp index 5c8a60f..c07e348 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -22,7 +22,7 @@ Director::Director(int argc, char *argv[]) #endif // Crea e inicializa las opciones del programa - iniOptions(); + initOptions(); // Comprueba los parametros del programa checkProgramArguments(argc, argv); @@ -59,7 +59,7 @@ Director::Director(int argc, char *argv[]) music = JA_LoadMusic(asset->get("title.ogg").c_str()); // Inicializa los servicios online - //initOnline(); + initOnline(); } Director::~Director() @@ -132,7 +132,7 @@ void Director::initOnline() } // Crea e inicializa las opciones del programa -void Director::iniOptions() +void Director::initOptions() { // Crea el puntero a la estructura de opciones options = new options_t; @@ -161,9 +161,13 @@ void Director::iniOptions() // Online options->online.enabled = false; - options->online.server = ""; - options->online.port = 0; + options->online.server = "jaildoctor.duckdns.org"; + options->online.port = 9911; +#ifdef DEBUG options->online.gameID = "jaildoctors_dilemma_test"; +#else + options->online.gameID = "jaildoctors_dilemma"; +#endif options->online.jailerID = ""; } diff --git a/source/director.h b/source/director.h index 75293e9..c237497 100644 --- a/source/director.h +++ b/source/director.h @@ -51,12 +51,12 @@ private: section_t section; // Sección y subsección actual del programa; std::string systemFolder; // Carpeta del sistema donde guardar datos + // Crea e inicializa las opciones del programa + void initOptions(); + // Inicializa los servicios online void initOnline(); - // Crea e inicializa las opciones del programa - void iniOptions(); - // Comprueba los parametros del programa void checkProgramArguments(int argc, char *argv[]); diff --git a/source/game.cpp b/source/game.cpp index 48db125..0c2d89e 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -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); music = JA_LoadMusic(asset->get("game.ogg").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()); // Inicializa el resto de variables diff --git a/source/stats.cpp b/source/stats.cpp index 8fcceb6..2ec6fba 100644 --- a/source/stats.cpp +++ b/source/stats.cpp @@ -1,11 +1,13 @@ #include "stats.h" +#include "common/jscore.h" #include #include #include // Constructor -Stats::Stats(std::string file) +Stats::Stats(std::string file, options_t *options) { + this->options = options; filePath = file; list.clear(); loadFromFile(); @@ -17,6 +19,7 @@ Stats::~Stats() #ifndef DEBUG saveToFile(); #endif + saveToServer(); list.clear(); } @@ -131,6 +134,15 @@ bool Stats::loadFromFile() 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 void Stats::saveToFile() { @@ -155,4 +167,17 @@ void Stats::saveToFile() // Cierra el fichero 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); + } + } } \ No newline at end of file diff --git a/source/stats.h b/source/stats.h index 54ea3cf..035b568 100644 --- a/source/stats.h +++ b/source/stats.h @@ -17,9 +17,12 @@ struct stats_t class Stats { private: + // Punteros y objetos + options_t *options; + // Variables std::vector 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 int findByName(std::string name); @@ -27,12 +30,18 @@ private: // Carga las estadisticas desde un fichero bool loadFromFile(); + // Carga las estadisticas desde un servidor + bool loadFromServer(); + // Guarda las estadisticas en un fichero void saveToFile(); + // Guarda las estadisticas en un servidor + void saveToServer(); + public: // Constructor - Stats(std::string file); + Stats(std::string file, options_t *options); // Destructor ~Stats();