diff --git a/demos/meters.cpp b/demos/meters.cpp index e23b6b9..56ee58a 100644 --- a/demos/meters.cpp +++ b/demos/meters.cpp @@ -15,29 +15,22 @@ struct TestMeters { void init() { $gui.position(0, 0, 1280, 720); - $gui.layout( - "[*%(300,100)meter1|_|_|*%(100,400)vert1|*%(100,400)vert2|*%(100,400)vert3]" - "[*%(300,100)meter2|_|_|_|_|_]" - "[*%(300,100)meter3|_|_|_|_|_]" - "[*%(300,100)meter4|_|_|_|_|_]"); + $gui.layout("[meter1][=meter2][meter3][meter4]"); for(auto& [name, cell] : $gui.cells()) { auto gui_id = $gui.entity(name); - $gui.set(gui_id, {guecs::THEME.PADDING, {120, 25, 25, 255}}); - - if(name.starts_with("meter")) { - $gui.set(gui_id, {1.0f, guecs::THEME.DARK_LIGHT, guecs::THEME.PADDING}); - } else { - $gui.set(gui_id, {1.0f, guecs::THEME.DARK_LIGHT, guecs::THEME.PADDING, true}); - } - + $gui.set(gui_id, {4, {0, 255, 0, 255}}); + $gui.set(gui_id, {1.0f, {255, 0, 0, 255}, 4}); $gui.set(gui_id, {}); $gui.set(gui_id, {guecs::to_wstring(name)}); $gui.set(gui_id, { [&, gui_id, name](auto) { auto& meter = $gui.get(gui_id); - meter.update_percent(1.0f); + meter.update_percent(meter.percent - 0.1f); + if(meter.percent < 0.0f) { + meter.percent = 1.0f; + } } }); } @@ -92,14 +85,6 @@ int main() { } } - gui.$gui.query([](auto ent, auto& meter) { - if(meter.percent <= 0.0f) { - meter.update_percent(1.0f); - } else { - meter.update_percent(meter.percent - (0.01f * float(ent))); - } - }); - gui.update(); gui.render(window); window.display(); diff --git a/include/guecs/sfml/components.hpp b/include/guecs/sfml/components.hpp index ad30a45..86f59f8 100644 --- a/include/guecs/sfml/components.hpp +++ b/include/guecs/sfml/components.hpp @@ -70,12 +70,9 @@ namespace guecs { float percent = 1.0f; sf::Color color = THEME.BG_COLOR_DARK; int padding = THEME.PADDING; - bool vertical = false; Rectangle bar{padding, color}; // this is set automatically if a Rectangle is configured for the cell Rectangle backing_rect{padding, color}; - size_t $cell_x = 0; - size_t $cell_y = 0; size_t $cell_w = 0; size_t $cell_h = 0; diff --git a/src/guecs/sfml/components.cpp b/src/guecs/sfml/components.cpp index 07f188e..c437b36 100644 --- a/src/guecs/sfml/components.cpp +++ b/src/guecs/sfml/components.cpp @@ -113,8 +113,6 @@ namespace guecs { } void Meter::init(lel::Cell& cell) { - $cell_x = cell.x; - $cell_y = cell.y; $cell_w = cell.w; $cell_h = cell.h; bar.init(cell); @@ -127,15 +125,8 @@ namespace guecs { void Meter::update_percent(float pct) { percent = pct; - if(vertical) { - float level = std::clamp(percent, 0.0f, 1.0f) * float($cell_h); - sf::Vector2f size{float($cell_w) - padding * 2, std::max(level, 0.0f) - padding}; - bar.shape->setSize(size); - bar.shape->setPosition({float($cell_x + padding), float($cell_y) + (float($cell_h) - size.y)}); - } else { - float level = std::clamp(percent, 0.0f, 1.0f) * float($cell_w); - bar.shape->setSize({std::max(level, 0.0f) - padding * 2, float($cell_h) - padding * 2}); - } + float level = std::clamp(percent, 0.0f, 1.0f) * float($cell_w); + bar.shape->setSize({std::max(level, 0.0f) - padding * 2, float($cell_h) - padding * 2}); } void Sound::play(bool hover) {