blob: 53b68cf87073c5e97668ca108c486e60af42dfee (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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);
}
|