using System; using System.Collections; using System.Collections.Generic; using NodeCanvas.Framework; using UnityEngine; using UnityEngine.UI; public abstract class NpcCombatAbstract : MonoBehaviour { [SerializeField] private bool isAggressiveMode; public bool IsCombat; private float combatTime; private float combatTimeout = 5f; public virtual void Start() { MusicControll.Register(this); } public virtual void OnDestroy() { MusicControll.UnRegister(this); } public void SetCombatState() { IsCombat = true; combatTime = 0; } public void UpdateCombatTime() { combatTime += Time.deltaTime; if(IsCombat && combatTime > combatTimeout) { IsCombat = false; MusicControll.UnRegister(this); } } protected bool IsAggressiveMode { get => isAggressiveMode; set => isAggressiveMode = value; } public abstract Status Attack(GameObject target, bool isRange); public abstract Status Aggressive(); public Status SetAggressive(bool isEnable) { IsAggressiveMode = isEnable; return Status.Success; } public virtual float GetHealth() => 0; public abstract Status GetAttackStatus(); public abstract Status ResetCooldown(); public virtual Status UpdateTime() { return Status.Success; } }