diff --git a/src/audio/sound_manager.cpp b/src/audio/sound_manager.cpp index 528aa066f533925c0ac98a89463ffd01daf6da4d..a5bdd32cbff918ff8e4c2b9d298ef800f7cba9c9 100644 --- a/src/audio/sound_manager.cpp +++ b/src/audio/sound_manager.cpp @@ -67,7 +67,7 @@ namespace phase_shifter::audio { if(effect != _sound_effects.end()) { auto ctx = _audio.generate_context(effect->second.get_random(_random_gen)); ctx.get_object()->set_loops(0); - ctx.get_object()->set_volume(_effect_volume * 100); + ctx.get_object()->set_volume(static_cast(_effect_volume * 100)); ctx.play(); } } diff --git a/src/gameplay/beat_system.cpp b/src/gameplay/beat_system.cpp index 221d792e4590d10b841e44a75907daef71f194e8..09f5c3747ba93c71a31dee3dcc51e9916038639b 100644 --- a/src/gameplay/beat_system.cpp +++ b/src/gameplay/beat_system.cpp @@ -80,6 +80,11 @@ namespace phase_shifter::gameplay { } } + void Beat_system::increase_beats_left(int count) { + _beat_offset += count; + _state.beats_left += count; + } + const std::vector& Beat_system::time_stamps() const { return _time_stamps; } int Beat_system::beat_index() const { return _beat_index; } diff --git a/src/gameplay/beat_system.hpp b/src/gameplay/beat_system.hpp index d3f6e47bc13932506fdd0155cde80991c392fb53..2e79538c8ede0bc57eb76eda48871c34e1effeb6 100644 --- a/src/gameplay/beat_system.hpp +++ b/src/gameplay/beat_system.hpp @@ -27,6 +27,8 @@ namespace phase_shifter::gameplay { void decrease_beats_left(int count); + void increase_beats_left(int count); + auto graphic_time_scale() const -> float; const std::vector& time_stamps() const ; diff --git a/src/gameplay/combat_system.cpp b/src/gameplay/combat_system.cpp index 8c3b0c3030020064ddcf383dbcb53b6d9828b5b1..0f502fcbe130e314a9ed237ecdfbce5cc248c4d3 100644 --- a/src/gameplay/combat_system.cpp +++ b/src/gameplay/combat_system.cpp @@ -16,6 +16,7 @@ namespace phase_shifter::gameplay { namespace { constexpr auto damage_beat_penalty = 10; + constexpr auto kill_beat_gain = 5; } Combat_system::Combat_system(mirrage::util::Message_bus& bus, @@ -39,6 +40,9 @@ namespace phase_shifter::gameplay { _ecs.erase(entity); }); }); + _mailbox.subscribe_to([&](Enemy_killed_msg& e) { + _beat_system.increase_beats_left(kill_beat_gain); + }); } void Combat_system::update(mirrage::util::Time)