diff options
Diffstat (limited to 'engine-ocean/Game/Systems/UI/ButtonAction')
4 files changed, 73 insertions, 0 deletions
diff --git a/engine-ocean/Game/Systems/UI/ButtonAction/buttonaction.cpp b/engine-ocean/Game/Systems/UI/ButtonAction/buttonaction.cpp new file mode 100644 index 0000000..c7314f6 --- /dev/null +++ b/engine-ocean/Game/Systems/UI/ButtonAction/buttonaction.cpp @@ -0,0 +1,6 @@ +#include "buttonaction.h" + +ButtonAction::ButtonAction() +{ + +} diff --git a/engine-ocean/Game/Systems/UI/ButtonAction/buttonaction.h b/engine-ocean/Game/Systems/UI/ButtonAction/buttonaction.h new file mode 100644 index 0000000..d6c1674 --- /dev/null +++ b/engine-ocean/Game/Systems/UI/ButtonAction/buttonaction.h @@ -0,0 +1,13 @@ +#ifndef BUTTONACTION_H +#define BUTTONACTION_H + + +class ButtonAction +{ +public: + ButtonAction(); + virtual void activate() = 0; + virtual void deactivate() = 0; +}; + +#endif // BUTTONACTION_H diff --git a/engine-ocean/Game/Systems/UI/ButtonAction/showwindowaction.cpp b/engine-ocean/Game/Systems/UI/ButtonAction/showwindowaction.cpp new file mode 100644 index 0000000..e6b9797 --- /dev/null +++ b/engine-ocean/Game/Systems/UI/ButtonAction/showwindowaction.cpp @@ -0,0 +1,33 @@ +#include "showwindowaction.h" +#include "Game/Systems/UI/uisystem.h" +#include <map> + +ShowWindowAction::ShowWindowAction(std::map<std::string, std::shared_ptr<UIScreen>>& all_screens, + std::set<std::string>& shownScreens, + const std::string screenName): + m_screens(all_screens), + m_shownScreens(shownScreens) +{ + m_screenName = screenName; +} + + + +void ShowWindowAction::activate(){ + std::cout << "activated window show!!!" << std::endl; + + // add screen to be rendered, and also set it be the only one active + //m_screens[m_screenName] = m_screen; +// for (auto &screen : m_screens){ +// screen.second->isActive = false; +// } + +// m_screens[m_screenName]->isActive = true; + m_shownScreens.insert(m_screenName); + m_screens[m_screenName]->isActive = true; + +} + +void ShowWindowAction::deactivate(){ + m_shownScreens.erase(m_screenName); +} diff --git a/engine-ocean/Game/Systems/UI/ButtonAction/showwindowaction.h b/engine-ocean/Game/Systems/UI/ButtonAction/showwindowaction.h new file mode 100644 index 0000000..781f093 --- /dev/null +++ b/engine-ocean/Game/Systems/UI/ButtonAction/showwindowaction.h @@ -0,0 +1,21 @@ +#ifndef SHOWWINDOWACTION_H +#define SHOWWINDOWACTION_H +#include "Game/Systems/UI/uisystem.h" +#include <map> +#include "buttonaction.h" + +class ShowWindowAction : public ButtonAction +{ +public: + ShowWindowAction(std::map<std::string, std::shared_ptr<UIScreen>>& screens, + std::set<std::string>& shownScreens, + const std::string screenName); + void activate() override; + void deactivate() override; +private: + std::set<std::string>& m_shownScreens; + std::string m_screenName; + std::map<std::string, std::shared_ptr<UIScreen>>& m_screens; +}; + +#endif // SHOWWINDOWACTION_H |