#include "include/time.h" #define MAX_SKIPPED_FRAMES 20 #define DEFAULT_GAME_SPEED 10 Uint16 cycles_to_calculate = 0; int game_speed; Uint16 cycle_length; static Uint32 timer1, timer2; void time_init() { time_set_game_speed(DEFAULT_GAME_SPEED); } void time_set_game_speed(int speed) { if (speed <= 0) speed = 1; game_speed = speed; cycle_length = 1000 / game_speed; timer1 = SDL_GetTicks(); } void time_update() { while (1) { timer2 = SDL_GetTicks() - timer1; if (timer2 >= cycle_length) break; else SDL_Delay(3); } timer1 = SDL_GetTicks() - (timer2 % cycle_length); cycles_to_calculate = timer2 / cycle_length; if (cycles_to_calculate > MAX_SKIPPED_FRAMES) cycles_to_calculate = MAX_SKIPPED_FRAMES; }