#pragma once struct timer_struct { int TargetTime; void* Caller; void (* Callback)(int, void*); timer_struct* NextTimer; int TimerId; }; class timer { public: static int init(int count); static void uninit(); static int kill(int timerId); static int kill(void (*callback)(int, void*)); static int set(float time, void* caller, void (* callback)(int, void*)); static int check(); private: static int SetCount; static timer_struct* ActiveList; static int MaxCount; static int Count; static timer_struct* FreeList; static timer_struct* TimerBuffer; };