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 { /// /// check if gameObject has a Component /// /// /// return true if gameObject contains a public static bool IsMeleeFighter(this GameObject receiver) { return receiver.GetComponent() != null; } /// /// Apply damage using OnReeiveAttack method if receiver dosent has a vIAttackReceiver, the Simple ApplyDamage is called /// /// target damage receiver /// damage /// damage sender public static void ApplyDamage(this GameObject receiver, vDamage damage, vIMeleeFighter attacker) { var attackReceiver = receiver.GetComponent(); if (attackReceiver != null) { attackReceiver.OnReceiveAttack(damage, attacker); } else { receiver.ApplyDamage(damage); } } /// /// Get of gameObject /// /// /// the component public static vIMeleeFighter GetMeleeFighter(this GameObject receiver) { return receiver.GetComponent(); } } }