mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-20 02:55:38 +08:00
fix: requirement.chaos_level.type改为枚举
This commit is contained in:
@@ -22,7 +22,7 @@ bool asst::RoguelikeStageEncounterConfig::parse(const json::value& json)
|
||||
requirement.name = requirement_json.at("name").as_string();
|
||||
requirement.choose = requirement_json.get("choose", -1);
|
||||
requirement.chaos_level.value = requirement_json.at("ChaosLevel").at("value").as_string();
|
||||
requirement.chaos_level.type = requirement_json.at("ChaosLevel").at("type").as_string();
|
||||
requirement.chaos_level.type = parse_comparison_type(requirement_json.at("ChaosLevel").at("type").as_string());
|
||||
event.choice_require.emplace_back(std::move(requirement));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,10 +8,18 @@
|
||||
|
||||
namespace asst
|
||||
{
|
||||
enum class ComparisonType
|
||||
{
|
||||
GreaterThan,
|
||||
LessThan,
|
||||
Equal,
|
||||
Unsupported
|
||||
};
|
||||
|
||||
struct ChaosLevel
|
||||
{
|
||||
std::string value;
|
||||
std::string type; // '>' or '<' or '=' 其他的还不支持
|
||||
ComparisonType type = ComparisonType::Unsupported;
|
||||
};
|
||||
struct ChoiceRequire
|
||||
{
|
||||
@@ -38,6 +46,18 @@ namespace asst
|
||||
private:
|
||||
virtual bool parse(const json::value& json) override;
|
||||
|
||||
static ComparisonType parse_comparison_type(const std::string& type_str)
|
||||
{
|
||||
if (type_str == ">")
|
||||
return ComparisonType::GreaterThan;
|
||||
if (type_str == "<")
|
||||
return ComparisonType::LessThan;
|
||||
if (type_str == "=")
|
||||
return ComparisonType::Equal;
|
||||
|
||||
return ComparisonType::Unsupported;
|
||||
}
|
||||
|
||||
std::unordered_map<std::string, std::vector<RoguelikeEvent>> m_events;
|
||||
};
|
||||
|
||||
|
||||
@@ -21,13 +21,14 @@ namespace asst
|
||||
{
|
||||
int num = 0;
|
||||
switch (requirement.chaos_level.type) {
|
||||
case ">":
|
||||
case ComparisonType::GreaterThan:
|
||||
return utils::chars_to_number(requirement.chaos_level.value, num) && special_val > num;
|
||||
case "<":
|
||||
case ComparisonType::LessThan:
|
||||
return utils::chars_to_number(requirement.chaos_level.value, num) && special_val < num;
|
||||
case "=":
|
||||
case ComparisonType::Equal:
|
||||
return utils::chars_to_number(requirement.chaos_level.value, num) && special_val == num;
|
||||
default:
|
||||
case ComparisonType::Unsupported:
|
||||
case default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user