Zappy Server
C++ game server: world, rules, scheduler, network
Loading...
Searching...
No Matches
GameClock.cpp
Go to the documentation of this file.
1#include "GameClock.hpp"
2
4 : _freq(freq), _startTime(std::chrono::steady_clock::now()), _lastFreqChange(_startTime)
5{
6}
7
8std::chrono::microseconds GameClock::elapsed() const
9{
10 return std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::steady_clock::now() -
12}
13
14double GameClock::_ticksSince(std::chrono::steady_clock::time_point from) const
15{
16 auto seconds = std::chrono::duration<double>(std::chrono::steady_clock::now() - from).count();
17 return seconds * _freq;
18}
19
21
22float GameClock::setFreq(int newFreq)
23{
25 _lastFreqChange = std::chrono::steady_clock::now();
26 float ratio = static_cast<float>(_freq) / newFreq;
27 _freq = newFreq;
28 return ratio;
29}
30
31void GameClock::recordJoin(const std::string& team)
32{
33 if (_joins.count(team)) return;
34 _joins.emplace(team, Stamp{elapsed(), ticks()});
35}
36
37std::optional<GameClock::Stamp> GameClock::joinOf(const std::string& team) const
38{
39 auto it = _joins.find(team);
40 if (it == _joins.end()) return std::nullopt;
41 return it->second;
42}
std::chrono::steady_clock::time_point _lastFreqChange
Definition GameClock.hpp:58
std::optional< Stamp > joinOf(const std::string &team) const
The join stamp for team, or nullopt if the team never joined.
Definition GameClock.cpp:37
void recordJoin(const std::string &team)
Definition GameClock.cpp:31
double _accumTicks
Definition GameClock.hpp:59
double _ticksSince(std::chrono::steady_clock::time_point from) const
Definition GameClock.cpp:14
double ticks() const
Total ticks elapsed: integral of freq over time. Fractional by nature.
Definition GameClock.cpp:20
std::chrono::steady_clock::time_point _startTime
Definition GameClock.hpp:57
GameClock(int freq)
Definition GameClock.cpp:3
float setFreq(int newFreq)
Change frequency, banking ticks accrued at the old rate first.
Definition GameClock.cpp:22
std::unordered_map< std::string, Stamp > _joins
Definition GameClock.hpp:60
std::chrono::microseconds elapsed() const
Wall-clock time since construction.
Definition GameClock.cpp:8
A clock reading: wall time and ticks since boot, captured at one instant.
Definition GameClock.hpp:25