From 7d5f055547e70fa93ee9ac944e62f8d657b9dc55 Mon Sep 17 00:00:00 2001 From: chai Date: Fri, 19 Oct 2018 08:36:44 +0800 Subject: =?UTF-8?q?*=E4=BF=AE=E6=94=B9=E6=96=87=E4=BB=B6=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/libjin/Time/Timer.cpp | 100 ------------------------------------------- src/libjin/Time/Timer.h | 77 --------------------------------- src/libjin/Time/je_timer.cpp | 100 +++++++++++++++++++++++++++++++++++++++++++ src/libjin/Time/je_timer.h | 77 +++++++++++++++++++++++++++++++++ 4 files changed, 177 insertions(+), 177 deletions(-) delete mode 100644 src/libjin/Time/Timer.cpp delete mode 100644 src/libjin/Time/Timer.h create mode 100644 src/libjin/Time/je_timer.cpp create mode 100644 src/libjin/Time/je_timer.h (limited to 'src/libjin/Time') diff --git a/src/libjin/Time/Timer.cpp b/src/libjin/Time/Timer.cpp deleted file mode 100644 index 6f3bc80..0000000 --- a/src/libjin/Time/Timer.cpp +++ /dev/null @@ -1,100 +0,0 @@ -#include "../configuration.h" -#if LIBJIN_MODULES_TIME - -#include "Timer.h" - -namespace jin -{ - namespace time - { - - - Timers::Timers() - : timers() - { - } - - Timers::~Timers() - { - for (int i = 0; i < timers.size(); ++i) - delete timers[i]; - } - - void Timers::update(int ms) - { - std::vector::iterator it = timers.begin(); - for (; it != timers.end(); ) - { - if (!(*it)->process(ms)) - { - Timer* t = *it; - timers.erase(it); - delete t; - return; - } - ++it; - } - } - - void Timers::every(int ms, timer_callback callback, void* p) - { - Timer* t = new Timer(Timer::EVERY, ms, 0, callback, p); - timers.push_back(t); - } - - void Timers::after(int ms, timer_callback callback, void* p) - { - Timer* t = new Timer(Timer::AFTER, ms, 0, callback, p); - timers.push_back(t); - } - - void Timers::repeat(int ms, int count, timer_callback callback, void* p) - { - Timer* t = new Timer(Timer::REPEAT, ms, count, callback, p); - timers.push_back(t); - } - - Timers::Timer::Timer(Type t, int d, int c, timer_callback f, void* p) - : type(t) - , duration(d) - , count(c) - , tickdown(d) - , countdown(c) - , callback(f) - , paramters(p) - { - } - - Timers::Timer::~Timer() - { - } - - bool Timers::Timer::process(int ms) - { - tickdown -= ms; - if (tickdown <= 0) - { - tickdown = duration; - if (callback != nullptr) - callback(paramters); - if (type == EVERY) - { - } - else if (type == AFTER) - { - return false; - } - else if (type == REPEAT) - { - --countdown; - if (countdown <= 0) - return false; - } - } - return true; - } - - } // namespace time -} // namespace jin - -#endif // LIBJIN_MODULES_TIME diff --git a/src/libjin/Time/Timer.h b/src/libjin/Time/Timer.h deleted file mode 100644 index ff67590..0000000 --- a/src/libjin/Time/Timer.h +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef __LIBJIN_TIMER_H -#define __LIBJIN_TIMER_H -#include "../configuration.h" -#if LIBJIN_MODULES_TIME - -#include "SDL2/SDL.h" -#include - -namespace jin -{ - 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 timers; - - }; - - inline void sleep(int ms) - { - #if LIBJIN_TIME_SDL - SDL_Delay(ms); - #endif - } - - inline double getSecond() - { - #if LIBJIN_TIME_SDL - return SDL_GetTicks() / 1000.f; - #endif - } - - inline double getMilliSecond() - { - #if LIBJIN_TIME_SDL - return SDL_GetTicks(); - #endif - } - - } // namespace time -} // namespace jin - -#endif // LIBJIN_MODULES_TIME -#endif // __LIBJIN_TIMER_H diff --git a/src/libjin/Time/je_timer.cpp b/src/libjin/Time/je_timer.cpp new file mode 100644 index 0000000..ac66de1 --- /dev/null +++ b/src/libjin/Time/je_timer.cpp @@ -0,0 +1,100 @@ +#include "../core/je_configuration.h" +#if LIBJIN_MODULES_TIME + +#include "je_timer.h" + +namespace jin +{ + namespace time + { + + + Timers::Timers() + : timers() + { + } + + Timers::~Timers() + { + for (int i = 0; i < timers.size(); ++i) + delete timers[i]; + } + + void Timers::update(int ms) + { + std::vector::iterator it = timers.begin(); + for (; it != timers.end(); ) + { + if (!(*it)->process(ms)) + { + Timer* t = *it; + timers.erase(it); + delete t; + return; + } + ++it; + } + } + + void Timers::every(int ms, timer_callback callback, void* p) + { + Timer* t = new Timer(Timer::EVERY, ms, 0, callback, p); + timers.push_back(t); + } + + void Timers::after(int ms, timer_callback callback, void* p) + { + Timer* t = new Timer(Timer::AFTER, ms, 0, callback, p); + timers.push_back(t); + } + + void Timers::repeat(int ms, int count, timer_callback callback, void* p) + { + Timer* t = new Timer(Timer::REPEAT, ms, count, callback, p); + timers.push_back(t); + } + + Timers::Timer::Timer(Type t, int d, int c, timer_callback f, void* p) + : type(t) + , duration(d) + , count(c) + , tickdown(d) + , countdown(c) + , callback(f) + , paramters(p) + { + } + + Timers::Timer::~Timer() + { + } + + bool Timers::Timer::process(int ms) + { + tickdown -= ms; + if (tickdown <= 0) + { + tickdown = duration; + if (callback != nullptr) + callback(paramters); + if (type == EVERY) + { + } + else if (type == AFTER) + { + return false; + } + else if (type == REPEAT) + { + --countdown; + if (countdown <= 0) + return false; + } + } + return true; + } + + } // namespace time +} // namespace jin + +#endif // LIBJIN_MODULES_TIME diff --git a/src/libjin/Time/je_timer.h b/src/libjin/Time/je_timer.h new file mode 100644 index 0000000..c31de42 --- /dev/null +++ b/src/libjin/Time/je_timer.h @@ -0,0 +1,77 @@ +#ifndef __LIBJIN_TIMER_H +#define __LIBJIN_TIMER_H +#include "../core/je_configuration.h" +#if LIBJIN_MODULES_TIME + +#include +#include "SDL2/SDL.h" + +namespace jin +{ + 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 timers; + + }; + + inline void sleep(int ms) + { + #if LIBJIN_TIME_SDL + SDL_Delay(ms); + #endif + } + + inline double getSecond() + { + #if LIBJIN_TIME_SDL + return SDL_GetTicks() / 1000.f; + #endif + } + + inline double getMilliSecond() + { + #if LIBJIN_TIME_SDL + return SDL_GetTicks(); + #endif + } + + } // namespace time +} // namespace jin + +#endif // LIBJIN_MODULES_TIME +#endif // __LIBJIN_TIMER_H -- cgit v1.1-26-g67d0