From 38d3c3eff39143224d420e17fddddecb0df3404f Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Fri, 9 Mar 2018 19:16:43 +0100 Subject: [PATCH] Use tile_element_[gs]et_banner_index() --- src/openrct2/world/Map.cpp | 19 ++++++++++++++++ src/openrct2/world/Map.h | 1 + src/openrct2/world/TileInspector.cpp | 34 +++------------------------- 3 files changed, 23 insertions(+), 31 deletions(-) diff --git a/src/openrct2/world/Map.cpp b/src/openrct2/world/Map.cpp index ec8c082fcb..85e4273f47 100644 --- a/src/openrct2/world/Map.cpp +++ b/src/openrct2/world/Map.cpp @@ -3569,6 +3569,25 @@ sint32 tile_element_get_banner_index(rct_tile_element *tileElement) } } +void tile_element_set_banner_index(rct_tile_element * tileElement, sint32 bannerIndex) +{ + switch (tile_element_get_type(tileElement)) + { + case TILE_ELEMENT_TYPE_WALL: + tileElement->properties.wall.banner_index = (uint8)bannerIndex; + break; + case TILE_ELEMENT_TYPE_LARGE_SCENERY: + scenery_large_set_banner_id(tileElement, (uint8)bannerIndex); + break; + case TILE_ELEMENT_TYPE_BANNER: + tileElement->properties.banner.index = (uint8)bannerIndex; + break; + default: + log_error("Tried to set banner index on unsuitable tile element!"); + Guard::Assert(false); + } +} + void tile_element_remove_banner_entry(rct_tile_element *tileElement) { sint32 bannerIndex = tile_element_get_banner_index(tileElement); diff --git a/src/openrct2/world/Map.h b/src/openrct2/world/Map.h index 8005a6c6c3..760e98c8cb 100644 --- a/src/openrct2/world/Map.h +++ b/src/openrct2/world/Map.h @@ -521,6 +521,7 @@ void map_update_tiles(); sint32 map_get_highest_z(sint32 tileX, sint32 tileY); sint32 tile_element_get_banner_index(rct_tile_element *tileElement); +void tile_element_set_banner_index(rct_tile_element * tileElement, sint32 bannerIndex); void tile_element_remove_banner_entry(rct_tile_element *tileElement); bool tile_element_is_underground(rct_tile_element *tileElement); diff --git a/src/openrct2/world/TileInspector.cpp b/src/openrct2/world/TileInspector.cpp index 78bcdc7fb2..587e7b9eea 100644 --- a/src/openrct2/world/TileInspector.cpp +++ b/src/openrct2/world/TileInspector.cpp @@ -315,29 +315,12 @@ sint32 tile_inspector_paste_element_at(sint32 x, sint32 y, rct_tile_element elem if (flags & GAME_COMMAND_FLAG_APPLY) { // Check if the element to be pasted refers to a banner index - uint8 bannerIndex = BANNER_NULL; - const rct_scenery_entry * entry; - switch (tile_element_get_type(&element)) - { - case TILE_ELEMENT_TYPE_WALL: - entry = get_wall_entry(element.properties.wall.type); - if (entry->wall.flags & WALL_SCENERY_IS_BANNER) - bannerIndex = element.properties.wall.banner_index; - break; - case TILE_ELEMENT_TYPE_LARGE_SCENERY: - entry = get_large_scenery_entry(scenery_large_get_type(&element)); - if (entry->large_scenery.scrolling_mode != 0xFF) - bannerIndex = scenery_large_get_banner_id(&element); - break; - case TILE_ELEMENT_TYPE_BANNER: - bannerIndex = element.properties.banner.index; - break; - } + sint32 bannerIndex = tile_element_get_banner_index(&element); if (bannerIndex != BANNER_NULL) { // The element to be pasted refers to a banner index - make a copy of it - uint8 newBannerIndex = (uint8)create_new_banner(flags); + sint32 newBannerIndex = create_new_banner(flags); if (newBannerIndex == BANNER_NULL) { return MONEY32_UNDEFINED; @@ -348,18 +331,7 @@ sint32 tile_inspector_paste_element_at(sint32 x, sint32 y, rct_tile_element elem newBanner.y = y; // Use the new banner index - switch (tile_element_get_type(&element)) - { - case TILE_ELEMENT_TYPE_WALL: - element.properties.wall.banner_index = newBannerIndex; - break; - case TILE_ELEMENT_TYPE_LARGE_SCENERY: - scenery_large_set_banner_id(&element, newBannerIndex); - break; - case TILE_ELEMENT_TYPE_BANNER: - element.properties.banner.index = newBannerIndex; - break; - } + tile_element_set_banner_index(&element, newBannerIndex); // Duplicate user string if needed rct_string_id stringIdx = newBanner.string_idx;