From 6a526df9b334d1c80cb728d93c999813ee6f48ce Mon Sep 17 00:00:00 2001 From: Sergio Date: Mon, 9 Oct 2023 13:47:36 +0200 Subject: [PATCH] Finalizada la clase Online Eliminado de director la parte que ejecutaba el enter_id --- source/director.cpp | 14 --------- source/director.h | 6 ++-- source/online.cpp | 69 ++++++++++++++++++++++++++++++++++++++++++++- source/online.h | 32 +++++++++++++++++++-- 4 files changed, 100 insertions(+), 21 deletions(-) diff --git a/source/director.cpp b/source/director.cpp index 516bd828..e6d5e911 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -1794,20 +1794,6 @@ void Director::runDemo() resource->free(); } -// Ejecuta la seccion en la que se solicita al usuario su ID online -void Director::runEnterID() -{ - if (options->console) - { - std::cout << "\n* SECTION: ENTER_ID" << std::endl; - } - // loadResources(section); - enterID = new EnterID(renderer, screen, asset, options, section); - enterID->run(); - delete enterID; - resource->free(); -} - // Ejecuta la seccion del final del juego void Director::runEnding() { diff --git a/source/director.h b/source/director.h index 60c0ccdd..bb376515 100644 --- a/source/director.h +++ b/source/director.h @@ -19,6 +19,7 @@ #include "game.h" #include "intro.h" #include "logo.h" +#include "online.h" #include "title.h" #ifndef DIRECTOR_H @@ -40,7 +41,7 @@ private: Intro *intro; // Objeto para gestionar la introducción del juego Credits *credits; // Objeto para gestionar los creditos del juego Demo *demo; // Objeto para gestionar el modo demo, en el que se ven pantallas del juego - EnterID *enterID; // Objeto para gestionar la sección donde se solicita el ID online al usuario + Online *online; // Objeto para gestionar la lectura y escritura de datos en el servidor remoto Ending *ending; // Objeto para gestionar el final del juego Ending2 *ending2; // Objeto para gestionar el final del juego GameOver *gameOver; // Objeto para gestionar el final de la partida @@ -104,9 +105,6 @@ private: // Ejecuta la seccion de la demo, donde se ven pantallas del juego void runDemo(); - // Ejecuta la seccion en la que se solicita al usuario su ID online - void runEnterID(); - // Ejecuta la seccion del final del juego void runEnding(); diff --git a/source/online.cpp b/source/online.cpp index fad14db9..806e289a 100644 --- a/source/online.cpp +++ b/source/online.cpp @@ -7,11 +7,78 @@ // Constructor Online::Online(options_t *options) { + allData = ""; + statsData = ""; + cheevosData = ""; + STATS_FLAG_INI = "STATS_FLAG_INI"; + STATS_FLAG_END = "STATS_FLAG_END"; + CHEEVOS_FLAG_INI = "CHEEVOS_FLAG_INI"; + CHEEVOS_FLAG_END = "CHEEVOS_FLAG_END"; } // Destructor Online::~Online() { - } + +// Obtiene todos los datos y los coloca en sus respectivas variables +void Online::getAllData() +{ + if (options->online.enabled) + { + allData = jscore::getUserData(options->online.gameID, options->online.jailerID); + } + + // Obtiene el inicio y el fin de la cadena con las estadisticas + const size_t statsIni = allData.find(STATS_FLAG_INI) + STATS_FLAG_INI.length(); + const size_t statsEnd = allData.find(STATS_FLAG_END); + + // Obtiene la cadena con las estadisticas + statsData = allData.substr(statsIni, statsEnd); + + // Obtiene el inicio y el fin de la cadena con los logros + const size_t cheevosIni = allData.find(CHEEVOS_FLAG_INI) + CHEEVOS_FLAG_INI.length(); + const size_t cheevosEnd = allData.find(CHEEVOS_FLAG_END); + + // Obtiene la cadena con los logros + cheevosData = allData.substr(cheevosIni, cheevosEnd); +} + +// Coloca todos los datos desde las variables en la cadena allData +void Online::setAllData() +{ + allData = STATS_FLAG_INI + statsData + STATS_FLAG_END + CHEEVOS_FLAG_INI + cheevosData + CHEEVOS_FLAG_END; + if (options->online.enabled) + { + jscore::setUserData(options->online.gameID, options->online.jailerID, allData); + } +} + +// Obtiene las estadísticas guardadas en el servidor +std::string Online::getStats() +{ + getAllData(); + return statsData; +} + +// Guarda las estadísticas en el servidor +void Online::setStats(std::string data) +{ + statsData = data; + setAllData(); +} + +// Obtiene los logros guardadas en el servidor +std::string Online::getCheevos() +{ + getAllData(); + return cheevosData; +} + +// Guarda los logros en el servidor +void Online::setCheevos(std::string data) +{ + cheevosData = data; + setAllData(); +} \ No newline at end of file diff --git a/source/online.h b/source/online.h index 292272e2..76aaf787 100644 --- a/source/online.h +++ b/source/online.h @@ -4,8 +4,8 @@ #include #include -#ifndef STATS_H -#define STATS_H +#ifndef ONLINE_H +#define ONLINE_H class Online { @@ -13,12 +13,40 @@ private: // Punteros y objetos options_t *options; + // Variables + std::string allData; // La cadena entera de datos + std::string statsData; // La cadena con los datos de las estadísticas + std::string cheevosData; // La cadena con los datos de los logros + + std::string STATS_FLAG_INI; // Marca para establecer el inicio de las estadísticas + std::string STATS_FLAG_END; // Marca para establecer el final de las estadísticas + std::string CHEEVOS_FLAG_INI; // Marca para establecer el inicio de los logros + std::string CHEEVOS_FLAG_END; // Marca para establecer el final de los logros + + // Obtiene todos los datos y los coloca en sus respectivas variables + void getAllData(); + + // Coloca todos los datos desde las variables en la cadena allData + void setAllData(); + public: // Constructor Online(options_t *options); // Destructor ~Online(); + + // Obtiene las estadísticas guardadas en el servidor + std::string getStats(); + + // Guarda las estadísticas en el servidor + void setStats(std::string data); + + // Obtiene los logros guardadas en el servidor + std::string getCheevos(); + + // Guarda los logros en el servidor + void setCheevos(std::string data); }; #endif