2023-09-12 07:41:11 +00:00
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
// ReSharper disable once CheckNamespace
|
|
|
|
namespace BlueWaterProject
|
|
|
|
{
|
2023-09-13 03:23:27 +00:00
|
|
|
public class EnemyAi : CombatAi
|
2023-09-12 07:41:11 +00:00
|
|
|
{
|
2023-09-12 14:46:57 +00:00
|
|
|
#region Properties and variables
|
|
|
|
|
|
|
|
protected EnemyStat enemyStat;
|
|
|
|
|
|
|
|
#endregion
|
2023-09-12 07:41:11 +00:00
|
|
|
|
2023-09-12 14:46:57 +00:00
|
|
|
#region Unit Built-in methods
|
|
|
|
|
|
|
|
private void Start()
|
|
|
|
{
|
|
|
|
InitStart();
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region Custom methods
|
|
|
|
|
|
|
|
protected override void SetLayer()
|
|
|
|
{
|
|
|
|
gameObject.layer = LayerMask.NameToLayer("Enemy");
|
|
|
|
var hitBoxObj = hitBoxCollider.gameObject;
|
|
|
|
hitBoxObj.layer = LayerMask.NameToLayer("HitBox");
|
|
|
|
hitBoxObj.tag = "Enemy";
|
|
|
|
targetLayer = LayerMask.GetMask("Player") | LayerMask.GetMask("Pirate");
|
|
|
|
|
|
|
|
if (enemyStat.AttackerType == EAttackerType.OFFENSE)
|
|
|
|
{
|
|
|
|
targetLayer |= LayerMask.GetMask("Props");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
protected virtual void InitStart()
|
|
|
|
{
|
|
|
|
var enemyViewData = GetEnemyViewData();
|
|
|
|
|
|
|
|
InitViewModel(enemyViewData);
|
|
|
|
SetCurrentHp(enemyStat.MaxHp);
|
|
|
|
SetMoveSpeed(enemyStat.MoveSpd);
|
|
|
|
|
|
|
|
if (enemyStat.AttackerType == EAttackerType.DEFENSE)
|
|
|
|
{
|
|
|
|
defensePos = transform.position;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private void InitViewModel(EnemyView enemyView)
|
|
|
|
{
|
|
|
|
SetActiveViewModel(backpackContainer, enemyView.Backpack);
|
|
|
|
SetActiveViewModel(leftWeaponContainer, enemyView.LeftWeapon);
|
|
|
|
SetActiveViewModel(leftShieldContainer, enemyView.LeftShield);
|
|
|
|
SetActiveViewModel(headContainer, enemyView.Head);
|
|
|
|
SetActiveViewModel(rightWeaponContainer, enemyView.RightWeapon);
|
|
|
|
SetActiveViewModel(bodyContainer, enemyView.Body);
|
|
|
|
SetActiveViewModel(flagContainer, enemyView.Flag);
|
|
|
|
}
|
|
|
|
|
|
|
|
protected override void SetCurrentHp(float value) => enemyStat.CurrentHp = value;
|
|
|
|
|
|
|
|
private EnemyView GetEnemyViewData() => Application.isPlaying ?
|
|
|
|
DataManager.Inst.GetEnemyViewDictionaryFromKey(enemyStat.ViewIdx) :
|
|
|
|
DataManager.Inst.GetEnemyViewSoFromKey(enemyStat.ViewIdx);
|
|
|
|
|
|
|
|
#endregion
|
2023-09-12 07:41:11 +00:00
|
|
|
}
|
|
|
|
}
|