diff --git a/constants.hpp b/constants.hpp index 30d62a6..a5db392 100644 --- a/constants.hpp +++ b/constants.hpp @@ -4,6 +4,7 @@ #include "color.hpp" #include +constexpr const int INV_SLOTS=24; constexpr const int TEXTURE_WIDTH=256; constexpr const int TEXTURE_HEIGHT=256; constexpr const int RAY_VIEW_WIDTH=900; diff --git a/guecs.cpp b/guecs.cpp index 47b8af8..57113df 100644 --- a/guecs.cpp +++ b/guecs.cpp @@ -27,6 +27,15 @@ namespace guecs { text->setString(content); } + void Sprite::update(const std::string& new_name) { + if(new_name != name) { + name = new_name; + auto sprite_texture = textures::get(name); + sprite->setTexture(*sprite_texture.texture); + sprite->setTextureRect(sprite_texture.sprite->getTextureRect()); + } + } + void Sprite::init(lel::Cell &cell) { auto sprite_texture = textures::get(name); diff --git a/guecs.hpp b/guecs.hpp index 679f127..ee5f568 100644 --- a/guecs.hpp +++ b/guecs.hpp @@ -55,6 +55,7 @@ namespace guecs { std::shared_ptr texture = nullptr; void init(lel::Cell &cell); + void update(const std::string& new_name); }; struct Rectangle { diff --git a/ritual_ui.cpp b/ritual_ui.cpp index 1df238a..b0d635a 100644 --- a/ritual_ui.cpp +++ b/ritual_ui.cpp @@ -11,10 +11,11 @@ namespace gui { using namespace guecs; using std::any, std::any_cast, std::string, std::make_any; - void UI::event(Event ev) { + void UI::event(Event ev, std::any data) { switch($state) { FSM_STATE(State, START, ev); - FSM_STATE(State, OPENED, 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); @@ -28,17 +29,16 @@ namespace gui { state(State::CLOSED); $ritual_anim = animation::load("ritual_blanket"); - for(auto& [name, cell] : $gui.cells()) { - auto button = $gui.entity(name); - $gui.set(button, {GUECS_PADDING, {50, 50, 50, 150}}); - $gui.set(button, { - [](auto ent, auto) { fmt::println("clicked {}", ent); } - }); - } - auto open_close_toggle = $gui.entity("ritual_ui"); $gui.set(open_close_toggle, { - [&](auto, auto){ event(Event::TOGGLE); } + [&](auto, auto){ event(Event::TOGGLE); } + }); + + auto combine = $gui.entity("combine"); + $gui.set(combine, {}); + $gui.set