using Milimoe.FunGame.Core.Api.Utility; namespace Milimoe.FunGame.Core.Entity { /// /// 用于记录对哪个角色造成了多少伤害 /// public class AssistDetail { /// /// 此详情类属于哪个角色 /// public Character Character { get; } /// /// 对敌人造成的伤害 /// public Dictionary Damages { get; } = []; /// /// 最后一次造成伤害的时间 /// public Dictionary DamageLastTime { get; } = []; /// /// 对某角色最后一次友方非伤害辅助的时间 /// public Dictionary NotDamageAssistLastTime { get; } = []; /// /// 初始化一个助攻详情类 /// /// /// public AssistDetail(Character character, IEnumerable enemys) { Character = character; foreach (Character enemy in enemys) { this[enemy] = 0; } } /// /// 获取和设置对 的伤害,并设置时间 /// /// /// /// public double this[Character enemy, double? time = null] { get { return Damages[enemy]; } set { Damages[enemy] = Calculation.Round2Digits(value); if (time.HasValue) { DamageLastTime[enemy] = time.Value; } } } /// /// 获取对 的伤害 /// /// /// 目标的 的百分比形式 public double GetPercentage(Character enemy) { return Calculation.Round2Digits(Damages[enemy] / enemy.MaxHP); } /// /// 获取对 造成伤害的最后时间 /// /// /// 意味着没有时间 public double GetLastTime(Character enemy) { if (DamageLastTime.TryGetValue(enemy, out double time)) { return time; } return double.MinValue; } /// /// 获取对某角色友方非伤害辅助的最后时间 /// /// /// 意味着没有时间 public double GetNotDamageAssistLastTime(Character character) { if (NotDamageAssistLastTime.TryGetValue(character, out double time)) { return time; } return double.MinValue; } } }