From 83cdd56825f12e34050458d965f19eaecd290752 Mon Sep 17 00:00:00 2001 From: Ted John Date: Sat, 6 Jan 2018 00:52:51 +0000 Subject: [PATCH] Unify current and next climate state into common struct --- src/openrct2-ui/windows/Cheats.cpp | 4 +- src/openrct2-ui/windows/GameBottomToolbar.cpp | 8 +-- src/openrct2/Game.cpp | 2 +- src/openrct2/drawing/LightFX.cpp | 12 ++-- src/openrct2/drawing/Rain.cpp | 2 +- src/openrct2/interface/Viewport.cpp | 2 +- src/openrct2/peep/Peep.cpp | 22 +++--- src/openrct2/rct1/S4Importer.cpp | 20 +++--- src/openrct2/rct2/S6Exporter.cpp | 20 +++--- src/openrct2/rct2/S6Importer.cpp | 20 +++--- src/openrct2/ride/Ride.cpp | 2 +- src/openrct2/world/Climate.cpp | 68 ++++++++----------- src/openrct2/world/Climate.h | 27 ++++---- src/openrct2/world/Scenery.cpp | 2 +- 14 files changed, 102 insertions(+), 109 deletions(-) diff --git a/src/openrct2-ui/windows/Cheats.cpp b/src/openrct2-ui/windows/Cheats.cpp index e383b9ad2b..58dcb77332 100644 --- a/src/openrct2-ui/windows/Cheats.cpp +++ b/src/openrct2-ui/windows/Cheats.cpp @@ -621,7 +621,7 @@ static void window_cheats_misc_mousedown(rct_window *w, rct_widgetindex widgetIn dropdownWidget->right - dropdownWidget->left - 3 ); - currentWeather = gClimateCurrentWeather; + currentWeather = gClimateCurrent.Weather; dropdown_set_checked(currentWeather, true); } break; @@ -995,7 +995,7 @@ static void window_cheats_invalidate(rct_window *w) } // Current weather - window_cheats_misc_widgets[WIDX_WEATHER].text = WeatherTypes[gClimateCurrentWeather]; + window_cheats_misc_widgets[WIDX_WEATHER].text = WeatherTypes[gClimateCurrent.Weather]; } static void window_cheats_paint(rct_window *w, rct_drawpixelinfo *dpi) diff --git a/src/openrct2-ui/windows/GameBottomToolbar.cpp b/src/openrct2-ui/windows/GameBottomToolbar.cpp index 11c8998e2e..0829109c04 100644 --- a/src/openrct2-ui/windows/GameBottomToolbar.cpp +++ b/src/openrct2-ui/windows/GameBottomToolbar.cpp @@ -573,7 +573,7 @@ static void window_game_bottom_toolbar_draw_right_panel(rct_drawpixelinfo *dpi, x = w->x + window_game_bottom_toolbar_widgets[WIDX_RIGHT_OUTSET].left + 15; y += line_height + 1; - sint32 temperature = gClimateCurrentTemperature; + sint32 temperature = gClimateCurrent.Temperature; rct_string_id format = STR_CELSIUS_VALUE; if (gConfigGeneral.temperature_format == TEMPERATURE_FORMAT_F) { @@ -585,15 +585,15 @@ static void window_game_bottom_toolbar_draw_right_panel(rct_drawpixelinfo *dpi, x += 30; // Current weather - gfx_draw_sprite(dpi, ClimateWeatherData[gClimateCurrentWeather].SpriteId, x, y, 0); + gfx_draw_sprite(dpi, ClimateWeatherData[gClimateCurrent.Weather].SpriteId, x, y, 0); // Next weather - if (ClimateWeatherData[gClimateCurrentWeather].SpriteId != ClimateWeatherData[gClimateNextWeather].SpriteId) + if (ClimateWeatherData[gClimateCurrent.Weather].SpriteId != ClimateWeatherData[gClimateNext.Weather].SpriteId) { if (gClimateUpdateTimer < 960) { gfx_draw_sprite(dpi, SPR_NEXT_WEATHER, x + 27, y + 5, 0); - gfx_draw_sprite(dpi, ClimateWeatherData[gClimateNextWeather].SpriteId, x + 40, y, 0); + gfx_draw_sprite(dpi, ClimateWeatherData[gClimateNext.Weather].SpriteId, x + 40, y, 0); } } } diff --git a/src/openrct2/Game.cpp b/src/openrct2/Game.cpp index f78a091623..87b3cfc07e 100644 --- a/src/openrct2/Game.cpp +++ b/src/openrct2/Game.cpp @@ -231,7 +231,7 @@ void update_palette_effects() uint32 shade = 0; if (gConfigGeneral.render_weather_gloom) { - uint8 gloom = gClimateCurrentWeatherGloom; + uint8 gloom = gClimateCurrent.WeatherGloom; if (gloom != 0) { FILTER_PALETTE_ID weatherColour = ClimateWeatherGloomColours[gloom]; diff --git a/src/openrct2/drawing/LightFX.cpp b/src/openrct2/drawing/LightFX.cpp index 92610e2b01..186d3ebfd8 100644 --- a/src/openrct2/drawing/LightFX.cpp +++ b/src/openrct2/drawing/LightFX.cpp @@ -845,8 +845,8 @@ void lightfx_apply_palette_filter(uint8 i, uint8 *r, uint8 *g, uint8 *b) // overExpose += ((lightMax - lightAvg) / lightMax) * 0.01f; - if (gClimateCurrentTemperature > 20) { - float offset = ((float)(gClimateCurrentTemperature - 20)) * 0.04f; + if (gClimateCurrent.Temperature > 20) { + float offset = ((float)(gClimateCurrent.Temperature - 20)) * 0.04f; offset *= 1.0f - night; lightAvg /= 1.0f + offset; // overExpose += offset * 0.1f; @@ -867,11 +867,11 @@ void lightfx_apply_palette_filter(uint8 i, uint8 *r, uint8 *g, uint8 *b) natLightB *= 1.0f + overExpose; overExpose *= 255.0f; - float targetFogginess = (float)(gClimateCurrentRainLevel) / 8.0f; + float targetFogginess = (float)(gClimateCurrent.RainLevel) / 8.0f; targetFogginess += (night * night) * 0.15f; - if (gClimateCurrentTemperature < 10) { - targetFogginess += ((float)(10 - gClimateCurrentTemperature)) * 0.01f; + if (gClimateCurrent.Temperature < 10) { + targetFogginess += ((float)(10 - gClimateCurrent.Temperature)) * 0.01f; } fogginess -= (fogginess - targetFogginess) * 0.00001f; @@ -908,7 +908,7 @@ void lightfx_apply_palette_filter(uint8 i, uint8 *r, uint8 *g, uint8 *b) natLightG /= 1.0f + lightPolution; natLightB /= 1.0f + lightPolution; - reduceColourLit += (float)(gClimateCurrentRainLevel) / 2.0f; + reduceColourLit += (float)(gClimateCurrent.RainLevel) / 2.0f; reduceColourNat /= 1.0f + fogginess; reduceColourLit /= 1.0f + fogginess; diff --git a/src/openrct2/drawing/Rain.cpp b/src/openrct2/drawing/Rain.cpp index 978357b730..34aed85c5a 100644 --- a/src/openrct2/drawing/Rain.cpp +++ b/src/openrct2/drawing/Rain.cpp @@ -175,7 +175,7 @@ static void DrawRainAnimation(rct_drawpixelinfo * dpi, IRainDrawer * rainDrawer, void DrawRain(rct_drawpixelinfo * dpi, IRainDrawer * rainDrawer) { // Get rain draw function and draw rain - uint32 rainType = gClimateCurrentRainLevel; + uint32 rainType = gClimateCurrent.RainLevel; if (rainType > 0 && !gTrackDesignSaveMode) { DrawRainAnimation(dpi, rainDrawer, rainType); diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index 53faebd7a5..5076b4ceb4 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -914,7 +914,7 @@ static void viewport_paint_column(rct_drawpixelinfo * dpi, uint32 viewFlags) static void viewport_paint_weather_gloom(rct_drawpixelinfo * dpi) { - uint8 gloom = gClimateCurrentWeatherGloom; + uint8 gloom = gClimateCurrent.WeatherGloom; if (gloom != 0) { gfx_filter_rect( dpi, diff --git a/src/openrct2/peep/Peep.cpp b/src/openrct2/peep/Peep.cpp index 6fc985a8fe..87b23ec84a 100644 --- a/src/openrct2/peep/Peep.cpp +++ b/src/openrct2/peep/Peep.cpp @@ -757,7 +757,7 @@ static void peep_decide_whether_to_leave_park(rct_peep * peep) peep->energy_target -= 2; } - if (gClimateCurrentTemperature >= 21 && peep->thirst >= 5) + if (gClimateCurrent.Temperature >= 21 && peep->thirst >= 5) { peep->thirst--; } @@ -1899,7 +1899,7 @@ void peep_update_sprite_type(rct_peep * peep) peep->window_invalidate_flags |= PEEP_INVALIDATE_PEEP_INVENTORY; } - if (gClimateCurrentRainLevel != 0 && (peep->item_standard_flags & PEEP_ITEM_UMBRELLA) && peep->x != LOCATION_NULL) + if (gClimateCurrent.RainLevel != 0 && (peep->item_standard_flags & PEEP_ITEM_UMBRELLA) && peep->x != LOCATION_NULL) { sint32 x = peep->x & 0xFFE0; sint32 y = peep->y & 0xFFE0; @@ -12152,13 +12152,13 @@ static bool peep_decide_and_buy_item(rct_peep * peep, sint32 rideIndex, sint32 s if ((shopItem == SHOP_ITEM_BALLOON) || (shopItem == SHOP_ITEM_ICE_CREAM) || (shopItem == SHOP_ITEM_CANDYFLOSS) || (shopItem == SHOP_ITEM_SUNGLASSES)) { - if (gClimateCurrentRainLevel != 0) + if (gClimateCurrent.RainLevel != 0) return false; } if ((shopItem == SHOP_ITEM_SUNGLASSES) || (shopItem == SHOP_ITEM_ICE_CREAM)) { - if (gClimateCurrentTemperature < 12) + if (gClimateCurrent.Temperature < 12) return false; } @@ -12174,7 +12174,7 @@ static bool peep_decide_and_buy_item(rct_peep * peep, sint32 rideIndex, sint32 s return false; } - if ((shopItem == SHOP_ITEM_UMBRELLA) && (gClimateCurrentRainLevel != 0)) + if ((shopItem == SHOP_ITEM_UMBRELLA) && (gClimateCurrent.RainLevel != 0)) goto loc_69B119; if ((shopItem != SHOP_ITEM_MAP) && shop_item_is_souvenir(shopItem) && !has_voucher) @@ -12202,9 +12202,9 @@ loc_69B119: } } - if (gClimateCurrentTemperature >= 21) + if (gClimateCurrent.Temperature >= 21) value = get_shop_hot_value(shopItem); - else if (gClimateCurrentTemperature <= 11) + else if (gClimateCurrent.Temperature <= 11) value = get_shop_cold_value(shopItem); else value = get_shop_base_value(shopItem); @@ -12214,7 +12214,7 @@ loc_69B119: value -= price; if (shopItem == SHOP_ITEM_UMBRELLA) { - if (gClimateCurrentRainLevel != 0) + if (gClimateCurrent.RainLevel != 0) goto loc_69B221; } @@ -12259,9 +12259,9 @@ loc_69B119: loc_69B221: if (!has_voucher) { - if (gClimateCurrentTemperature >= 21) + if (gClimateCurrent.Temperature >= 21) value = get_shop_hot_value(shopItem); - else if (gClimateCurrentTemperature <= 11) + else if (gClimateCurrent.Temperature <= 11) value = get_shop_cold_value(shopItem); else value = get_shop_base_value(shopItem); @@ -13199,7 +13199,7 @@ static bool peep_should_go_on_ride(rct_peep * peep, sint32 rideIndex, sint32 ent // Peeps won't go on rides that aren't sufficiently undercover while it's raining. // The threshold is fairly low and only requires about 10-15% of the ride to be undercover. - if (gClimateCurrentRainLevel != 0 && (ride->sheltered_eighths >> 5) < 3) + if (gClimateCurrent.RainLevel != 0 && (ride->sheltered_eighths >> 5) < 3) { if (peepAtRide) { diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index f38b9ddf07..33c12ea4db 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -2169,16 +2169,16 @@ private: { gClimate = _s4.climate; gClimateUpdateTimer = _s4.climate_timer; - gClimateCurrentTemperature = _s4.temperature; - gClimateCurrentWeather = _s4.weather; - gClimateCurrentWeatherEffect = 0; - gClimateCurrentWeatherGloom = _s4.weather_gloom; - gClimateCurrentRainLevel = _s4.rain; - gClimateNextTemperature = _s4.target_temperature; - gClimateNextWeather = _s4.target_weather; - gClimateNextWeatherEffect = 0; - gClimateNextWeatherGloom = _s4.target_weather_gloom; - gClimateNextRainLevel = _s4.target_rain; + gClimateCurrent.Temperature = _s4.temperature; + gClimateCurrent.Weather = _s4.weather; + gClimateCurrent.WeatherEffect = 0; + gClimateCurrent.WeatherGloom = _s4.weather_gloom; + gClimateCurrent.RainLevel = _s4.rain; + gClimateNext.Temperature = _s4.target_temperature; + gClimateNext.Weather = _s4.target_weather; + gClimateNext.WeatherEffect = 0; + gClimateNext.WeatherGloom = _s4.target_weather_gloom; + gClimateNext.RainLevel = _s4.target_rain; } void ImportScenarioNameDetails() diff --git a/src/openrct2/rct2/S6Exporter.cpp b/src/openrct2/rct2/S6Exporter.cpp index ec6ea3d66f..01e1882181 100644 --- a/src/openrct2/rct2/S6Exporter.cpp +++ b/src/openrct2/rct2/S6Exporter.cpp @@ -371,16 +371,16 @@ void S6Exporter::Export() // byte_13CA742 // pad_013CA747 _s6.climate_update_timer = gClimateUpdateTimer; - _s6.current_weather = gClimateCurrentWeather; - _s6.next_weather = gClimateNextWeather; - _s6.temperature = gClimateCurrentTemperature; - _s6.next_temperature = gClimateNextTemperature; - _s6.current_weather_effect = gClimateCurrentWeatherEffect; - _s6.next_weather_effect = gClimateNextWeatherEffect; - _s6.current_weather_gloom = gClimateCurrentWeatherGloom; - _s6.next_weather_gloom = gClimateNextWeatherGloom; - _s6.current_rain_level = gClimateCurrentRainLevel; - _s6.next_rain_level = gClimateNextRainLevel; + _s6.current_weather = gClimateCurrent.Weather; + _s6.next_weather = gClimateNext.Weather; + _s6.temperature = gClimateCurrent.Temperature; + _s6.next_temperature = gClimateNext.Temperature; + _s6.current_weather_effect = gClimateCurrent.WeatherEffect; + _s6.next_weather_effect = gClimateNext.WeatherEffect; + _s6.current_weather_gloom = gClimateCurrent.WeatherGloom; + _s6.next_weather_gloom = gClimateNext.WeatherGloom; + _s6.current_rain_level = gClimateCurrent.RainLevel; + _s6.next_rain_level = gClimateNext.RainLevel; // News items for (size_t i = 0; i < RCT12_MAX_NEWS_ITEMS; i++) diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index 0bf4b9d23b..a1e0c5fbbe 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -405,16 +405,16 @@ public: // byte_13CA742 // pad_013CA747 gClimateUpdateTimer = _s6.climate_update_timer; - gClimateCurrentWeather = _s6.current_weather; - gClimateNextWeather = _s6.next_weather; - gClimateCurrentTemperature = _s6.temperature; - gClimateNextTemperature = _s6.next_temperature; - gClimateCurrentWeatherEffect = _s6.current_weather_effect; - gClimateNextWeatherEffect = _s6.next_weather_effect; - gClimateCurrentWeatherGloom = _s6.current_weather_gloom; - gClimateNextWeatherGloom = _s6.next_weather_gloom; - gClimateCurrentRainLevel = _s6.current_rain_level; - gClimateNextRainLevel = _s6.next_rain_level; + gClimateCurrent.Weather = _s6.current_weather; + gClimateNext.Weather = _s6.next_weather; + gClimateCurrent.Temperature = _s6.temperature; + gClimateNext.Temperature = _s6.next_temperature; + gClimateCurrent.WeatherEffect = _s6.current_weather_effect; + gClimateNext.WeatherEffect = _s6.next_weather_effect; + gClimateCurrent.WeatherGloom = _s6.current_weather_gloom; + gClimateNext.WeatherGloom = _s6.next_weather_gloom; + gClimateCurrent.RainLevel = _s6.current_rain_level; + gClimateNext.RainLevel = _s6.next_rain_level; // News items for (size_t i = 0; i < RCT12_MAX_NEWS_ITEMS; i++) diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index a8fb37e81b..e4ec273262 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -2353,7 +2353,7 @@ static sint32 ride_get_new_breakdown_problem(Ride *ride) rct_ride_entry *entry; // Brake failure is more likely when it's raining - _breakdownProblemProbabilities[BREAKDOWN_BRAKES_FAILURE] = gClimateCurrentRainLevel == 0 ? 3 : 20; + _breakdownProblemProbabilities[BREAKDOWN_BRAKES_FAILURE] = gClimateCurrent.RainLevel == 0 ? 3 : 20; entry = get_ride_entry_by_ride(ride); if (entry == nullptr || entry->flags & RIDE_ENTRY_FLAG_CANNOT_BREAK_DOWN) diff --git a/src/openrct2/world/Climate.cpp b/src/openrct2/world/Climate.cpp index 17f222e626..4a1c6a18c0 100644 --- a/src/openrct2/world/Climate.cpp +++ b/src/openrct2/world/Climate.cpp @@ -48,19 +48,11 @@ struct WeatherTransition extern const WeatherTransition * ClimateTransitions[4]; // Climate data -uint8 gClimate; -uint8 gClimateCurrentWeather; -sint8 gClimateCurrentTemperature; -uint8 gClimateCurrentWeatherEffect; -uint8 gClimateCurrentWeatherGloom; -uint8 gClimateCurrentRainLevel; -uint8 gClimateNextWeather; -sint8 gClimateNextTemperature; -uint8 gClimateNextWeatherEffect; -uint8 gClimateNextWeatherGloom; -uint8 gClimateNextRainLevel; -uint16 gClimateUpdateTimer; -uint16 gClimateLightningFlash; +uint8 gClimate; +ClimateState gClimateCurrent; +ClimateState gClimateNext; +uint16 gClimateUpdateTimer; +uint16 gClimateLightningFlash; // Sound data static sint32 _rainVolume = 1; @@ -98,11 +90,11 @@ extern "C" const WeatherState * weatherState = &ClimateWeatherData[weather]; gClimate = climate; - gClimateCurrentWeather = weather; - gClimateCurrentTemperature = transition->BaseTemperature + weatherState->TemperatureDelta; - gClimateCurrentWeatherEffect = weatherState->EffectLevel; - gClimateCurrentWeatherGloom = weatherState->GloomLevel; - gClimateCurrentRainLevel = weatherState->RainLevel; + gClimateCurrent.Weather = weather; + gClimateCurrent.Temperature = transition->BaseTemperature + weatherState->TemperatureDelta; + gClimateCurrent.WeatherEffect = weatherState->EffectLevel; + gClimateCurrent.WeatherGloom = weatherState->GloomLevel; + gClimateCurrent.RainLevel = weatherState->RainLevel; _lightningTimer = 0; _thunderTimer = 0; @@ -136,34 +128,34 @@ extern "C" } else if (!(gCurrentTicks & 0x7F)) { - if (gClimateCurrentTemperature == gClimateNextTemperature) + if (gClimateCurrent.Temperature == gClimateNext.Temperature) { - if (gClimateCurrentWeatherGloom == gClimateNextWeatherGloom) + if (gClimateCurrent.WeatherGloom == gClimateNext.WeatherGloom) { - gClimateCurrentWeatherEffect = gClimateNextWeatherEffect; + gClimateCurrent.WeatherEffect = gClimateNext.WeatherEffect; _thunderTimer = 0; _lightningTimer = 0; - if (gClimateCurrentRainLevel == gClimateNextRainLevel) + if (gClimateCurrent.RainLevel == gClimateNext.RainLevel) { - gClimateCurrentWeather = gClimateNextWeather; + gClimateCurrent.Weather = gClimateNext.Weather; climate_determine_future_weather(scenario_rand()); gToolbarDirtyFlags |= BTM_TB_DIRTY_FLAG_CLIMATE; } - else if (gClimateNextRainLevel <= 2) + else if (gClimateNext.RainLevel <= 2) { - gClimateCurrentRainLevel = climate_step_weather_level(gClimateCurrentRainLevel, gClimateNextRainLevel); + gClimateCurrent.RainLevel = climate_step_weather_level(gClimateCurrent.RainLevel, gClimateNext.RainLevel); } } else { - gClimateCurrentWeatherGloom = climate_step_weather_level(gClimateCurrentWeatherGloom, gClimateNextWeatherGloom); + gClimateCurrent.WeatherGloom = climate_step_weather_level(gClimateCurrent.WeatherGloom, gClimateNext.WeatherGloom); gfx_invalidate_screen(); } } else { - gClimateCurrentTemperature = climate_step_weather_level(gClimateCurrentTemperature, gClimateNextTemperature); + gClimateCurrent.Temperature = climate_step_weather_level(gClimateCurrent.Temperature, gClimateNext.Temperature); gToolbarDirtyFlags |= BTM_TB_DIRTY_FLAG_CLIMATE; } } @@ -175,7 +167,7 @@ extern "C" climate_update_lightning(); climate_update_thunder(); } - else if (gClimateCurrentWeatherEffect == 2) + else if (gClimateCurrent.WeatherEffect == 2) { // Create new thunder and lightning uint32 randomNumber = util_rand(); @@ -191,10 +183,10 @@ extern "C" void climate_force_weather(uint8 weather) { const auto weatherState = &ClimateWeatherData[weather]; - gClimateCurrentWeather = weather; - gClimateCurrentWeatherGloom = weatherState->GloomLevel; - gClimateCurrentRainLevel = weatherState->RainLevel; - gClimateCurrentWeatherEffect = weatherState->EffectLevel; + gClimateCurrent.Weather = weather; + gClimateCurrent.WeatherGloom = weatherState->GloomLevel; + gClimateCurrent.RainLevel = weatherState->RainLevel; + gClimateCurrent.WeatherEffect = weatherState->EffectLevel; gClimateUpdateTimer = 1920; climate_update(); @@ -241,20 +233,20 @@ static void climate_determine_future_weather(sint32 randomDistribution) // Generate a random variable with values 0 up to DistributionSize-1 and chose weather from the distribution table accordingly const WeatherTransition * transition = &ClimateTransitions[gClimate][month]; sint8 nextWeather = transition->Distribution[((randomDistribution & 0xFF) * transition->DistributionSize) >> 8]; - gClimateNextWeather = nextWeather; + gClimateNext.Weather = nextWeather; const auto nextWeatherState = &ClimateWeatherData[nextWeather]; - gClimateNextTemperature = transition->BaseTemperature + nextWeatherState->TemperatureDelta; - gClimateNextWeatherEffect = nextWeatherState->EffectLevel; - gClimateNextWeatherGloom = nextWeatherState->GloomLevel; - gClimateNextRainLevel = nextWeatherState->RainLevel; + gClimateNext.Temperature = transition->BaseTemperature + nextWeatherState->TemperatureDelta; + gClimateNext.WeatherEffect = nextWeatherState->EffectLevel; + gClimateNext.WeatherGloom = nextWeatherState->GloomLevel; + gClimateNext.RainLevel = nextWeatherState->RainLevel; gClimateUpdateTimer = 1920; } static void climate_update_rain_sound() { - if (gClimateCurrentWeatherEffect == 1 || gClimateCurrentWeatherEffect == 2) + if (gClimateCurrent.WeatherEffect == 1 || gClimateCurrent.WeatherEffect == 2) { // Start playing the rain sound if (gRainSoundChannel == nullptr) diff --git a/src/openrct2/world/Climate.h b/src/openrct2/world/Climate.h index df113e15c5..21d4bbfb33 100644 --- a/src/openrct2/world/Climate.h +++ b/src/openrct2/world/Climate.h @@ -47,23 +47,24 @@ typedef struct WeatherState uint32 SpriteId; } WeatherState; +typedef struct ClimateState +{ + uint8 Weather; + sint8 Temperature; + uint8 WeatherEffect; + uint8 WeatherGloom; + uint8 RainLevel; +} ClimateState; + #ifdef __cplusplus extern "C" { #endif - extern uint8 gClimate; - extern uint8 gClimateCurrentWeather; - extern sint8 gClimateCurrentTemperature; - extern uint8 gClimateCurrentWeatherEffect; - extern uint8 gClimateCurrentWeatherGloom; - extern uint8 gClimateCurrentRainLevel; - extern uint8 gClimateNextWeather; - extern sint8 gClimateNextTemperature; - extern uint8 gClimateNextWeatherEffect; - extern uint8 gClimateNextWeatherGloom; - extern uint8 gClimateNextRainLevel; - extern uint16 gClimateUpdateTimer; - extern uint16 gClimateLightningFlash; + extern uint8 gClimate; + extern ClimateState gClimateCurrent; + extern ClimateState gClimateNext; + extern uint16 gClimateUpdateTimer; + extern uint16 gClimateLightningFlash; extern const WeatherState ClimateWeatherData[6]; extern const FILTER_PALETTE_ID ClimateWeatherGloomColours[4]; diff --git a/src/openrct2/world/Scenery.cpp b/src/openrct2/world/Scenery.cpp index e749b63921..65191f6cbc 100644 --- a/src/openrct2/world/Scenery.cpp +++ b/src/openrct2/world/Scenery.cpp @@ -130,7 +130,7 @@ void scenery_update_age(sint32 x, sint32 y, rct_tile_element *tileElement) if ( !scenery_small_entry_has_flag(sceneryEntry, SMALL_SCENERY_FLAG_CAN_BE_WATERED) || - (gClimateCurrentWeather < WEATHER_RAIN) || + (gClimateCurrent.Weather < WEATHER_RAIN) || (tileElement->properties.scenery.age < 5) ) { scenery_increase_age(x, y, tileElement);