mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-22 22:33:43 -07:00
Updated ApplyEntranceOverrides.
This commit is contained in:
parent
4e17050e0c
commit
467e96c6b7
1 changed files with 22 additions and 11 deletions
|
@ -1665,33 +1665,44 @@ void EntranceShuffler::ParseJson(nlohmann::json spoilerFileJson) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void EntranceShuffler::ApplyEntranceOverrides() {
|
void EntranceShuffler::ApplyEntranceOverrides() {
|
||||||
std::vector<EntranceInfoPair> shuffledEntrances;
|
std::unordered_map<uint32_t, Entrance*> randomizerRegionToEntranceMap;
|
||||||
shuffledEntrances.reserve(entranceOverrides.size());
|
for (uint32_t rr = RR_NONE; rr < RR_MAX; rr++) {
|
||||||
|
for (auto& exit : areaTable[rr].exits) {
|
||||||
|
uint32_t key = rr << 16 | (uint32_t)exit.GetConnectedRegionKey();
|
||||||
|
randomizerRegionToEntranceMap[key] = &exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (size_t i = 0; i < entranceOverrides.size(); i++) {
|
for (size_t i = 0; i < entranceOverrides.size(); i++) {
|
||||||
EntranceOverride entranceOverride = entranceOverrides[i];
|
EntranceOverride entranceOverride = entranceOverrides[i];
|
||||||
|
|
||||||
const EntranceLinkInfo* forwardInfo;
|
const EntranceLinkInfo* entranceInfo;
|
||||||
const EntranceLinkInfo* returnInfo;
|
const EntranceLinkInfo* overridenEntranceInfo;
|
||||||
for (const auto& pair : entranceShuffleTable) {
|
for (const auto& pair : entranceShuffleTable) {
|
||||||
if (pair.first.index == entranceOverride.index) {
|
if (pair.first.index == entranceOverride.index) {
|
||||||
forwardInfo = &pair.first;
|
entranceInfo = &pair.first;
|
||||||
}
|
}
|
||||||
if (pair.second.index == entranceOverride.index) {
|
if (pair.second.index == entranceOverride.index) {
|
||||||
forwardInfo = &pair.second;
|
entranceInfo = &pair.second;
|
||||||
}
|
}
|
||||||
if (pair.first.index == entranceOverride.override) {
|
if (pair.first.index == entranceOverride.override) {
|
||||||
returnInfo = &pair.first;
|
overridenEntranceInfo = &pair.first;
|
||||||
}
|
}
|
||||||
if (pair.second.index == entranceOverride.override) {
|
if (pair.second.index == entranceOverride.override) {
|
||||||
returnInfo = &pair.second;
|
overridenEntranceInfo = &pair.second;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
shuffledEntrances.push_back({ *forwardInfo, *returnInfo });
|
uint32_t entranceKey = (uint32_t)entranceInfo->parentRegion << 16 | (uint32_t)entranceInfo->connectedRegion;
|
||||||
}
|
Entrance* entrance = randomizerRegionToEntranceMap[entranceKey];
|
||||||
|
uint32_t overridenEntranceKey = (uint32_t)overridenEntranceInfo->parentRegion << 16 | (uint32_t)overridenEntranceInfo->connectedRegion;
|
||||||
|
Entrance* overridenEntrance = randomizerRegionToEntranceMap[overridenEntranceKey];
|
||||||
|
|
||||||
SetAllEntrancesData(shuffledEntrances);
|
entrance->Disconnect();
|
||||||
|
entrance->Connect(overridenEntranceInfo->connectedRegion);
|
||||||
|
overridenEntrance->Disconnect();
|
||||||
|
overridenEntrance->Connect(entranceInfo->connectedRegion);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} // namespace Rando
|
} // namespace Rando
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue