using UnityEngine; using BaseGames.Core.Save; namespace BaseGames.Progression { /// 击败全部指定 Boss 列表的成就条件。 [CreateAssetMenu(menuName = "Achievement/Condition/DefeatedAllBosses", fileName = "COND_DefeatedAllBosses")] public class DefeatedAllBossesCondition : AchievementCondition { [Tooltip("需要全部击败的 Boss ID 列表")] public string[] requiredBossIds; public override bool IsMet(SaveData save) { if (save?.World == null || requiredBossIds == null) return false; foreach (var id in requiredBossIds) if (!save.World.DefeatedBossIds.Contains(id)) return false; return true; } public override float GetProgress(SaveData save) { if (save?.World == null || requiredBossIds == null || requiredBossIds.Length == 0) return 0f; int met = 0; foreach (var id in requiredBossIds) if (save.World.DefeatedBossIds.Contains(id)) met++; return (float)met / requiredBossIds.Length; } } }