diff options
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 |