diff options
author | crupest <crupest@outlook.com> | 2019-03-31 17:14:47 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2019-03-31 17:14:47 +0800 |
commit | fbfd90255731954fb80483f4ba7188d3611fafec (patch) | |
tree | 8e3283c911d7aec76130d6a1dc7f5d8a85512b59 /src/timer.cpp | |
parent | 877f65e2e2c40eecc7cfeb194dc9d391af60711b (diff) | |
download | cru-fbfd90255731954fb80483f4ba7188d3611fafec.tar.gz cru-fbfd90255731954fb80483f4ba7188d3611fafec.tar.bz2 cru-fbfd90255731954fb80483f4ba7188d3611fafec.zip |
...
Diffstat (limited to 'src/timer.cpp')
-rw-r--r-- | src/timer.cpp | 52 |
1 files changed, 0 insertions, 52 deletions
diff --git a/src/timer.cpp b/src/timer.cpp deleted file mode 100644 index 40e32640..00000000 --- a/src/timer.cpp +++ /dev/null @@ -1,52 +0,0 @@ -#include "timer.hpp" - -#include "application.hpp" - -namespace cru { -TimerManager* TimerManager::GetInstance() { - return Application::GetInstance()->ResolveSingleton<TimerManager>( - [](auto) { return new TimerManager{}; }); -} - -UINT_PTR TimerManager::CreateTimer(const UINT milliseconds, const bool loop, - const TimerAction& action) { - const auto id = current_count_++; - ::SetTimer(Application::GetInstance()->GetGodWindow()->GetHandle(), id, - milliseconds, nullptr); - map_.emplace(id, std::make_pair(loop, action)); - return id; -} - -void TimerManager::KillTimer(const UINT_PTR id) { - const auto find_result = map_.find(id); - if (find_result != map_.cend()) { - ::KillTimer(Application::GetInstance()->GetGodWindow()->GetHandle(), id); - map_.erase(find_result); - } -} - -std::optional<std::pair<bool, TimerAction>> TimerManager::GetAction( - const UINT_PTR id) { - const auto find_result = map_.find(id); - if (find_result == map_.cend()) return std::nullopt; - return find_result->second; -} - -TimerTask::TimerTask(const UINT_PTR id) : id_(id) {} - -void TimerTask::Cancel() const { TimerManager::GetInstance()->KillTimer(id_); } - -TimerTask SetTimeout(std::chrono::milliseconds milliseconds, - const TimerAction& action) { - const auto id = TimerManager::GetInstance()->CreateTimer( - static_cast<UINT>(milliseconds.count()), false, action); - return TimerTask(id); -} - -TimerTask SetInterval(std::chrono::milliseconds milliseconds, - const TimerAction& action) { - const auto id = TimerManager::GetInstance()->CreateTimer( - static_cast<UINT>(milliseconds.count()), true, action); - return TimerTask(id); -} -} // namespace cru |