mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-02-23 14:22:16 -05:00
start filtering
This commit is contained in:
parent
dbb4e3eefc
commit
5ac69e0bd8
@ -3748,14 +3748,25 @@ void DrawRandoEditor(bool& open) {
|
|||||||
|
|
||||||
ImGui::BeginChild("ChildRandomizedLocations");
|
ImGui::BeginChild("ChildRandomizedLocations");
|
||||||
for (auto areaIt : RandomizerCheckObjects::GetAllRCAreas()) {
|
for (auto areaIt : RandomizerCheckObjects::GetAllRCAreas()) {
|
||||||
// todo fix this, it's hacky and we shouldn't need to iterate through so many times
|
// todo fix this, it's hacky and copypasta
|
||||||
bool hasItems = false;
|
bool hasItems = false;
|
||||||
for (auto locationIt : RandomizerCheckObjects::GetAllRCObjects()) {
|
for (auto locationIt : RandomizerCheckObjects::GetAllRCObjects()) {
|
||||||
if (!excludedLocations.count(locationIt.second.rc) &&
|
if (!excludedLocations.count(locationIt.second.rc) &&
|
||||||
|
locationIt.second.vOrMQ != RCVORMQ_MQ && //disable all MQ checks until we support them
|
||||||
|
locationIt.second.rcType != RCTYPE_SHOP && //disable shops until we have shopsanity
|
||||||
|
locationIt.second.rcType != RCTYPE_GOSSIP_STONE &&
|
||||||
|
locationIt.second.rcType != RCTYPE_LINKS_POCKET &&
|
||||||
|
locationIt.second.rcType != RCTYPE_CHEST_GAME &&
|
||||||
|
((locationIt.second.rcType != RCTYPE_SKULL_TOKEN) ||
|
||||||
|
(CVar_GetS32("gRandomizeShuffleTokens", 0) == 3) || // all tokens
|
||||||
|
((CVar_GetS32("gRandomizeShuffleTokens", 0) == 2) && RandomizerCheckObjects::AreaIsOverworld(areaIt.first)) || // overworld tokens
|
||||||
|
((CVar_GetS32("gRandomizeShuffleTokens", 0) == 1) && RandomizerCheckObjects::AreaIsDungeon(areaIt.first)) // dungeon tokens
|
||||||
|
) &&
|
||||||
locationIt.second.rcArea == areaIt.first &&
|
locationIt.second.rcArea == areaIt.first &&
|
||||||
locationSearch.PassFilter(locationIt.second.rcSpoilerName.c_str())) {
|
locationSearch.PassFilter(locationIt.second.rcSpoilerName.c_str())) {
|
||||||
hasItems = true;
|
|
||||||
break;
|
hasItems = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3764,8 +3775,19 @@ void DrawRandoEditor(bool& open) {
|
|||||||
if (ImGui::TreeNode(areaIt.second.c_str())) {
|
if (ImGui::TreeNode(areaIt.second.c_str())) {
|
||||||
for (auto locationIt : RandomizerCheckObjects::GetAllRCObjects()) {
|
for (auto locationIt : RandomizerCheckObjects::GetAllRCObjects()) {
|
||||||
if (!excludedLocations.count(locationIt.second.rc) &&
|
if (!excludedLocations.count(locationIt.second.rc) &&
|
||||||
|
locationIt.second.vOrMQ != RCVORMQ_MQ && //disable all MQ checks until we support them
|
||||||
|
locationIt.second.rcType != RCTYPE_SHOP && //disable shops until we have shopsanity
|
||||||
|
locationIt.second.rcType != RCTYPE_GOSSIP_STONE &&
|
||||||
|
locationIt.second.rcType != RCTYPE_LINKS_POCKET &&
|
||||||
|
locationIt.second.rcType != RCTYPE_CHEST_GAME &&
|
||||||
|
((locationIt.second.rcType != RCTYPE_SKULL_TOKEN) ||
|
||||||
|
(CVar_GetS32("gRandomizeShuffleTokens", 0) == 3) || // all tokens
|
||||||
|
((CVar_GetS32("gRandomizeShuffleTokens", 0) == 2) && RandomizerCheckObjects::AreaIsOverworld(areaIt.first)) || // overworld tokens
|
||||||
|
((CVar_GetS32("gRandomizeShuffleTokens", 0) == 1) && RandomizerCheckObjects::AreaIsDungeon(areaIt.first)) // dungeon tokens
|
||||||
|
) &&
|
||||||
locationIt.second.rcArea == areaIt.first &&
|
locationIt.second.rcArea == areaIt.first &&
|
||||||
locationSearch.PassFilter(locationIt.second.rcSpoilerName.c_str())) {
|
locationSearch.PassFilter(locationIt.second.rcSpoilerName.c_str())) {
|
||||||
|
|
||||||
if (ImGui::ArrowButton(std::to_string(locationIt.first).c_str(), ImGuiDir_Right)) {
|
if (ImGui::ArrowButton(std::to_string(locationIt.first).c_str(), ImGuiDir_Right)) {
|
||||||
excludedLocations.insert(locationIt.first);
|
excludedLocations.insert(locationIt.first);
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ typedef struct {
|
|||||||
} RandomizerCheckObject;
|
} RandomizerCheckObject;
|
||||||
*/
|
*/
|
||||||
std::unordered_map<RandomizerCheck, RandomizerCheckObject> rcObjects = {
|
std::unordered_map<RandomizerCheck, RandomizerCheckObject> rcObjects = {
|
||||||
{ RC_UNKNOWN_CHECK, {RC_UNKNOWN_CHECK, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KOKIRI_FOREST, "Invalid Location", "Invalid Location"}},
|
{ RC_UNKNOWN_CHECK, {RC_UNKNOWN_CHECK, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_INVALID, "Invalid Location", "Invalid Location"}},
|
||||||
{ RC_KF_KOKIRI_SWORD_CHEST, {RC_KF_KOKIRI_SWORD_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KOKIRI_FOREST, "Kokiri Sword Chest", "KF Kokiri Sword Chest"}},
|
{ RC_KF_KOKIRI_SWORD_CHEST, {RC_KF_KOKIRI_SWORD_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KOKIRI_FOREST, "Kokiri Sword Chest", "KF Kokiri Sword Chest"}},
|
||||||
{ RC_KF_MIDOS_TOP_LEFT_CHEST, {RC_KF_MIDOS_TOP_LEFT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KOKIRI_FOREST, "Mido Top Left Chest", "KF Mido Top Left Chest"}},
|
{ RC_KF_MIDOS_TOP_LEFT_CHEST, {RC_KF_MIDOS_TOP_LEFT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KOKIRI_FOREST, "Mido Top Left Chest", "KF Mido Top Left Chest"}},
|
||||||
{ RC_KF_MIDOS_TOP_RIGHT_CHEST, {RC_KF_MIDOS_TOP_RIGHT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KOKIRI_FOREST, "Mido Top Right Chest", "KF Mido Top Right Chest"}},
|
{ RC_KF_MIDOS_TOP_RIGHT_CHEST, {RC_KF_MIDOS_TOP_RIGHT_CHEST, RCVORMQ_VANILLA, RCTYPE_STANDARD, RCAREA_KOKIRI_FOREST, "Mido Top Right Chest", "KF Mido Top Right Chest"}},
|
||||||
@ -783,6 +783,25 @@ std::map<RandomizerCheckArea, std::string> rcAreas = {
|
|||||||
{ RCAREA_GANONS_CASTLE, "Ganon's Castle"},
|
{ RCAREA_GANONS_CASTLE, "Ganon's Castle"},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bool RandomizerCheckObjects::AreaIsDungeon(RandomizerCheckArea area) {
|
||||||
|
return area == RCAREA_GANONS_CASTLE ||
|
||||||
|
area == RCAREA_GERUDO_TRAINING_GROUND ||
|
||||||
|
area == RCAREA_ICE_CAVERN ||
|
||||||
|
area == RCAREA_BOTTOM_OF_THE_WELL ||
|
||||||
|
area == RCAREA_SHADOW_TEMPLE ||
|
||||||
|
area == RCAREA_SPIRIT_TEMPLE ||
|
||||||
|
area == RCAREA_WATER_TEMPLE ||
|
||||||
|
area == RCAREA_FIRE_TEMPLE ||
|
||||||
|
area == RCAREA_FOREST_TEMPLE ||
|
||||||
|
area == RCAREA_JABU_JABUS_BELLY ||
|
||||||
|
area == RCAREA_DODONGOS_CAVERN ||
|
||||||
|
area == RCAREA_DEKU_TREE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RandomizerCheckObjects::AreaIsOverworld(RandomizerCheckArea area) {
|
||||||
|
return !AreaIsDungeon(area);
|
||||||
|
}
|
||||||
|
|
||||||
std::map<RandomizerCheckArea, std::string> RandomizerCheckObjects::GetAllRCAreas() {
|
std::map<RandomizerCheckArea, std::string> RandomizerCheckObjects::GetAllRCAreas() {
|
||||||
return rcAreas;
|
return rcAreas;
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,8 @@ typedef enum {
|
|||||||
RCAREA_BOTTOM_OF_THE_WELL,
|
RCAREA_BOTTOM_OF_THE_WELL,
|
||||||
RCAREA_ICE_CAVERN,
|
RCAREA_ICE_CAVERN,
|
||||||
RCAREA_GERUDO_TRAINING_GROUND,
|
RCAREA_GERUDO_TRAINING_GROUND,
|
||||||
RCAREA_GANONS_CASTLE
|
RCAREA_GANONS_CASTLE,
|
||||||
|
RCAREA_INVALID
|
||||||
} RandomizerCheckArea;
|
} RandomizerCheckArea;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -73,8 +74,9 @@ typedef struct {
|
|||||||
} RandomizerCheckObject;
|
} RandomizerCheckObject;
|
||||||
|
|
||||||
namespace RandomizerCheckObjects {
|
namespace RandomizerCheckObjects {
|
||||||
|
bool AreaIsDungeon(RandomizerCheckArea area);
|
||||||
|
bool AreaIsOverworld(RandomizerCheckArea area);
|
||||||
std::map<RandomizerCheckArea, std::string> GetAllRCAreas();
|
std::map<RandomizerCheckArea, std::string> GetAllRCAreas();
|
||||||
std::unordered_map<RandomizerCheck, RandomizerCheckObject> GetAllRCObjects();
|
std::unordered_map<RandomizerCheck, RandomizerCheckObject> GetAllRCObjects();
|
||||||
RandomizerCheckObject GetRCObject(RandomizerCheck check);
|
RandomizerCheckObject GetRCObject(RandomizerCheck check);
|
||||||
|
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user