diff options
| author | chai <chaifix@163.com> | 2018-10-23 12:23:58 +0800 |
|---|---|---|
| committer | chai <chaifix@163.com> | 2018-10-23 12:23:58 +0800 |
| commit | 40fc27154fe754181934dc7ee31375e6bdfb33fc (patch) | |
| tree | 897ad98d759bc308ef66561181ba88b85f2ccd47 /src/libjin/Time/je_timer.h | |
| parent | 1480c9445100075c9e1a894eb07c0ef727b509a1 (diff) | |
*merge from minimal
Diffstat (limited to 'src/libjin/Time/je_timer.h')
| -rw-r--r-- | src/libjin/Time/je_timer.h | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/src/libjin/Time/je_timer.h b/src/libjin/Time/je_timer.h new file mode 100644 index 0000000..b6b4b9e --- /dev/null +++ b/src/libjin/Time/je_timer.h @@ -0,0 +1,117 @@ +#ifndef __JE_TIMER_H +#define __JE_TIMER_H +#include "../core/je_configuration.h" +#if defined(jin_time) + +#include <vector> +#include "SDL2/SDL.h" + +namespace JinEngine +{ + namespace Time + { + + /// + /// + /// + class Timers + { + public: + typedef void(*timer_callback)(void* prameters); + + /// + /// + /// + Timers(); + + /// + /// + /// + ~Timers(); + + /// + /// + /// + void update(int ms); + + /// + /// + /// + void every(int ms, timer_callback callback, void* paramters); + + /// + /// + /// + void after(int ms, timer_callback callback, void* paramters); + + /// + /// + /// + void repeat(int ms, int count, timer_callback callback, void* paramters); + + private: + + /// + /// + /// + class Timer + { + public: + enum Type + { + EVERY, + AFTER, + REPEAT, + }; + Timer(Type type, int duration, int count = 0, timer_callback callback = nullptr, void* paramters = nullptr); + virtual ~Timer(); + bool process(int ms); + private: + int duration; + int count; + int tickdown; + int countdown; + Type type; + timer_callback callback; + void* paramters; + }; + std::vector<Timer*> timers; + + }; + + /// + /// + /// + 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 |
