1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-15 11:03:00 +01:00

Use tile_element_[gs]et_banner_index()

This commit is contained in:
Gymnasiast
2018-03-09 19:16:43 +01:00
committed by Hielke Morsink
parent 087519ca62
commit 38d3c3eff3
3 changed files with 23 additions and 31 deletions

View File

@@ -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);

View File

@@ -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);

View File

@@ -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;