68 lines
1.4 KiB
C#
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;
|
|
}
|
|
} |