From deb1cd4732fb3a880cd10ce677e62fc2aac974a0 Mon Sep 17 00:00:00 2001 From: JAROWMR Date: Sat, 28 Dec 2024 12:15:39 +0100 Subject: interface scripts added --- game/CMakeLists.txt | 10 ++++++---- game/mainmenu/ButtonScript.cpp | 26 -------------------------- game/mainmenu/ButtonScript.h | 11 ----------- game/mainmenu/ButtonSubScene.cpp | 4 ++-- game/mainmenu/IButtonScript.cpp | 22 ++++++++++++++++++++++ game/mainmenu/IButtonScript.h | 12 ++++++++++++ game/mainmenu/IShowScript.cpp | 26 ++++++++++++++++++++++++++ game/mainmenu/IShowScript.h | 13 +++++++++++++ game/mainmenu/MainMenuConfig.h | 4 +++- game/mainmenu/MainMenuScene.cpp | 10 ++++++++-- game/mainmenu/SetShopScript.cpp | 19 +++++++++++++++++++ game/mainmenu/SetShopScript.h | 14 ++++++++++++++ game/mainmenu/ShowPreviewScript.cpp | 13 +------------ game/mainmenu/ShowPreviewScript.h | 7 +++---- game/mainmenu/ShowScript.cpp | 26 -------------------------- game/mainmenu/ShowScript.h | 13 ------------- game/mainmenu/ShowStartScript.h | 4 ++-- 17 files changed, 131 insertions(+), 103 deletions(-) delete mode 100644 game/mainmenu/ButtonScript.cpp delete mode 100644 game/mainmenu/ButtonScript.h create mode 100644 game/mainmenu/IButtonScript.cpp create mode 100644 game/mainmenu/IButtonScript.h create mode 100644 game/mainmenu/IShowScript.cpp create mode 100644 game/mainmenu/IShowScript.h create mode 100644 game/mainmenu/SetShopScript.cpp create mode 100644 game/mainmenu/SetShopScript.h delete mode 100644 game/mainmenu/ShowScript.cpp delete mode 100644 game/mainmenu/ShowScript.h diff --git a/game/CMakeLists.txt b/game/CMakeLists.txt index d33290e..2fc5e41 100644 --- a/game/CMakeLists.txt +++ b/game/CMakeLists.txt @@ -22,14 +22,15 @@ set(SOURCES StartGameScript.cpp StartSubScene.cpp main.cpp - mainmenu/ButtonScript.cpp + mainmenu/IButtonScript.cpp mainmenu/ButtonSubScene.cpp mainmenu/MainMenuScene.cpp - mainmenu/ShowScript.cpp + mainmenu/IShowScript.cpp mainmenu/ShowStartScript.cpp mainmenu/ShowPreviewScript.cpp mainmenu/ShopMenuScene.cpp mainmenu/BannerSubScene.cpp + mainmenu/SetShopScript.cpp ) set(HEADERS @@ -44,15 +45,16 @@ set(HEADERS PlayerSubScene.h StartGameScript.h StartSubScene.h - mainmenu/ButtonScript.h + mainmenu/IButtonScript.h mainmenu/ButtonSubScene.h mainmenu/MainMenuScene.h mainmenu/MainMenuConfig.h - mainmenu/ShowScript.h + mainmenu/IShowScript.h mainmenu/ShowStartScript.h mainmenu/ShowPreviewScript.h mainmenu/ShopMenuScene.h mainmenu/BannerSubScene.h + mainmenu/SetShopScript.h ) add_executable(main ${SOURCES} ${HEADERS}) diff --git a/game/mainmenu/ButtonScript.cpp b/game/mainmenu/ButtonScript.cpp deleted file mode 100644 index 44ba381..0000000 --- a/game/mainmenu/ButtonScript.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include "ButtonScript.h" -#include "iostream" -using namespace crepe; -using namespace std; - -bool ButtonScript::on_button_press(const ButtonPressEvent& e){ - - cout << "button triggered:" << e.metadata.game_object_id << std::endl; - return false; -} -bool ButtonScript::on_button_enter(const ButtonEnterEvent& e){ - - cout << "button Enter:" << e.metadata.game_object_id << std::endl; - return false; -} -bool ButtonScript::on_button_exit(const ButtonExitEvent& e){ - - cout << "button Exit:" << e.metadata.game_object_id << std::endl; - return false; -} -void ButtonScript::init(){ - cout << "script init" << endl; - this->subscribe([this](const ButtonPressEvent& e) { return this->on_button_press(e); }); - this->subscribe([this](const ButtonEnterEvent& e) { return this->on_button_enter(e); }); - this->subscribe([this](const ButtonExitEvent& e) { return this->on_button_exit(e); }); -} diff --git a/game/mainmenu/ButtonScript.h b/game/mainmenu/ButtonScript.h deleted file mode 100644 index 96f52f4..0000000 --- a/game/mainmenu/ButtonScript.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -#include - -class ButtonScript : public crepe::Script { -public: - bool on_button_press(const crepe::ButtonPressEvent& e); - bool on_button_enter(const crepe::ButtonEnterEvent& e); - bool on_button_exit(const crepe::ButtonExitEvent& e); - void init(); -}; diff --git a/game/mainmenu/ButtonSubScene.cpp b/game/mainmenu/ButtonSubScene.cpp index b415f74..d110aaa 100644 --- a/game/mainmenu/ButtonSubScene.cpp +++ b/game/mainmenu/ButtonSubScene.cpp @@ -1,7 +1,6 @@ #include "ButtonSubScene.h" -#include "ButtonScript.h" +#include "SetShopScript.h" #include "ShowPreviewScript.h" -#include "ShowStartScript.h" #include "MainMenuConfig.h" #include @@ -55,6 +54,7 @@ void ButtonSubScene::set_script(crepe::GameObject & button_object,ScriptSelect s button_object.add_component().set_script(); break; case ScriptSelect::SHOP: + button_object.add_component().set_script(); case ScriptSelect::NONE: break; } diff --git a/game/mainmenu/IButtonScript.cpp b/game/mainmenu/IButtonScript.cpp new file mode 100644 index 0000000..6cd42fb --- /dev/null +++ b/game/mainmenu/IButtonScript.cpp @@ -0,0 +1,22 @@ +#include "IButtonScript.h" +#include "iostream" +#include "system/InputSystem.h" +using namespace crepe; +using namespace std; + +void IButtonScript::init(){ + cout << "script init" << endl; + this->subscribe([this](const ButtonExitEvent& e) { return this->on_button_exit(e); }); + this->subscribe([this](const ButtonEnterEvent& e) { return this->on_button_enter(e); }); +} +bool IButtonScript::on_button_exit(const ButtonExitEvent& e){ + + cout << "button triggered:" << e.metadata.game_object_id << std::endl; + return false; +} +bool IButtonScript::on_button_enter(const ButtonEnterEvent& e){ + + cout << "button Enter:" << e.metadata.game_object_id << std::endl; + return false; +} + diff --git a/game/mainmenu/IButtonScript.h b/game/mainmenu/IButtonScript.h new file mode 100644 index 0000000..10b57bf --- /dev/null +++ b/game/mainmenu/IButtonScript.h @@ -0,0 +1,12 @@ +#pragma once + +#include + +class IButtonScript : public virtual crepe::Script { +public: + virtual void init(); + virtual bool on_button_exit(const crepe::ButtonExitEvent& e); + virtual bool on_button_enter(const crepe::ButtonEnterEvent& e); +}; + + diff --git a/game/mainmenu/IShowScript.cpp b/game/mainmenu/IShowScript.cpp new file mode 100644 index 0000000..adb6e89 --- /dev/null +++ b/game/mainmenu/IShowScript.cpp @@ -0,0 +1,26 @@ +#include "IShowScript.h" +#include "api/Rigidbody.h" +#include "api/Transform.h" +#include "iostream" +#include +#include "MainMenuConfig.h" + +using namespace crepe; +using namespace std; + +void IShowScript::frame_update(crepe::duration_t delta_time){ + if(this->transition) + { + cout << "transition:" << velocity << std::endl; + Transform & cam = this->get_components_by_name(MainMenuConfig::CAMERA_NAME).front(); + if(velocity < MainMenuConfig::VELOCITY_MAX && cam.position.x < MainMenuConfig::SLOW_DOWN) velocity += MainMenuConfig::VELOCITY_STEP * delta_time.count(); + else if(velocity > 20) velocity -= MainMenuConfig::VELOCITY_STEP * delta_time.count(); + if(cam.position.x < MainMenuConfig::END) cam.position.x += (velocity * delta_time.count()); + if(cam.position.x >= MainMenuConfig::END) + { + this->set_next_scene(this->get_scene_name()); + } + + } +} + diff --git a/game/mainmenu/IShowScript.h b/game/mainmenu/IShowScript.h new file mode 100644 index 0000000..e1e645a --- /dev/null +++ b/game/mainmenu/IShowScript.h @@ -0,0 +1,13 @@ +#pragma once + +#include + +class IShowScript : public virtual crepe::Script { +public: + void frame_update(crepe::duration_t delta_time) override; + virtual const char* get_scene_name() const = 0; +private: + float velocity = 20; +protected: + bool transition = false; +}; diff --git a/game/mainmenu/MainMenuConfig.h b/game/mainmenu/MainMenuConfig.h index fe325bd..e2ace30 100644 --- a/game/mainmenu/MainMenuConfig.h +++ b/game/mainmenu/MainMenuConfig.h @@ -11,9 +11,11 @@ struct MainMenuConfig { static constexpr crepe::vec2 MENU_OFFSET = {-400,-200}; static constexpr float MENU_BUTTON_SPACING = 10; static constexpr crepe::vec2 MENU_OFFSET_BACKGROUND = {0,200}; - // Moving to new scene (Start and Preview) + //Scene names static constexpr const char* START_SCENE = "scene1"; static constexpr const char* PREVIEW_SCENE = "scene1"; + static constexpr const char* SHOP_SCENE = "shopmenu"; + //Moving to new scene (Start and Preview) static constexpr float SLOW_DOWN = 200; static constexpr float END = 300; static constexpr float VELOCITY_MAX = 200; diff --git a/game/mainmenu/MainMenuScene.cpp b/game/mainmenu/MainMenuScene.cpp index 85437db..42d0eca 100644 --- a/game/mainmenu/MainMenuScene.cpp +++ b/game/mainmenu/MainMenuScene.cpp @@ -41,8 +41,14 @@ void MainMenuScene::load_scene(){ }); //Shop btn - // pos.y += MainMenuConfig::MENU_BUTTON_SPACING + MainMenuConfig::LARGE_OVERLAY_SIZE.y; - // button.create(*this,"SHOP",vec2{0,0},vec2{200,80},pos); + pos.y += MainMenuConfig::MENU_BUTTON_SPACING + MainMenuConfig::LARGE_OVERLAY_SIZE.y; + button.create(*this,ButtonSubScene::Data{ + .text = "SHOP", + .text_size = vec2{200,80}, + .position = pos, + .script = ButtonSubScene::ScriptSelect::SHOP, + }); + //Start of map StartSubScene start; diff --git a/game/mainmenu/SetShopScript.cpp b/game/mainmenu/SetShopScript.cpp new file mode 100644 index 0000000..427445b --- /dev/null +++ b/game/mainmenu/SetShopScript.cpp @@ -0,0 +1,19 @@ +#include "SetShopScript.h" +#include "MainMenuConfig.h" +#include "iostream" + +using namespace crepe; +using namespace std; + +void SetShopScript::init(){ + cout << "script init" << endl; + IButtonScript::init(); + this->subscribe([this](const ButtonPressEvent& e) { return this->on_button_press(e); }); +} + +bool SetShopScript::on_button_press(const ButtonPressEvent& e){ + this->set_next_scene(MainMenuConfig::SHOP_SCENE); + cout << "Start triggered:" << e.metadata.game_object_id << std::endl; + return false; +} + diff --git a/game/mainmenu/SetShopScript.h b/game/mainmenu/SetShopScript.h new file mode 100644 index 0000000..0705e57 --- /dev/null +++ b/game/mainmenu/SetShopScript.h @@ -0,0 +1,14 @@ +#pragma once + +#include "IButtonScript.h" +#include + +class SetShopScript : public IButtonScript { +public: + void init() override; + bool on_button_press(const crepe::ButtonPressEvent& e); +private: + float velocity = 20; +protected: + bool transition = false; +}; diff --git a/game/mainmenu/ShowPreviewScript.cpp b/game/mainmenu/ShowPreviewScript.cpp index d015827..978a9c6 100644 --- a/game/mainmenu/ShowPreviewScript.cpp +++ b/game/mainmenu/ShowPreviewScript.cpp @@ -8,9 +8,8 @@ using namespace std; void ShowPreviewScript::init(){ cout << "script init" << endl; + IButtonScript::init(); this->subscribe([this](const ButtonPressEvent& e) { return this->on_button_press(e); }); - this->subscribe([this](const ButtonEnterEvent& e) { return this->on_button_enter(e); }); - this->subscribe([this](const ButtonExitEvent& e) { return this->on_button_exit(e); }); } bool ShowPreviewScript::on_button_press(const ButtonPressEvent& e){ @@ -18,16 +17,6 @@ bool ShowPreviewScript::on_button_press(const ButtonPressEvent& e){ cout << "Start triggered:" << e.metadata.game_object_id << std::endl; return false; } -bool ShowPreviewScript::on_button_enter(const ButtonEnterEvent& e){ - - cout << "Start Enter:" << e.metadata.game_object_id << std::endl; - return false; -} -bool ShowPreviewScript::on_button_exit(const ButtonExitEvent& e){ - - cout << "Start Exit:" << e.metadata.game_object_id << std::endl; - return false; -} const char* ShowPreviewScript::get_scene_name() const { // Provide the next scene defined in MainMenuConfig diff --git a/game/mainmenu/ShowPreviewScript.h b/game/mainmenu/ShowPreviewScript.h index 9612ca5..28fe95b 100644 --- a/game/mainmenu/ShowPreviewScript.h +++ b/game/mainmenu/ShowPreviewScript.h @@ -1,12 +1,11 @@ #pragma once -#include "ShowScript.h" +#include "IButtonScript.h" +#include "IShowScript.h" -class ShowPreviewScript : public ShowScript { +class ShowPreviewScript : public IShowScript, public IButtonScript { public: void init() override; bool on_button_press(const crepe::ButtonPressEvent& e); - bool on_button_enter(const crepe::ButtonEnterEvent& e); - bool on_button_exit(const crepe::ButtonExitEvent& e); const char* get_scene_name() const override; }; diff --git a/game/mainmenu/ShowScript.cpp b/game/mainmenu/ShowScript.cpp deleted file mode 100644 index dbd638e..0000000 --- a/game/mainmenu/ShowScript.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include "ShowScript.h" -#include "api/Rigidbody.h" -#include "api/Transform.h" -#include "iostream" -#include -#include "MainMenuConfig.h" - -using namespace crepe; -using namespace std; - -void ShowScript::frame_update(crepe::duration_t delta_time){ - if(this->transition) - { - cout << "transition:" << velocity << std::endl; - Transform & cam = this->get_components_by_name(MainMenuConfig::CAMERA_NAME).front(); - if(velocity < MainMenuConfig::VELOCITY_MAX && cam.position.x < MainMenuConfig::SLOW_DOWN) velocity += MainMenuConfig::VELOCITY_STEP * delta_time.count(); - else if(velocity > 20) velocity -= MainMenuConfig::VELOCITY_STEP * delta_time.count(); - if(cam.position.x < MainMenuConfig::END) cam.position.x += (velocity * delta_time.count()); - if(cam.position.x >= MainMenuConfig::END) - { - this->set_next_scene(this->get_scene_name()); - } - - } -} - diff --git a/game/mainmenu/ShowScript.h b/game/mainmenu/ShowScript.h deleted file mode 100644 index 5bfabcc..0000000 --- a/game/mainmenu/ShowScript.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -#include - -class ShowScript : public crepe::Script { -public: - void frame_update(crepe::duration_t delta_time) override; - virtual const char* get_scene_name() const = 0; -private: - float velocity = 20; -protected: - bool transition = false; -}; diff --git a/game/mainmenu/ShowStartScript.h b/game/mainmenu/ShowStartScript.h index 4d8d894..27d9404 100644 --- a/game/mainmenu/ShowStartScript.h +++ b/game/mainmenu/ShowStartScript.h @@ -1,8 +1,8 @@ #pragma once -#include "ShowScript.h" +#include "IShowScript.h" -class ShowStartScript : public ShowScript { +class ShowStartScript : public IShowScript { public: void init() override; void fixed_update(crepe::duration_t dt) override; -- cgit v1.2.3