techkaczynski.dev / code

summaryrefslogtreecommitdiff
path: root/game.c
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);
}