mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2025-12-23 07:43:01 +01:00
Introduce gCurrentRealTimeTicks and refactor some variable names.
This commit is contained in:
@@ -259,7 +259,7 @@ static void input_scroll_right(int32_t x, int32_t y, int32_t state)
|
||||
switch (state)
|
||||
{
|
||||
case MOUSE_STATE_RELEASED:
|
||||
_ticksSinceDragStart += gTicksSinceLastUpdate;
|
||||
_ticksSinceDragStart += gCurrentDeltaTime;
|
||||
if (x != 0 || y != 0)
|
||||
{
|
||||
_ticksSinceDragStart = 1000;
|
||||
@@ -552,7 +552,7 @@ static void input_viewport_drag_continue()
|
||||
}
|
||||
|
||||
viewport = w->viewport;
|
||||
_ticksSinceDragStart += gTicksSinceLastUpdate;
|
||||
_ticksSinceDragStart += gCurrentDeltaTime;
|
||||
if (viewport == nullptr)
|
||||
{
|
||||
context_show_cursor();
|
||||
@@ -1479,7 +1479,7 @@ static void input_update_tooltip(rct_window* w, rct_widgetindex widgetIndex, int
|
||||
window_tooltip_close();
|
||||
}
|
||||
|
||||
gTooltipTimeout += gTicksSinceLastUpdate;
|
||||
gTooltipTimeout += gCurrentDeltaTime;
|
||||
if (gTooltipTimeout >= 8000)
|
||||
{
|
||||
window_close_by_class(WC_TOOLTIP);
|
||||
|
||||
@@ -110,7 +110,7 @@ namespace OpenRCT2
|
||||
bool _isWindowMinimised = false;
|
||||
uint32_t _lastTick = 0;
|
||||
uint32_t _accumulator = 0;
|
||||
uint32_t _lastUpdateTick = 0;
|
||||
uint32_t _lastUpdateTime = 0;
|
||||
bool _variableFrame = false;
|
||||
|
||||
// If set, will end the OpenRCT2 game loop. Intentially private to this module so that the flag can not be set back to
|
||||
@@ -914,13 +914,14 @@ namespace OpenRCT2
|
||||
|
||||
void Update()
|
||||
{
|
||||
uint32_t currentUpdateTick = platform_get_ticks();
|
||||
gTicksSinceLastUpdate = std::min<uint32_t>(currentUpdateTick - _lastUpdateTick, 500);
|
||||
_lastUpdateTick = currentUpdateTick;
|
||||
uint32_t currentUpdateTime = platform_get_ticks();
|
||||
|
||||
gCurrentDeltaTime = std::min<uint32_t>(currentUpdateTime - _lastUpdateTime, 500);
|
||||
_lastUpdateTime = currentUpdateTime;
|
||||
|
||||
if (game_is_not_paused())
|
||||
{
|
||||
gPaletteEffectFrame += gTicksSinceLastUpdate;
|
||||
gPaletteEffectFrame += gCurrentDeltaTime;
|
||||
}
|
||||
|
||||
date_update_real_time_of_day();
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
|
||||
#define NUMBER_OF_AUTOSAVES_TO_KEEP 9
|
||||
|
||||
uint16_t gTicksSinceLastUpdate;
|
||||
uint16_t gCurrentDeltaTime;
|
||||
uint8_t gGamePaused = 0;
|
||||
int32_t gGameSpeed = 1;
|
||||
bool gDoSingleUpdate = false;
|
||||
@@ -82,6 +82,7 @@ uint8_t gUnk13CA740;
|
||||
uint8_t gUnk141F568;
|
||||
|
||||
uint32_t gCurrentTicks;
|
||||
uint32_t gCurrentRealTimeTicks;
|
||||
|
||||
// clang-format off
|
||||
GAME_COMMAND_CALLBACK_POINTER * game_command_callback = nullptr;
|
||||
|
||||
@@ -137,8 +137,9 @@ extern rct_string_id gErrorStringId;
|
||||
extern GAME_COMMAND_POINTER* new_game_command_table[GAME_COMMAND_COUNT];
|
||||
|
||||
extern uint32_t gCurrentTicks;
|
||||
extern uint32_t gCurrentRealTimeTicks;
|
||||
|
||||
extern uint16_t gTicksSinceLastUpdate;
|
||||
extern uint16_t gCurrentDeltaTime;
|
||||
extern uint8_t gGamePaused;
|
||||
extern int32_t gGameSpeed;
|
||||
extern bool gDoSingleUpdate;
|
||||
|
||||
@@ -91,6 +91,12 @@ void GameState::Update()
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t realtimeTicksElapsed = gCurrentDeltaTime / GAME_UPDATE_TIME_MS;
|
||||
realtimeTicksElapsed = std::clamp<uint32_t>(realtimeTicksElapsed, 1, GAME_MAX_UPDATES);
|
||||
|
||||
// We use this variable to always advance ticks in normal speed.
|
||||
gCurrentRealTimeTicks += realtimeTicksElapsed;
|
||||
|
||||
// Determine how many times we need to update the game
|
||||
if (gGameSpeed > 1)
|
||||
{
|
||||
@@ -98,8 +104,7 @@ void GameState::Update()
|
||||
}
|
||||
else
|
||||
{
|
||||
numUpdates = gTicksSinceLastUpdate / GAME_UPDATE_TIME_MS;
|
||||
numUpdates = std::clamp<uint32_t>(numUpdates, 1, GAME_MAX_UPDATES);
|
||||
numUpdates = realtimeTicksElapsed;
|
||||
}
|
||||
|
||||
if (network_get_mode() == NETWORK_MODE_CLIENT && network_get_status() == NETWORK_STATUS_CONNECTED
|
||||
|
||||
@@ -133,7 +133,7 @@ void window_update_all()
|
||||
// gfx_draw_all_dirty_blocks();
|
||||
|
||||
// 1000 tick update
|
||||
gWindowUpdateTicks += gTicksSinceLastUpdate;
|
||||
gWindowUpdateTicks += gCurrentDeltaTime;
|
||||
if (gWindowUpdateTicks >= 1000)
|
||||
{
|
||||
gWindowUpdateTicks = 0;
|
||||
|
||||
@@ -62,6 +62,7 @@ void date_reset()
|
||||
gDateMonthsElapsed = 0;
|
||||
gDateMonthTicks = 0;
|
||||
gCurrentTicks = 0;
|
||||
gCurrentRealTimeTicks = 0;
|
||||
}
|
||||
|
||||
void date_set(int32_t year, int32_t month, int32_t day)
|
||||
|
||||
@@ -381,6 +381,7 @@ public:
|
||||
user_string_clear_all();
|
||||
memcpy(gUserStrings, _s6.custom_strings, sizeof(_s6.custom_strings));
|
||||
gCurrentTicks = _s6.game_ticks_1;
|
||||
gCurrentRealTimeTicks = 0;
|
||||
|
||||
ImportRides();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user