From 08fc36ee490de3ab0da4ea96f54acd494ed8578b Mon Sep 17 00:00:00 2001 From: IntelOrca Date: Tue, 8 Dec 2015 20:50:30 +0000 Subject: [PATCH] fix #2449: Turning off Day/Night Circle while it is night doesn't reset back to day --- distribution/changelog.txt | 1 + src/scenario.c | 33 ++++++++++++++++++--------------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index 79f45c25e7..8a608f91b3 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -2,6 +2,7 @@ ------------------------------------------------------------------------ - Fix: [#2126] Ferris Wheels set to "backward rotation" stop working (original bug) +- Fix: [#2449] Turning off Day/Night Circle while it is night doesn't reset back to day 0.0.3.1-beta (2015-12-04) ------------------------------------------------------------------------ diff --git a/src/scenario.c b/src/scenario.c index 48888e0fc5..d934abd6e4 100644 --- a/src/scenario.c +++ b/src/scenario.c @@ -610,25 +610,28 @@ static void scenario_month_update() static void scenario_update_daynight_cycle() { + float currentDayNightCycle = gDayNightCycle; gDayNightCycle = 0; - if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) != SCREEN_FLAGS_PLAYING) return; - if (!gConfigGeneral.day_night_cycle) return; - - float monthFraction = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONTH_TICKS, uint16) / (float)0x10000; - if (monthFraction < (1 / 8.0f)) { - gDayNightCycle = 0.0f; - } else if (monthFraction < (3 / 8.0f)) { - gDayNightCycle = (monthFraction - (1 / 8.0f)) / (2 / 8.0f); - } else if (monthFraction < (5 / 8.0f)) { - gDayNightCycle = 1.0f; - } else if (monthFraction < (7 / 8.0f)) { - gDayNightCycle = 1.0f - ((monthFraction - (5 / 8.0f)) / (2 / 8.0f)); - } else { - gDayNightCycle = 0.0f; + if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) == SCREEN_FLAGS_PLAYING && gConfigGeneral.day_night_cycle) { + float monthFraction = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONTH_TICKS, uint16) / (float)0x10000; + if (monthFraction < (1 / 8.0f)) { + gDayNightCycle = 0.0f; + } else if (monthFraction < (3 / 8.0f)) { + gDayNightCycle = (monthFraction - (1 / 8.0f)) / (2 / 8.0f); + } else if (monthFraction < (5 / 8.0f)) { + gDayNightCycle = 1.0f; + } else if (monthFraction < (7 / 8.0f)) { + gDayNightCycle = 1.0f - ((monthFraction - (5 / 8.0f)) / (2 / 8.0f)); + } else { + gDayNightCycle = 0.0f; + } } - platform_update_palette(RCT2_ADDRESS(RCT2_ADDRESS_PALETTE, uint8), 10, 236); + // Only update palette if day / night cycle has changed + if (gDayNightCycle != currentDayNightCycle) { + platform_update_palette(RCT2_ADDRESS(RCT2_ADDRESS_PALETTE, uint8), 10, 236); + } } /*