diff options
author | crupest <crupest@outlook.com> | 2018-09-19 01:15:01 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2018-09-19 01:15:01 +0800 |
commit | 85bb4d466efeb2540363065d7c0987a9d60f70e9 (patch) | |
tree | ea5e5aa738afb37a2d3bc4e74f9be64c15f3d188 /CruUI/timer.cpp | |
parent | 4710715102df3806479985679bd8048631ccaab5 (diff) | |
download | cru-85bb4d466efeb2540363065d7c0987a9d60f70e9.tar.gz cru-85bb4d466efeb2540363065d7c0987a9d60f70e9.tar.bz2 cru-85bb4d466efeb2540363065d7c0987a9d60f70e9.zip |
finish animation!!!
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); } } |