aboutsummaryrefslogtreecommitdiff
path: root/game/menus/ButtonSubScene.h
diff options
context:
space:
mode:
authorJaro <59013720+JaroWMR@users.noreply.github.com>2025-01-08 09:31:14 +0100
committerGitHub <noreply@github.com>2025-01-08 09:31:14 +0100
commite75ca1c947f3cde19bebf15049732bc069c6e913 (patch)
treecdaa7a2c06ffc7f41366d4106e16f254e3b9cdc5 /game/menus/ButtonSubScene.h
parentf31bd86ae5d7df21b788a273d4f2e530136ec184 (diff)
parent0d087f23affbdf5bcfb238bc9b9d3fc05b314c44 (diff)
Merge pull request #101 from lonkaars/jaro/main-menu
Jaro/main menu
Diffstat (limited to 'game/menus/ButtonSubScene.h')
-rw-r--r--game/menus/ButtonSubScene.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/game/menus/ButtonSubScene.h b/game/menus/ButtonSubScene.h
new file mode 100644
index 0000000..c1c6de8
--- /dev/null
+++ b/game/menus/ButtonSubScene.h
@@ -0,0 +1,67 @@
+#pragma once
+
+#include <crepe/api/GameObject.h>
+
+#include <string>
+
+namespace crepe {
+class Scene;
+}
+
+class ButtonSubScene {
+public:
+ //script enum
+ enum class ScriptSelect {
+ PREVIEW,
+ SHOP,
+ MAINMENU,
+ NEXT,
+ NONE,
+ };
+ //icon enum
+ enum class IconSelect {
+ SHOP,
+ COINS,
+ NONE,
+ };
+ //icon enum
+ enum class ButtonSelect {
+ BACK,
+ NEXT,
+ LARGE,
+ };
+ //data struct
+ struct Data {
+ const std::string & text = "NODATA";
+ const crepe::vec2 & text_offset = {0, 0};
+ const float text_width = 200;
+ const crepe::vec2 & icon_offset = {0, 0};
+ const IconSelect icon_type = IconSelect::NONE;
+ const crepe::vec2 & position = {0, 0};
+ const ScriptSelect script_type = ScriptSelect::NONE;
+ const ButtonSelect button_type = ButtonSelect::LARGE;
+ const float scale = 1;
+ const bool worldspace = true;
+ const bool color_side = true;
+ const std::string & tag = "";
+ const int sorting_layer_offset = 0;
+ };
+
+public:
+ void create(crepe::Scene & scn, const Data & data);
+
+private:
+ void large_btn_overlay(crepe::GameObject & button_object, const Data & data);
+ void back_btn_overlay(crepe::GameObject & button_object, const Data & data);
+ void next_btn_overlay(crepe::GameObject & button_object, const Data & data);
+ void btn_color_side(
+ crepe::GameObject & button_object, const crepe::vec2 & offset, const Data & data
+ );
+ void btn_text(crepe::GameObject & button_object, const Data & data);
+ void set_script(crepe::GameObject & button_object, const Data & data);
+ void set_icon(crepe::GameObject & button_object, const Data & data);
+ void set_button_overlay(crepe::GameObject & button_object, const Data & data);
+
+private:
+ static constexpr crepe::vec2 SIDE_PANEL_OFFSET = {113, 0};
+};