mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-26 08:05:21 -07:00
Added recalculate_accessible_checks debug console command.
This commit is contained in:
parent
c95d846115
commit
4ec676f642
2 changed files with 8 additions and 38 deletions
|
@ -1406,6 +1406,11 @@ static bool SfxHandler(std::shared_ptr<Ship::Console> Console, const std::vector
|
|||
return 0;
|
||||
}
|
||||
|
||||
static bool RecalculateAccessibleChecksHandler(std::shared_ptr<Ship::Console> Console, const std::vector<std::string>& args, std::string* output) {
|
||||
CheckTracker::RecalculateAccessibleChecks();
|
||||
return 0;
|
||||
}
|
||||
|
||||
void DebugConsole_Init(void) {
|
||||
// Console
|
||||
CMD_REGISTER("file_select", {FileSelectHandler, "Returns to the file select."});
|
||||
|
@ -1595,5 +1600,7 @@ void DebugConsole_Init(void) {
|
|||
{"group_name", Ship::ArgumentType::TEXT, true},
|
||||
}});
|
||||
|
||||
CMD_REGISTER("recalculate_accessible_checks", {RecalculateAccessibleChecksHandler, "Recalculate accessible checks."});
|
||||
|
||||
Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame();
|
||||
}
|
||||
|
|
|
@ -826,9 +826,7 @@ void LoadFile() {
|
|||
UpdateAllAreas();
|
||||
|
||||
if (gSaveContext.fileNum >= 0 && gSaveContext.fileNum <= 2) {
|
||||
if (areaTable[RR_ROOT].regionName.empty()) {
|
||||
RegionTable_Init();
|
||||
}
|
||||
RecalculateAccessibleChecks();
|
||||
}
|
||||
}
|
||||
|
@ -1729,41 +1727,6 @@ void ImGuiDrawTwoColorPickerSection(const char* text, const char* cvarMainName,
|
|||
}
|
||||
}
|
||||
|
||||
void CalculateAccessibleEntrances(const Region& region,
|
||||
bool isParentAccessible,
|
||||
std::unordered_map<const Rando::Entrance*, bool>& entranceAccessible,
|
||||
std::vector<RandomizerRegion>& visitedRegions,
|
||||
std::stop_token stopToken) {
|
||||
for (const auto& entranceInRegion : region.exits) {
|
||||
if (stopToken.stop_requested()) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto pair = entranceAccessible.find(&entranceInRegion);
|
||||
bool isEntranceAccessible = true;
|
||||
if (pair == entranceAccessible.end()) {
|
||||
isEntranceAccessible = isParentAccessible && entranceInRegion.GetConditionsMet();
|
||||
entranceAccessible[&entranceInRegion] = isEntranceAccessible;
|
||||
} else if (!pair->second) {
|
||||
isEntranceAccessible = isParentAccessible && entranceInRegion.GetConditionsMet();
|
||||
pair->second = isEntranceAccessible;
|
||||
}
|
||||
else {
|
||||
return;
|
||||
}
|
||||
|
||||
if (std::find(visitedRegions.begin(), visitedRegions.end(), entranceInRegion.GetConnectedRegionKey()) == visitedRegions.end()) {
|
||||
visitedRegions.emplace_back(entranceInRegion.GetConnectedRegionKey());
|
||||
CalculateAccessibleEntrances(*entranceInRegion.GetConnectedRegion(),
|
||||
isEntranceAccessible,
|
||||
entranceAccessible,
|
||||
visitedRegions,
|
||||
stopToken);
|
||||
visitedRegions.pop_back();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void RecalculateAccessibleChecks() {
|
||||
StartPerformanceTimer(PT_RECALCULATE_ACCESSIBLE_CHECKS);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue