mirror of https://github.com/OpenRCT2/OpenRCT2.git
* Remove unused symbols in Research.h * Move RCT12ResearchItem conversion out of Research.cpp/h
This commit is contained in:
parent
819495800c
commit
2fa33983ad
|
@ -15,6 +15,7 @@
|
||||||
#include "core/String.hpp"
|
#include "core/String.hpp"
|
||||||
#include "park/ParkFile.h"
|
#include "park/ParkFile.h"
|
||||||
#include "rct12/SawyerChunkReader.h"
|
#include "rct12/SawyerChunkReader.h"
|
||||||
|
#include "rct2/RCT2.h"
|
||||||
#include "scenario/Scenario.h"
|
#include "scenario/Scenario.h"
|
||||||
#include "util/SawyerCoding.h"
|
#include "util/SawyerCoding.h"
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
#include "../localisation/StringIds.h"
|
#include "../localisation/StringIds.h"
|
||||||
#include "../object/ObjectList.h"
|
#include "../object/ObjectList.h"
|
||||||
#include "../object/RideObject.h"
|
#include "../object/RideObject.h"
|
||||||
#include "../rct1/RCT1.h"
|
|
||||||
#include "../ride/Ride.h"
|
#include "../ride/Ride.h"
|
||||||
#include "../ride/RideData.h"
|
#include "../ride/RideData.h"
|
||||||
#include "../ride/RideEntry.h"
|
#include "../ride/RideEntry.h"
|
||||||
|
@ -68,35 +67,6 @@ static bool _researchedSceneryItems[SCENERY_TYPE_COUNT][UINT16_MAX];
|
||||||
|
|
||||||
bool gSilentResearch = false;
|
bool gSilentResearch = false;
|
||||||
|
|
||||||
// TODO: MOVE TO S4/6 IMPORT
|
|
||||||
ResearchItem::ResearchItem(const RCT12ResearchItem& oldResearchItem)
|
|
||||||
{
|
|
||||||
if (oldResearchItem.IsInventedEndMarker() || oldResearchItem.IsUninventedEndMarker() || oldResearchItem.IsRandomEndMarker())
|
|
||||||
{
|
|
||||||
rawValue = 0;
|
|
||||||
flags = 0;
|
|
||||||
category = ResearchCategory::Transport;
|
|
||||||
SetNull();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
type = Research::EntryType{ oldResearchItem.type };
|
|
||||||
entryIndex = RCTEntryIndexToOpenRCT2EntryIndex(oldResearchItem.entryIndex);
|
|
||||||
flags = oldResearchItem.flags;
|
|
||||||
category = static_cast<ResearchCategory>(oldResearchItem.category);
|
|
||||||
if (type == Research::EntryType::Ride)
|
|
||||||
{
|
|
||||||
auto* rideEntry = get_ride_entry(entryIndex);
|
|
||||||
baseRideType = rideEntry != nullptr ? RCT2::RCT2RideTypeToOpenRCT2RideType(oldResearchItem.baseRideType, rideEntry)
|
|
||||||
: oldResearchItem.baseRideType;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
baseRideType = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* rct2: 0x006671AD, part of 0x00667132
|
* rct2: 0x006671AD, part of 0x00667132
|
||||||
|
|
|
@ -10,8 +10,8 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "../common.h"
|
#include "../common.h"
|
||||||
|
#include "../object/Object.h"
|
||||||
#include "../object/ObjectLimits.h"
|
#include "../object/ObjectLimits.h"
|
||||||
#include "../rct2/RCT2.h"
|
|
||||||
#include "../util/Util.h"
|
#include "../util/Util.h"
|
||||||
|
|
||||||
#include <optional>
|
#include <optional>
|
||||||
|
@ -87,35 +87,9 @@ struct ResearchItem
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
RCT12ResearchItem ToRCT12ResearchItem() const
|
|
||||||
{
|
|
||||||
RCT12ResearchItem retItem = {};
|
|
||||||
if (IsNull())
|
|
||||||
{
|
|
||||||
retItem.rawValue = RCT12_RESEARCHED_ITEMS_SEPARATOR;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
retItem.entryIndex = OpenRCT2EntryIndexToRCTEntryIndex(entryIndex);
|
|
||||||
retItem.baseRideType = RCT2::OpenRCT2RideTypeToRCT2RideType(baseRideType);
|
|
||||||
retItem.type = static_cast<uint8_t>(type);
|
|
||||||
retItem.flags = (flags & ~RESEARCH_ENTRY_FLAG_FIRST_OF_TYPE);
|
|
||||||
retItem.category = EnumValue(category);
|
|
||||||
}
|
|
||||||
|
|
||||||
return retItem;
|
|
||||||
}
|
|
||||||
|
|
||||||
ResearchItem(const RCT12ResearchItem& oldResearchItem);
|
|
||||||
|
|
||||||
bool operator==(const ResearchItem& rhs) const;
|
bool operator==(const ResearchItem& rhs) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Only used to mark as null nowadays. Deprecated. TODO: remove.
|
|
||||||
#define RESEARCH_ITEM_NULL 0xFFFFFFFF
|
|
||||||
|
|
||||||
#define MAX_RESEARCH_ITEMS 500
|
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
RESEARCH_FUNDING_NONE,
|
RESEARCH_FUNDING_NONE,
|
||||||
|
|
|
@ -13,6 +13,8 @@
|
||||||
#include "../localisation/Formatting.h"
|
#include "../localisation/Formatting.h"
|
||||||
#include "../localisation/Localisation.h"
|
#include "../localisation/Localisation.h"
|
||||||
#include "../object/ObjectList.h"
|
#include "../object/ObjectList.h"
|
||||||
|
#include "../rct2/RCT2.h"
|
||||||
|
#include "../ride/Ride.h"
|
||||||
#include "../ride/Track.h"
|
#include "../ride/Track.h"
|
||||||
#include "../scenario/Scenario.h"
|
#include "../scenario/Scenario.h"
|
||||||
#include "../world/Banner.h"
|
#include "../world/Banner.h"
|
||||||
|
@ -911,3 +913,34 @@ money32 OpenRCT2CompletedCompanyValueToRCT12(money64 origValue)
|
||||||
|
|
||||||
return ToMoney32(origValue);
|
return ToMoney32(origValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ResearchItem RCT12ResearchItem::ToResearchItem() const
|
||||||
|
{
|
||||||
|
auto newResearchItem = ResearchItem();
|
||||||
|
if (IsInventedEndMarker() || IsUninventedEndMarker() || IsRandomEndMarker())
|
||||||
|
{
|
||||||
|
newResearchItem.rawValue = 0;
|
||||||
|
newResearchItem.flags = 0;
|
||||||
|
newResearchItem.category = ResearchCategory::Transport;
|
||||||
|
newResearchItem.SetNull();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
newResearchItem.type = Research::EntryType{ type };
|
||||||
|
newResearchItem.entryIndex = RCTEntryIndexToOpenRCT2EntryIndex(entryIndex);
|
||||||
|
newResearchItem.flags = flags;
|
||||||
|
newResearchItem.category = static_cast<ResearchCategory>(category);
|
||||||
|
if (newResearchItem.type == Research::EntryType::Ride)
|
||||||
|
{
|
||||||
|
auto* rideEntry = get_ride_entry(newResearchItem.entryIndex);
|
||||||
|
newResearchItem.baseRideType = rideEntry != nullptr ? RCT2::RCT2RideTypeToOpenRCT2RideType(baseRideType, rideEntry)
|
||||||
|
: baseRideType;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
newResearchItem.baseRideType = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return newResearchItem;
|
||||||
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
// Structures shared between both RCT1 and RCT2.
|
// Structures shared between both RCT1 and RCT2.
|
||||||
|
|
||||||
#include "../common.h"
|
#include "../common.h"
|
||||||
|
#include "../management/Research.h"
|
||||||
#include "../object/Object.h"
|
#include "../object/Object.h"
|
||||||
#include "../ride/RideTypes.h"
|
#include "../ride/RideTypes.h"
|
||||||
#include "../world/tile_element/TileElementType.h"
|
#include "../world/tile_element/TileElementType.h"
|
||||||
|
@ -838,6 +839,8 @@ struct RCT12ResearchItem
|
||||||
bool IsInventedEndMarker() const;
|
bool IsInventedEndMarker() const;
|
||||||
bool IsRandomEndMarker() const;
|
bool IsRandomEndMarker() const;
|
||||||
bool IsUninventedEndMarker() const;
|
bool IsUninventedEndMarker() const;
|
||||||
|
|
||||||
|
ResearchItem ToResearchItem() const;
|
||||||
};
|
};
|
||||||
assert_struct_size(RCT12ResearchItem, 5);
|
assert_struct_size(RCT12ResearchItem, 5);
|
||||||
|
|
||||||
|
|
|
@ -299,13 +299,14 @@ namespace RCT2
|
||||||
gResearchPriorities = _s6.active_research_types;
|
gResearchPriorities = _s6.active_research_types;
|
||||||
gResearchProgressStage = _s6.research_progress_stage;
|
gResearchProgressStage = _s6.research_progress_stage;
|
||||||
if (_s6.last_researched_item_subject != RCT12_RESEARCHED_ITEMS_SEPARATOR)
|
if (_s6.last_researched_item_subject != RCT12_RESEARCHED_ITEMS_SEPARATOR)
|
||||||
gResearchLastItem = ResearchItem(
|
gResearchLastItem = RCT12ResearchItem{ _s6.last_researched_item_subject,
|
||||||
RCT12ResearchItem{ _s6.last_researched_item_subject, EnumValue(ResearchCategory::Transport) });
|
EnumValue(ResearchCategory::Transport) }
|
||||||
|
.ToResearchItem();
|
||||||
else
|
else
|
||||||
gResearchLastItem = std::nullopt;
|
gResearchLastItem = std::nullopt;
|
||||||
// pad_01357CF8
|
// pad_01357CF8
|
||||||
if (_s6.next_research_item != RCT12_RESEARCHED_ITEMS_SEPARATOR)
|
if (_s6.next_research_item != RCT12_RESEARCHED_ITEMS_SEPARATOR)
|
||||||
gResearchNextItem = ResearchItem(RCT12ResearchItem{ _s6.next_research_item, _s6.next_research_category });
|
gResearchNextItem = RCT12ResearchItem{ _s6.next_research_item, _s6.next_research_category }.ToResearchItem();
|
||||||
else
|
else
|
||||||
gResearchNextItem = std::nullopt;
|
gResearchNextItem = std::nullopt;
|
||||||
|
|
||||||
|
@ -1003,9 +1004,9 @@ namespace RCT2
|
||||||
}
|
}
|
||||||
|
|
||||||
if (invented)
|
if (invented)
|
||||||
gResearchItemsInvented.emplace_back(researchItem);
|
gResearchItemsInvented.emplace_back(researchItem.ToResearchItem());
|
||||||
else
|
else
|
||||||
gResearchItemsUninvented.emplace_back(researchItem);
|
gResearchItemsUninvented.emplace_back(researchItem.ToResearchItem());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue