#include "gui/body_ui.hpp" #include "game/components.hpp" #include #include "algos/rand.hpp" #include #include "gui/guecstra.hpp" #include "game/systems.hpp" #include "game/inventory.hpp" #include "game/level.hpp" namespace gui { using namespace guecs; using std::any, std::any_cast, std::string, std::make_any; void BodyUI::init(size_t x, size_t y, size_t width, size_t height) { $gui.position(x, y, width, height); $gui.layout( "[head]" "[chest]" "[right_arm]" "[left_arm]" "[stomach]" "[left_leg]" "[right_leg]"); $gui.set($gui.MAIN, {$gui.$parser, }); for(auto& [name, cell] : $gui.cells()) { auto gui_id = $gui.entity(name); $gui.set(gui_id, {guecs::to_wstring(name)}); $gui.set(gui_id, {1.0f, THEME.DARK_MID, {}}); } $gui.init(); update(); } bool BodyUI::mouse(float x, float y, guecs::Modifiers mods) { return $gui.mouse(x, y, mods); } void BodyUI::update() { auto world = GameDB::current_world(); auto& player = world->get_the(); auto& player_combat = world->get(player.entity); for(auto& [key, value] : player_combat.body_parts) { auto gui_id = $gui.entity(key); if(auto meter = $gui.get_if(gui_id)) { meter->percent = float(value) / 50.0; } } } void BodyUI::render(sf::RenderWindow &window) { $gui.render(window); // $gui.debug_layout(window); } }