#include "ritual_ui.hpp" #include "components.hpp" #include "guecs.hpp" #include "rand.hpp" #include "animation.hpp" #include "rand.hpp" #include "sound.hpp" namespace gui { namespace ritual { using namespace guecs; using std::any, std::any_cast, std::string, std::make_any; UI::UI(GameLevel level) : $level(level), $blanket($level.world->get_the<::ritual::Blanket>()) { $gui.position(STATUS_UI_X, STATUS_UI_Y, STATUS_UI_WIDTH, STATUS_UI_HEIGHT); $gui.layout( "[_]" "[inv_slot0 | inv_slot1 | inv_slot2| inv_slot3]" "[inv_slot4 | inv_slot5 | inv_slot6| inv_slot7]" "[inv_slot8 | inv_slot9 | inv_slot10| inv_slot11]" "[inv_slot12 | inv_slot13 | inv_slot14| inv_slot15]" "[inv_slot16 | inv_slot17 | inv_slot18| inv_slot19]" "[reset |*%(200,400)result_text|_]" "[*%(100,200)result_image|_ |_]" "[_|_|_]" "[combine|_|_]" "[_]" "[ ritual_ui ]"); } void UI::event(Event ev, std::any data) { switch($state) { FSM_STATE(State, START, ev); FSM_STATE(State, OPENED, ev, data); FSM_STATE(State, CRAFTING, ev, data); FSM_STATE(State, CLOSED, ev); FSM_STATE(State, OPENING, ev); FSM_STATE(State, CLOSING, ev); } } void UI::START(Event) { $ritual_ui = textures::get("ritual_crafting_area"); $ritual_ui.sprite->setPosition($gui.get_position()); $ritual_ui.sprite->setTextureRect($ritual_closed_rect); state(State::CLOSED); $ritual_anim = animation::load("ritual_blanket"); auto open_close_toggle = $gui.entity("ritual_ui"); $gui.set(open_close_toggle, { [&](auto, auto){ event(Event::TOGGLE); } }); auto combine = $gui.entity("combine"); $gui.set(combine, {}); $gui.set