From 85bb4d466efeb2540363065d7c0987a9d60f70e9 Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 19 Sep 2018 01:15:01 +0800 Subject: finish animation!!! --- CruUI/timer.cpp | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) (limited to 'CruUI/timer.cpp') 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) + 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>([this, action, id]() mutable { + map_[id] = CreateActionPtr([this, action, id]() mutable { (*action)(); this->KillTimer(id); }); @@ -26,7 +26,7 @@ namespace cru } } - std::shared_ptr> 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(seconds * 1000); - } - - std::shared_ptr SetTimeout(double seconds, std::shared_ptr> action) - { - auto id = TimerManager::GetInstance()->CreateTimer(SecondToMillisecond(seconds), false, std::move(action)); + auto id = TimerManager::GetInstance()->CreateTimer(static_cast(milliseconds.count()), false, std::move(action)); return std::make_shared(id); } - std::shared_ptr SetInterval(double seconds, std::shared_ptr> 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(milliseconds.count()), true, std::move(action)); return std::make_shared(id); } } -- cgit v1.2.3