]> git.lizzy.rs Git - dragonblocks_alpha.git/blob - src/day.c
e3d79797916859e2ea4da65faad0d443529db3cf
[dragonblocks_alpha.git] / src / day.c
1 #include <math.h>
2 #include "day.h"
3 #include "util.h"
4
5 static time_t time_of_day_offset;
6
7 f64 get_time_of_day()
8 {
9         struct timespec ts;
10         clock_gettime(CLOCK_REALTIME, &ts);
11
12         return fmod((f64) ts.tv_sec - time_of_day_offset + ts.tv_nsec  / 1.0e9, MINUTES_PER_DAY);
13 }
14 void set_time_of_day(time_t new_time)
15 {
16         time_of_day_offset = time(NULL) - new_time;
17 }
18
19 f64 get_sun_angle()
20 {
21         return 2.0 * M_PI * (f64) get_time_of_day() / MINUTES_PER_DAY + M_PI;
22 }
23
24 f64 get_daylight()
25 {
26         return clamp(cos(get_sun_angle()) * 2.0 + 0.5, 0.0, 1.0);
27 }
28
29 void split_time_of_day(int *hours, int *minutes)
30 {
31         time_t time_of_day = get_time_of_day();
32
33         *minutes = time_of_day % MINUTES_PER_HOUR;
34         *hours = time_of_day / MINUTES_PER_HOUR;
35 }