OpenGothic
Open source reimplementation of Gothic I and II
Loading...
Searching...
No Matches
gametime.h
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <limits>
5#include <time.h>
6
7class gtime final {
8 public:
9 gtime()=default;
10 gtime(int32_t hour,int32_t min):time(hour*hourMilis+min*minMilis){}
11 gtime(int64_t day,int32_t hour,int32_t min):time(day*dayMilis+hour*hourMilis+min*minMilis){}
12 gtime(int64_t day,int64_t hour,int64_t min):time(day*dayMilis+hour*hourMilis+min*minMilis){}
13
14 int64_t toInt() const { return time; }
15 void addMilis(uint64_t t){ time+=t; }
16
17 int64_t day() const { return time/dayMilis; }
18 gtime timeInDay() const { return gtime(time%dayMilis); }
19
20 int64_t hour() const { return (time/hourMilis)%24; }
21 int64_t minute() const { return (time/minMilis )%60; }
22
23 static const gtime endOfTime() { return gtime(std::numeric_limits<int64_t>::max()); }
24
25 private:
26 explicit gtime(int64_t milis):time(milis){}
27
28 int64_t time=0;
29 static const int64_t dayMilis =24*60*60*1000;
30 static const int64_t hourMilis=60*60*1000;
31 static const int64_t minMilis =60*1000;
32
33 friend bool operator == (gtime a,gtime b);
34 friend bool operator != (gtime a,gtime b);
35 friend bool operator < (gtime a,gtime b);
36 friend bool operator <= (gtime a,gtime b);
37 };
38
39inline bool operator == (gtime a,gtime b){
40 return a.time==b.time;
41 }
42
43inline bool operator != (gtime a,gtime b){
44 return a.time!=b.time;
45 }
46
47inline bool operator < (gtime a,gtime b){
48 return a.time<b.time;
49 }
50
51inline bool operator <=(gtime a,gtime b){
52 return a.time<=b.time;
53 }
gtime()=default
friend bool operator==(gtime a, gtime b)
Definition gametime.h:39
gtime(int64_t day, int64_t hour, int64_t min)
Definition gametime.h:12
friend bool operator<(gtime a, gtime b)
Definition gametime.h:47
friend bool operator<=(gtime a, gtime b)
Definition gametime.h:51
void addMilis(uint64_t t)
Definition gametime.h:15
gtime timeInDay() const
Definition gametime.h:18
gtime(int32_t hour, int32_t min)
Definition gametime.h:10
int64_t day() const
Definition gametime.h:17
int64_t hour() const
Definition gametime.h:20
static const gtime endOfTime()
Definition gametime.h:23
friend bool operator!=(gtime a, gtime b)
Definition gametime.h:43
gtime(int64_t day, int32_t hour, int32_t min)
Definition gametime.h:11
int64_t minute() const
Definition gametime.h:21
int64_t toInt() const
Definition gametime.h:14
bool operator==(gtime a, gtime b)
Definition gametime.h:39
bool operator<(gtime a, gtime b)
Definition gametime.h:47
bool operator<=(gtime a, gtime b)
Definition gametime.h:51
bool operator!=(gtime a, gtime b)
Definition gametime.h:43