4 : _freq(freq), _startTime(std::chrono::steady_clock::now()), _lastFreqChange(_startTime)
10 return std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::steady_clock::now() -
16 auto seconds = std::chrono::duration<double>(std::chrono::steady_clock::now() - from).count();
17 return seconds *
_freq;
26 float ratio =
static_cast<float>(
_freq) / newFreq;
33 if (
_joins.count(team))
return;
39 auto it =
_joins.find(team);
40 if (it ==
_joins.end())
return std::nullopt;
std::chrono::steady_clock::time_point _lastFreqChange
std::optional< Stamp > joinOf(const std::string &team) const
The join stamp for team, or nullopt if the team never joined.
void recordJoin(const std::string &team)
double _ticksSince(std::chrono::steady_clock::time_point from) const
double ticks() const
Total ticks elapsed: integral of freq over time. Fractional by nature.
std::chrono::steady_clock::time_point _startTime
float setFreq(int newFreq)
Change frequency, banking ticks accrued at the old rate first.
std::unordered_map< std::string, Stamp > _joins
std::chrono::microseconds elapsed() const
Wall-clock time since construction.
A clock reading: wall time and ticks since boot, captured at one instant.