Progress
This commit is contained in:
@ -1,32 +1,57 @@
|
||||
// Copyright (c) 2022 Dominic Masters
|
||||
//
|
||||
// This software is released under the MIT License.
|
||||
// https://opensource.org/licenses/MIT
|
||||
|
||||
#include "ITimeManager.hpp"
|
||||
|
||||
using namespace Dawn;
|
||||
|
||||
ITimeManager::ITimeManager() {
|
||||
|
||||
}
|
||||
|
||||
void ITimeManager::update(float_t delta) {
|
||||
this->delta = delta;
|
||||
this->time += delta;
|
||||
if(!this->isPaused) {
|
||||
this->unpausedTime += delta;
|
||||
}
|
||||
}
|
||||
|
||||
void ITimeManager::pause() {
|
||||
if(this->isPaused) return;
|
||||
this->isPaused = true;
|
||||
this->eventTimePaused.invoke();
|
||||
}
|
||||
|
||||
void ITimeManager::resume() {
|
||||
if(!this->isPaused) return;
|
||||
this->isPaused = false;
|
||||
this->eventTimeResumed.invoke();
|
||||
// Copyright (c) 2022 Dominic Masters
|
||||
//
|
||||
// This software is released under the MIT License.
|
||||
// https://opensource.org/licenses/MIT
|
||||
|
||||
#include "ITimeManager.hpp"
|
||||
|
||||
using namespace Dawn;
|
||||
|
||||
ITimeManager::ITimeManager() {
|
||||
|
||||
}
|
||||
|
||||
void ITimeManager::update(float_t delta) {
|
||||
this->delta = delta;
|
||||
this->time += delta;
|
||||
|
||||
if(!this->isPaused) {
|
||||
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.second += delta;
|
||||
if(itInterval->data.second >= itInterval->data.first) {
|
||||
itInterval->callback();
|
||||
itInterval->data.second = 0;
|
||||
}
|
||||
++itInterval;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ITimeManager::pause() {
|
||||
if(this->isPaused) return;
|
||||
this->isPaused = true;
|
||||
this->eventTimePaused.invoke();
|
||||
}
|
||||
|
||||
void ITimeManager::resume() {
|
||||
if(!this->isPaused) return;
|
||||
this->isPaused = false;
|
||||
this->eventTimeResumed.invoke();
|
||||
}
|
Reference in New Issue
Block a user