#include "ButtonSubScene.h" #include "ButtonNextMainMenuSubScript.h" #include "ButtonReplaySubScript.h" #include "ButtonSetMainMenuSubScript.h" #include "ButtonSetShopSubScript.h" #include "ButtonShowCreditsSubScript.h" #include "IButtonScript.h" #include "MenusConfig.h" #include "mainmenu/ButtonTransitionPreviewSubScript.h" #include "../Config.h" #include "mainmenu/CreditsSubScript.h" #include #include #include #include #include #include using namespace crepe; using namespace std; void ButtonSubScene::create(Scene & scn, const Data & data) { GameObject button_object = scn.new_object("button", data.tag, data.position, 0, data.scale); this->set_button_overlay(button_object, data); this->btn_text(button_object, data); this->set_script(button_object, data); this->set_icon(button_object, data); } void ButtonSubScene::btn_text(crepe::GameObject & button_object, const Data & data) { crepe::vec2 size = {data.text_width, (data.text_width / data.text.size()) * 2}; button_object.add_component( size, FONT, Text::Data { .world_space = data.worldspace, .text_color = Color::WHITE, }, data.text_offset + FONTOFFSET, data.text ); } void ButtonSubScene::set_script(crepe::GameObject & button_object, const Data & data) { switch (data.script_type) { case ScriptSelect::PREVIEW: button_object.add_component() .set_script(); break; case ScriptSelect::SHOP: button_object.add_component().set_script(); break; case ScriptSelect::MAINMENU: button_object.add_component() .set_script(); break; case ScriptSelect::NEXT: button_object.add_component() .set_script(); break; case ScriptSelect::REPLAY: button_object.add_component() .set_script(); break; case ScriptSelect::CREDITS_BACK: button_object.add_component() .set_script(data.tag); break; case ScriptSelect::CREDITS_SHOW: button_object.add_component() .set_script(); break; case ScriptSelect::NONE: button_object.add_component().set_script(); break; } } void ButtonSubScene::set_icon(crepe::GameObject & button_object, const Data & data) { switch (data.icon_type) { case IconSelect::SHOP: button_object.add_component( Asset("asset/ui/buttonCoinsSmall.png"), Sprite::Data { .sorting_in_layer = STARTING_SORTING_IN_LAYER + 3 + data.sorting_layer_offset, .size = ICON_SIZE, .position_offset = data.icon_offset, .world_space = data.worldspace, } ); break; case IconSelect::COINS: button_object.add_component( Asset("asset/ui/buttonCoinsSmall.png"), Sprite::Data { .sorting_in_layer = STARTING_SORTING_IN_LAYER + 3 + data.sorting_layer_offset, .size = ICON_SIZE, .position_offset = data.icon_offset, .world_space = data.worldspace, } ); break; case IconSelect::NONE: break; } } void ButtonSubScene::set_button_overlay(crepe::GameObject & button_object, const Data & data) { switch (data.button_type) { case ButtonSelect::LARGE: this->large_btn_overlay(button_object, data); break; case ButtonSelect::BACK: this->back_btn_overlay(button_object, data); break; case ButtonSelect::NEXT: this->next_btn_overlay(button_object, data); break; } } void ButtonSubScene::large_btn_overlay(crepe::GameObject & button_object, const Data & data) { button_object.add_component( Asset("asset/ui/buttonBacking.png"), Sprite::Data { .sorting_in_layer = STARTING_SORTING_IN_LAYER + 1 + data.sorting_layer_offset, .size = LARGE_OVERLAY_SIZE, .world_space = data.worldspace, } ); button_object.add_component