using BetterGenshinImpact.GameTask.AutoFight.Script; using System.Collections.Generic; namespace BetterGenshinImpact.GameTask.AutoFight.Model; public class AvatarMacro { public string Name { get; set; } = string.Empty; public string ScriptContent1 { get; set; } = string.Empty; public string ScriptContent2 { get; set; } = string.Empty; public string ScriptContent3 { get; set; } = string.Empty; public string ScriptContent4 { get; set; } = string.Empty; public string ScriptContent5 { get; set; } = string.Empty; /// /// 角色当前使用的战斗宏编号 (1-5),如果为0则使用默认宏1 /// public int MacroPriority { get; set; } = 0; public string GetScriptContent(int index) { return index switch { 1 => ScriptContent1, 2 => ScriptContent2, 3 => ScriptContent3, 4 => ScriptContent4, 5 => ScriptContent5, _ => string.Empty }; } /// /// 验证宏优先级是否有效 /// /// 如果优先级有效返回true,否则返回false public bool IsValidMacroPriority() { return MacroPriority >= 0 && MacroPriority <= 5; } public string GetScriptContent() { // 验证宏优先级的有效性 if (!IsValidMacroPriority()) { MacroPriority = 0; // 重置为默认值 } // 如果角色设置了自己的宏优先级,使用角色的;否则使用全局配置 var priority = MacroPriority > 0 ? MacroPriority : TaskContext.Instance().Config.MacroConfig.CombatMacroPriority; // 确保最终优先级在有效范围内 if (priority < 1 || priority > 5) { priority = 1; // 默认使用宏1 } return GetScriptContent(priority); } public List? LoadCommands() { var content = GetScriptContent(); if (string.IsNullOrWhiteSpace(content)) { return null; } return CombatScriptParser.ParseLineCommands(content, Name); } }