From 3d47f9869ff5d95757df9bf544809269cbf5b412 Mon Sep 17 00:00:00 2001 From: Ted John Date: Sun, 15 May 2016 16:07:19 +0100 Subject: [PATCH] write get entry methods for scenery and path --- src/cheats.c | 2 +- src/interface/console.c | 2 +- src/interface/viewport_interaction.c | 18 +++---- src/management/research.c | 8 ++-- src/paint/map_element/banner.c | 2 +- src/paint/map_element/entrance.c | 2 +- src/peep/peep.c | 40 ++++++++-------- src/ride/track_design.c | 10 ++-- src/ride/track_design_save.c | 6 +-- src/ride/vehicle.c | 6 +-- src/windows/banner.c | 2 +- src/windows/editor_inventions_list.c | 2 +- src/windows/footpath.c | 10 ++-- src/windows/research.c | 4 +- src/windows/scenery.c | 72 +++++++++++++--------------- src/windows/sign.c | 12 ++--- src/windows/staff.c | 2 +- src/windows/tile_inspector.c | 12 ++--- src/windows/top_toolbar.c | 18 +++---- src/world/footpath.c | 9 +++- src/world/footpath.h | 4 +- src/world/fountain.c | 2 +- src/world/map.c | 42 ++++++++-------- src/world/map_animation.c | 8 ++-- src/world/mapgen.c | 4 +- src/world/scenery.c | 36 ++++++++++++-- src/world/scenery.h | 21 +++++--- 27 files changed, 198 insertions(+), 158 deletions(-) diff --git a/src/cheats.c b/src/cheats.c index ea983c47e2..8c079ca2e7 100644 --- a/src/cheats.c +++ b/src/cheats.c @@ -124,7 +124,7 @@ static void cheat_remove_litter() if (!footpath_element_has_path_scenery(it.element)) continue; - sceneryEntry = g_pathBitSceneryEntries[footpath_element_get_path_scenery_index(it.element)]; + sceneryEntry = get_footpath_item_entry(footpath_element_get_path_scenery_index(it.element)); if(sceneryEntry->path_bit.var_06 & (1 << 0)) it.element->properties.path.addition_status = 0xFF; diff --git a/src/interface/console.c b/src/interface/console.c index 892606e548..c63029465e 100644 --- a/src/interface/console.c +++ b/src/interface/console.c @@ -852,7 +852,7 @@ static int cc_load_object(const utf8 **argv, int argc) { else if (type == OBJECT_TYPE_SCENERY_SETS) { rct_scenery_set_entry *scenerySetEntry; - scenerySetEntry = g_scenerySetEntries[entryGroupIndex]; + scenerySetEntry = get_scenery_group_entry(entryGroupIndex); research_insert(true, entryGroupIndex, RESEARCH_CATEGORY_SCENERYSET); diff --git a/src/interface/viewport_interaction.c b/src/interface/viewport_interaction.c index aa73bdd7ac..c6c0ac8cbf 100644 --- a/src/interface/viewport_interaction.c +++ b/src/interface/viewport_interaction.c @@ -242,7 +242,7 @@ int viewport_interaction_get_item_right(int x, int y, viewport_interaction_info return info->type; case VIEWPORT_INTERACTION_ITEM_WALL: - sceneryEntry = g_wallSceneryEntries[mapElement->properties.scenery.type]; + sceneryEntry = get_wall_entry(mapElement->properties.scenery.type); if (sceneryEntry->wall.var_0D != 255) { RCT2_GLOBAL(RCT2_ADDRESS_MAP_TOOLTIP_ARGS + 0, uint16) = 1163; RCT2_GLOBAL(RCT2_ADDRESS_MAP_TOOLTIP_ARGS + 2, uint16) = sceneryEntry->name; @@ -251,7 +251,7 @@ int viewport_interaction_get_item_right(int x, int y, viewport_interaction_info break; case VIEWPORT_INTERACTION_ITEM_LARGE_SCENERY: - sceneryEntry = g_largeSceneryEntries[mapElement->properties.scenerymultiple.type & 0x3FF]; + sceneryEntry = get_large_scenery_entry(mapElement->properties.scenerymultiple.type & 0x3FF); if (sceneryEntry->large_scenery.var_11 != 255) { RCT2_GLOBAL(RCT2_ADDRESS_MAP_TOOLTIP_ARGS + 0, uint16) = 1163; RCT2_GLOBAL(RCT2_ADDRESS_MAP_TOOLTIP_ARGS + 2, uint16) = sceneryEntry->name; @@ -261,7 +261,7 @@ int viewport_interaction_get_item_right(int x, int y, viewport_interaction_info case VIEWPORT_INTERACTION_ITEM_BANNER: banner = &gBanners[mapElement->properties.banner.index]; - sceneryEntry = g_bannerSceneryEntries[banner->type]; + sceneryEntry = get_banner_entry(banner->type); RCT2_GLOBAL(RCT2_ADDRESS_MAP_TOOLTIP_ARGS + 0, uint16) = 1163; RCT2_GLOBAL(RCT2_ADDRESS_MAP_TOOLTIP_ARGS + 2, uint16) = sceneryEntry->name; @@ -276,7 +276,7 @@ int viewport_interaction_get_item_right(int x, int y, viewport_interaction_info switch (info->type) { case VIEWPORT_INTERACTION_ITEM_SCENERY: - sceneryEntry = g_smallSceneryEntries[mapElement->properties.scenery.type]; + sceneryEntry = get_small_scenery_entry(mapElement->properties.scenery.type); RCT2_GLOBAL(RCT2_ADDRESS_MAP_TOOLTIP_ARGS + 0, uint16) = 1164; RCT2_GLOBAL(RCT2_ADDRESS_MAP_TOOLTIP_ARGS + 2, uint16) = sceneryEntry->name; return info->type; @@ -289,7 +289,7 @@ int viewport_interaction_get_item_right(int x, int y, viewport_interaction_info return info->type; case VIEWPORT_INTERACTION_ITEM_FOOTPATH_ITEM: - sceneryEntry = g_pathBitSceneryEntries[footpath_element_get_path_scenery_index(mapElement)]; + sceneryEntry = get_footpath_item_entry(footpath_element_get_path_scenery_index(mapElement)); RCT2_GLOBAL(RCT2_ADDRESS_MAP_TOOLTIP_ARGS + 0, uint16) = 1164; if (mapElement->flags & 0x20) { RCT2_GLOBAL(RCT2_ADDRESS_MAP_TOOLTIP_ARGS + 2, uint16) = 3124; @@ -311,13 +311,13 @@ int viewport_interaction_get_item_right(int x, int y, viewport_interaction_info return info->type; case VIEWPORT_INTERACTION_ITEM_WALL: - sceneryEntry = g_wallSceneryEntries[mapElement->properties.scenery.type]; + sceneryEntry = get_wall_entry(mapElement->properties.scenery.type); RCT2_GLOBAL(RCT2_ADDRESS_MAP_TOOLTIP_ARGS + 0, uint16) = 1164; RCT2_GLOBAL(RCT2_ADDRESS_MAP_TOOLTIP_ARGS + 2, uint16) = sceneryEntry->name; return info->type; case VIEWPORT_INTERACTION_ITEM_LARGE_SCENERY: - sceneryEntry = g_largeSceneryEntries[mapElement->properties.scenery.type & 0x3FF]; + sceneryEntry = get_large_scenery_entry(mapElement->properties.scenery.type & 0x3FF); RCT2_GLOBAL(RCT2_ADDRESS_MAP_TOOLTIP_ARGS + 0, uint16) = 1164; RCT2_GLOBAL(RCT2_ADDRESS_MAP_TOOLTIP_ARGS + 2, uint16) = sceneryEntry->name; return info->type; @@ -477,7 +477,7 @@ void viewport_interaction_remove_park_entrance(rct_map_element *mapElement, int */ static void viewport_interaction_remove_park_wall(rct_map_element *mapElement, int x, int y) { - rct_scenery_entry* sceneryEntry = g_wallSceneryEntries[mapElement->properties.fence.type]; + rct_scenery_entry *sceneryEntry = get_wall_entry(mapElement->properties.fence.type); if (sceneryEntry->wall.var_0D != 0xFF){ window_sign_small_open(mapElement->properties.fence.item[0]); } else { @@ -500,7 +500,7 @@ static void viewport_interaction_remove_park_wall(rct_map_element *mapElement, i */ static void viewport_interaction_remove_large_scenery(rct_map_element *mapElement, int x, int y) { - rct_scenery_entry* sceneryEntry = g_largeSceneryEntries[mapElement->properties.scenerymultiple.type & MAP_ELEMENT_LARGE_TYPE_MASK]; + rct_scenery_entry *sceneryEntry = get_large_scenery_entry(mapElement->properties.scenerymultiple.type & MAP_ELEMENT_LARGE_TYPE_MASK); if (sceneryEntry->large_scenery.var_11 != 0xFF){ int id = (mapElement->type & 0xC0) | diff --git a/src/management/research.c b/src/management/research.c index dde99376d1..21d0b5e5d1 100644 --- a/src/management/research.c +++ b/src/management/research.c @@ -221,7 +221,7 @@ void research_finish_item(sint32 entryIndex) research_invalidate_related_windows(); } else { // Scenery - scenerySetEntry = g_scenerySetEntries[entryIndex & 0xFFFF]; + scenerySetEntry = get_scenery_group_entry(entryIndex & 0xFFFF); for (i = 0; i < scenerySetEntry->entry_count; i++) { subSceneryEntryIndex = scenerySetEntry->scenery_entries[i]; gResearchedSceneryItems[subSceneryEntryIndex >> 5] |= 1UL << (subSceneryEntryIndex & 0x1F); @@ -330,7 +330,7 @@ void sub_684AC3(){ } for (int i = 0; i < 19; ++i){ - rct_scenery_set_entry* scenery_set = g_scenerySetEntries[i]; + rct_scenery_set_entry* scenery_set = get_scenery_group_entry(i); if ((int)scenery_set == -1)continue; for (int j = 0; j < scenery_set->entry_count; ++j){ @@ -505,7 +505,7 @@ void research_populate_list_random() // Scenery for (int i = 0; i < 19; i++) { - scenerySetEntry = g_scenerySetEntries[i]; + scenerySetEntry = get_scenery_group_entry(i); if (scenerySetEntry == (rct_scenery_set_entry*)-1) continue; @@ -535,7 +535,7 @@ void research_populate_list_researched() // Scenery for (int i = 0; i < 19; i++) { - scenerySetEntry = g_scenerySetEntries[i]; + scenerySetEntry = get_scenery_group_entry(i); if (scenerySetEntry == (rct_scenery_set_entry*)-1) continue; diff --git a/src/paint/map_element/banner.c b/src/paint/map_element/banner.c index 4224e2bc2d..9d20ff49ab 100644 --- a/src/paint/map_element/banner.c +++ b/src/paint/map_element/banner.c @@ -38,7 +38,7 @@ void banner_paint(uint8 direction, int height, rct_map_element* map_element) height -= 16; - rct_scenery_entry* banner_scenery = g_bannerSceneryEntries[gBanners[map_element->properties.banner.index].type]; + rct_scenery_entry* banner_scenery = get_banner_entry(gBanners[map_element->properties.banner.index].type); direction += map_element->properties.banner.position; direction &= 3; diff --git a/src/paint/map_element/entrance.c b/src/paint/map_element/entrance.c index 70bb96919a..aa5dacc809 100644 --- a/src/paint/map_element/entrance.c +++ b/src/paint/map_element/entrance.c @@ -186,7 +186,7 @@ void park_entrance_paint(uint8 direction, int height, rct_map_element* map_eleme RCT2_GLOBAL(0x009E32BC, uint32) = ghost_id; } - rct_path_type* path_entry = g_pathTypeEntries[map_element->properties.entrance.path_type]; + rct_path_type* path_entry = get_footpath_entry(map_element->properties.entrance.path_type); // Index to which part of the entrance // Middle, left, right diff --git a/src/peep/peep.c b/src/peep/peep.c index f536601eb1..88d9ee4b26 100644 --- a/src/peep/peep.c +++ b/src/peep/peep.c @@ -220,7 +220,7 @@ static uint8 peep_assess_surroundings(sint16 center_x, sint16 center_y, sint16 c if (!footpath_element_has_path_scenery(mapElement)) break; - scenery = g_pathBitSceneryEntries[footpath_element_get_path_scenery_index(mapElement)]; + scenery = get_footpath_item_entry(footpath_element_get_path_scenery_index(mapElement)); if (footpath_element_path_scenery_is_ghost(mapElement)) break; @@ -617,7 +617,7 @@ static void sub_68F41A(rct_peep *peep, int index) // Check if the footpath has ghost path scenery on it if (footpath_element_has_path_scenery(mapElement) && footpath_element_path_scenery_is_ghost(mapElement)){ uint8 pathSceneryIndex = footpath_element_get_path_scenery_index(mapElement); - rct_scenery_entry *sceneryEntry = g_pathBitSceneryEntries[pathSceneryIndex]; + rct_scenery_entry *sceneryEntry = get_footpath_item_entry(pathSceneryIndex); if (sceneryEntry->path_bit.var_06 & (1 << 8)){ found = 1; } @@ -4193,7 +4193,7 @@ static void peep_update_watering(rct_peep* peep){ if (abs(((int)peep->next_z) - map_element->base_height) > 4) continue; - rct_scenery_entry* scenery_entry = g_smallSceneryEntries[map_element->properties.scenery.type]; + rct_scenery_entry* scenery_entry = get_small_scenery_entry(map_element->properties.scenery.type); if (!(scenery_entry->small_scenery.flags & SMALL_SCENERY_FLAG_CAN_BE_WATERED)) continue; @@ -4260,7 +4260,7 @@ static void peep_update_emptying_bin(rct_peep* peep){ return; } - rct_scenery_entry* scenery_entry = g_pathBitSceneryEntries[footpath_element_get_path_scenery_index(map_element)]; + rct_scenery_entry* scenery_entry = get_footpath_item_entry(footpath_element_get_path_scenery_index(map_element)); if ( !(scenery_entry->path_bit.var_06 & 1) || map_element->flags & (1 << 5) @@ -4520,7 +4520,7 @@ static int peep_update_walking_find_bench(rct_peep* peep){ } if (!footpath_element_has_path_scenery(map_element)) return 0; - rct_scenery_entry* sceneryEntry = g_pathBitSceneryEntries[footpath_element_get_path_scenery_index(map_element)]; + rct_scenery_entry* sceneryEntry = get_footpath_item_entry(footpath_element_get_path_scenery_index(map_element)); if (!(sceneryEntry->path_bit.var_06 & 0x2))return 0; @@ -4595,7 +4595,7 @@ static int peep_update_walking_find_bin(rct_peep* peep){ } if (!footpath_element_has_path_scenery(map_element)) return 0; - rct_scenery_entry* sceneryEntry = g_pathBitSceneryEntries[footpath_element_get_path_scenery_index(map_element)]; + rct_scenery_entry* sceneryEntry = get_footpath_item_entry(footpath_element_get_path_scenery_index(map_element)); if (!(sceneryEntry->path_bit.var_06 & 0x1))return 0; @@ -4676,7 +4676,7 @@ static void peep_update_walking_break_scenery(rct_peep* peep){ } if (!footpath_element_has_path_scenery(map_element)) return; - rct_scenery_entry* sceneryEntry = g_pathBitSceneryEntries[footpath_element_get_path_scenery_index(map_element)]; + rct_scenery_entry* sceneryEntry = get_footpath_item_entry(footpath_element_get_path_scenery_index(map_element)); if (!(sceneryEntry->path_bit.var_06 & 0x4))return; @@ -4848,7 +4848,7 @@ static void peep_update_using_bin(rct_peep* peep){ return; } - rct_scenery_entry* sceneryEntry = g_pathBitSceneryEntries[footpath_element_get_path_scenery_index(map_element)]; + rct_scenery_entry* sceneryEntry = get_footpath_item_entry(footpath_element_get_path_scenery_index(map_element)); if (!(sceneryEntry->path_bit.var_06 & 1)){ peep_state_reset(peep); return; @@ -5188,7 +5188,7 @@ static int peep_update_patrolling_find_watering(rct_peep* peep){ continue; } - rct_scenery_entry* sceneryEntry = g_smallSceneryEntries[map_element->properties.scenery.type]; + rct_scenery_entry* sceneryEntry = get_small_scenery_entry(map_element->properties.scenery.type); if (!(sceneryEntry->small_scenery.flags & SMALL_SCENERY_FLAG_CAN_BE_WATERED)){ continue; @@ -5244,7 +5244,7 @@ static int peep_update_patrolling_find_bin(rct_peep* peep){ } if (!footpath_element_has_path_scenery(map_element)) return 0; - rct_scenery_entry* sceneryEntry = g_pathBitSceneryEntries[footpath_element_get_path_scenery_index(map_element)]; + rct_scenery_entry* sceneryEntry = get_footpath_item_entry(footpath_element_get_path_scenery_index(map_element)); if (!(sceneryEntry->path_bit.var_06 & 1)) return 0; @@ -5548,7 +5548,7 @@ static void peep_update_walking(rct_peep* peep){ if (footpath_element_has_path_scenery(map_element)) { if (!footpath_element_path_scenery_is_ghost(map_element)) { - rct_scenery_entry* sceneryEntry = g_pathBitSceneryEntries[footpath_element_get_path_scenery_index(map_element)]; + rct_scenery_entry* sceneryEntry = get_footpath_item_entry(footpath_element_get_path_scenery_index(map_element)); if (!(sceneryEntry->path_bit.var_06 & 0x2)) ebp = 9; } @@ -9309,7 +9309,7 @@ static bool peep_find_ride_to_look_at(rct_peep *peep, uint8 edge, uint8 *rideToV do { if (map_element_get_type(mapElement) != MAP_ELEMENT_TYPE_FENCE) continue; if (map_element_get_direction(mapElement) != edge) continue; - if (g_wallSceneryEntries[mapElement->properties.fence.type]->wall.flags2 & WALL_SCENERY_FLAG4) continue; + if (get_wall_entry(mapElement->properties.fence.type)->wall.flags2 & WALL_SCENERY_FLAG4) continue; if (peep->next_z + 4 <= mapElement->base_height) continue; if (peep->next_z + 1 >= mapElement->clearance_height) continue; @@ -9330,7 +9330,7 @@ static bool peep_find_ride_to_look_at(rct_peep *peep, uint8 edge, uint8 *rideToV do { if (map_element_get_type(mapElement) != MAP_ELEMENT_TYPE_FENCE) continue; if ((map_element_get_direction(mapElement) ^ 0x2) != edge) continue; - if (g_wallSceneryEntries[mapElement->properties.fence.type]->wall.flags2 & WALL_SCENERY_FLAG4) continue; + if (get_wall_entry(mapElement->properties.fence.type)->wall.flags2 & WALL_SCENERY_FLAG4) continue; // TODO: Check whether this shouldn't be <=, as the other loops use. If so, also extract as loop A. if (peep->next_z + 4 >= mapElement->base_height) continue; if (peep->next_z + 1 >= mapElement->clearance_height) continue; @@ -9352,7 +9352,7 @@ static bool peep_find_ride_to_look_at(rct_peep *peep, uint8 edge, uint8 *rideToV } if (map_element_get_type(mapElement) == MAP_ELEMENT_TYPE_SCENERY_MULTIPLE) { - if (!(g_largeSceneryEntries[mapElement->properties.scenerymultiple.type & 0x3FF]->large_scenery.flags & 0x10)) { + if (!(get_large_scenery_entry(mapElement->properties.scenerymultiple.type & 0x3FF)->large_scenery.flags & 0x10)) { continue; } @@ -9377,7 +9377,7 @@ static bool peep_find_ride_to_look_at(rct_peep *peep, uint8 edge, uint8 *rideToV if (map_element_get_type(mapElement) == MAP_ELEMENT_TYPE_PATH) continue; if (map_element_get_type(mapElement) == MAP_ELEMENT_TYPE_FENCE) { - if (g_wallSceneryEntries[mapElement->properties.fence.type]->wall.flags2 & WALL_SCENERY_FLAG4) { + if (get_wall_entry(mapElement->properties.fence.type)->wall.flags2 & WALL_SCENERY_FLAG4) { continue; } } @@ -9400,7 +9400,7 @@ static bool peep_find_ride_to_look_at(rct_peep *peep, uint8 edge, uint8 *rideToV do { if (map_element_get_type(mapElement) != MAP_ELEMENT_TYPE_FENCE) continue; if ((map_element_get_direction(mapElement) ^ 0x2) != edge) continue; - if (g_wallSceneryEntries[mapElement->properties.fence.type]->wall.flags2 & WALL_SCENERY_FLAG4) continue; + if (get_wall_entry(mapElement->properties.fence.type)->wall.flags2 & WALL_SCENERY_FLAG4) continue; if (peep->next_z + 6 <= mapElement->base_height) continue; if (peep->next_z >= mapElement->clearance_height) continue; @@ -9421,7 +9421,7 @@ static bool peep_find_ride_to_look_at(rct_peep *peep, uint8 edge, uint8 *rideToV } if (map_element_get_type(mapElement) == MAP_ELEMENT_TYPE_SCENERY_MULTIPLE) { - if (!(g_largeSceneryEntries[mapElement->properties.scenerymultiple.type & 0x3FF]->large_scenery.flags & 0x10)) { + if (!(get_large_scenery_entry(mapElement->properties.scenerymultiple.type & 0x3FF)->large_scenery.flags & 0x10)) { continue; } @@ -9446,7 +9446,7 @@ static bool peep_find_ride_to_look_at(rct_peep *peep, uint8 edge, uint8 *rideToV if (map_element_get_type(mapElement) == MAP_ELEMENT_TYPE_PATH) continue; if (map_element_get_type(mapElement) == MAP_ELEMENT_TYPE_FENCE) { - if (g_wallSceneryEntries[mapElement->properties.fence.type]->wall.flags2 & WALL_SCENERY_FLAG4) { + if (get_wall_entry(mapElement->properties.fence.type)->wall.flags2 & WALL_SCENERY_FLAG4) { continue; } } @@ -9468,7 +9468,7 @@ static bool peep_find_ride_to_look_at(rct_peep *peep, uint8 edge, uint8 *rideToV do { if (map_element_get_type(mapElement) != MAP_ELEMENT_TYPE_FENCE) continue; if ((map_element_get_direction(mapElement) ^ 0x2) != edge) continue; - if (g_wallSceneryEntries[mapElement->properties.fence.type]->wall.flags2 & WALL_SCENERY_FLAG4) continue; + if (get_wall_entry(mapElement->properties.fence.type)->wall.flags2 & WALL_SCENERY_FLAG4) continue; if (peep->next_z + 8 <= mapElement->base_height) continue; if (peep->next_z >= mapElement->clearance_height) continue; @@ -9489,7 +9489,7 @@ static bool peep_find_ride_to_look_at(rct_peep *peep, uint8 edge, uint8 *rideToV } if (map_element_get_type(mapElement) == MAP_ELEMENT_TYPE_SCENERY_MULTIPLE) { - if (!(g_largeSceneryEntries[mapElement->properties.scenerymultiple.type & 0x3FF]->large_scenery.flags & 0x10)) { + if (!(get_large_scenery_entry(mapElement->properties.scenerymultiple.type & 0x3FF)->large_scenery.flags & 0x10)) { continue; } diff --git a/src/ride/track_design.c b/src/ride/track_design.c index dd26692e94..435dc90a1d 100644 --- a/src/ride/track_design.c +++ b/src/ride/track_design.c @@ -605,9 +605,9 @@ int track_design_place_scenery(rct_td6_scenery_element *scenery_start, uint8 rid } entry_index = 0; - for (rct_path_type *path = g_pathTypeEntries[0]; + for (rct_path_type *path = get_footpath_entry(0); entry_index < object_entry_group_counts[OBJECT_TYPE_PATHS]; - path = g_pathTypeEntries[entry_index], entry_index++ + path = get_footpath_entry(entry_index), entry_index++ ) { if (path == (rct_path_type*)-1) { continue; @@ -634,7 +634,7 @@ int track_design_place_scenery(rct_td6_scenery_element *scenery_start, uint8 rid uint8 bh = rotation | (quadrant << 6) | MAP_ELEMENT_TYPE_SCENERY; - rct_scenery_entry* small_scenery = g_smallSceneryEntries[entry_index]; + rct_scenery_entry* small_scenery = get_small_scenery_entry(entry_index); if (!(small_scenery->small_scenery.flags & SMALL_SCENERY_FLAG_FULL_TILE) && (small_scenery->small_scenery.flags & SMALL_SCENERY_FLAG9)){ bh = bh; @@ -710,9 +710,9 @@ int track_design_place_scenery(rct_td6_scenery_element *scenery_start, uint8 rid } entry_index = 0; - for (rct_path_type* path = g_pathTypeEntries[0]; + for (rct_path_type* path = get_footpath_entry(0); entry_index < object_entry_group_counts[OBJECT_TYPE_PATHS]; - path = g_pathTypeEntries[entry_index], entry_index++){ + path = get_footpath_entry(entry_index), entry_index++){ if (path == (rct_path_type*)-1) continue; diff --git a/src/ride/track_design_save.c b/src/ride/track_design_save.c index 89e2415f6f..ac64ba6152 100644 --- a/src/ride/track_design_save.c +++ b/src/ride/track_design_save.c @@ -233,7 +233,7 @@ static int map_element_get_total_element_count(rct_map_element *mapElement) return 1; case MAP_ELEMENT_TYPE_SCENERY_MULTIPLE: - sceneryEntry = g_largeSceneryEntries[mapElement->properties.scenerymultiple.type & 0x3FF]; + sceneryEntry = get_large_scenery_entry(mapElement->properties.scenerymultiple.type & 0x3FF); tile = sceneryEntry->large_scenery.tiles; elementCount = 0; do { @@ -325,7 +325,7 @@ static void track_design_save_add_large_scenery(int x, int y, rct_map_element *m int entryType = mapElement->properties.scenerymultiple.type & 0x3FF; rct_object_entry *entry = (rct_object_entry*)&object_entry_groups[OBJECT_TYPE_LARGE_SCENERY].entries[entryType]; - sceneryTiles = g_largeSceneryEntries[entryType]->large_scenery.tiles; + sceneryTiles = get_large_scenery_entry(entryType)->large_scenery.tiles; z = mapElement->base_height; direction = mapElement->type & 3; @@ -508,7 +508,7 @@ static void track_design_save_remove_large_scenery(int x, int y, rct_map_element int entryType = mapElement->properties.scenerymultiple.type & 0x3FF; rct_object_entry *entry = (rct_object_entry*)&object_entry_groups[OBJECT_TYPE_LARGE_SCENERY].entries[entryType]; - sceneryTiles = g_largeSceneryEntries[entryType]->large_scenery.tiles; + sceneryTiles = get_large_scenery_entry(entryType)->large_scenery.tiles; z = mapElement->base_height; direction = mapElement->type & 3; diff --git a/src/ride/vehicle.c b/src/ride/vehicle.c index f67bba93cf..e4ddb0afd2 100644 --- a/src/ride/vehicle.c +++ b/src/ride/vehicle.c @@ -1080,7 +1080,7 @@ static void vehicle_update_measurements(rct_vehicle *vehicle) if (map_element_get_type(map_element) != MAP_ELEMENT_TYPE_SCENERY) continue; - rct_scenery_entry* scenery = g_smallSceneryEntries[map_element->properties.scenery.type]; + rct_scenery_entry* scenery = get_small_scenery_entry(map_element->properties.scenery.type); if (scenery->small_scenery.flags & SMALL_SCENERY_FLAG_FULL_TILE) { cover_found = true; break; @@ -6229,7 +6229,7 @@ static void sub_6D63D4(rct_vehicle *vehicle) */ static void vehicle_play_scenery_door_open_sound(rct_vehicle *vehicle, rct_map_element *mapElement) { - rct_scenery_entry *wallEntry = g_wallSceneryEntries[mapElement->properties.fence.type]; + rct_scenery_entry *wallEntry = get_wall_entry(mapElement->properties.fence.type); int doorSoundType = (wallEntry->wall.flags2 >> 1) & 3; if (doorSoundType != 0) { int soundId = DoorOpenSoundIds[doorSoundType - 1]; @@ -6245,7 +6245,7 @@ static void vehicle_play_scenery_door_open_sound(rct_vehicle *vehicle, rct_map_e */ static void vehicle_play_scenery_door_close_sound(rct_vehicle *vehicle, rct_map_element *mapElement) { - rct_scenery_entry *wallEntry = g_wallSceneryEntries[mapElement->properties.fence.type]; + rct_scenery_entry *wallEntry = get_wall_entry(mapElement->properties.fence.type); int doorSoundType = (wallEntry->wall.flags2 >> 1) & 3; if (doorSoundType != 0) { int soundId = DoorCloseSoundIds[doorSoundType - 1]; diff --git a/src/windows/banner.c b/src/windows/banner.c index 53c7b57fd5..41a85781d5 100644 --- a/src/windows/banner.c +++ b/src/windows/banner.c @@ -290,7 +290,7 @@ static void window_banner_invalidate(rct_window *w) colour_btn->type = WWT_EMPTY; //sceneray item not sure why we use this instead of banner? - rct_scenery_entry* sceneryEntry = g_bannerSceneryEntries[banner->type]; + rct_scenery_entry* sceneryEntry = get_banner_entry(banner->type); if (sceneryEntry->banner.flags & 1) colour_btn->type = WWT_COLOURBTN; diff --git a/src/windows/editor_inventions_list.c b/src/windows/editor_inventions_list.c index 0dac4d825a..4a75319f76 100644 --- a/src/windows/editor_inventions_list.c +++ b/src/windows/editor_inventions_list.c @@ -306,7 +306,7 @@ static rct_string_id research_item_get_name(uint32 researchItem) rct_scenery_set_entry *sceneryEntry; if (researchItem < 0x10000) { - sceneryEntry = g_scenerySetEntries[researchItem & 0xFF]; + sceneryEntry = get_scenery_group_entry(researchItem & 0xFF); if (sceneryEntry == NULL || sceneryEntry == (rct_scenery_set_entry*)0xFFFFFFFF) return 0; diff --git a/src/windows/footpath.c b/src/windows/footpath.c index 2bb19766ac..c5a935c4a2 100644 --- a/src/windows/footpath.c +++ b/src/windows/footpath.c @@ -206,7 +206,7 @@ void window_footpath_open() // If a restricted path was selected when the game is no longer in Sandbox mode, reset it pathId = gFootpathSelectedId; - pathType = g_pathTypeEntries[pathId]; + pathType = get_footpath_entry(pathId); if((pathType->flags & 4) && !gCheatsSandboxMode) { gFootpathSelectedId = 0; } @@ -346,7 +346,7 @@ static void window_footpath_dropdown(rct_window *w, int widgetIndex, int dropdow j = 0; for (i = 0; i < 16; i++) { - pathType = g_pathTypeEntries[i]; + pathType = get_footpath_entry(i); if (pathType == (rct_path_type*)-1) continue; if (pathType->flags & flags) @@ -516,7 +516,7 @@ static void window_footpath_invalidate(rct_window *w) // Set footpath and queue type button images selectedPath = gFootpathSelectedId; - pathType = g_pathTypeEntries[selectedPath]; + pathType = get_footpath_entry(selectedPath); int pathImage = 71 + pathType->image; window_footpath_widgets[WIDX_FOOTPATH_TYPE].image = pathImage; @@ -555,7 +555,7 @@ static void window_footpath_paint(rct_window *w, rct_drawpixelinfo *dpi) image = RCT2_ADDRESS(0x0098D7E0, uint8)[image]; selectedPath = gFootpathSelectedId; - pathType = g_pathTypeEntries[selectedPath]; + pathType = get_footpath_entry(selectedPath); image += pathType->image; if (gFootpathSelectedType != SELECTED_PATH_TYPE_NORMAL) image += 51; @@ -595,7 +595,7 @@ static void window_footpath_show_footpath_types_dialog(rct_window *w, rct_widget flags = 0; for (i = 0; i < 16; i++) { - pathType = g_pathTypeEntries[i]; + pathType = get_footpath_entry(i); if (pathType == (rct_path_type*)-1) continue; if (pathType->flags & flags) diff --git a/src/windows/research.c b/src/windows/research.c index 4028496244..13a7c2e399 100644 --- a/src/windows/research.c +++ b/src/windows/research.c @@ -351,7 +351,7 @@ void window_research_development_page_paint(rct_window *w, rct_drawpixelinfo *dp rideEntry->name : ((typeId >> 8) & 0xFF) + 2; } else { - stringId = g_scenerySetEntries[typeId]->name; + stringId = get_scenery_group_entry(typeId)->name; } } } @@ -391,7 +391,7 @@ void window_research_development_page_paint(rct_window *w, rct_drawpixelinfo *dp lastDevelopmentFormat = STR_RESEARCH_RIDE_LABEL; } else { - stringId = g_scenerySetEntries[typeId]->name; + stringId = get_scenery_group_entry(typeId)->name; lastDevelopmentFormat = STR_RESEARCH_SCENERY_LABEL; } gfx_draw_string_left_wrapped(dpi, &stringId, x, y, 266, lastDevelopmentFormat, 0); diff --git a/src/windows/scenery.c b/src/windows/scenery.c index 1c5cf3c3cb..f89661e59f 100644 --- a/src/windows/scenery.c +++ b/src/windows/scenery.c @@ -236,7 +236,7 @@ void init_scenery() if (scenerySetIndex == 0x13) continue; - rct_scenery_set_entry* scenerySetEntry = g_scenerySetEntries[scenerySetIndex]; + rct_scenery_set_entry* scenerySetEntry = get_scenery_group_entry(scenerySetIndex); if ((uint32)scenerySetEntry == 0xFFFFFFFF) continue; @@ -257,10 +257,10 @@ void init_scenery() // small scenery for (uint16 sceneryId = 0; sceneryId < 0xFC; sceneryId++) { - if ((uint32)g_smallSceneryEntries[sceneryId] == 0xFFFFFFFF) + if ((uint32)get_small_scenery_entry(sceneryId) == 0xFFFFFFFF) continue; - rct_scenery_entry* sceneryEntry = g_smallSceneryEntries[sceneryId]; + rct_scenery_entry* sceneryEntry = get_small_scenery_entry(sceneryId); init_scenery_entry(sceneryEntry, sceneryId, sceneryEntry->small_scenery.scenery_tab_id); } @@ -268,10 +268,10 @@ void init_scenery() for (int sceneryId = 0x300; sceneryId < 0x380; sceneryId++) { int largeSceneryIndex = sceneryId - 0x300; - if ((uint32)g_largeSceneryEntries[largeSceneryIndex] == 0xFFFFFFFF) + if ((uint32)get_large_scenery_entry(largeSceneryIndex) == 0xFFFFFFFF) continue; - rct_scenery_entry* sceneryEntry = g_largeSceneryEntries[largeSceneryIndex]; + rct_scenery_entry* sceneryEntry = get_large_scenery_entry(largeSceneryIndex); init_scenery_entry(sceneryEntry, sceneryId, sceneryEntry->large_scenery.scenery_tab_id); } @@ -279,10 +279,10 @@ void init_scenery() for (int sceneryId = 0x200; sceneryId < 0x280; sceneryId++) { int wallSceneryIndex = sceneryId - 0x200; - if ((uint32)g_wallSceneryEntries[wallSceneryIndex] == 0xFFFFFFFF) + if ((uint32)get_wall_entry(wallSceneryIndex) == 0xFFFFFFFF) continue; - rct_scenery_entry* sceneryEntry = g_wallSceneryEntries[wallSceneryIndex]; + rct_scenery_entry* sceneryEntry = get_wall_entry(wallSceneryIndex); init_scenery_entry(sceneryEntry, sceneryId, sceneryEntry->wall.scenery_tab_id); } @@ -290,10 +290,10 @@ void init_scenery() for (int sceneryId = 0x400; sceneryId < 0x420; sceneryId++) { int bannerIndex = sceneryId - 0x400; - if ((uint32)g_bannerSceneryEntries[bannerIndex] == 0xFFFFFFFF) + if ((uint32)get_banner_entry(bannerIndex) == 0xFFFFFFFF) continue; - rct_scenery_entry* sceneryEntry = g_bannerSceneryEntries[bannerIndex]; + rct_scenery_entry* sceneryEntry = get_banner_entry(bannerIndex); init_scenery_entry(sceneryEntry, sceneryId, sceneryEntry->banner.scenery_tab_id); } @@ -301,10 +301,10 @@ void init_scenery() for (int sceneryId = 0x100; sceneryId < 0x10F; sceneryId++) { int pathBitIndex = sceneryId - 0x100; - if ((uint32)g_pathBitSceneryEntries[pathBitIndex] == 0xFFFFFFFF) + if ((uint32)get_footpath_item_entry(pathBitIndex) == 0xFFFFFFFF) continue; - rct_scenery_entry* sceneryEntry = g_pathBitSceneryEntries[pathBitIndex]; + rct_scenery_entry* sceneryEntry = get_footpath_item_entry(pathBitIndex); init_scenery_entry(sceneryEntry, sceneryId, sceneryEntry->path_bit.scenery_tab_id); } @@ -316,7 +316,7 @@ void init_scenery() int usedValues = 0; for (int scenerySetId = 0; scenerySetId < 19; scenerySetId++) { - rct_scenery_set_entry* sceneryEntry = g_scenerySetEntries[scenerySetId]; + rct_scenery_set_entry* sceneryEntry = get_scenery_group_entry(scenerySetId); if ((uint32)sceneryEntry == 0xFFFFFFFF) continue; @@ -368,7 +368,7 @@ void init_scenery() if (tabIndex >= 19) continue; - tabWidget->image = g_scenerySetEntries[tabIndex]->image | 0x20000000; + tabWidget->image = get_scenery_group_entry(tabIndex)->image | 0x20000000; } window_invalidate_by_class(WC_SCENERY); @@ -786,17 +786,13 @@ static void window_scenery_update(rct_window *w) if (tabSelectedSceneryId >= 0x400) { // banner gCurrentToolId = 0x18; } else if (tabSelectedSceneryId >= 0x300) { // large scenery - gCurrentToolId = - g_largeSceneryEntries[tabSelectedSceneryId - 0x300]->large_scenery.tool_id; + gCurrentToolId = get_large_scenery_entry(tabSelectedSceneryId - 0x300)->large_scenery.tool_id; } else if (tabSelectedSceneryId >= 0x200) { // wall - gCurrentToolId = - g_wallSceneryEntries[tabSelectedSceneryId - 0x200]->wall.tool_id; + gCurrentToolId = get_wall_entry(tabSelectedSceneryId - 0x200)->wall.tool_id; } else if (tabSelectedSceneryId >= 0x100) { // path bit - gCurrentToolId = - g_pathBitSceneryEntries[tabSelectedSceneryId - 0x100]->path_bit.tool_id; + gCurrentToolId = get_footpath_item_entry(tabSelectedSceneryId - 0x100)->path_bit.tool_id; } else { // small scenery - gCurrentToolId = - g_smallSceneryEntries[tabSelectedSceneryId]->small_scenery.tool_id; + gCurrentToolId = get_small_scenery_entry(tabSelectedSceneryId)->small_scenery.tool_id; } } } @@ -892,7 +888,7 @@ void window_scenery_tooltip(rct_window* w, int widgetIndex, rct_string_id *strin case WIDX_SCENERY_TAB_17: case WIDX_SCENERY_TAB_18: case WIDX_SCENERY_TAB_19: - RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, uint16) = g_scenerySetEntries[widgetIndex - WIDX_SCENERY_TAB_1]->name; + RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, uint16) = get_scenery_group_entry(widgetIndex - WIDX_SCENERY_TAB_1)->name; break; case WIDX_SCENERY_TAB_20: RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, uint16) = 1813; @@ -911,7 +907,7 @@ void window_scenery_invalidate(rct_window *w) uint16 tabIndex = window_scenery_active_tab_index; uint32 titleStringId = 1813; if (tabIndex < 19) - titleStringId = g_scenerySetEntries[tabIndex]->name; + titleStringId = get_scenery_group_entry(tabIndex)->name; window_scenery_widgets[WIDX_SCENERY_TITLE].image = titleStringId; @@ -932,7 +928,7 @@ void window_scenery_invalidate(rct_window *w) if (!(window_scenery_is_repaint_scenery_tool_on & 1)) window_scenery_widgets[WIDX_SCENERY_BUILD_CLUSTER_BUTTON].type = WWT_FLATBTN; - rct_scenery_entry* sceneryEntry = g_smallSceneryEntries[tabSelectedSceneryId]; + rct_scenery_entry* sceneryEntry = get_small_scenery_entry(tabSelectedSceneryId); if (sceneryEntry->small_scenery.flags & SMALL_SCENERY_FLAG4) { window_scenery_widgets[WIDX_SCENERY_ROTATE_OBJECTS_BUTTON].type = WWT_FLATBTN; } @@ -962,19 +958,19 @@ void window_scenery_invalidate(rct_window *w) rct_scenery_entry* sceneryEntry = NULL; if (tabSelectedSceneryId >= 0x400) { - sceneryEntry = g_bannerSceneryEntries[tabSelectedSceneryId - 0x400]; + sceneryEntry = get_banner_entry(tabSelectedSceneryId - 0x400); if (sceneryEntry->banner.flags & 1) window_scenery_widgets[WIDX_SCENERY_PRIMARY_COLOUR_BUTTON].type = WWT_COLOURBTN; } else if (tabSelectedSceneryId >= 0x300) { - sceneryEntry = g_largeSceneryEntries[tabSelectedSceneryId - 0x300]; + sceneryEntry = get_large_scenery_entry(tabSelectedSceneryId - 0x300); if (sceneryEntry->large_scenery.flags & 1) window_scenery_widgets[WIDX_SCENERY_PRIMARY_COLOUR_BUTTON].type = WWT_COLOURBTN; if (sceneryEntry->large_scenery.flags & 2) window_scenery_widgets[WIDX_SCENERY_SECONDARY_COLOUR_BUTTON].type = WWT_COLOURBTN; } else if (tabSelectedSceneryId >= 0x200) { - sceneryEntry = g_wallSceneryEntries[tabSelectedSceneryId - 0x200]; + sceneryEntry = get_wall_entry(tabSelectedSceneryId - 0x200); if (sceneryEntry->wall.flags & (WALL_SCENERY_FLAG1 | WALL_SCENERY_FLAG2)) { window_scenery_widgets[WIDX_SCENERY_PRIMARY_COLOUR_BUTTON].type = WWT_COLOURBTN; @@ -988,7 +984,7 @@ void window_scenery_invalidate(rct_window *w) } } } else if (tabSelectedSceneryId < 0x100) { - sceneryEntry = g_smallSceneryEntries[tabSelectedSceneryId]; + sceneryEntry = get_small_scenery_entry(tabSelectedSceneryId); if (sceneryEntry->small_scenery.flags & (SMALL_SCENERY_FLAG_HAS_PRIMARY_COLOUR | SMALL_SCENERY_FLAG10)) { window_scenery_widgets[WIDX_SCENERY_PRIMARY_COLOUR_BUTTON].type = WWT_COLOURBTN; @@ -1056,19 +1052,19 @@ void window_scenery_paint(rct_window *w, rct_drawpixelinfo *dpi) rct_scenery_entry* sceneryEntry = NULL; if (selectedSceneryEntryId >= 0x400) { - sceneryEntry = g_bannerSceneryEntries[selectedSceneryEntryId - 0x400]; + sceneryEntry = get_banner_entry(selectedSceneryEntryId - 0x400); price = sceneryEntry->banner.price; } else if (selectedSceneryEntryId >= 0x300) { - sceneryEntry = g_largeSceneryEntries[selectedSceneryEntryId - 0x300]; + sceneryEntry = get_large_scenery_entry(selectedSceneryEntryId - 0x300); price = sceneryEntry->large_scenery.price * 10; } else if (selectedSceneryEntryId >= 0x200) { - sceneryEntry = g_wallSceneryEntries[selectedSceneryEntryId - 0x200]; + sceneryEntry = get_wall_entry(selectedSceneryEntryId - 0x200); price = sceneryEntry->wall.price; } else if (selectedSceneryEntryId >= 0x100) { - sceneryEntry = g_pathBitSceneryEntries[selectedSceneryEntryId - 0x100]; + sceneryEntry = get_footpath_item_entry(selectedSceneryEntryId - 0x100); price = sceneryEntry->path_bit.price; } else { - sceneryEntry = g_smallSceneryEntries[selectedSceneryEntryId]; + sceneryEntry = get_small_scenery_entry(selectedSceneryEntryId); price = sceneryEntry->small_scenery.price * 10; } @@ -1125,21 +1121,21 @@ void window_scenery_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrol rct_scenery_entry* sceneryEntry; if (currentSceneryGlobalId >= 0x400) { - sceneryEntry = g_bannerSceneryEntries[currentSceneryGlobalId - 0x400]; + sceneryEntry = get_banner_entry(currentSceneryGlobalId - 0x400); uint32 imageId = sceneryEntry->image + window_scenery_rotation * 2; imageId |= (window_scenery_primary_colour << 19) | 0x20000000; gfx_draw_sprite(dpi, imageId, left + 0x21, top + 0x28, w->colours[1]); gfx_draw_sprite(dpi, imageId + 1, left + 0x21, top + 0x28, w->colours[1]); } else if (currentSceneryGlobalId >= 0x300) { - sceneryEntry = g_largeSceneryEntries[currentSceneryGlobalId - 0x300]; + sceneryEntry = get_large_scenery_entry(currentSceneryGlobalId - 0x300); uint32 imageId = sceneryEntry->image + window_scenery_rotation; imageId |= (window_scenery_primary_colour << 19) | 0x20000000; imageId |= (window_scenery_secondary_colour << 24) | 0x80000000; gfx_draw_sprite(dpi, imageId, left + 0x21, top, w->colours[1]); } else if (currentSceneryGlobalId >= 0x200) { - sceneryEntry = g_wallSceneryEntries[currentSceneryGlobalId - 0x200]; + sceneryEntry = get_wall_entry(currentSceneryGlobalId - 0x200); rct_drawpixelinfo clipdpi; if (clip_drawpixelinfo(&clipdpi, dpi, left + 1, top + 1, 64, 78)) { uint32 imageId = sceneryEntry->image; @@ -1180,12 +1176,12 @@ void window_scenery_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrol } } } else if (currentSceneryGlobalId >= 0x100) { - sceneryEntry = g_pathBitSceneryEntries[currentSceneryGlobalId - 0x100]; + sceneryEntry = get_footpath_item_entry(currentSceneryGlobalId - 0x100); uint32 imageId = sceneryEntry->image; gfx_draw_sprite(dpi, imageId, left + 0x0B, top + 0x10, w->colours[1]); } else { - sceneryEntry = g_smallSceneryEntries[currentSceneryGlobalId]; + sceneryEntry = get_small_scenery_entry(currentSceneryGlobalId); rct_drawpixelinfo clipdpi; if (clip_drawpixelinfo(&clipdpi, dpi, left + 1, top + 1, SCENERY_BUTTON_WIDTH - 2, SCENERY_BUTTON_HEIGHT - 2)) { uint32 imageId = sceneryEntry->image + window_scenery_rotation; diff --git a/src/windows/sign.c b/src/windows/sign.c index 5ce3d4f7d4..f7c8892caa 100644 --- a/src/windows/sign.c +++ b/src/windows/sign.c @@ -168,7 +168,7 @@ void window_sign_open(rct_windownumber number) while (1){ if (map_element_get_type(map_element) == MAP_ELEMENT_TYPE_SCENERY_MULTIPLE) { - rct_scenery_entry* scenery_entry = g_largeSceneryEntries[map_element->properties.scenerymultiple.type & MAP_ELEMENT_LARGE_TYPE_MASK]; + rct_scenery_entry* scenery_entry = get_large_scenery_entry(map_element->properties.scenerymultiple.type & MAP_ELEMENT_LARGE_TYPE_MASK); if (scenery_entry->large_scenery.var_11 != 0xFF){ int id = (map_element->type & 0xC0) | ((map_element->properties.scenerymultiple.colour[0] & 0xE0) >> 2) | @@ -231,7 +231,7 @@ static void window_sign_mouseup(rct_window *w, int widgetIndex) case WIDX_SIGN_DEMOLISH: while (1){ if (map_element_get_type(map_element) == MAP_ELEMENT_TYPE_SCENERY_MULTIPLE) { - rct_scenery_entry* scenery_entry = g_largeSceneryEntries[map_element->properties.scenerymultiple.type & MAP_ELEMENT_LARGE_TYPE_MASK]; + rct_scenery_entry* scenery_entry = get_large_scenery_entry(map_element->properties.scenerymultiple.type & MAP_ELEMENT_LARGE_TYPE_MASK); if (scenery_entry->large_scenery.var_11 != 0xFF){ int id = (map_element->type & 0xC0) | ((map_element->properties.scenerymultiple.colour[0] & 0xE0) >> 2) | @@ -330,7 +330,7 @@ static void window_sign_invalidate(rct_window *w) rct_widget* main_colour_btn = &window_sign_widgets[WIDX_MAIN_COLOUR]; rct_widget* text_colour_btn = &window_sign_widgets[WIDX_TEXT_COLOUR]; - rct_scenery_entry* scenery_entry = g_largeSceneryEntries[w->var_48C]; + rct_scenery_entry* scenery_entry = get_large_scenery_entry(w->var_48C); main_colour_btn->type = WWT_EMPTY; text_colour_btn->type = WWT_EMPTY; @@ -435,7 +435,7 @@ void window_sign_small_open(rct_windownumber number){ while (1){ if (map_element_get_type(map_element) == MAP_ELEMENT_TYPE_FENCE) { - rct_scenery_entry* scenery_entry = g_wallSceneryEntries[map_element->properties.fence.type]; + rct_scenery_entry* scenery_entry = get_wall_entry(map_element->properties.fence.type); if (scenery_entry->wall.var_0D != 0xFF){ if (map_element->properties.fence.item[0] == w->number) break; @@ -497,7 +497,7 @@ static void window_sign_small_mouseup(rct_window *w, int widgetIndex) case WIDX_SIGN_DEMOLISH: while (1){ if (map_element_get_type(map_element) == MAP_ELEMENT_TYPE_FENCE) { - rct_scenery_entry* scenery_entry = g_wallSceneryEntries[map_element->properties.fence.type]; + rct_scenery_entry* scenery_entry = get_wall_entry(map_element->properties.fence.type); if (scenery_entry->wall.var_0D != 0xFF){ if (map_element->properties.fence.item[0] == w->number) break; @@ -565,7 +565,7 @@ static void window_sign_small_invalidate(rct_window *w) rct_widget* main_colour_btn = &window_sign_widgets[WIDX_MAIN_COLOUR]; rct_widget* text_colour_btn = &window_sign_widgets[WIDX_TEXT_COLOUR]; - rct_scenery_entry* scenery_entry = g_wallSceneryEntries[w->var_48C]; + rct_scenery_entry* scenery_entry = get_wall_entry(w->var_48C); main_colour_btn->type = WWT_EMPTY; text_colour_btn->type = WWT_EMPTY; diff --git a/src/windows/staff.c b/src/windows/staff.c index a2591db387..3e0aac5f9e 100644 --- a/src/windows/staff.c +++ b/src/windows/staff.c @@ -1334,7 +1334,7 @@ void window_staff_options_mousedown(int widgetIndex, rct_window* w, rct_widget* int ebx = 0; for (int i = 0; i < 19; i++) { if (window_scenery_tab_entries[i][0] != -1) { - rct_scenery_set_entry* scenery_entry = g_scenerySetEntries[i]; + rct_scenery_set_entry* scenery_entry = get_scenery_group_entry(i); ebx |= scenery_entry->var_10A; } } diff --git a/src/windows/tile_inspector.c b/src/windows/tile_inspector.c index 96053e9553..5e5c31aa00 100644 --- a/src/windows/tile_inspector.c +++ b/src/windows/tile_inspector.c @@ -602,17 +602,17 @@ static void window_tile_inspector_scrollpaint(rct_window *w, rct_drawpixelinfo * if (footpath_element_is_queue(element)) { sprintf( buffer, "Queue (%s)%s%s for (%d)", - language_get_string(g_pathSceneryEntries[pathType]->name), // Path name + language_get_string(get_footpath_entry(pathType)->string_idx), // Path name pathHasScenery ? " with " : "", // Adds " with " when there is something on the path - pathHasScenery ? language_get_string(g_pathBitSceneryEntries[pathAdditionType]->name) : "", // Path addition name + pathHasScenery ? language_get_string(get_footpath_item_entry(pathAdditionType)->name) : "", // Path addition name element->properties.path.ride_index // Ride index for queue ); } else { sprintf( buffer, "Path (%s)%s%s", - language_get_string(g_pathSceneryEntries[pathType]->name), // Path name + language_get_string(get_footpath_item_entry(pathType)->name), // Path name pathHasScenery ? " with " : "", // Adds " with " when there is something on the path - pathHasScenery ? language_get_string(g_pathBitSceneryEntries[pathAdditionType]->name) : "" // Path addition name + pathHasScenery ? language_get_string(get_footpath_item_entry(pathAdditionType)->name) : "" // Path addition name ); } } @@ -630,7 +630,7 @@ static void window_tile_inspector_scrollpaint(rct_window *w, rct_drawpixelinfo * sprintf( buffer, "Scenery (%s)", - language_get_string(g_smallSceneryEntries[element->properties.scenery.type]->name) + language_get_string(get_small_scenery_entry(element->properties.scenery.type)->name) ); type_name = buffer; break; @@ -646,7 +646,7 @@ static void window_tile_inspector_scrollpaint(rct_window *w, rct_drawpixelinfo * sprintf( buffer, "Fence (%s)", - language_get_string(g_wallSceneryEntries[element->properties.scenery.type]->name) + language_get_string(get_wall_entry(element->properties.scenery.type)->name) ); type_name = buffer; break; diff --git a/src/windows/top_toolbar.c b/src/windows/top_toolbar.c index 6ad6f2d436..71771ce732 100644 --- a/src/windows/top_toolbar.c +++ b/src/windows/top_toolbar.c @@ -906,7 +906,7 @@ static void repaint_scenery_tool_down(sint16 x, sint16 y, sint16 widgetIndex){ switch (type){ case VIEWPORT_INTERACTION_ITEM_SCENERY: { - rct_scenery_entry* scenery_entry = g_smallSceneryEntries[map_element->properties.scenery.type]; + rct_scenery_entry* scenery_entry = get_small_scenery_entry(map_element->properties.scenery.type); // If can't repaint if (!(scenery_entry->small_scenery.flags & @@ -927,7 +927,7 @@ static void repaint_scenery_tool_down(sint16 x, sint16 y, sint16 widgetIndex){ } case VIEWPORT_INTERACTION_ITEM_WALL: { - rct_scenery_entry* scenery_entry = g_wallSceneryEntries[map_element->properties.fence.type]; + rct_scenery_entry* scenery_entry = get_wall_entry(map_element->properties.fence.type); // If can't repaint if (!(scenery_entry->wall.flags & @@ -948,7 +948,7 @@ static void repaint_scenery_tool_down(sint16 x, sint16 y, sint16 widgetIndex){ } case VIEWPORT_INTERACTION_ITEM_LARGE_SCENERY: { - rct_scenery_entry* scenery_entry = g_largeSceneryEntries[map_element->properties.scenerymultiple.type & MAP_ELEMENT_LARGE_TYPE_MASK]; + rct_scenery_entry* scenery_entry = get_large_scenery_entry(map_element->properties.scenerymultiple.type & MAP_ELEMENT_LARGE_TYPE_MASK); // If can't repaint if (!(scenery_entry->large_scenery.flags & @@ -969,7 +969,7 @@ static void repaint_scenery_tool_down(sint16 x, sint16 y, sint16 widgetIndex){ case VIEWPORT_INTERACTION_ITEM_BANNER: { rct_banner* banner = &gBanners[map_element->properties.banner.index]; - rct_scenery_entry* scenery_entry = g_bannerSceneryEntries[banner->type]; + rct_scenery_entry* scenery_entry = get_banner_entry(banner->type); // If can't repaint if (!(scenery_entry->banner.flags & @@ -1016,7 +1016,7 @@ void sub_6E1F34(sint16 x, sint16 y, uint16 selected_scenery, sint16* grid_x, sin uint8 type = 0; if (scenery_type == 0){ - rct_scenery_entry* scenery_entry = g_smallSceneryEntries[selected_scenery]; + rct_scenery_entry* scenery_entry = get_small_scenery_entry(selected_scenery); if (scenery_entry->small_scenery.flags & SMALL_SCENERY_FLAG18){ type = 1; @@ -1084,7 +1084,7 @@ void sub_6E1F34(sint16 x, sint16 y, uint16 selected_scenery, sint16* grid_x, sin case 0: { // Small scenery - rct_scenery_entry* scenery = g_smallSceneryEntries[selected_scenery]; + rct_scenery_entry* scenery = get_small_scenery_entry(selected_scenery); if (!(scenery->small_scenery.flags & SMALL_SCENERY_FLAG_FULL_TILE)){ uint8 cl = 0; @@ -1463,7 +1463,7 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window *w int successfulPlacements = 0; for (int q = 0; q < quantity; q++) { int zCoordinate = RCT2_GLOBAL(RCT2_ADDRESS_SCENERY_Z_COORDINATE, sint16); - rct_scenery_entry* scenery = g_smallSceneryEntries[(parameter_1 >> 8) & 0xFF]; + rct_scenery_entry* scenery = get_small_scenery_entry((parameter_1 >> 8) & 0xFF); sint16 cur_grid_x = gridX; sint16 cur_grid_y = gridY; @@ -2304,7 +2304,7 @@ void top_toolbar_tool_update_scenery(sint16 x, sint16 y){ gMapSelectPositionB.x = mapTile.x; gMapSelectPositionB.y = mapTile.y; - scenery = g_smallSceneryEntries[selected_scenery]; + scenery = get_small_scenery_entry(selected_scenery); gMapSelectType = MAP_SELECT_TYPE_FULL; if (!(scenery->small_scenery.flags & SMALL_SCENERY_FLAG_FULL_TILE)){ @@ -2426,7 +2426,7 @@ void top_toolbar_tool_update_scenery(sint16 x, sint16 y){ RCT2_GLOBAL(RCT2_ADDRESS_SCENERY_COST, money32) = cost; break; case 3: - scenery = g_largeSceneryEntries[selected_scenery]; + scenery = get_large_scenery_entry(selected_scenery); rct_xy16* selectedTile = gMapSelectionTiles; for (rct_large_scenery_tile* tile = scenery->large_scenery.tiles; tile->x_offset != (sint16)0xFFFF; tile++){ diff --git a/src/world/footpath.c b/src/world/footpath.c index e1a64bad3f..d89fe17175 100644 --- a/src/world/footpath.c +++ b/src/world/footpath.c @@ -221,7 +221,7 @@ static money32 footpath_element_update(int x, int y, rct_map_element *mapElement } if (pathItemType != 0) { - rct_scenery_entry* scenery_entry = g_pathBitSceneryEntries[pathItemType - 1]; + rct_scenery_entry* scenery_entry = get_footpath_item_entry(pathItemType - 1); uint16 unk6 = scenery_entry->path_bit.var_06; if ((unk6 & 0x80) && (mapElement->properties.path.type & 4)) { @@ -276,7 +276,7 @@ static money32 footpath_element_update(int x, int y, rct_map_element *mapElement footpath_element_set_path_scenery(mapElement, pathItemType); mapElement->flags &= ~MAP_ELEMENT_FLAG_BROKEN; if (pathItemType != 0) { - rct_scenery_entry* scenery_entry = g_pathBitSceneryEntries[pathItemType - 1]; + rct_scenery_entry* scenery_entry = get_footpath_item_entry(pathItemType - 1); uint16 unk6 = scenery_entry->path_bit.var_06; if (unk6 & 1) mapElement->properties.path.addition_status = 255; @@ -2022,3 +2022,8 @@ void footpath_remove_edges_at(int x, int y, rct_map_element *mapElement) if (map_element_get_type(mapElement) == MAP_ELEMENT_TYPE_PATH) mapElement->properties.path.edges = 0; } + +rct_path_type *get_footpath_entry(int entryIndex) +{ + return gFootpathEntries[entryIndex]; +} diff --git a/src/world/footpath.h b/src/world/footpath.h index 40274050fb..6ce8200f9b 100644 --- a/src/world/footpath.h +++ b/src/world/footpath.h @@ -42,7 +42,7 @@ enum { FOOTPATH_SEARCH_TOO_COMPLEX }; -#define g_pathTypeEntries ((rct_path_type**)object_entry_groups[OBJECT_TYPE_PATHS].chunks) +#define gFootpathEntries ((rct_path_type**)object_entry_groups[OBJECT_TYPE_PATHS].chunks) extern uint8 gFootpathProvisionalFlags; extern rct_xyz16 gFootpathProvisionalPosition; @@ -90,4 +90,6 @@ bool footpath_element_path_scenery_is_ghost(rct_map_element *mapElement); void footpath_scenery_set_is_ghost(rct_map_element *mapElement, bool isGhost); void footpath_remove_edges_at(int x, int y, rct_map_element *mapElement); +rct_path_type *get_footpath_entry(int entryIndex); + #endif diff --git a/src/world/fountain.c b/src/world/fountain.c index 271228f2df..2e83a88e68 100644 --- a/src/world/fountain.c +++ b/src/world/fountain.c @@ -301,7 +301,7 @@ static bool is_jumping_fountain(int type, int x, int y, int z) continue; uint8 additionIndex = footpath_element_get_path_scenery_index(mapElement); - rct_scenery_entry *sceneryEntry = g_pathBitSceneryEntries[additionIndex]; + rct_scenery_entry *sceneryEntry = get_footpath_item_entry(additionIndex); if (!(sceneryEntry->path_bit.var_06 & pathBitFlagMask)) continue; diff --git a/src/world/map.c b/src/world/map.c index b1689ceda6..f3838364a5 100644 --- a/src/world/map.c +++ b/src/world/map.c @@ -734,7 +734,7 @@ void game_command_remove_scenery(int* eax, int* ebx, int* ecx, int* edx, int* es uint8 flags = *ebx & 0xFF; money32 cost; - rct_scenery_entry *entry = g_smallSceneryEntries[scenery_type]; + rct_scenery_entry *entry = get_small_scenery_entry(scenery_type); if (entry == (rct_scenery_entry *)0xFFFFFFFF) { log_warning("Invalid game command for scenery removal, scenery_type = %u", scenery_type); @@ -868,7 +868,7 @@ void game_command_remove_large_scenery(int* eax, int* ebx, int* ecx, int* edx, i map_element_remove_banner_entry(map_element); - rct_scenery_entry* scenery_entry = g_largeSceneryEntries[map_element->properties.scenerymultiple.type & 0x3FF]; + rct_scenery_entry* scenery_entry = get_large_scenery_entry(map_element->properties.scenerymultiple.type & 0x3FF); rct_xyz16 firstTile = { .x = scenery_entry->large_scenery.tiles[tileIndex].x_offset, .y = scenery_entry->large_scenery.tiles[tileIndex].y_offset, @@ -996,7 +996,7 @@ void game_command_remove_banner(int* eax, int* ebx, int* ecx, int* edx, int* esi } rct_banner *banner = &gBanners[map_element->properties.banner.index]; - rct_scenery_entry *scenery_entry = g_bannerSceneryEntries[banner->type]; + rct_scenery_entry *scenery_entry = get_banner_entry(banner->type); if (flags & GAME_COMMAND_FLAG_APPLY) { if (RCT2_GLOBAL(0x009A8C28, uint8) == 1 && !(*ebx & GAME_COMMAND_FLAG_GHOST)) { @@ -1112,7 +1112,7 @@ void game_command_set_fence_colour(int* eax, int* ebx, int* ecx, int* edx, int* } if(flags & GAME_COMMAND_FLAG_APPLY){ - rct_scenery_entry* scenery_entry = g_wallSceneryEntries[map_element->properties.fence.type]; + rct_scenery_entry* scenery_entry = get_wall_entry(map_element->properties.fence.type); map_element->properties.fence.item[1] &= 0xE0; map_element->properties.fence.item[1] |= colour1; map_element->properties.fence.item[1] &= 0x1F; @@ -1161,7 +1161,7 @@ void game_command_set_large_scenery_colour(int* eax, int* ebx, int* ecx, int* ed return; } - rct_scenery_entry *scenery_entry = g_largeSceneryEntries[map_element->properties.scenerymultiple.type & 0x3FF]; + rct_scenery_entry *scenery_entry = get_large_scenery_entry(map_element->properties.scenerymultiple.type & 0x3FF); // Work out the base tile coordinates (Tile with index 0) rct_xyz16 baseTile = { @@ -1681,7 +1681,7 @@ static money32 map_set_land_height(int flags, int x, int y, int height, int styl continue; if (height + 4 < mapElement->base_height) continue; - rct_scenery_entry *sceneryEntry = g_smallSceneryEntries[mapElement->properties.scenery.type]; //sceneryEntry = eax + rct_scenery_entry *sceneryEntry = get_small_scenery_entry(mapElement->properties.scenery.type); if (sceneryEntry->small_scenery.height > 64 && gParkFlags & PARK_FLAGS_FORBID_TREE_REMOVAL) { map_obstruction_set_error_text(mapElement); @@ -2840,7 +2840,7 @@ int map_place_scenery_clear_func(rct_map_element** map_element, int x, int y, ui if (!(flags & GAME_COMMAND_FLAG_7)) return 1; - rct_scenery_entry* scenery = g_smallSceneryEntries[(*map_element)->properties.scenery.type]; + rct_scenery_entry* scenery = get_small_scenery_entry((*map_element)->properties.scenery.type); if (gParkFlags & PARK_FLAGS_FORBID_TREE_REMOVAL) { if (scenery->small_scenery.height > 64) @@ -2872,7 +2872,7 @@ int map_place_non_scenery_clear_func(rct_map_element** map_element, int x, int y if (map_element_get_type(*map_element) != MAP_ELEMENT_TYPE_SCENERY) return 1; - rct_scenery_entry* scenery = g_smallSceneryEntries[(*map_element)->properties.scenery.type]; + rct_scenery_entry* scenery = get_small_scenery_entry((*map_element)->properties.scenery.type); if (gParkFlags & PARK_FLAGS_FORBID_TREE_REMOVAL) { if (scenery->small_scenery.height > 64) @@ -3241,7 +3241,7 @@ static bool map_place_fence_check_obstruction(rct_scenery_entry *wall, int x, in case MAP_ELEMENT_TYPE_SCENERY_MULTIPLE: entryType = mapElement->properties.scenerymultiple.type & 0x3FF; sequence = mapElement->properties.scenerymultiple.type >> 10; - entry = g_largeSceneryEntries[entryType]; + entry = get_large_scenery_entry(entryType); tile = &entry->large_scenery.tiles[sequence]; int direction = ((edge - mapElement->type) & 3) + 8; @@ -3252,7 +3252,7 @@ static bool map_place_fence_check_obstruction(rct_scenery_entry *wall, int x, in break; case MAP_ELEMENT_TYPE_SCENERY: entryType = mapElement->properties.scenery.type; - entry = g_smallSceneryEntries[entryType]; + entry = get_small_scenery_entry(entryType); if (entry->small_scenery.flags & SMALL_SCENERY_FLAG_ALLOW_WALLS) { map_obstruction_set_error_text(mapElement); return false; @@ -3421,7 +3421,7 @@ void game_command_place_fence(int* eax, int* ebx, int* ecx, int* edx, int* esi, } } int banner_index = 0xFF; - rct_scenery_entry* fence = g_wallSceneryEntries[fence_type]; + rct_scenery_entry* fence = get_wall_entry(fence_type); if (fence->wall.var_0D != 0xFF){ banner_index = create_new_banner(fence->wall.var_0D); @@ -3580,7 +3580,7 @@ void game_command_place_large_scenery(int* eax, int* ebx, int* ecx, int* edx, in return; } - rct_scenery_entry *scenery_entry = g_largeSceneryEntries[entry_index]; + rct_scenery_entry *scenery_entry = get_large_scenery_entry(entry_index); if (scenery_entry == (rct_scenery_entry *)0xFFFFFFFF) { log_warning("Invalid game command for scenery placement, entry_index = %u", entry_index); @@ -4050,7 +4050,7 @@ static void map_obstruction_set_error_text(rct_map_element *mapElement) RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS + 2, uint32) = ride->name_arguments; break; case MAP_ELEMENT_TYPE_SCENERY: - sceneryEntry = g_smallSceneryEntries[mapElement->properties.scenery.type]; + sceneryEntry = get_small_scenery_entry(mapElement->properties.scenery.type); errorStringId = STR_X_IN_THE_WAY; RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS + 0, uint16) = sceneryEntry->name; break; @@ -4068,12 +4068,12 @@ static void map_obstruction_set_error_text(rct_map_element *mapElement) } break; case MAP_ELEMENT_TYPE_FENCE: - sceneryEntry = g_wallSceneryEntries[mapElement->properties.scenery.type]; + sceneryEntry = get_wall_entry(mapElement->properties.scenery.type); errorStringId = STR_X_IN_THE_WAY; RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS + 0, uint16) = sceneryEntry->name; break; case MAP_ELEMENT_TYPE_SCENERY_MULTIPLE: - sceneryEntry = g_largeSceneryEntries[mapElement->properties.scenery.type]; + sceneryEntry = get_large_scenery_entry(mapElement->properties.scenery.type); errorStringId = STR_X_IN_THE_WAY; RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS + 0, uint16) = sceneryEntry->name; break; @@ -4349,7 +4349,7 @@ int map_element_get_banner_index(rct_map_element *mapElement) switch (map_element_get_type(mapElement)) { case MAP_ELEMENT_TYPE_SCENERY_MULTIPLE: - sceneryEntry = g_largeSceneryEntries[mapElement->properties.scenerymultiple.type & 0x3FF]; + sceneryEntry = get_large_scenery_entry(mapElement->properties.scenerymultiple.type & 0x3FF); if (sceneryEntry->large_scenery.var_11 == 0xFF) return -1; @@ -4358,7 +4358,7 @@ int map_element_get_banner_index(rct_map_element *mapElement) ((mapElement->properties.scenerymultiple.colour[0] & 0xE0) >> 2) | ((mapElement->properties.scenerymultiple.colour[1] & 0xE0) >> 5); case MAP_ELEMENT_TYPE_FENCE: - sceneryEntry = g_wallSceneryEntries[mapElement->properties.fence.type]; + sceneryEntry = get_wall_entry(mapElement->properties.fence.type); if (sceneryEntry->wall.var_0D == 0xFF) return -1; @@ -4658,7 +4658,7 @@ bool map_large_scenery_get_origin( if (mapElement == NULL) return false; - sceneryEntry = g_largeSceneryEntries[(mapElement->properties.scenerymultiple.type) & 0x3FF]; + sceneryEntry = get_large_scenery_entry(mapElement->properties.scenerymultiple.type & 0x3FF); tile = &sceneryEntry->large_scenery.tiles[sequence]; offsetX = tile->x_offset; @@ -4689,7 +4689,7 @@ bool sign_set_colour(int x, int y, int z, int direction, int sequence, uint8 mai return false; } - sceneryEntry = g_largeSceneryEntries[(mapElement->properties.scenerymultiple.type) & 0x3FF]; + sceneryEntry = get_large_scenery_entry(mapElement->properties.scenerymultiple.type & 0x3FF); sceneryTiles = sceneryEntry->large_scenery.tiles; // Iterate through each tile of the large scenery element @@ -4897,7 +4897,7 @@ bool map_surface_is_blocked(sint16 x, sint16 y){ if (map_element_get_type(mapElement) != MAP_ELEMENT_TYPE_SCENERY) return true; - rct_scenery_entry* scenery = g_smallSceneryEntries[mapElement->properties.scenery.type]; + rct_scenery_entry* scenery = get_small_scenery_entry(mapElement->properties.scenery.type); if (scenery->small_scenery.flags & SMALL_SCENERY_FLAG_FULL_TILE) return true; } @@ -5309,7 +5309,7 @@ void game_command_set_sign_style(int* eax, int* ebx, int* ecx, int* edx, int* es if (map_element_get_type(map_element) != MAP_ELEMENT_TYPE_FENCE) continue; - rct_scenery_entry* scenery_entry = g_wallSceneryEntries[map_element->properties.fence.type]; + rct_scenery_entry* scenery_entry = get_wall_entry(map_element->properties.fence.type); if (scenery_entry->wall.var_0D == 0xFF) continue; if (map_element->properties.fence.item[0] != bannerId) diff --git a/src/world/map_animation.c b/src/world/map_animation.c index 3305f628c4..2483078bcd 100644 --- a/src/world/map_animation.c +++ b/src/world/map_animation.c @@ -183,7 +183,7 @@ static bool map_animation_invalidate_small_scenery(int x, int y, int baseZ) if (mapElement->flags & (1 << 4)) continue; - sceneryEntry = g_smallSceneryEntries[mapElement->properties.scenery.type]; + sceneryEntry = get_small_scenery_entry(mapElement->properties.scenery.type); if (sceneryEntry->small_scenery.flags & 0xD800) { map_invalidate_tile_zoom1(x, y, mapElement->base_height * 8, mapElement->clearance_height * 8); return false; @@ -433,7 +433,7 @@ static bool map_animation_invalidate_large_scenery(int x, int y, int baseZ) if (map_element_get_type(mapElement) != MAP_ELEMENT_TYPE_SCENERY_MULTIPLE) continue; - sceneryEntry = g_largeSceneryEntries[mapElement->properties.scenery.type & 0x3FF]; + sceneryEntry = get_large_scenery_entry(mapElement->properties.scenery.type & 0x3FF); if (sceneryEntry->large_scenery.flags & (1 << 3)) { int z = mapElement->base_height * 8; map_invalidate_tile_zoom1(x, y, z, z + 16); @@ -464,7 +464,7 @@ static bool map_animation_invalidate_wall_door(int x, int y, int baseZ) if (map_element_get_type(mapElement) != MAP_ELEMENT_TYPE_FENCE) continue; - sceneryEntry = g_wallSceneryEntries[mapElement->properties.scenery.type]; + sceneryEntry = get_wall_entry(mapElement->properties.scenery.type); if (!(sceneryEntry->wall.flags & (1 << 4))) continue; @@ -519,7 +519,7 @@ static bool map_animation_invalidate_wall(int x, int y, int baseZ) if (map_element_get_type(mapElement) != MAP_ELEMENT_TYPE_FENCE) continue; - sceneryEntry = g_wallSceneryEntries[mapElement->properties.scenery.type]; + sceneryEntry = get_wall_entry(mapElement->properties.scenery.type); if (!(sceneryEntry->wall.flags2 & (1 << 4)) && sceneryEntry->wall.var_0D == 255) continue; diff --git a/src/world/mapgen.c b/src/world/mapgen.c index ad315eeafd..75325a1e5b 100644 --- a/src/world/mapgen.c +++ b/src/world/mapgen.c @@ -226,7 +226,7 @@ static void mapgen_place_tree(int type, int x, int y) { int surfaceZ; rct_map_element *mapElement; - rct_scenery_entry *sceneryEntry = g_smallSceneryEntries[type]; + rct_scenery_entry *sceneryEntry = get_small_scenery_entry(type); surfaceZ = map_element_height(x * 32 + 16, y * 32 + 16) / 8; mapElement = map_element_insert(x, y, surfaceZ, (1 | 2 | 4 | 8)); @@ -254,7 +254,7 @@ static void mapgen_place_trees() int *snowTreeIds = (int*)malloc(countof(SnowTrees) * sizeof(int)); for (i = 0; i < object_entry_group_counts[OBJECT_TYPE_SMALL_SCENERY]; i++) { - rct_scenery_entry *sceneryEntry = g_smallSceneryEntries[i]; + rct_scenery_entry *sceneryEntry = get_small_scenery_entry(i); rct_object_entry_extended *entry = &object_entry_groups[OBJECT_TYPE_SMALL_SCENERY].entries[i]; if (sceneryEntry == (rct_scenery_entry*)0xFFFFFFFF || sceneryEntry == NULL) diff --git a/src/world/scenery.c b/src/world/scenery.c index a3bca9f223..a56678e4c9 100644 --- a/src/world/scenery.c +++ b/src/world/scenery.c @@ -39,7 +39,7 @@ void scenery_update_tile(int x, int y) } else if (map_element_get_type(mapElement) == MAP_ELEMENT_TYPE_PATH) { if (footpath_element_has_path_scenery(mapElement) && !footpath_element_path_scenery_is_ghost(mapElement)) { rct_scenery_entry *sceneryEntry; - sceneryEntry = g_pathBitSceneryEntries[footpath_element_get_path_scenery_index(mapElement)]; + sceneryEntry = get_footpath_item_entry(footpath_element_get_path_scenery_index(mapElement)); if (sceneryEntry->path_bit.var_06 & PATH_BIT_FLAG_JUMPING_FOUNTAIN_WATER) { jumping_fountain_begin(JUMPING_FOUNTAIN_TYPE_WATER, x, y, mapElement); } else if (sceneryEntry->path_bit.var_06 & PATH_BIT_FLAG_JUMPING_FOUNTAIN_SNOW) { @@ -59,7 +59,7 @@ void scenery_update_age(int x, int y, rct_map_element *mapElement) rct_map_element *mapElementAbove; rct_scenery_entry *sceneryEntry; - sceneryEntry = g_smallSceneryEntries[mapElement->properties.scenery.type]; + sceneryEntry = get_small_scenery_entry(mapElement->properties.scenery.type); if ( !(sceneryEntry->small_scenery.flags & SMALL_SCENERY_FLAG_CAN_BE_WATERED) || (gClimateCurrentWeather < WEATHER_RAIN) || @@ -82,7 +82,7 @@ void scenery_update_age(int x, int y, rct_map_element *mapElement) scenery_increase_age(x, y, mapElement); return; case MAP_ELEMENT_TYPE_SCENERY: - sceneryEntry = g_smallSceneryEntries[mapElementAbove->properties.scenery.type]; + sceneryEntry = get_small_scenery_entry(mapElementAbove->properties.scenery.type); if (sceneryEntry->small_scenery.flags & SMALL_SCENERY_FLAG_VOFFSET_CENTRE) { scenery_increase_age(x, y, mapElement); return; @@ -189,3 +189,33 @@ void scenery_remove_ghost_tool_placement(){ 0); } } + +rct_scenery_entry *get_small_scenery_entry(int entryIndex) +{ + return gSmallSceneryEntries[entryIndex]; +} + +rct_scenery_entry *get_large_scenery_entry(int entryIndex) +{ + return gLargeSceneryEntries[entryIndex]; +} + +rct_scenery_entry *get_wall_entry(int entryIndex) +{ + return gWallSceneryEntries[entryIndex]; +} + +rct_scenery_entry *get_banner_entry(int entryIndex) +{ + return gBannerSceneryEntries[entryIndex]; +} + +rct_scenery_entry *get_footpath_item_entry(int entryIndex) +{ + return gPathBitSceneryEntries[entryIndex]; +} + +rct_scenery_set_entry *get_scenery_group_entry(int entryIndex) +{ + return gScenerySetEntries[entryIndex]; +} diff --git a/src/world/scenery.h b/src/world/scenery.h index 94b6163694..689e3fd0d0 100644 --- a/src/world/scenery.h +++ b/src/world/scenery.h @@ -156,16 +156,15 @@ enum { #define SCENERY_ENTRIES_BY_TAB 128 -#define g_smallSceneryEntries ((rct_scenery_entry**)object_entry_groups[OBJECT_TYPE_SMALL_SCENERY].chunks) -#define g_largeSceneryEntries ((rct_scenery_entry**)object_entry_groups[OBJECT_TYPE_LARGE_SCENERY].chunks) -#define g_wallSceneryEntries ((rct_scenery_entry**)object_entry_groups[OBJECT_TYPE_WALLS].chunks) -#define g_bannerSceneryEntries ((rct_scenery_entry**)object_entry_groups[OBJECT_TYPE_BANNERS].chunks) -#define g_pathSceneryEntries ((rct_scenery_entry**)object_entry_groups[OBJECT_TYPE_PATHS].chunks) +#define gSmallSceneryEntries ((rct_scenery_entry**)object_entry_groups[OBJECT_TYPE_SMALL_SCENERY].chunks) +#define gLargeSceneryEntries ((rct_scenery_entry**)object_entry_groups[OBJECT_TYPE_LARGE_SCENERY].chunks) +#define gWallSceneryEntries ((rct_scenery_entry**)object_entry_groups[OBJECT_TYPE_WALLS].chunks) +#define gBannerSceneryEntries ((rct_scenery_entry**)object_entry_groups[OBJECT_TYPE_BANNERS].chunks) // Often 0x009ADA50 is used for pathBits this is 1 entry before g_pathBitSceneryEntries and is used // because 0 represents no path bits on a path. So remember to remove 1 when using it for 0x009ADA50 -#define g_pathBitSceneryEntries ((rct_scenery_entry**)object_entry_groups[OBJECT_TYPE_PATH_BITS].chunks) -#define g_scenerySetEntries ((rct_scenery_set_entry**)object_entry_groups[OBJECT_TYPE_SCENERY_SETS].chunks) +#define gPathBitSceneryEntries ((rct_scenery_entry**)object_entry_groups[OBJECT_TYPE_PATH_BITS].chunks) +#define gScenerySetEntries ((rct_scenery_set_entry**)object_entry_groups[OBJECT_TYPE_SCENERY_SETS].chunks) #define window_scenery_active_tab_index RCT2_GLOBAL(0x00F64EDC, uint8) #define window_scenery_selected_scenery_by_tab RCT2_ADDRESS(0x00F64EDD, sint16) @@ -185,4 +184,12 @@ void scenery_set_default_placement_configuration(); void scenery_remove_ghost_tool_placement(); void scenery_set_default_placement_configuration(); +rct_scenery_entry *get_small_scenery_entry(int entryIndex); +rct_scenery_entry *get_large_scenery_entry(int entryIndex); +rct_scenery_entry *get_wall_entry(int entryIndex); +rct_scenery_entry *get_banner_entry(int entryIndex); +rct_scenery_entry *get_footpath_item_entry(int entryIndex); +rct_scenery_set_entry *get_scenery_group_entry(int entryIndex); + + #endif