OldBlueWater/BlueWater/Assets/02.Scripts/Ai/Human/Combat/Enemy/EnemyAi.cs

72 lines
2.2 KiB
C#
Raw Normal View History

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