ZeroVR/ZeroPacientVR/Assets/Scripts/Npc/NpcCombatAbstract.cs

68 lines
1.4 KiB
C#

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;
}
}