diff options
Diffstat (limited to 'src/libjin/Time')
-rw-r--r-- | src/libjin/Time/je_timer.cpp | 122 | ||||
-rw-r--r-- | src/libjin/Time/je_timer.h | 137 |
2 files changed, 0 insertions, 259 deletions
diff --git a/src/libjin/Time/je_timer.cpp b/src/libjin/Time/je_timer.cpp deleted file mode 100644 index 8dc5e86..0000000 --- a/src/libjin/Time/je_timer.cpp +++ /dev/null @@ -1,122 +0,0 @@ -#include "../core/je_configuration.h" -#if defined(jin_time) - -#include "je_timer.h" - -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; - } - } - } - - } // namespace Time -} // namespace JinEngine - -#endif // defined(jin_time)
\ No newline at end of file diff --git a/src/libjin/Time/je_timer.h b/src/libjin/Time/je_timer.h deleted file mode 100644 index 31cd322..0000000 --- a/src/libjin/Time/je_timer.h +++ /dev/null @@ -1,137 +0,0 @@ -#ifndef __JE_TIMER_H__ -#define __JE_TIMER_H__ -#include "../core/je_configuration.h" -#if defined(jin_time) - -#include <vector> -#include <functional> - -#include "SDL2/SDL.h" - -namespace JinEngine -{ - namespace Time - { - - /// - /// - /// - class Timer - { - public: - - typedef std::function<void(void*)> TimerCallback; - - typedef std::function<void(void*)> FinishCallback; - - /// - /// - /// - class Handler - { - public: - friend class Timer; - enum Type - { - EVERY, - AFTER, - REPEAT, - }; - Handler(Type type, float duration, int count = 0, TimerCallback callback = nullptr, void* paramters = nullptr, FinishCallback finishcallback = nullptr); - virtual ~Handler(); - void process(float dt); - - protected: - int count; - int countdown; - float duration; - float tickdown; - Type type; - TimerCallback callback; - FinishCallback finishCallback; - void* paramters; - bool canceled; - }; - - /// - /// - /// - Timer(); - - /// - /// - /// - ~Timer(); - - /// - /// - /// - void update(float dt); - - /// - /// - /// - Handler* every(float dt, TimerCallback callback, void* paramters, FinishCallback finish); - - /// - /// - /// - Handler* after(float dt, TimerCallback callback, void* paramters, FinishCallback finish); - - /// - /// - /// - Handler* repeat(float dt, int count, TimerCallback callback, void* paramters, FinishCallback finish); - - /// - /// - /// - void cancel(Handler* handler); - - /// - /// - /// - void cancelAll(); - - private: - - std::vector<Handler*> mHandlers; - - }; - - /// - /// - /// - inline void sleep(int ms) - { - #if jin_time == jin_time_sdl - SDL_Delay(ms); - #endif - } - - /// - /// - /// - inline double getSecond() - { - #if jin_time == jin_time_sdl - return SDL_GetTicks() / 1000.f; - #endif - } - - /// - /// - /// - inline double getMilliSecond() - { - #if jin_time == jin_time_sdl - return SDL_GetTicks(); - #endif - } - - } // namespace Time -} // namespace JinEngine - -#endif // defined(jin_time) - -#endif // __JE_TIMER_H__
\ No newline at end of file |