/// <summary> /// Наносит урон персонажу в размере <paramref name="amount"/>. /// </summary> /// <param name="amount">Количество наносимого урона.</param> public void ApplyDamage(int amount) { if (amount <= 0) { return; } amount = Mathf.FloorToInt(amount * (1 - CurrentInfo.guardCoeff)); var info = CurrentInfo; if (info.hp - amount <= 0) { info.hp = 0; } else { info.hp -= amount; } CurrentInfo = info; OnHealthCountChanged?.Invoke(_unitInfo.hp, CurrentInfo.hp); if (CurrentInfo.hp <= 0) { Die(); } else { RestoreEnergy(Mathf.FloorToInt(amount / 4f)); } }
/// <summary> /// Наносит исцеление персонажу в размере <paramref name="amount"/>. /// </summary> /// <param name="amount">Количество наносимого исцеления.</param> public void ApplyHeal(int amount) { if (amount <= 0) { return; } var info = CurrentInfo; if (info.hp + amount >= _unitInfo.hp) { info.hp = _unitInfo.hp; } else { info.hp += amount; } CurrentInfo = info; OnHealthCountChanged?.Invoke(_unitInfo.hp, CurrentInfo.hp); }