From a1fbc963a9b2786a3c20cd1cef9bdc01d12695e1 Mon Sep 17 00:00:00 2001 From: Guillaume Dupuy Date: Mon, 10 Apr 2017 01:56:44 +0200 Subject: [PATCH] Avoid rollover in _RyzomDay for low values --HG-- branch : save_deposit_state_v2 --- .../time_weather_season/time_and_season.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/code/ryzom/common/src/game_share/time_weather_season/time_and_season.cpp b/code/ryzom/common/src/game_share/time_weather_season/time_and_season.cpp index a71d71be4..609938f32 100644 --- a/code/ryzom/common/src/game_share/time_weather_season/time_and_season.cpp +++ b/code/ryzom/common/src/game_share/time_weather_season/time_and_season.cpp @@ -85,13 +85,16 @@ namespace WEEKDAY void CRyzomTime::updateRyzomClock(uint32 gameCyle) { - static const uint32 ticksPerDay = (RYZOM_DAY_IN_HOUR * RYZOM_HOURS_IN_TICKS); static const float ticksPerHour = (float)RYZOM_HOURS_IN_TICKS; uint32 totalTicks = gameCyle + _TickOffset; - uint32 days = totalTicks / ticksPerDay; - uint32 dayCycle = totalTicks - (days * ticksPerDay); - days -= RYZOM_START_SPRING; + uint32 days = totalTicks / RYZOM_DAY_IN_TICKS; + uint32 dayCycle = totalTicks - (days * RYZOM_DAY_IN_TICKS); + // Avoid rollover for low amount of days + if(days >= RYZOM_START_SPRING) + days -= RYZOM_START_SPRING; + else + days = 0; float hours = (float)dayCycle / ticksPerHour; _RyzomDay = days;