From acd3b09c80f7b8176b106af1b2fa89aa5878b2b6 Mon Sep 17 00:00:00 2001 From: Richard Jenkins Date: Sat, 3 Jun 2017 22:21:47 +0100 Subject: [PATCH] Name sub_6DFED0(), remove magic numbers, minor refactor to research --- src/openrct2/game.c | 2 +- src/openrct2/management/research.c | 31 ++++++++++--- src/openrct2/management/research.h | 20 ++++++--- src/openrct2/scenario/scenario.h | 2 +- src/openrct2/windows/editor_bottom_toolbar.c | 44 ++++--------------- .../windows/editor_object_selection.c | 8 +--- src/openrct2/world/park.c | 4 +- 7 files changed, 51 insertions(+), 60 deletions(-) diff --git a/src/openrct2/game.c b/src/openrct2/game.c index 18ad803dab..9b1edb5048 100644 --- a/src/openrct2/game.c +++ b/src/openrct2/game.c @@ -815,7 +815,7 @@ void game_fix_save_vars() { } // Fix invalid research items - for (sint32 i = 0; i < 500; i++) { + for (sint32 i = 0; i < MAX_RESEARCH_ITEMS; i++) { rct_research_item *researchItem = &gResearchItems[i]; if (researchItem->entryIndex == RESEARCHED_ITEMS_SEPARATOR) continue; if (researchItem->entryIndex == RESEARCHED_ITEMS_END) continue; diff --git a/src/openrct2/management/research.c b/src/openrct2/management/research.c index afa6871bae..96e470502f 100644 --- a/src/openrct2/management/research.c +++ b/src/openrct2/management/research.c @@ -44,16 +44,16 @@ uint8 gResearchNextCategory; uint32 gResearchNextItem; // 0x01358844[500] -rct_research_item gResearchItems[500]; +rct_research_item gResearchItems[MAX_RESEARCH_ITEMS]; // 0x00EE787C uint8 gResearchUncompletedCategories; -uint32 gResearchedRideTypes[8]; -uint32 gResearchedRideEntries[8]; -uint32 gResearchedTrackTypesA[128]; -uint32 gResearchedTrackTypesB[128]; -uint32 gResearchedSceneryItems[56]; +uint32 gResearchedRideTypes[MAX_RESEARCHED_RIDE_TYPES]; +uint32 gResearchedRideEntries[MAX_RESEARCHED_RIDE_ENTRIES]; +uint32 gResearchedTrackTypesA[MAX_RESEARCHED_TRACK_TYPES]; +uint32 gResearchedTrackTypesB[MAX_RESEARCHED_TRACK_TYPES]; +uint32 gResearchedSceneryItems[MAX_RESEARCHED_SCENERY_ITEMS]; bool gSilentResearch = false; @@ -636,3 +636,22 @@ bool scenery_is_invented(uint16 sceneryItem) bool invented = (gResearchedSceneryItems[quadIndex] & ((uint32)1 << bitIndex)); return invented; } + +void reset_researched_scenery_items() +{ + for (sint32 i = 0; i < MAX_RESEARCHED_SCENERY_ITEMS; i++) { + gResearchedSceneryItems[i] = 0xFFFFFFFF; + } +} + +void reset_researched_ride_types_and_entries() +{ + // Iteration endpoint used to be 4 for unknown reasons, likely a mistake + for (sint32 i = 0; i < MAX_RESEARCHED_RIDE_TYPES; i++) { + gResearchedRideTypes[i] = 0xFFFFFFFF; + } + + for (sint32 i = 0; i < MAX_RESEARCHED_RIDE_ENTRIES; i++) { + gResearchedRideEntries[i] = 0xFFFFFFFF; + } +} diff --git a/src/openrct2/management/research.h b/src/openrct2/management/research.h index dc8257abb6..ffac63d613 100644 --- a/src/openrct2/management/research.h +++ b/src/openrct2/management/research.h @@ -40,6 +40,12 @@ enum{ // Extra end of list entry. Unsure why? #define RESEARCHED_ITEMS_END_2 -3 +#define MAX_RESEARCH_ITEMS 500 +#define MAX_RESEARCHED_SCENERY_ITEMS 56 +#define MAX_RESEARCHED_RIDE_TYPES 8 +#define MAX_RESEARCHED_RIDE_ENTRIES 8 +#define MAX_RESEARCHED_TRACK_TYPES 128 + enum { RESEARCH_FUNDING_NONE, RESEARCH_FUNDING_MINIMUM, @@ -75,13 +81,13 @@ extern uint8 gResearchExpectedDay; extern uint8 gResearchNextCategory; extern uint32 gResearchNextItem; -extern rct_research_item gResearchItems[500]; +extern rct_research_item gResearchItems[MAX_RESEARCH_ITEMS]; extern uint8 gResearchUncompletedCategories; -extern uint32 gResearchedRideTypes[8]; -extern uint32 gResearchedRideEntries[8]; -extern uint32 gResearchedTrackTypesA[128]; -extern uint32 gResearchedTrackTypesB[128]; -extern uint32 gResearchedSceneryItems[56]; +extern uint32 gResearchedRideTypes[MAX_RESEARCHED_RIDE_TYPES]; +extern uint32 gResearchedRideEntries[MAX_RESEARCHED_RIDE_ENTRIES]; +extern uint32 gResearchedTrackTypesA[MAX_RESEARCHED_TRACK_TYPES]; +extern uint32 gResearchedTrackTypesB[MAX_RESEARCHED_TRACK_TYPES]; +extern uint32 gResearchedSceneryItems[MAX_RESEARCHED_SCENERY_ITEMS]; extern bool gSilentResearch; void research_reset_items(); @@ -106,5 +112,7 @@ bool ride_type_is_invented(sint32 rideType); bool ride_entry_is_invented(sint32 rideEntryIndex); bool track_piece_is_available_for_ride_type(uint8 rideType, sint32 trackType); bool scenery_is_invented(uint16 sceneryItem); +void reset_researched_scenery_items(); +void reset_researched_ride_types_and_entries(); #endif diff --git a/src/openrct2/scenario/scenario.h b/src/openrct2/scenario/scenario.h index 7aa8665978..9c983cf1b4 100644 --- a/src/openrct2/scenario/scenario.h +++ b/src/openrct2/scenario/scenario.h @@ -238,7 +238,7 @@ typedef struct rct_s6_data { uint8 last_entrance_style; uint8 rct1_water_colour; uint8 pad_01358842[2]; - rct_research_item research_items[500]; + rct_research_item research_items[MAX_RESEARCH_ITEMS]; uint16 map_base_z; char scenario_name[64]; char scenario_description[256]; diff --git a/src/openrct2/windows/editor_bottom_toolbar.c b/src/openrct2/windows/editor_bottom_toolbar.c index 7aac009baa..3ebf5d25ab 100644 --- a/src/openrct2/windows/editor_bottom_toolbar.c +++ b/src/openrct2/windows/editor_bottom_toolbar.c @@ -23,6 +23,7 @@ #include "../scenario/scenario.h" #include "../sprites.h" #include "../localisation/localisation.h" +#include "../management/research.h" #include "../interface/themes.h" #include "../interface/viewport.h" #include "../interface/widget.h" @@ -128,8 +129,6 @@ static const rct_string_id EditorStepNames[] = { STR_EDITOR_STEP_TRACK_DESIGNS_MANAGER, }; -static void sub_6DFED0(); - /** * Creates the main editor top toolbar window. * rct2: 0x0066F052 (part of 0x0066EF38) @@ -149,7 +148,7 @@ void window_editor_bottom_toolbar_open() (1 << WIDX_NEXT_IMAGE); window_init_scroll_widgets(window); - sub_6DFED0(); + reset_researched_scenery_items(); } /** @@ -162,24 +161,13 @@ void window_editor_bottom_toolbar_jump_back_to_object_selection() { gfx_invalidate_screen(); } -/** - * - * rct2: 0x006DFED0 - */ -static void sub_6DFED0() -{ - for (sint32 i = 0; i < 56; i++) { - gResearchedSceneryItems[i] = 0xFFFFFFFF; - } -} - /** * * rct2: 0x0066F62C */ void window_editor_bottom_toolbar_jump_back_to_landscape_editor() { window_close_all(); - sub_6DFED0(); + reset_researched_scenery_items(); scenery_set_default_placement_configuration(); gS6Info.editor_step = EDITOR_STEP_LANDSCAPE_EDITOR; window_map_open(); @@ -242,25 +230,6 @@ static bool window_editor_bottom_toolbar_check_object_selection() return false; } -/** - * - * rct2: 0x0066F6E3 - */ -static void sub_66F6E3() -{ - for (sint32 i = 0; i < 4; i++) { - gResearchedRideTypes[i] = 0xFFFFFFFF; - } - - for (sint32 i = 0; i < 8; i++) { - gResearchedRideEntries[i] = 0xFFFFFFFF; - } - - window_new_ride_open(); - gS6Info.editor_step = EDITOR_STEP_ROLLERCOASTER_DESIGNER; - gfx_invalidate_screen(); -} - /** * * rct2: 0x0066F6B0 @@ -271,9 +240,12 @@ void window_editor_bottom_toolbar_jump_forward_from_object_selection() return; if (gScreenFlags & SCREEN_FLAGS_TRACK_DESIGNER) { - sub_66F6E3(); + reset_researched_ride_types_and_entries(); + window_new_ride_open(); + gS6Info.editor_step = EDITOR_STEP_ROLLERCOASTER_DESIGNER; + gfx_invalidate_screen(); } else { - sub_6DFED0(); + reset_researched_scenery_items(); scenery_set_default_placement_configuration(); gS6Info.editor_step = EDITOR_STEP_LANDSCAPE_EDITOR; window_map_open(); diff --git a/src/openrct2/windows/editor_object_selection.c b/src/openrct2/windows/editor_object_selection.c index 94ccd5afe0..9619778411 100644 --- a/src/openrct2/windows/editor_object_selection.c +++ b/src/openrct2/windows/editor_object_selection.c @@ -1684,13 +1684,7 @@ static sint32 get_object_from_object_selection(uint8 object_type, sint32 y) */ static void window_editor_object_selection_manage_tracks() { - for (sint32 i = 0; i < 4; i++) { - gResearchedRideTypes[i] = 0xFFFFFFFF; - } - - for (sint32 i = 0; i < 8; i++) { - gResearchedRideEntries[i] = 0xFFFFFFFF; - } + reset_researched_ride_types_and_entries(); gS6Info.editor_step = EDITOR_STEP_TRACK_DESIGNS_MANAGER; diff --git a/src/openrct2/world/park.c b/src/openrct2/world/park.c index f01fa97ece..a0bf6c646b 100644 --- a/src/openrct2/world/park.c +++ b/src/openrct2/world/park.c @@ -107,9 +107,7 @@ void park_init() for (i = 0; i < 2; i++) gResearchedRideTypes[i] = 0; - for (i = 0; i < 56; i++) { - gResearchedSceneryItems[i] = 0xFFFFFFFF; - } + reset_researched_scenery_items(); gParkEntranceFee = MONEY(10, 00); gPeepSpawns[0].x = PEEP_SPAWN_UNDEFINED;