Push
This commit is contained in:
@ -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;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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.
|
||||
|
Reference in New Issue
Block a user