Files
2024-11-20 15:21:28 +01:00

67 lines
2.1 KiB
C#

using System.Collections;
using UnityEngine;
namespace Invector.vEventSystems
{
public interface vIMeleeFighter : vIAttackReceiver, vIAttackListener
{
void BreakAttack(int breakAtkID);
void OnRecoil(int recoilID);
bool isAttacking { get; }
bool isArmed { get; }
bool isBlocking { get; }
Transform transform { get; }
GameObject gameObject { get; }
vCharacterController.vICharacter character { get; }
}
public static class vIMeeleFighterHelper
{
/// <summary>
/// check if gameObject has a <see cref="vIMeleeFighter"/> Component
/// </summary>
/// <param name="receiver"></param>
/// <returns>return true if gameObject contains a <see cref="vIMeleeFighter"/></returns>
public static bool IsMeleeFighter(this GameObject receiver)
{
return receiver.GetComponent<vIMeleeFighter>() != null;
}
/// <summary>
/// Apply damage using OnReeiveAttack method if receiver dosent has a vIAttackReceiver, the Simple ApplyDamage is called
/// </summary>
/// <param name="receiver">target damage receiver</param>
/// <param name="damage">damage</param>
/// <param name="attacker">damage sender</param>
public static void ApplyDamage(this GameObject receiver, vDamage damage, vIMeleeFighter attacker)
{
var attackReceiver = receiver.GetComponent<vIAttackReceiver>();
if (attackReceiver != null)
{
attackReceiver.OnReceiveAttack(damage, attacker);
}
else
{
receiver.ApplyDamage(damage);
}
}
/// <summary>
/// Get <see cref="vIMeleeFighter"/> of gameObject
/// </summary>
/// <param name="receiver"></param>
/// <returns>the <see cref="vIMeleeFighter"/> component</returns>
public static vIMeleeFighter GetMeleeFighter(this GameObject receiver)
{
return receiver.GetComponent<vIMeleeFighter>();
}
}
}