This commit is contained in:
2023-11-02 17:56:18 -05:00
parent b4c7953c93
commit 5547c7c236
4 changed files with 30 additions and 52 deletions

View File

@ -11,7 +11,7 @@ ITimeManager::ITimeManager() {
}
void ITimeManager::update(float_t delta) {
void ITimeManager::update(const float_t delta) {
this->delta = delta;
this->time += delta;
@ -19,28 +19,12 @@ void ITimeManager::update(float_t delta) {
this->unpausedTime += delta;
// Timeout effect provider
auto itEffect = this->timeoutProvider.listeners.begin();
while(itEffect != this->timeoutProvider.listeners.end()) {
itEffect->data -= delta;
if(itEffect->data <= 0) {
itEffect->callback();
itEffect = this->timeoutProvider.listeners.erase(itEffect);
continue;
}
++itEffect;
}
// Interval provider
auto itInterval = this->intervalProvider.listeners.begin();
while(itInterval != this->intervalProvider.listeners.end()) {
itInterval->data.time += delta;
if(itInterval->data.time >= itInterval->data.interval) {
itInterval->callback();
itInterval->data.time = 0;
}
++itInterval;
}
std::erase_if(this->timeoutProvider.listeners, [&](auto &listener) {
listener.data -= delta;
if(listener.data > 0) return false;
listener.callback();
return true;
});
}
}

View File

@ -9,11 +9,6 @@
#include "state/StateEvent.hpp"
namespace Dawn {
struct IntervalProviderData {
float_t interval;
float_t time;
};
class ITimeManager {
public:
float_t time = 0.0f;
@ -22,7 +17,6 @@ namespace Dawn {
bool_t isPaused = false;
StateProviderSet<float_t> timeoutProvider;
StateProviderSet<struct IntervalProviderData> intervalProvider;
StateEvent<> eventTimePaused;
StateEvent<> eventTimeResumed;
@ -36,7 +30,7 @@ namespace Dawn {
*
* @param delta Time in seconds to tick the instance by.
*/
void update(float_t delta);
void update(const float_t delta);
/**
* Pauses the game.