From daa00147d5e1df08d9da19adb2d9df63e99b8c91 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sun, 16 Jun 2019 21:17:02 +0200 Subject: [PATCH] Split off RCT12ResearchItem --- src/openrct2/management/Research.cpp | 10 --------- src/openrct2/rct12/RCT12.cpp | 15 ++++++++++++++ src/openrct2/rct12/RCT12.h | 31 ++++++++++++++++++++++++++++ src/openrct2/scenario/Scenario.h | 2 +- 4 files changed, 47 insertions(+), 11 deletions(-) diff --git a/src/openrct2/management/Research.cpp b/src/openrct2/management/Research.cpp index 581beed56e..48f10c4743 100644 --- a/src/openrct2/management/Research.cpp +++ b/src/openrct2/management/Research.cpp @@ -1006,13 +1006,3 @@ bool rct_research_item::IsInventedEndMarker() const { return rawValue == RESEARCHED_ITEMS_SEPARATOR; } - -bool rct_research_item::IsUninventedEndMarker() const -{ - return rawValue == RESEARCHED_ITEMS_END; -} - -bool rct_research_item::IsRandomEndMarker() const -{ - return rawValue == RESEARCHED_ITEMS_END_2; -} diff --git a/src/openrct2/rct12/RCT12.cpp b/src/openrct2/rct12/RCT12.cpp index c94e2c2933..c3f3e5c9c3 100644 --- a/src/openrct2/rct12/RCT12.cpp +++ b/src/openrct2/rct12/RCT12.cpp @@ -915,3 +915,18 @@ void RCT12BannerElement::SetAllowedEdges(uint8_t newEdges) flags &= ~0b00001111; flags |= (newEdges & 0b00001111); } + +bool RCT12ResearchItem::IsInventedEndMarker() const +{ + return rawValue == RCT12_RESEARCHED_ITEMS_SEPARATOR; +} + +bool RCT12ResearchItem::IsUninventedEndMarker() const +{ + return rawValue == RCT12_RESEARCHED_ITEMS_END; +} + +bool RCT12ResearchItem::IsRandomEndMarker() const +{ + return rawValue == RCT12_RESEARCHED_ITEMS_END_2; +} diff --git a/src/openrct2/rct12/RCT12.h b/src/openrct2/rct12/RCT12.h index 8e8c5821fb..bfcbce33d4 100644 --- a/src/openrct2/rct12/RCT12.h +++ b/src/openrct2/rct12/RCT12.h @@ -49,6 +49,7 @@ constexpr uint16_t const RCT12_MAX_INVERSIONS = 31; constexpr uint16_t const RCT12_MAX_GOLF_HOLES = 31; constexpr uint16_t const RCT12_MAX_HELICES = 31; +<<<<<<< HEAD enum class RCT12TrackDesignVersion : uint8_t { TD4, @@ -56,6 +57,14 @@ enum class RCT12TrackDesignVersion : uint8_t TD6, unknown }; +======= +// Everything before this point has been researched +#define RCT12_RESEARCHED_ITEMS_SEPARATOR (-1) +// Everything before this point and after separator still requires research +#define RCT12_RESEARCHED_ITEMS_END (-2) +// Extra end of list entry. Leftover from RCT1. +#define RCT12_RESEARCHED_ITEMS_END_2 (-3) +>>>>>>> 04e9e626d... Split off RCT12ResearchItem #pragma pack(push, 1) @@ -658,6 +667,28 @@ struct RCT12MapAnimation }; assert_struct_size(RCT12MapAnimation, 6); +struct RCT12ResearchItem +{ + // Bit 16 (0: scenery entry, 1: ride entry) + union + { + int32_t rawValue; + struct + { + uint8_t entryIndex; + uint8_t baseRideType; + uint8_t type; // 0: scenery entry, 1: ride entry + uint8_t flags; + }; + }; + uint8_t category; + + bool IsInventedEndMarker() const; + bool IsRandomEndMarker() const; + bool IsUninventedEndMarker() const; +}; +assert_struct_size(RCT12ResearchItem, 5); + #pragma pack(pop) bool is_user_string_id(rct_string_id stringId); diff --git a/src/openrct2/scenario/Scenario.h b/src/openrct2/scenario/Scenario.h index ecb9918236..5b6c97483e 100644 --- a/src/openrct2/scenario/Scenario.h +++ b/src/openrct2/scenario/Scenario.h @@ -238,7 +238,7 @@ struct rct_s6_data uint8_t last_entrance_style; uint8_t rct1_water_colour; uint8_t pad_01358842[2]; - rct_research_item research_items[MAX_RESEARCH_ITEMS]; + RCT12ResearchItem research_items[MAX_RESEARCH_ITEMS]; uint16_t map_base_z; char scenario_name[64]; char scenario_description[256];