using System; using UnityEngine; // ReSharper disable once CheckNamespace namespace BlueWaterProject { public class CloseWeapon : MonoBehaviour { #region Property and variable private bool isAttacked; private EAttackerType eAttackerType; private AiStat attackerStat; #endregion #region Unity built-in function private void OnTriggerEnter(Collider other) { if (isAttacked) return; if (other.gameObject.layer == LayerMask.NameToLayer("HitBox")) { switch (eAttackerType) { case EAttackerType.NONE: break; case EAttackerType.OFFENSE: if (!other.gameObject.CompareTag("Enemy") && !other.gameObject.CompareTag("House")) { return; } break; case EAttackerType.DEFENSE: if (!other.gameObject.CompareTag("Player") && !other.gameObject.CompareTag("Pirate")) { return; } break; default: throw new ArgumentOutOfRangeException(); } var iDamageable = other.GetComponentInParent(); iDamageable.TakeDamage(attackerStat.Atk, attackerStat.ShieldPenetrationRate); isAttacked = true; } } #endregion #region Custom function public void SetIsAttacked(bool value) => isAttacked = value; public void SetAttackerType(EAttackerType value) => eAttackerType = value; public void SetAttackerStat(AiStat value) => attackerStat = value; #endregion } }