diff --git a/guecs.cpp b/guecs.cpp index 2257b82..7fd30fb 100644 --- a/guecs.cpp +++ b/guecs.cpp @@ -65,6 +65,12 @@ namespace guecs { } } + void Sound::stop(bool hover) { + if(!hover) { + sound::stop(on_click); + } + } + void Background::init() { sf::Vector2f size{float(w), float(h)}; if(shape == nullptr) shape = make_shared<sf::RectangleShape>(size); @@ -107,6 +113,10 @@ namespace guecs { return $shader; } + void Effect::stop() { + $active = false; + } + UI::UI() { $font = make_shared<sf::Font>(FONT_FILE_NAME); } @@ -242,7 +252,7 @@ namespace guecs { sound.play(hover); }); - if(hover) return; // kinda gross + if(hover) return; if(auto action_data = get_if<ActionData>(ent)) { clicked.action(ent, action_data->data); @@ -252,9 +262,14 @@ namespace guecs { action_count++; } else { - // via ORBLISHJ - // just reset the hover trigger for all that aren't hit - // then in the ^^ positive branch play it and set it played + do_if<Effect>(ent, [hover](auto& effect) { + effect.stop(); + }); + + do_if<Sound>(ent, [hover](auto& sound) { + // here set that it played then only play once + sound.stop(hover); + }); } });