aboutsummaryrefslogtreecommitdiff
path: root/CruUI/timer.cpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2018-09-19 01:15:01 +0800
committercrupest <crupest@outlook.com>2018-09-19 01:15:01 +0800
commit85bb4d466efeb2540363065d7c0987a9d60f70e9 (patch)
treeea5e5aa738afb37a2d3bc4e74f9be64c15f3d188 /CruUI/timer.cpp
parent4710715102df3806479985679bd8048631ccaab5 (diff)
downloadcru-85bb4d466efeb2540363065d7c0987a9d60f70e9.tar.gz
cru-85bb4d466efeb2540363065d7c0987a9d60f70e9.tar.bz2
cru-85bb4d466efeb2540363065d7c0987a9d60f70e9.zip
finish animation!!!
Diffstat (limited to 'CruUI/timer.cpp')
-rw-r--r--CruUI/timer.cpp23
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);
}
}