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);
}
///
/// 获取对 造成伤害的最后时间
///
///
/// -1 意味着没有时间
public double GetLastTime(Character enemy)
{
if (DamageLastTime.TryGetValue(enemy, out double time))
{
return time;
}
return -1;
}
///
/// 获取对某角色友方非伤害辅助的最后时间
///
///
/// -1 意味着没有时间
public double GetNotDamageAssistLastTime(Character character)
{
if (NotDamageAssistLastTime.TryGetValue(character, out double time))
{
return time;
}
return -1;
}
}
}