mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-22 22:34:33 +01:00
Fix snow transitions using rain animations
This commit is contained in:
@@ -53,27 +53,28 @@ const DrawWeatherFunc DrawSnowFunctions[] = {
|
||||
*/
|
||||
void DrawWeather(DrawPixelInfo& dpi, IWeatherDrawer* weatherDrawer)
|
||||
{
|
||||
if (Config::Get().general.RenderWeatherEffects)
|
||||
if (!Config::Get().general.RenderWeatherEffects)
|
||||
return;
|
||||
|
||||
uint32_t viewFlags = 0;
|
||||
|
||||
const auto* viewport = WindowGetViewport(WindowGetMain());
|
||||
if (viewport != nullptr)
|
||||
viewFlags = viewport->flags;
|
||||
|
||||
auto weatherLevel = GetGameState().WeatherCurrent.level;
|
||||
if (weatherLevel == WeatherLevel::None || gTrackDesignSaveMode || (viewFlags & VIEWPORT_FLAG_HIGHLIGHT_PATH_ISSUES))
|
||||
return;
|
||||
|
||||
// Get weather draw function and draw weather
|
||||
auto drawFunc = DrawRainFunctions[EnumValue(weatherLevel)];
|
||||
if (ClimateIsSnowing() || ClimateTransitioningToSnow())
|
||||
{
|
||||
uint32_t viewFlags = 0;
|
||||
|
||||
const auto* viewport = WindowGetViewport(WindowGetMain());
|
||||
if (viewport != nullptr)
|
||||
viewFlags = viewport->flags;
|
||||
|
||||
// Get weather draw function and draw weather
|
||||
auto weatherLevel = GetGameState().WeatherCurrent.level;
|
||||
if (weatherLevel != WeatherLevel::None && !gTrackDesignSaveMode && !(viewFlags & VIEWPORT_FLAG_HIGHLIGHT_PATH_ISSUES))
|
||||
{
|
||||
auto drawFunc = DrawRainFunctions[EnumValue(weatherLevel)];
|
||||
if (ClimateIsSnowing())
|
||||
{
|
||||
drawFunc = DrawSnowFunctions[EnumValue(weatherLevel)];
|
||||
}
|
||||
auto uiContext = GetContext()->GetUiContext();
|
||||
uiContext->DrawWeatherAnimation(weatherDrawer, dpi, drawFunc);
|
||||
}
|
||||
drawFunc = DrawSnowFunctions[EnumValue(weatherLevel)];
|
||||
}
|
||||
|
||||
auto uiContext = GetContext()->GetUiContext();
|
||||
uiContext->DrawWeatherAnimation(weatherDrawer, dpi, drawFunc);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -256,6 +256,12 @@ bool ClimateIsSnowing()
|
||||
return weather == WeatherType::Snow || weather == WeatherType::HeavySnow || weather == WeatherType::Blizzard;
|
||||
}
|
||||
|
||||
bool ClimateTransitioningToSnow()
|
||||
{
|
||||
auto& weather = GetGameState().WeatherNext.weatherType;
|
||||
return weather == WeatherType::Snow || weather == WeatherType::HeavySnow || weather == WeatherType::Blizzard;
|
||||
}
|
||||
|
||||
bool ClimateIsSnowingHeavily()
|
||||
{
|
||||
auto& weather = GetGameState().WeatherCurrent.weatherType;
|
||||
|
||||
@@ -88,6 +88,7 @@ void ClimateForceWeather(WeatherType weather);
|
||||
enum class FilterPaletteID : int32_t;
|
||||
|
||||
bool ClimateIsRaining();
|
||||
bool ClimateTransitioningToSnow();
|
||||
bool ClimateIsSnowing();
|
||||
bool ClimateIsSnowingHeavily();
|
||||
bool WeatherIsDry(WeatherType);
|
||||
|
||||
Reference in New Issue
Block a user