ScummVM API documentation
timer.h
1/* ScummVM - Graphic Adventure Engine
2 *
3 * ScummVM is the legal property of its developers, whose names
4 * are too numerous to list here. Please refer to the COPYRIGHT
5 * file distributed with this source distribution.
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 *
20 */
21
22#ifndef AGS_ENGINE_AC_TIMER_H
23#define AGS_ENGINE_AC_TIMER_H
24
25#include "common/std/type_traits.h"
26#include "common/std/chrono.h"
27#include "common/std/xtr1common.h"
28
29#include "ags/lib/std.h"
30
31namespace AGS3 {
32
33// use high resolution clock only if we know it is monotonic/steady.
34// refer to https://stackoverflow.com/a/38253266/84262
35using AGS_Clock = std::conditional <
36 std::chrono::high_resolution_clock::is_steady,
37 std::chrono::high_resolution_clock, std::chrono::steady_clock
38 >::type;
39
40template<typename TDur>
41inline int64_t ToMilliseconds(TDur dur) {
42 return std::chrono::duration_cast<std::chrono::milliseconds>(dur).count();
43}
44
45// Sleeps for time remaining until the next game frame, updates next frame timestamp
46extern void WaitForNextFrame();
47
48// Sets real FPS to the given number of frames per second; pass 1000+ for maxed FPS mode
49extern int setTimerFps(int new_fps);
50// Tells whether maxed FPS mode is currently set
51extern bool isTimerFpsMaxed();
52// If more than N frames, just skip all, start a fresh.
53extern void skipMissedTicks();
54
55} // namespace AGS3
56
57#endif
Definition: xtr1common.h:38