From 7c05e22cd0deea592ae6ed4bf9ddec353957ac79 Mon Sep 17 00:00:00 2001 From: Ted John Date: Sun, 17 Dec 2017 16:35:03 +0000 Subject: [PATCH] Refactor large scenery tile flags field --- src/openrct2/paint/tile_element/LargeScenery.cpp | 6 +++--- src/openrct2/world/Map.cpp | 2 +- src/openrct2/world/Scenery.h | 11 +++++++++-- src/openrct2/world/Wall.cpp | 2 +- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/openrct2/paint/tile_element/LargeScenery.cpp b/src/openrct2/paint/tile_element/LargeScenery.cpp index d5b2775eed..072bbe2a9e 100644 --- a/src/openrct2/paint/tile_element/LargeScenery.cpp +++ b/src/openrct2/paint/tile_element/LargeScenery.cpp @@ -39,7 +39,7 @@ static void large_scenery_paint_supports( uint32 dword_F4387C, rct_large_scenery_tile * tile) { - if (tile->var_7 & 0x20) { + if (tile->flags & LARGE_SCENERY_TILE_FLAG_NO_SUPPORTS) { return; } @@ -61,7 +61,7 @@ static void large_scenery_paint_supports( sint32 clearanceHeight = ceil2(tileElement->clearance_height * 8 + 15, 16); - if (tile->var_7 & 0x40) { + if (tile->flags & LARGE_SCENERY_TILE_FLAG_ALLOW_SUPPORTS_ABOVE) { paint_util_set_segment_support_height(session, SEGMENTS_ALL, clearanceHeight, 0x20); } else { paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0); @@ -232,7 +232,7 @@ void large_scenery_paint(paint_session * session, uint8 direction, uint16 height ah = 0x80; } ah -= 3; - uint16 edi = tile->var_7; + uint16 edi = tile->flags; sint32 esi = 16; if (edi & 0xF00) { edi &= 0xF000; diff --git a/src/openrct2/world/Map.cpp b/src/openrct2/world/Map.cpp index 2c8307b5ba..7195a893df 100644 --- a/src/openrct2/world/Map.cpp +++ b/src/openrct2/world/Map.cpp @@ -2822,7 +2822,7 @@ void game_command_place_large_scenery(sint32* eax, sint32* ebx, sint32* ecx, sin sint32 zLow = (tile->z_offset + maxHeight) / 8; sint32 zHigh = (tile->z_clearance / 8) + zLow; - sint32 bx = tile->var_7 >> 12; + sint32 bx = tile->flags >> 12; bx <<= rotation; uint8 bl = bx; uint8 bh = bl >> 4; diff --git a/src/openrct2/world/Scenery.h b/src/openrct2/world/Scenery.h index f61bed122b..312343db94 100644 --- a/src/openrct2/world/Scenery.h +++ b/src/openrct2/world/Scenery.h @@ -56,15 +56,22 @@ struct rct_large_scenery_tile { sint16 y_offset; sint16 z_offset; uint8 z_clearance; - uint16 var_7; + // CCCC WWWW 0SS0 0000 + uint16 flags; }; assert_struct_size(rct_large_scenery_tile, 9); +enum +{ + LARGE_SCENERY_TILE_FLAG_NO_SUPPORTS = 0x20, + LARGE_SCENERY_TILE_FLAG_ALLOW_SUPPORTS_ABOVE = 0x40, +}; + struct rct_large_scenery_text_glyph { uint8 image_offset; uint8 width; uint8 height; - uint8 var_3; + uint8 pad_3; }; assert_struct_size(rct_large_scenery_text_glyph, 4); diff --git a/src/openrct2/world/Wall.cpp b/src/openrct2/world/Wall.cpp index 73255989a9..bfc911dc74 100644 --- a/src/openrct2/world/Wall.cpp +++ b/src/openrct2/world/Wall.cpp @@ -222,7 +222,7 @@ static bool WallCheckObstruction(rct_scenery_entry * wall, tile = &entry->large_scenery.tiles[sequence]; { sint32 direction = ((edge - tile_element_get_direction(tileElement)) & TILE_ELEMENT_DIRECTION_MASK) + 8; - if (!(tile->var_7 & (1 << direction))) + if (!(tile->flags & (1 << direction))) { map_obstruction_set_error_text(tileElement); return false;