diff options
Diffstat (limited to 'CruUI/timer.cpp')
-rw-r--r-- | CruUI/timer.cpp | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/CruUI/timer.cpp b/CruUI/timer.cpp index 7435adde..f596dde4 100644 --- a/CruUI/timer.cpp +++ b/CruUI/timer.cpp @@ -2,14 +2,14 @@ namespace cru { - UINT_PTR TimerManager::CreateTimer(const UINT milliseconds, const bool loop, std::shared_ptr<Action<>> action) + UINT_PTR TimerManager::CreateTimer(const UINT milliseconds, const bool loop, ActionPtr action) { const auto id = current_count_++; - ::SetTimer(Application::GetInstance()->GetGodWindow()->GetHandle(), 0, milliseconds, nullptr); + ::SetTimer(Application::GetInstance()->GetGodWindow()->GetHandle(), id, milliseconds, nullptr); if (loop) map_[id] = std::move(action); else - map_[id] = std::make_shared<Action<>>([this, action, id]() mutable { + map_[id] = CreateActionPtr([this, action, id]() mutable { (*action)(); this->KillTimer(id); }); @@ -26,7 +26,7 @@ namespace cru } } - std::shared_ptr<Action<>> TimerManager::GetAction(const UINT_PTR id) + ActionPtr TimerManager::GetAction(const UINT_PTR id) { const auto find_result = map_.find(id); if (find_result == map_.cend()) @@ -34,7 +34,7 @@ namespace cru return find_result->second; } - class TimerTaskImpl : public ITimerTask + class TimerTaskImpl : public virtual ICancelable { public: explicit TimerTaskImpl(UINT_PTR id); @@ -61,20 +61,15 @@ namespace cru TimerManager::GetInstance()->KillTimer(id_); } - inline UINT SecondToMillisecond(const double seconds) + TimerTask SetTimeout(std::chrono::milliseconds milliseconds, ActionPtr action) { - return static_cast<UINT>(seconds * 1000); - } - - std::shared_ptr<ITimerTask> SetTimeout(double seconds, std::shared_ptr<Action<>> action) - { - auto id = TimerManager::GetInstance()->CreateTimer(SecondToMillisecond(seconds), false, std::move(action)); + auto id = TimerManager::GetInstance()->CreateTimer(static_cast<UINT>(milliseconds.count()), false, std::move(action)); return std::make_shared<TimerTaskImpl>(id); } - std::shared_ptr<ITimerTask> SetInterval(double seconds, std::shared_ptr<Action<>> action) + TimerTask SetInterval(std::chrono::milliseconds milliseconds, ActionPtr action) { - auto id = TimerManager::GetInstance()->CreateTimer(SecondToMillisecond(seconds), true, std::move(action)); + auto id = TimerManager::GetInstance()->CreateTimer(static_cast<UINT>(milliseconds.count()), true, std::move(action)); return std::make_shared<TimerTaskImpl>(id); } } |