Fix #14102: NPE in window_tile_inspector_invalidate()

This commit is contained in:
Gymnasiast 2021-03-03 10:21:49 +01:00
parent 2c3c014f14
commit e332c2a691
No known key found for this signature in database
GPG Key ID: DBFFF47AB2CA3EDD
1 changed files with 11 additions and 4 deletions

View File

@ -1625,6 +1625,16 @@ static void window_tile_inspector_invalidate(rct_window* w)
break;
case TileInspectorPage::Wall:
{
bool canBeSloped = false;
bool hasAnimation = false;
const auto sceneryEntry = tileElement->AsWall()->GetEntry();
if (sceneryEntry != nullptr)
{
const rct_wall_scenery_entry wallEntry = sceneryEntry->wall;
canBeSloped = !(wallEntry.flags & WALL_SCENERY_CANT_BUILD_ON_SLOPE);
hasAnimation = wallEntry.flags & WALL_SCENERY_IS_DOOR;
}
w->widgets[WIDX_WALL_SPINNER_HEIGHT].top = GBBT(propertiesAnchor, 0) + 3;
w->widgets[WIDX_WALL_SPINNER_HEIGHT].bottom = GBBB(propertiesAnchor, 0) - 3;
w->widgets[WIDX_WALL_SPINNER_HEIGHT_INCREASE].top = GBBT(propertiesAnchor, 0) + 4;
@ -1642,10 +1652,7 @@ static void window_tile_inspector_invalidate(rct_window* w)
w->widgets[WIDX_WALL_SPINNER_ANIMATION_FRAME_INCREASE].bottom = GBBB(propertiesAnchor, 2) - 4;
w->widgets[WIDX_WALL_SPINNER_ANIMATION_FRAME_DECREASE].top = GBBT(propertiesAnchor, 2) + 4;
w->widgets[WIDX_WALL_SPINNER_ANIMATION_FRAME_DECREASE].bottom = GBBB(propertiesAnchor, 2) - 4;
const auto wallType = tileElement->AsWall()->GetEntryIndex();
const rct_wall_scenery_entry wallEntry = get_wall_entry(wallType)->wall;
const bool canBeSloped = !(wallEntry.flags & WALL_SCENERY_CANT_BUILD_ON_SLOPE);
const bool hasAnimation = wallEntry.flags & WALL_SCENERY_IS_DOOR;
// Wall slope dropdown
WidgetSetEnabled(w, WIDX_WALL_DROPDOWN_SLOPE, canBeSloped);
widget_invalidate(w, WIDX_WALL_DROPDOWN_SLOPE);