mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-23 06:35:33 -07:00
Updated ApplyEntranceOverrides.
This commit is contained in:
parent
467e96c6b7
commit
5add175d3c
1 changed files with 10 additions and 27 deletions
|
@ -1665,43 +1665,26 @@ void EntranceShuffler::ParseJson(nlohmann::json spoilerFileJson) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void EntranceShuffler::ApplyEntranceOverrides() {
|
void EntranceShuffler::ApplyEntranceOverrides() {
|
||||||
std::unordered_map<uint32_t, Entrance*> randomizerRegionToEntranceMap;
|
SetAllEntrancesData(entranceShuffleTable);
|
||||||
|
|
||||||
|
std::unordered_map<int16_t, Entrance*> entrances;
|
||||||
for (uint32_t rr = RR_NONE; rr < RR_MAX; rr++) {
|
for (uint32_t rr = RR_NONE; rr < RR_MAX; rr++) {
|
||||||
for (auto& exit : areaTable[rr].exits) {
|
for (auto& exit : areaTable[rr].exits) {
|
||||||
uint32_t key = rr << 16 | (uint32_t)exit.GetConnectedRegionKey();
|
int16_t index = exit.GetIndex();
|
||||||
randomizerRegionToEntranceMap[key] = &exit;
|
if (index != -1) {
|
||||||
|
entrances[index] = &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* entranceInfo;
|
Entrance* entrance = entrances[entranceOverride.index];
|
||||||
const EntranceLinkInfo* overridenEntranceInfo;
|
Entrance* overrideEntrance = entrances[entranceOverride.override];
|
||||||
for (const auto& pair : entranceShuffleTable) {
|
|
||||||
if (pair.first.index == entranceOverride.index) {
|
|
||||||
entranceInfo = &pair.first;
|
|
||||||
}
|
|
||||||
if (pair.second.index == entranceOverride.index) {
|
|
||||||
entranceInfo = &pair.second;
|
|
||||||
}
|
|
||||||
if (pair.first.index == entranceOverride.override) {
|
|
||||||
overridenEntranceInfo = &pair.first;
|
|
||||||
}
|
|
||||||
if (pair.second.index == entranceOverride.override) {
|
|
||||||
overridenEntranceInfo = &pair.second;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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];
|
|
||||||
|
|
||||||
entrance->Disconnect();
|
entrance->Disconnect();
|
||||||
entrance->Connect(overridenEntranceInfo->connectedRegion);
|
entrance->Connect(overrideEntrance->GetOriginalConnectedRegionKey());
|
||||||
overridenEntrance->Disconnect();
|
|
||||||
overridenEntrance->Connect(entranceInfo->connectedRegion);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // namespace Rando
|
} // namespace Rando
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue