diff options
Diffstat (limited to 'game.c')
| -rw-r--r-- | game.c | 46 |
1 files changed, 46 insertions, 0 deletions
@@ -0,0 +1,46 @@ +#include "game.h" + +GameData game = {0}; + +void +game_init(void) { + game.time.secs = 12 * GAME_SECS_PER_HOUR; + game.time.day_len = 600; + game.time.scale = 5; + game.paused = false; +} + +void +game_exit(void) { +} + +void +game_update(void) { + if (game.paused || game.time.day_len <= 0) { + return; + } + + f64 rate = (f64)GAME_SECS_PER_DAY / game.time.day_len; + game.time.secs += GetFrameTime() * rate * game.time.scale; +} + +void +game_time_set(u32 hour, u32 min, f64 sec) { + hour = MIN(hour, 24); + min = MIN(min, 60); + sec = CLAMP(sec, 0.0, 60.0); +} + +f64 +game_time_of_day(void) { + f64 time = fmod(game.time.secs, (f64)GAME_SECS_PER_DAY); + if (time < 0.0) { + time += GAME_SECS_PER_DAY; + } + return time; +} + +u32 +game_time_day(void) { + return (u32)floor(game.time.secs / GAME_SECS_PER_DAY); +} |
