diff --git a/source/director.cpp b/source/director.cpp index bcdf70c..556fa48 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -26,6 +26,7 @@ #include "jail_audio.h" // for JA_DeleteMusic, JA_DeleteSound #include "logo.h" // for Logo #include "manage_hiscore_table.h" // for ManageHiScoreTable +#include "on_screen_help.h" // for OnScreenHelp #include "options.h" // for options, loadOptionsFile, saveO... #include "param.h" // for param, loadParamsFromFile #include "screen.h" // for Screen @@ -34,7 +35,7 @@ #include "utils.h" // for music_file_t, sound_file_t, opt... #ifndef _WIN32 -#include // for getpwuid, passwd +#include // for getpwuid, passwd #endif // Constructor @@ -101,6 +102,8 @@ Director::Director(int argc, char *argv[]) Screen::init(window, renderer); screen = Screen::get(); + OnScreenHelp::init(); + // Carga los sonidos del juego loadSounds(); @@ -115,6 +118,7 @@ Director::~Director() Asset::destroy(); Input::destroy(); Screen::destroy(); + OnScreenHelp::destroy(); deleteSounds(); deleteMusics(); diff --git a/source/on_screen_help.cpp b/source/on_screen_help.cpp new file mode 100644 index 0000000..0a2e79c --- /dev/null +++ b/source/on_screen_help.cpp @@ -0,0 +1,32 @@ +#include "on_screen_help.h" + +// [SINGLETON] Hay que definir las variables estáticas, desde el .h sólo la hemos declarado +OnScreenHelp *OnScreenHelp::onScreenHelp = nullptr; + +// [SINGLETON] Crearemos el objeto onScreenHelp con esta función estática +void OnScreenHelp::init() +{ + OnScreenHelp::onScreenHelp = new OnScreenHelp(); +} + +// [SINGLETON] Destruiremos el objeto onScreenHelp con esta función estática +void OnScreenHelp::destroy() +{ + delete OnScreenHelp::onScreenHelp; +} + +// [SINGLETON] Con este método obtenemos el objeto onScreenHelp y podemos trabajar con él +OnScreenHelp *OnScreenHelp::get() +{ + return OnScreenHelp::onScreenHelp; +} + +// Constructor +OnScreenHelp::OnScreenHelp() +{ +} + +// Destructor +OnScreenHelp::~OnScreenHelp() +{ +} \ No newline at end of file diff --git a/source/on_screen_help.h b/source/on_screen_help.h new file mode 100644 index 0000000..8971ebc --- /dev/null +++ b/source/on_screen_help.h @@ -0,0 +1,48 @@ +#pragma once + +#include +class Screen; +class Asset; +class Input; +class Texture; +class Sprite; + +enum class OnScreenHelpStatus +{ + hidden, + showing, + entering, + exitting, +}; + +// Classe on_screen_help +class OnScreenHelp +{ +private: + // [SINGLETON] Objeto screen privado para Don Melitón + static OnScreenHelp *onScreenHelp; + + Screen *screen; // Objeto encargado de dibujar en pantalla + Asset *asset; // Objeto con los ficheros de recursos + Input *input; // Objeto pata gestionar la entrada + + SDL_Texture *texture; // Textura donde dibujar + + // [SINGLETON] Ahora el constructor y el destructor son privados, para no poder crear objetos screen desde fuera + + // Constructor + OnScreenHelp(); + + // Destructor + ~OnScreenHelp(); + +public: + // [SINGLETON] Crearemos el objeto screen con esta función estática + static void init(); + + // [SINGLETON] Destruiremos el objeto screen con esta función estática + static void destroy(); + + // [SINGLETON] Con este método obtenemos el objeto screen y podemos trabajar con él + static OnScreenHelp *get(); +}; \ No newline at end of file