aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/time/timer.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2020-02-11 11:29:07 +0800
committerchai <chaifix@163.com>2020-02-11 11:29:07 +0800
commit160e1299ef3d95f8e8c48706d7f61dd3dc6c6b60 (patch)
treeabe5ae5242d9cc6caf6edf103e662c44e978fca0 /src/libjin/time/timer.cpp
parente095043485d1d298571af6d9eca7f0db9009ea7a (diff)
*修改 tab大小HEADmaster
Diffstat (limited to 'src/libjin/time/timer.cpp')
-rw-r--r--src/libjin/time/timer.cpp228
1 files changed, 114 insertions, 114 deletions
diff --git a/src/libjin/time/timer.cpp b/src/libjin/time/timer.cpp
index 32b2f57..a20e46b 100644
--- a/src/libjin/time/timer.cpp
+++ b/src/libjin/time/timer.cpp
@@ -5,120 +5,120 @@
namespace JinEngine
{
- namespace Time
- {
-
-
- Timer::Timer()
- : mHandlers()
- {
- }
-
- Timer::~Timer()
- {
- for (int i = 0; i < mHandlers.size(); ++i)
- delete mHandlers[i];
- }
-
- void Timer::update(float dt)
- {
- // Process handler.
- std::vector<Handler*>::iterator it = mHandlers.begin();
- for (; it != mHandlers.end(); ++it)
- (*it)->process(dt);
- // Erase canceled handler.
- for (it = mHandlers.begin(); it != mHandlers.end();)
- {
- if ((*it)->canceled)
- {
- Handler* h = *it;
- it = mHandlers.erase(it);
- delete h;
- }
- else
- ++it;
- }
- }
-
- void Timer::cancel(Handler* handler)
- {
- if(handler != nullptr)
- handler->canceled = true;
- }
-
- void Timer::cancelAll()
- {
- for (auto h : mHandlers)
- cancel(h);
- }
-
- Timer::Handler* Timer::every(float dt, TimerCallback callback, void* p, FinishCallback finish)
- {
- Handler* t = new Handler(Handler::EVERY, dt, 0, callback, p, finish);
- mHandlers.push_back(t);
- return t;
- }
-
- Timer::Handler* Timer::after(float dt, TimerCallback callback, void* p, FinishCallback finish)
- {
- Handler* t = new Handler(Handler::AFTER, dt, 0, callback, p, finish);
- mHandlers.push_back(t);
- return t;
- }
-
- Timer::Handler* Timer::repeat(float dt, int count, TimerCallback callback, void* p, FinishCallback finish)
- {
- Handler* t = new Handler(Handler::REPEAT, dt, count, callback, p, finish);
- mHandlers.push_back(t);
- return t;
- }
-
- Timer::Handler::Handler(Type t, float d, int c, TimerCallback f, void* p, FinishCallback finishcallback)
- : type(t)
- , duration(d)
- , count(c)
- , tickdown(d)
- , countdown(c)
- , callback(f)
- , paramters(p)
- , canceled(false)
- , finishCallback(finishcallback)
- {
- }
-
- Timer::Handler::~Handler()
- {
- if (finishCallback != nullptr)
- finishCallback(paramters);
- }
-
- void Timer::Handler::process(float dt)
- {
- tickdown -= dt;
- if (tickdown <= 0)
- {
- tickdown += duration;
- if (!canceled && callback != nullptr)
- callback(paramters);
- if (type == EVERY)
- {
- }
- else if (type == AFTER)
- {
- canceled = true;
- }
- else if (type == REPEAT)
- {
- --countdown;
- if (countdown <= 0)
- canceled = true;
- }
- }
- }
-
- float deltaTime = 0;
-
- } // namespace Time
+ namespace Time
+ {
+
+
+ Timer::Timer()
+ : mHandlers()
+ {
+ }
+
+ Timer::~Timer()
+ {
+ for (int i = 0; i < mHandlers.size(); ++i)
+ delete mHandlers[i];
+ }
+
+ void Timer::update(float dt)
+ {
+ // Process handler.
+ std::vector<Handler*>::iterator it = mHandlers.begin();
+ for (; it != mHandlers.end(); ++it)
+ (*it)->process(dt);
+ // Erase canceled handler.
+ for (it = mHandlers.begin(); it != mHandlers.end();)
+ {
+ if ((*it)->canceled)
+ {
+ Handler* h = *it;
+ it = mHandlers.erase(it);
+ delete h;
+ }
+ else
+ ++it;
+ }
+ }
+
+ void Timer::cancel(Handler* handler)
+ {
+ if(handler != nullptr)
+ handler->canceled = true;
+ }
+
+ void Timer::cancelAll()
+ {
+ for (auto h : mHandlers)
+ cancel(h);
+ }
+
+ Timer::Handler* Timer::every(float dt, TimerCallback callback, void* p, FinishCallback finish)
+ {
+ Handler* t = new Handler(Handler::EVERY, dt, 0, callback, p, finish);
+ mHandlers.push_back(t);
+ return t;
+ }
+
+ Timer::Handler* Timer::after(float dt, TimerCallback callback, void* p, FinishCallback finish)
+ {
+ Handler* t = new Handler(Handler::AFTER, dt, 0, callback, p, finish);
+ mHandlers.push_back(t);
+ return t;
+ }
+
+ Timer::Handler* Timer::repeat(float dt, int count, TimerCallback callback, void* p, FinishCallback finish)
+ {
+ Handler* t = new Handler(Handler::REPEAT, dt, count, callback, p, finish);
+ mHandlers.push_back(t);
+ return t;
+ }
+
+ Timer::Handler::Handler(Type t, float d, int c, TimerCallback f, void* p, FinishCallback finishcallback)
+ : type(t)
+ , duration(d)
+ , count(c)
+ , tickdown(d)
+ , countdown(c)
+ , callback(f)
+ , paramters(p)
+ , canceled(false)
+ , finishCallback(finishcallback)
+ {
+ }
+
+ Timer::Handler::~Handler()
+ {
+ if (finishCallback != nullptr)
+ finishCallback(paramters);
+ }
+
+ void Timer::Handler::process(float dt)
+ {
+ tickdown -= dt;
+ if (tickdown <= 0)
+ {
+ tickdown += duration;
+ if (!canceled && callback != nullptr)
+ callback(paramters);
+ if (type == EVERY)
+ {
+ }
+ else if (type == AFTER)
+ {
+ canceled = true;
+ }
+ else if (type == REPEAT)
+ {
+ --countdown;
+ if (countdown <= 0)
+ canceled = true;
+ }
+ }
+ }
+
+ float deltaTime = 0;
+
+ } // namespace Time
} // namespace JinEngine
#endif // defined(jin_time) \ No newline at end of file