diff --git a/demos/meters.cpp b/demos/meters.cpp index 22a9911..56ee58a 100644 --- a/demos/meters.cpp +++ b/demos/meters.cpp @@ -27,7 +27,7 @@ struct TestMeters { $gui.set(gui_id, { [&, gui_id, name](auto) { auto& meter = $gui.get(gui_id); - meter.percent = meter.percent - 0.1f; + meter.update_percent(meter.percent - 0.1f); if(meter.percent < 0.0f) { meter.percent = 1.0f; } diff --git a/include/guecs/sfml/components.hpp b/include/guecs/sfml/components.hpp index 234f1b4..86f59f8 100644 --- a/include/guecs/sfml/components.hpp +++ b/include/guecs/sfml/components.hpp @@ -79,6 +79,7 @@ namespace guecs { void init(lel::Cell& cell, guecs::Rectangle &bg); void init(lel::Cell& cell); void render(sf::RenderTarget& window, sf::Shader *shader_ptr); + void update_percent(float pct); }; struct Effect { diff --git a/src/guecs/sfml/components.cpp b/src/guecs/sfml/components.cpp index 6c1fadb..c437b36 100644 --- a/src/guecs/sfml/components.cpp +++ b/src/guecs/sfml/components.cpp @@ -116,12 +116,17 @@ namespace guecs { $cell_w = cell.w; $cell_h = cell.h; bar.init(cell); + update_percent(percent); } void Meter::render(sf::RenderTarget& window, sf::Shader *shader_ptr) { + bar.render(window, shader_ptr); + } + + void Meter::update_percent(float pct) { + percent = pct; 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}); - bar.render(window, shader_ptr); } void Sound::play(bool hover) {