techkaczynski.dev / code

summaryrefslogtreecommitdiff
path: root/game.c
diff options
context:
space:
mode:
Diffstat (limited to 'game.c')
-rw-r--r--game.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/game.c b/game.c
new file mode 100644
index 0000000..53b68cf
--- /dev/null
+++ b/game.c
@@ -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);
+}