diff --git a/OpenRCT2.xcodeproj/project.pbxproj b/OpenRCT2.xcodeproj/project.pbxproj index 505c9540c6..0a89656c86 100644 --- a/OpenRCT2.xcodeproj/project.pbxproj +++ b/OpenRCT2.xcodeproj/project.pbxproj @@ -26,6 +26,7 @@ 4C8B42701EEB1ABD00F015CA /* X8DrawingEngine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C8B426E1EEB1ABD00F015CA /* X8DrawingEngine.cpp */; }; 4C8B42721EEB1AE400F015CA /* HardwareDisplayDrawingEngine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C8B42711EEB1AE400F015CA /* HardwareDisplayDrawingEngine.cpp */; }; 4C8B42741EEB1B6F00F015CA /* Screenshot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C8B42731EEB1B6F00F015CA /* Screenshot.cpp */; }; + 4C93F1141F86728F00A9330D /* Research.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4C93F1121F86728F00A9330D /* Research.cpp */; }; 4CB832A71EFBDCCE00B88761 /* land_tool.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CB832A51EFBDCCE00B88761 /* land_tool.c */; }; 4CB832AB1EFFB8D100B88761 /* ttf_sdlport.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CB832A81EFFB8D100B88761 /* ttf_sdlport.c */; }; 4CB832AC1EFFB8D100B88761 /* ttf.c in Sources */ = {isa = PBXBuildFile; fileRef = 4CB832A91EFFB8D100B88761 /* ttf.c */; }; @@ -250,7 +251,6 @@ F76C863D1EC4E88300FA49E2 /* finance.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C83ED1EC4E7CC00FA49E2 /* finance.c */; }; F76C863F1EC4E88300FA49E2 /* marketing.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C83EF1EC4E7CC00FA49E2 /* marketing.c */; }; F76C86411EC4E88300FA49E2 /* news_item.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C83F11EC4E7CC00FA49E2 /* news_item.c */; }; - F76C86431EC4E88300FA49E2 /* research.c in Sources */ = {isa = PBXBuildFile; fileRef = F76C83F31EC4E7CC00FA49E2 /* research.c */; }; F76C86451EC4E88300FA49E2 /* Http.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83F61EC4E7CC00FA49E2 /* Http.cpp */; }; F76C86471EC4E88300FA49E2 /* Network.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83F81EC4E7CC00FA49E2 /* Network.cpp */; }; F76C86491EC4E88300FA49E2 /* NetworkAction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F76C83FA1EC4E7CC00FA49E2 /* NetworkAction.cpp */; }; @@ -618,6 +618,8 @@ 4C8B426F1EEB1ABD00F015CA /* X8DrawingEngine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = X8DrawingEngine.h; sourceTree = ""; }; 4C8B42711EEB1AE400F015CA /* HardwareDisplayDrawingEngine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HardwareDisplayDrawingEngine.cpp; sourceTree = ""; }; 4C8B42731EEB1B6F00F015CA /* Screenshot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Screenshot.cpp; sourceTree = ""; }; + 4C93F1121F86728F00A9330D /* Research.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Research.cpp; sourceTree = ""; }; + 4C93F1131F86728F00A9330D /* Research.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Research.h; sourceTree = ""; }; 4CB832A51EFBDCCE00B88761 /* land_tool.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = land_tool.c; sourceTree = ""; }; 4CB832A61EFBDCCE00B88761 /* land_tool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = land_tool.h; sourceTree = ""; }; 4CB832A81EFFB8D100B88761 /* ttf_sdlport.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ttf_sdlport.c; sourceTree = ""; }; @@ -1079,8 +1081,6 @@ F76C83F01EC4E7CC00FA49E2 /* marketing.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = marketing.h; sourceTree = ""; }; F76C83F11EC4E7CC00FA49E2 /* news_item.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = news_item.c; sourceTree = ""; }; F76C83F21EC4E7CC00FA49E2 /* news_item.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = news_item.h; sourceTree = ""; }; - F76C83F31EC4E7CC00FA49E2 /* research.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = research.c; sourceTree = ""; }; - F76C83F41EC4E7CC00FA49E2 /* research.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = research.h; sourceTree = ""; }; F76C83F61EC4E7CC00FA49E2 /* Http.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Http.cpp; sourceTree = ""; }; F76C83F71EC4E7CC00FA49E2 /* http.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = http.h; sourceTree = ""; }; F76C83F81EC4E7CC00FA49E2 /* Network.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Network.cpp; sourceTree = ""; }; @@ -2079,8 +2079,8 @@ F76C83F01EC4E7CC00FA49E2 /* marketing.h */, F76C83F11EC4E7CC00FA49E2 /* news_item.c */, F76C83F21EC4E7CC00FA49E2 /* news_item.h */, - F76C83F31EC4E7CC00FA49E2 /* research.c */, - F76C83F41EC4E7CC00FA49E2 /* research.h */, + 4C93F1121F86728F00A9330D /* Research.cpp */, + 4C93F1131F86728F00A9330D /* Research.h */, ); path = management; sourceTree = ""; @@ -3134,6 +3134,7 @@ F76C887D1EC5324E00FA49E2 /* CursorData.cpp in Sources */, 4CB832A71EFBDCCE00B88761 /* land_tool.c in Sources */, C666EE7B1F37ACB10061AA04 /* TitleExit.cpp in Sources */, + 4C93F1141F86728F00A9330D /* Research.cpp in Sources */, F7D7747F1EC61E5100BE6EBC /* UiContext.macOS.mm in Sources */, F76C887E1EC5324E00FA49E2 /* CursorRepository.cpp in Sources */, C654DF331F69C0430040F43D /* LoadSave.cpp in Sources */, @@ -3279,7 +3280,6 @@ C666EE1A1F33E3800061AA04 /* EditorObjectSelection.cpp in Sources */, F76C863F1EC4E88300FA49E2 /* marketing.c in Sources */, F76C86411EC4E88300FA49E2 /* news_item.c in Sources */, - F76C86431EC4E88300FA49E2 /* research.c in Sources */, F76C86451EC4E88300FA49E2 /* Http.cpp in Sources */, F76C86471EC4E88300FA49E2 /* Network.cpp in Sources */, F76C86491EC4E88300FA49E2 /* NetworkAction.cpp in Sources */, diff --git a/src/openrct2-ui/windows/EditorInventionsList.cpp b/src/openrct2-ui/windows/EditorInventionsList.cpp index 949a926c7a..1de397e748 100644 --- a/src/openrct2-ui/windows/EditorInventionsList.cpp +++ b/src/openrct2-ui/windows/EditorInventionsList.cpp @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/openrct2/game.c b/src/openrct2/game.c index a9d9cb0de0..f78f152887 100644 --- a/src/openrct2/game.c +++ b/src/openrct2/game.c @@ -30,7 +30,7 @@ #include "management/finance.h" #include "management/marketing.h" #include "management/news_item.h" -#include "management/research.h" +#include "management/Research.h" #include "network/network.h" #include "object.h" #include "OpenRCT2.h" diff --git a/src/openrct2/interface/console.c b/src/openrct2/interface/console.c index 441d6321ac..e422836694 100644 --- a/src/openrct2/interface/console.c +++ b/src/openrct2/interface/console.c @@ -25,7 +25,7 @@ #include "../localisation/localisation.h" #include "../localisation/user.h" #include "../management/finance.h" -#include "../management/research.h" +#include "../management/Research.h" #include "../network/network.h" #include "../network/twitch.h" #include "../object.h" diff --git a/src/openrct2/interface/window.h b/src/openrct2/interface/window.h index b5bb721f27..183c49f562 100644 --- a/src/openrct2/interface/window.h +++ b/src/openrct2/interface/window.h @@ -19,7 +19,7 @@ #include "../common.h" #include "../drawing/drawing.h" -#include "../management/research.h" +#include "../management/Research.h" #include "../peep/peep.h" #include "../ride/ride.h" #include "../ride/TrackDesign.h" diff --git a/src/openrct2/management/research.c b/src/openrct2/management/Research.cpp similarity index 68% rename from src/openrct2/management/research.c rename to src/openrct2/management/Research.cpp index 3c4bcdd942..f5b6a7030f 100644 --- a/src/openrct2/management/research.c +++ b/src/openrct2/management/Research.cpp @@ -16,6 +16,7 @@ #include "../config/Config.h" #include "../core/Guard.hpp" +#include "../core/Util.hpp" #include "../game.h" #include "../interface/window.h" #include "../localisation/date.h" @@ -31,18 +32,19 @@ #include "../ride/track_data.h" #include "../world/scenery.h" #include "news_item.h" -#include "research.h" +#include "Research.h" +#include "../object_list.h" -const sint32 _researchRate[] = { 0, 160, 250, 400 }; +const sint32 _researchRate[] = {0, 160, 250, 400}; -uint8 gResearchFundingLevel; -uint8 gResearchPriorities; +uint8 gResearchFundingLevel; +uint8 gResearchPriorities; uint16 gResearchProgress; -uint8 gResearchProgressStage; +uint8 gResearchProgressStage; uint32 gResearchLastItemSubject; -uint8 gResearchExpectedMonth; -uint8 gResearchExpectedDay; -uint8 gResearchNextCategory; +uint8 gResearchExpectedMonth; +uint8 gResearchExpectedDay; +uint8 gResearchNextCategory; uint32 gResearchNextItem; // 0x01358844[500] @@ -53,13 +55,12 @@ uint8 gResearchUncompletedCategories; 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; static void ride_type_set_invented(sint32 rideType); + static void ride_entry_set_invented(sint32 rideEntryIndex); /** @@ -80,11 +81,13 @@ void research_reset_items() void research_update_uncompleted_types() { sint32 uncompletedResearchTypes = 0; - rct_research_item *researchItem = gResearchItems; + rct_research_item * researchItem = gResearchItems; while (researchItem++->entryIndex != RESEARCHED_ITEMS_SEPARATOR); for (; researchItem->entryIndex != RESEARCHED_ITEMS_END; researchItem++) + { uncompletedResearchTypes |= (1 << researchItem->category); + } gResearchUncompletedCategories = uncompletedResearchTypes; } @@ -95,21 +98,24 @@ void research_update_uncompleted_types() */ static void research_calculate_expected_date() { - if (gResearchProgressStage == RESEARCH_STAGE_INITIAL_RESEARCH || gResearchFundingLevel == RESEARCH_FUNDING_NONE) { + if (gResearchProgressStage == RESEARCH_STAGE_INITIAL_RESEARCH || gResearchFundingLevel == RESEARCH_FUNDING_NONE) + { gResearchExpectedDay = 255; - } else { + } + else + { sint32 progressRemaining = gResearchProgressStage == RESEARCH_STAGE_COMPLETING_DESIGN ? 0x10000 : 0x20000; progressRemaining -= gResearchProgress; sint32 daysRemaining = (progressRemaining / _researchRate[gResearchFundingLevel]) * 128; - sint32 expectedDay = gDateMonthTicks + (daysRemaining & 0xFFFF); - sint32 dayQuotient = expectedDay / 0x10000; + sint32 expectedDay = gDateMonthTicks + (daysRemaining & 0xFFFF); + sint32 dayQuotient = expectedDay / 0x10000; sint32 dayRemainder = expectedDay % 0x10000; sint32 expectedMonth = date_get_month(gDateMonthsElapsed + dayQuotient + (daysRemaining >> 16)); expectedDay = (dayRemainder * days_in_month[expectedMonth]) >> 16; - gResearchExpectedDay = expectedDay; + gResearchExpectedDay = expectedDay; gResearchExpectedMonth = expectedMonth; } } @@ -126,48 +132,59 @@ static void research_invalidate_related_windows() */ static void research_next_design() { - rct_research_item *firstUnresearchedItem, *researchItem, tmp; + rct_research_item * firstUnresearchedItem, * researchItem, tmp; sint32 ignoreActiveResearchTypes; // Skip already researched items firstUnresearchedItem = gResearchItems; while (firstUnresearchedItem->entryIndex != RESEARCHED_ITEMS_SEPARATOR) + { firstUnresearchedItem++; + } ignoreActiveResearchTypes = 0; - researchItem = firstUnresearchedItem; - for (;;) { + researchItem = firstUnresearchedItem; + for (;;) + { researchItem++; - if (researchItem->entryIndex == RESEARCHED_ITEMS_END) { - if (!ignoreActiveResearchTypes) { + if (researchItem->entryIndex == RESEARCHED_ITEMS_END) + { + if (!ignoreActiveResearchTypes) + { ignoreActiveResearchTypes = 1; - researchItem = firstUnresearchedItem; + researchItem = firstUnresearchedItem; continue; - } else { - gResearchProgress = 0; + } + else + { + gResearchProgress = 0; gResearchProgressStage = RESEARCH_STAGE_FINISHED_ALL; research_invalidate_related_windows(); // Reset funding to 0 if no more rides. research_set_funding(0); return; } - } else if (ignoreActiveResearchTypes || (gResearchPriorities & (1 << researchItem->category))) { + } + else if (ignoreActiveResearchTypes || (gResearchPriorities & (1 << researchItem->category))) + { break; } } - gResearchNextItem = researchItem->entryIndex; - gResearchNextCategory = researchItem->category; - gResearchProgress = 0; + gResearchNextItem = researchItem->entryIndex; + gResearchNextCategory = researchItem->category; + gResearchProgress = 0; gResearchProgressStage = RESEARCH_STAGE_DESIGNING; // Bubble research item up until it is above the researched items separator - do { + do + { tmp = *researchItem; - *researchItem = *(researchItem - 1); + *researchItem = *(researchItem - 1); *(researchItem - 1) = tmp; researchItem--; - } while ((researchItem + 1)->entryIndex != RESEARCHED_ITEMS_SEPARATOR); + } + while ((researchItem + 1)->entryIndex != RESEARCHED_ITEMS_SEPARATOR); research_invalidate_related_windows(); } @@ -176,50 +193,59 @@ static void research_next_design() * * rct2: 0x006848D4 */ -void research_finish_item(sint32 entryIndex) +void research_finish_item(uint32 entryIndex) { - gResearchLastItemSubject = (uint32)entryIndex; + gResearchLastItemSubject = entryIndex; research_invalidate_related_windows(); if (entryIndex >= RESEARCH_ENTRY_RIDE_MASK) { // Ride - sint32 base_ride_type = research_get_ride_base_type(entryIndex); + uint32 base_ride_type = research_get_ride_base_type(entryIndex); sint32 rideEntryIndex = entryIndex & 0xFF; - rct_ride_entry *rideEntry = get_ride_entry(rideEntryIndex); + rct_ride_entry * rideEntry = get_ride_entry(rideEntryIndex); - if (rideEntry != NULL && rideEntry != (rct_ride_entry *)-1 && base_ride_type != RIDE_TYPE_NULL) + if (rideEntry != NULL && rideEntry != (rct_ride_entry *) -1 && base_ride_type != RIDE_TYPE_NULL) { bool ride_group_was_invented_before = false; - bool ride_type_was_invented_before = ride_type_is_invented(base_ride_type); + bool ride_type_was_invented_before = ride_type_is_invented(base_ride_type); rct_string_id availabilityString; // Determine if the ride group this entry belongs to was invented before. - if (gConfigInterface.select_by_track_type && ride_type_has_ride_groups(base_ride_type)) + if (gConfigInterface.select_by_track_type && RideGroupManager::RideTypeHasRideGroups(base_ride_type)) { - const RideGroup * rideGroup = get_ride_group(base_ride_type, rideEntry); + const RideGroup * rideGroup = RideGroupManager::GetRideGroup(base_ride_type, rideEntry); - if (ride_group_is_invented(rideGroup)) + if (RideGroupManager::RideGroupIsInvented(rideGroup)) { ride_group_was_invented_before = true; } } ride_type_set_invented(base_ride_type); - openrct2_assert(base_ride_type < countof(RideTypePossibleTrackConfigurations), "Invalid base_ride_type = %d", base_ride_type); + openrct2_assert(base_ride_type < Util::CountOf(RideTypePossibleTrackConfigurations), + "Invalid base_ride_type = %d", base_ride_type); ride_entry_set_invented(rideEntryIndex); - if (!(rideEntry->flags & RIDE_ENTRY_FLAG_SEPARATE_RIDE)) { - for (sint32 i = 0; i < MAX_RESEARCHED_TRACK_TYPES; i++) { - rct_ride_entry *rideEntry2 = get_ride_entry(i); - if (rideEntry2 == (rct_ride_entry*)-1) + if (!(rideEntry->flags & RIDE_ENTRY_FLAG_SEPARATE_RIDE)) + { + for (sint32 i = 0; i < MAX_RESEARCHED_TRACK_TYPES; i++) + { + rct_ride_entry * rideEntry2 = get_ride_entry(i); + if (rideEntry2 == (rct_ride_entry *) -1) + { continue; + } if ((rideEntry2->flags & RIDE_ENTRY_FLAG_SEPARATE_RIDE)) + { continue; + } - for (uint8 j = 0; j < MAX_RIDE_TYPES_PER_RIDE_ENTRY; j++) { - if (rideEntry2->ride_type[j] == base_ride_type) { + for (uint8 j = 0; j < MAX_RIDE_TYPES_PER_RIDE_ENTRY; j++) + { + if (rideEntry2->ride_type[j] == base_ride_type) + { ride_entry_set_invented(i); break; } @@ -250,15 +276,16 @@ void research_finish_item(sint32 entryIndex) availabilityString = STR_NEWS_ITEM_RESEARCH_NEW_RIDE_AVAILABLE; set_format_arg(0, rct_string_id, rideEntry->naming.name); } - // If a vehicle is the first to be invented for its ride group, show the ride group name. - else if (!ride_type_was_invented_before || (ride_type_has_ride_groups(base_ride_type) && !ride_group_was_invented_before)) + // If a vehicle is the first to be invented for its ride group, show the ride group name. + else if (!ride_type_was_invented_before || + (ride_type_has_ride_groups(base_ride_type) && !ride_group_was_invented_before)) { rct_ride_name naming = get_ride_naming(base_ride_type, rideEntry); availabilityString = STR_NEWS_ITEM_RESEARCH_NEW_RIDE_AVAILABLE; set_format_arg(0, rct_string_id, naming.name); } - // If the vehicle should not be listed separately and it isn't the first to be invented for its ride group, - // report it as a new vehicle for the existing ride group. + // If the vehicle should not be listed separately and it isn't the first to be invented for its ride group, + // report it as a new vehicle for the existing ride group. else { availabilityString = STR_NEWS_ITEM_RESEARCH_NEW_VEHICLE_AVAILABLE; @@ -279,20 +306,25 @@ void research_finish_item(sint32 entryIndex) research_invalidate_related_windows(); } - } else { + } + else + { // Scenery - rct_scenery_set_entry *scenerySetEntry = get_scenery_group_entry(entryIndex & 0xFFFF); - if (scenerySetEntry != NULL && scenerySetEntry != (rct_scenery_set_entry *)-1) + rct_scenery_set_entry * scenerySetEntry = get_scenery_group_entry(entryIndex & 0xFFFF); + if (scenerySetEntry != NULL && scenerySetEntry != (rct_scenery_set_entry *) -1) { - for (sint32 i = 0; i < scenerySetEntry->entry_count; i++) { + for (sint32 i = 0; i < scenerySetEntry->entry_count; i++) + { sint32 subSceneryEntryIndex = scenerySetEntry->scenery_entries[i]; gResearchedSceneryItems[subSceneryEntryIndex >> 5] |= 1UL << (subSceneryEntryIndex & 0x1F); } set_format_arg(0, rct_string_id, scenerySetEntry->name); - if (!gSilentResearch) { - if (gConfigNotifications.ride_researched) { + if (!gSilentResearch) + { + if (gConfigNotifications.ride_researched) + { news_item_add_to_queue(NEWS_ITEM_RESEARCH, STR_NEWS_ITEM_RESEARCH_NEW_SCENERY_SET_AVAILABLE, entryIndex); } } @@ -313,32 +345,40 @@ void research_update() editorScreenFlags = SCREEN_FLAGS_SCENARIO_EDITOR | SCREEN_FLAGS_TRACK_DESIGNER | SCREEN_FLAGS_TRACK_MANAGER; if (gScreenFlags & editorScreenFlags) + { return; + } if (gScenarioTicks % 32 != 0) + { return; + } researchLevel = gResearchFundingLevel; currentResearchProgress = gResearchProgress; currentResearchProgress += _researchRate[researchLevel]; - if (currentResearchProgress <= 0xFFFF) { + if (currentResearchProgress <= 0xFFFF) + { gResearchProgress = currentResearchProgress; - } else { - switch (gResearchProgressStage) { + } + else + { + switch (gResearchProgressStage) + { case RESEARCH_STAGE_INITIAL_RESEARCH: research_next_design(); research_calculate_expected_date(); break; case RESEARCH_STAGE_DESIGNING: - gResearchProgress = 0; + gResearchProgress = 0; gResearchProgressStage = RESEARCH_STAGE_COMPLETING_DESIGN; research_calculate_expected_date(); research_invalidate_related_windows(); break; case RESEARCH_STAGE_COMPLETING_DESIGN: - research_finish_item((sint32)gResearchNextItem); - gResearchProgress = 0; + research_finish_item(gResearchNextItem); + gResearchProgress = 0; gResearchProgressStage = 0; research_calculate_expected_date(); research_update_uncompleted_types(); @@ -352,25 +392,34 @@ void research_update() * * rct2: 0x00684AC3 */ -void research_reset_current_item(){ - rct_research_item* research = gResearchItems; - for (; research->entryIndex != RESEARCHED_ITEMS_END; research++); +void research_reset_current_item() +{ + rct_research_item * research = gResearchItems; + for (; research->entryIndex != RESEARCHED_ITEMS_END; research++) { } research++; - for (; research->entryIndex != RESEARCHED_ITEMS_END_2; research += 2){ - if (scenario_rand() & 1) continue; + for (; research->entryIndex != RESEARCHED_ITEMS_END_2; research += 2) + { + if (scenario_rand() & 1) + { + continue; + } - rct_research_item* edx = NULL; - rct_research_item* ebp = NULL; - rct_research_item* inner_research = gResearchItems; - do { - if (research->entryIndex == inner_research->entryIndex){ + rct_research_item * edx = NULL; + rct_research_item * ebp = NULL; + rct_research_item * inner_research = gResearchItems; + do + { + if (research->entryIndex == inner_research->entryIndex) + { edx = inner_research; } - if ((research + 1)->entryIndex == inner_research->entryIndex){ + if ((research + 1)->entryIndex == inner_research->entryIndex) + { ebp = inner_research; } - } while ((inner_research++)->entryIndex != RESEARCHED_ITEMS_END); + } + while ((inner_research++)->entryIndex != RESEARCHED_ITEMS_END); assert(edx != NULL); edx->entryIndex = research->entryIndex; assert(ebp != NULL); @@ -381,33 +430,45 @@ void research_reset_current_item(){ ebp->category = cat; } - for (sint32 i = 0; i < 8; ++i){ + for (sint32 i = 0; i < MAX_RESEARCHED_RIDE_TYPES; ++i) + { gResearchedRideTypes[i] = 0; + } + + for (sint32 i = 0; i < MAX_RESEARCHED_RIDE_ENTRIES; ++i) + { gResearchedRideEntries[i] = 0; } - for (sint32 i = 0; i < 56; i++) { + for (sint32 i = 0; i < MAX_RESEARCHED_SCENERY_ITEMS; i++) + { gResearchedSceneryItems[i] = 0xFFFFFFFF; } - for (sint32 i = 0; i < 19; ++i){ - rct_scenery_set_entry* scenery_set = get_scenery_group_entry(i); - if ((intptr_t)scenery_set == -1)continue; + for (sint32 i = 0; i < MAX_SCENERY_GROUP_OBJECTS; ++i) + { + rct_scenery_set_entry * scenery_set = get_scenery_group_entry(i); + if ((intptr_t) scenery_set == -1) + { + continue; + } - for (sint32 j = 0; j < scenery_set->entry_count; ++j){ + for (sint32 j = 0; j < scenery_set->entry_count; ++j) + { uint8 value = scenery_set->scenery_entries[j] & 0x1F; gResearchedSceneryItems[scenery_set->scenery_entries[j] >> 5] &= ~(1UL << value); } } - for (research = gResearchItems; research->entryIndex != RESEARCHED_ITEMS_SEPARATOR; research++){ + for (research = gResearchItems; research->entryIndex != RESEARCHED_ITEMS_SEPARATOR; research++) + { research_finish_item(research->entryIndex); } - gResearchLastItemSubject = (uint32)-1; - gResearchProgressStage = 0; - gResearchProgress = 0; + gResearchLastItemSubject = (uint32) -1; + gResearchProgressStage = 0; + gResearchProgress = 0; } /** @@ -416,47 +477,60 @@ void research_reset_current_item(){ */ void research_remove_non_separate_vehicle_types() { - rct_research_item *researchItem, *researchItem2; + rct_research_item * researchItem, * researchItem2; researchItem = gResearchItems; - while ((researchItem + 1)->entryIndex != RESEARCHED_ITEMS_END) { + while ((researchItem + 1)->entryIndex != RESEARCHED_ITEMS_END) + { researchItem++; } - do { - loopBeginning: + do + { + loopBeginning: if ( researchItem != gResearchItems && researchItem->entryIndex != RESEARCHED_ITEMS_SEPARATOR && researchItem->entryIndex != RESEARCHED_ITEMS_END && researchItem->entryIndex >= RESEARCH_ENTRY_RIDE_MASK - ) { - rct_ride_entry *rideEntry = get_ride_entry(researchItem->entryIndex & 0xFF); - if (!(rideEntry->flags & (RIDE_ENTRY_FLAG_SEPARATE_RIDE))) { + ) + { + rct_ride_entry * rideEntry = get_ride_entry(researchItem->entryIndex & 0xFF); + if (!(rideEntry->flags & (RIDE_ENTRY_FLAG_SEPARATE_RIDE))) + { // Check if ride type already exists further up for a vehicle type that isn't displayed as a ride researchItem2 = researchItem - 1; - do { + do + { if ( researchItem2->entryIndex != RESEARCHED_ITEMS_SEPARATOR && researchItem2->entryIndex >= RESEARCH_ENTRY_RIDE_MASK - ) { + ) + { rideEntry = get_ride_entry(researchItem2->entryIndex & 0xFF); - if (!(rideEntry->flags & (RIDE_ENTRY_FLAG_SEPARATE_RIDE))) { + if (!(rideEntry->flags & (RIDE_ENTRY_FLAG_SEPARATE_RIDE))) + { - if (research_get_ride_base_type(researchItem->entryIndex) == research_get_ride_base_type(researchItem2->entryIndex)) { + if (research_get_ride_base_type(researchItem->entryIndex) == + research_get_ride_base_type(researchItem2->entryIndex)) + { // Remove item researchItem2 = researchItem; - do { + do + { *researchItem2 = *(researchItem2 + 1); - } while ((researchItem2++)->entryIndex != RESEARCHED_ITEMS_END_2); + } + while ((researchItem2++)->entryIndex != RESEARCHED_ITEMS_END_2); goto loopBeginning; } } } - } while ((researchItem2--) != gResearchItems); + } + while ((researchItem2--) != gResearchItems); } } - } while ((researchItem--) != gResearchItems); + } + while ((researchItem--) != gResearchItems); } /** @@ -465,24 +539,28 @@ void research_remove_non_separate_vehicle_types() */ static void research_insert_unresearched(sint32 entryIndex, sint32 category) { - rct_research_item *researchItem, *researchItem2; + rct_research_item * researchItem, * researchItem2; researchItem = gResearchItems; - do { - if (researchItem->entryIndex == RESEARCHED_ITEMS_END) { + do + { + if (researchItem->entryIndex == RESEARCHED_ITEMS_END) + { // Insert slot researchItem2 = researchItem; - while (researchItem2->entryIndex != RESEARCHED_ITEMS_END_2) { + while (researchItem2->entryIndex != RESEARCHED_ITEMS_END_2) + { researchItem2++; } memmove(researchItem + 1, researchItem, (researchItem2 - researchItem + 1) * sizeof(rct_research_item)); // Place new item researchItem->entryIndex = entryIndex; - researchItem->category = category; + researchItem->category = category; break; } - } while (entryIndex != (researchItem++)->entryIndex); + } + while (entryIndex != (researchItem++)->entryIndex); } /** @@ -491,42 +569,55 @@ static void research_insert_unresearched(sint32 entryIndex, sint32 category) */ static void research_insert_researched(sint32 entryIndex, sint32 category) { - rct_research_item *researchItem, *researchItem2; + rct_research_item * researchItem, * researchItem2; researchItem = gResearchItems; // First check to make sure that entry is not already accounted for - for (; researchItem->entryIndex != RESEARCHED_ITEMS_END; researchItem++) { + for (; researchItem->entryIndex != RESEARCHED_ITEMS_END; researchItem++) + { if (researchItem->entryIndex == entryIndex) + { return; + } } researchItem = gResearchItems; - do { - if (researchItem->entryIndex == RESEARCHED_ITEMS_SEPARATOR) { + do + { + if (researchItem->entryIndex == RESEARCHED_ITEMS_SEPARATOR) + { // Insert slot researchItem2 = researchItem; - while (researchItem2->entryIndex != RESEARCHED_ITEMS_END_2) { + while (researchItem2->entryIndex != RESEARCHED_ITEMS_END_2) + { researchItem2++; } memmove(researchItem + 1, researchItem, (researchItem2 - researchItem + 1) * sizeof(rct_research_item)); // Place new item researchItem->entryIndex = entryIndex; - researchItem->category = category; + researchItem->category = category; break; } - } while (entryIndex != (researchItem++)->entryIndex); + } + while (entryIndex != (researchItem++)->entryIndex); } /** * * rct2: 0x006857CF */ -void research_remove(sint32 entryIndex){ - for (rct_research_item *researchItem = gResearchItems; researchItem->entryIndex != RESEARCHED_ITEMS_END; researchItem++){ - if (researchItem->entryIndex == entryIndex){ - do{ +void research_remove(sint32 entryIndex) +{ + for (rct_research_item * researchItem = gResearchItems; + researchItem->entryIndex != RESEARCHED_ITEMS_END; researchItem++) + { + if (researchItem->entryIndex == entryIndex) + { + do + { *researchItem = *(researchItem + 1); - } while (researchItem++->entryIndex != RESEARCHED_ITEMS_END_2); + } + while (researchItem++->entryIndex != RESEARCHED_ITEMS_END_2); return; } } @@ -535,9 +626,13 @@ void research_remove(sint32 entryIndex){ void research_insert(sint32 researched, sint32 entryIndex, sint32 category) { if (researched) + { research_insert_researched(entryIndex, category); + } else + { research_insert_unresearched(entryIndex, category); + } } /** @@ -547,24 +642,33 @@ void research_insert(sint32 researched, sint32 entryIndex, sint32 category) void research_populate_list_random() { // Rides - for (sint32 i = 0; i < 128; i++) { - rct_ride_entry *rideEntry = get_ride_entry(i); - if (rideEntry == (rct_ride_entry*)-1) + for (sint32 i = 0; i < MAX_RIDE_OBJECTS; i++) + { + rct_ride_entry * rideEntry = get_ride_entry(i); + if (rideEntry == (rct_ride_entry *) -1) + { continue; + } sint32 researched = (scenario_rand() & 0xFF) > 128; - for (sint32 j = 0; j < MAX_RIDE_TYPES_PER_RIDE_ENTRY; j++) { + for (sint32 j = 0; j < MAX_RIDE_TYPES_PER_RIDE_ENTRY; j++) + { sint32 rideType = rideEntry->ride_type[j]; if (rideType != RIDE_TYPE_NULL) + { research_insert(researched, RESEARCH_ENTRY_RIDE_MASK | (rideType << 8) | i, rideEntry->category[0]); + } } } // Scenery - for (sint32 i = 0; i < 19; i++) { - rct_scenery_set_entry *scenerySetEntry = get_scenery_group_entry(i); - if (scenerySetEntry == (rct_scenery_set_entry*)-1) + for (sint32 i = 0; i < MAX_SCENERY_GROUP_OBJECTS; i++) + { + rct_scenery_set_entry * scenerySetEntry = get_scenery_group_entry(i); + if (scenerySetEntry == (rct_scenery_set_entry *) -1) + { continue; + } sint32 researched = (scenario_rand() & 0xFF) > 85; research_insert(researched, i, RESEARCH_CATEGORY_SCENERYSET); @@ -574,23 +678,32 @@ void research_populate_list_random() void research_populate_list_researched() { // Rides - for (sint32 i = 0; i < 128; i++) { - rct_ride_entry *rideEntry = get_ride_entry(i); - if (rideEntry == (rct_ride_entry*)-1) + for (sint32 i = 0; i < MAX_RIDE_OBJECTS; i++) + { + rct_ride_entry * rideEntry = get_ride_entry(i); + if (rideEntry == (rct_ride_entry *) -1) + { continue; + } - for (sint32 j = 0; j < MAX_RIDE_TYPES_PER_RIDE_ENTRY; j++) { + for (sint32 j = 0; j < MAX_RIDE_TYPES_PER_RIDE_ENTRY; j++) + { sint32 rideType = rideEntry->ride_type[j]; if (rideType != RIDE_TYPE_NULL) + { research_insert(true, RESEARCH_ENTRY_RIDE_MASK | (rideType << 8) | i, rideEntry->category[0]); + } } } // Scenery - for (sint32 i = 0; i < 19; i++) { - rct_scenery_set_entry *scenerySetEntry = get_scenery_group_entry(i); - if (scenerySetEntry == (rct_scenery_set_entry*)-1) + for (sint32 i = 0; i < MAX_SCENERY_GROUP_OBJECTS; i++) + { + rct_scenery_set_entry * scenerySetEntry = get_scenery_group_entry(i); + if (scenerySetEntry == (rct_scenery_set_entry *) -1) + { continue; + } research_insert(true, i, RESEARCH_CATEGORY_SCENERYSET); } @@ -611,16 +724,19 @@ void research_set_priority(sint32 activeCategories) * * rct2: 0x00684A7F */ -void game_command_set_research_funding(sint32* eax, sint32* ebx, sint32* ecx, sint32* edx, sint32* esi, sint32* edi, sint32* ebp) +void game_command_set_research_funding(sint32 * eax, sint32 * ebx, sint32 * ecx, sint32 * edx, sint32 * esi, sint32 * edi, sint32 * ebp) { - sint32 setPriorities = (*ebx & (1 << 8)) != 0; - sint32 fundingAmount = *edx; + sint32 setPriorities = (*ebx & (1 << 8)) != 0; + uint32 fundingAmount = *edx; sint32 activeCategories = *edx; gCommandExpenditureType = RCT_EXPENDITURE_TYPE_RESEARCH; - if (*ebx & GAME_COMMAND_FLAG_APPLY) { - if (!setPriorities) { - if (fundingAmount < 0 || fundingAmount >= countof(_researchRate)) { + if (*ebx & GAME_COMMAND_FLAG_APPLY) + { + if (!setPriorities) + { + if (fundingAmount >= Util::CountOf(_researchRate)) + { *ebx = MONEY32_UNDEFINED; log_warning("Invalid research rate %d", fundingAmount); return; @@ -628,7 +744,9 @@ void game_command_set_research_funding(sint32* eax, sint32* ebx, sint32* ecx, si gResearchFundingLevel = fundingAmount; } else + { gResearchPriorities = activeCategories; + } window_invalidate_by_class(WC_FINANCES); window_invalidate_by_class(WC_RESEARCH); @@ -639,7 +757,7 @@ void game_command_set_research_funding(sint32* eax, sint32* ebx, sint32* ecx, si void research_insert_ride_entry(uint8 entryIndex, bool researched) { - rct_ride_entry *rideEntry = get_ride_entry(entryIndex); + rct_ride_entry * rideEntry = get_ride_entry(entryIndex); uint8 category = rideEntry->category[0]; for (sint32 i = 0; i < MAX_RIDE_TYPES_PER_RIDE_ENTRY; i++) { @@ -659,16 +777,16 @@ void research_insert_scenery_group_entry(uint8 entryIndex, bool researched) bool ride_type_is_invented(sint32 rideType) { sint32 quadIndex = rideType >> 5; - sint32 bitIndex = rideType & 0x1F; - bool invented = (gResearchedRideTypes[quadIndex] & ((uint32)1 << bitIndex)); + sint32 bitIndex = rideType & 0x1F; + bool invented = (gResearchedRideTypes[quadIndex] & ((uint32) 1 << bitIndex)); return invented; } bool ride_entry_is_invented(sint32 rideEntryIndex) { sint32 quadIndex = rideEntryIndex >> 5; - sint32 bitIndex = rideEntryIndex & 0x1F; - bool invented = (gResearchedRideEntries[quadIndex] & ((uint32)1 << bitIndex)); + sint32 bitIndex = rideEntryIndex & 0x1F; + bool invented = (gResearchedRideEntries[quadIndex] & ((uint32) 1 << bitIndex)); return invented; } @@ -680,28 +798,29 @@ bool track_piece_is_available_for_ride_type(uint8 rideType, sint32 trackType) static void ride_type_set_invented(sint32 rideType) { sint32 quadIndex = rideType >> 5; - sint32 bitIndex = rideType & 0x1F; - gResearchedRideTypes[quadIndex] |= (uint32)1 << bitIndex; + sint32 bitIndex = rideType & 0x1F; + gResearchedRideTypes[quadIndex] |= (uint32) 1 << bitIndex; } static void ride_entry_set_invented(sint32 rideEntryIndex) { sint32 quadIndex = rideEntryIndex >> 5; - sint32 bitIndex = rideEntryIndex & 0x1F; - gResearchedRideEntries[quadIndex] |= (uint32)1 << bitIndex; + sint32 bitIndex = rideEntryIndex & 0x1F; + gResearchedRideEntries[quadIndex] |= (uint32) 1 << bitIndex; } bool scenery_is_invented(uint16 sceneryItem) { sint32 quadIndex = sceneryItem >> 5; - sint32 bitIndex = sceneryItem & 0x1F; - bool invented = (gResearchedSceneryItems[quadIndex] & ((uint32)1 << bitIndex)); + sint32 bitIndex = sceneryItem & 0x1F; + bool invented = (gResearchedSceneryItems[quadIndex] & ((uint32) 1 << bitIndex)); return invented; } void reset_researched_scenery_items() { - for (sint32 i = 0; i < MAX_RESEARCHED_SCENERY_ITEMS; i++) { + for (sint32 i = 0; i < MAX_RESEARCHED_SCENERY_ITEMS; i++) + { gResearchedSceneryItems[i] = 0xFFFFFFFF; } } @@ -709,11 +828,13 @@ void reset_researched_scenery_items() 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++) { + for (sint32 i = 0; i < MAX_RESEARCHED_RIDE_TYPES; i++) + { gResearchedRideTypes[i] = 0xFFFFFFFF; } - for (sint32 i = 0; i < MAX_RESEARCHED_RIDE_ENTRIES; i++) { + for (sint32 i = 0; i < MAX_RESEARCHED_RIDE_ENTRIES; i++) + { gResearchedRideEntries[i] = 0xFFFFFFFF; } } @@ -726,8 +847,8 @@ rct_string_id research_item_get_name(uint32 researchItem) { if (researchItem >= RESEARCH_ENTRY_RIDE_MASK) { - rct_ride_entry *rideEntry = get_ride_entry(researchItem & 0xFF); - if (rideEntry == NULL || rideEntry == (rct_ride_entry*)-1) + rct_ride_entry * rideEntry = get_ride_entry(researchItem & 0xFF); + if (rideEntry == NULL || rideEntry == (rct_ride_entry *) -1) { return 0; } @@ -744,8 +865,8 @@ rct_string_id research_item_get_name(uint32 researchItem) } else { - rct_scenery_set_entry *sceneryEntry = get_scenery_group_entry(researchItem & 0xFF); - if (sceneryEntry == NULL || sceneryEntry == (rct_scenery_set_entry*)-1) + rct_scenery_set_entry * sceneryEntry = get_scenery_group_entry(researchItem & 0xFF); + if (sceneryEntry == NULL || sceneryEntry == (rct_scenery_set_entry *) -1) { return 0; } @@ -779,9 +900,9 @@ rct_string_id research_get_friendly_base_ride_type_name(uint8 trackType, rct_rid } else { - if (ride_type_has_ride_groups(trackType)) + if (RideGroupManager::RideTypeHasRideGroups(trackType)) { - const RideGroup * rideGroup = get_ride_group(trackType, rideEntry); + const RideGroup * rideGroup = RideGroupManager::GetRideGroup(trackType, rideEntry); return rideGroup->Naming.name; } else diff --git a/src/openrct2/management/research.h b/src/openrct2/management/Research.h similarity index 91% rename from src/openrct2/management/research.h rename to src/openrct2/management/Research.h index 33e5e94791..a0a665e0a1 100644 --- a/src/openrct2/management/research.h +++ b/src/openrct2/management/Research.h @@ -41,11 +41,11 @@ 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 +#define MAX_RESEARCH_ITEMS 500 +#define MAX_RESEARCHED_SCENERY_ITEMS 56 +#define MAX_RESEARCHED_RIDE_TYPES 8 // Really 256, since there are 32 bits per uint32. +#define MAX_RESEARCHED_RIDE_ENTRIES 8 // Really 256, since there are 32 bits per uint32. +#define MAX_RESEARCHED_TRACK_TYPES 128 #define RESEARCH_ENTRY_RIDE_MASK 0x10000 @@ -92,8 +92,6 @@ extern rct_research_item gResearchItems[MAX_RESEARCH_ITEMS]; extern uint8 gResearchUncompletedCategories; 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; @@ -108,7 +106,7 @@ void research_populate_list_researched(); void research_set_funding(sint32 amount); void research_set_priority(sint32 activeCategories); void game_command_set_research_funding(sint32* eax, sint32* ebx, sint32* ecx, sint32* edx, sint32* esi, sint32* edi, sint32* ebp); -void research_finish_item(sint32 entryIndex); +void research_finish_item(uint32 entryIndex); void research_insert(sint32 researched, sint32 entryIndex, sint32 category); void research_remove(sint32 entryIndex); diff --git a/src/openrct2/rct1.h b/src/openrct2/rct1.h index 744f17e57d..38bdfa1c0c 100644 --- a/src/openrct2/rct1.h +++ b/src/openrct2/rct1.h @@ -19,7 +19,7 @@ #include "management/award.h" #include "management/news_item.h" -#include "management/research.h" +#include "management/Research.h" #include "rct12.h" #include "ride/ride.h" #include "world/banner.h" diff --git a/src/openrct2/rct2/S6Exporter.cpp b/src/openrct2/rct2/S6Exporter.cpp index bd4b29b59a..759b0289e8 100644 --- a/src/openrct2/rct2/S6Exporter.cpp +++ b/src/openrct2/rct2/S6Exporter.cpp @@ -36,7 +36,7 @@ #include "../management/finance.h" #include "../management/marketing.h" #include "../management/news_item.h" -#include "../management/research.h" +#include "../management/Research.h" #include "../object.h" #include "../OpenRCT2.h" #include "../peep/staff.h" diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp index 610fc1ccf0..b6677b93bf 100644 --- a/src/openrct2/rct2/S6Importer.cpp +++ b/src/openrct2/rct2/S6Importer.cpp @@ -38,7 +38,7 @@ #include "../management/finance.h" #include "../management/marketing.h" #include "../management/news_item.h" -#include "../management/research.h" +#include "../management/Research.h" #include "../OpenRCT2.h" #include "../peep/staff.h" #include "../ride/ride.h" diff --git a/src/openrct2/ride/RideGroupManager.cpp b/src/openrct2/ride/RideGroupManager.cpp index ee306f45ee..15597fc63c 100644 --- a/src/openrct2/ride/RideGroupManager.cpp +++ b/src/openrct2/ride/RideGroupManager.cpp @@ -21,7 +21,7 @@ #include "../core/String.hpp" #include "../localisation/string_ids.h" -#include "../management/research.h" +#include "../management/Research.h" #include "ride.h" #include "ride_data.h" #include "track.h" @@ -328,9 +328,4 @@ extern "C" { return RideGroupManager::RideTypeHasRideGroups(rideType); } - - bool ride_group_is_invented(const RideGroup * rideGroup) - { - return RideGroupManager::RideGroupIsInvented(rideGroup); - } } diff --git a/src/openrct2/ride/RideGroupManager.h b/src/openrct2/ride/RideGroupManager.h index 6fad67dcba..9c415e126b 100644 --- a/src/openrct2/ride/RideGroupManager.h +++ b/src/openrct2/ride/RideGroupManager.h @@ -58,7 +58,6 @@ extern "C" #endif const RideGroup * get_ride_group(uint8 rideType, rct_ride_entry * rideEntry); bool ride_type_has_ride_groups(uint8 rideType); - bool ride_group_is_invented(const RideGroup * rideGroup); #ifdef __cplusplus } #endif diff --git a/src/openrct2/scenario/scenario.c b/src/openrct2/scenario/scenario.c index 833843b198..bab2b15a8b 100644 --- a/src/openrct2/scenario/scenario.c +++ b/src/openrct2/scenario/scenario.c @@ -26,7 +26,7 @@ #include "../management/finance.h" #include "../management/marketing.h" #include "../management/news_item.h" -#include "../management/research.h" +#include "../management/Research.h" #include "../network/network.h" #include "../object.h" #include "../object_list.h" diff --git a/src/openrct2/scenario/scenario.h b/src/openrct2/scenario/scenario.h index f95b90af2a..5ac44c0655 100644 --- a/src/openrct2/scenario/scenario.h +++ b/src/openrct2/scenario/scenario.h @@ -19,7 +19,7 @@ #include "../common.h" #include "../management/finance.h" -#include "../management/research.h" +#include "../management/Research.h" #include "../object.h" #include "../rct12.h" #include "../rct2.h" diff --git a/src/openrct2/world/park.c b/src/openrct2/world/park.c index 84ba4ca52d..672ce71a91 100644 --- a/src/openrct2/world/park.c +++ b/src/openrct2/world/park.c @@ -24,7 +24,7 @@ #include "../management/finance.h" #include "../management/marketing.h" #include "../management/news_item.h" -#include "../management/research.h" +#include "../management/Research.h" #include "../network/network.h" #include "../OpenRCT2.h" #include "../peep/peep.h"