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

84 lines
2.7 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
2023-09-13 07:05:21 +00:00
[field: SerializeField] public EnemyStat EnemyStat { get; set; }
2023-09-12 14:46:57 +00:00
#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");
2023-09-13 07:05:21 +00:00
if (EnemyStat.AttackerType == EAttackerType.OFFENSE)
2023-09-12 14:46:57 +00:00
{
targetLayer |= LayerMask.GetMask("Props");
}
}
2023-09-13 07:05:21 +00:00
#if UNITY_EDITOR
public virtual void InitStartInEditor()
{
var enemyViewData = DataManager.Inst.GetEnemyViewSoFromKey(EnemyStat.ViewIdx);
InitComponent();
SetLayer();
InitViewModel(enemyViewData);
SetCurrentHp(EnemyStat.MaxHp);
SetMoveSpeed(EnemyStat.MoveSpd);
}
#endif
2023-09-12 14:46:57 +00:00
protected virtual void InitStart()
{
2023-09-13 07:05:21 +00:00
var enemyViewData = DataManager.Inst.GetEnemyViewDictionaryFromKey(EnemyStat.ViewIdx);
2023-09-12 14:46:57 +00:00
InitViewModel(enemyViewData);
2023-09-13 07:05:21 +00:00
SetCurrentHp(EnemyStat.MaxHp);
SetMoveSpeed(EnemyStat.MoveSpd);
2023-09-12 14:46:57 +00:00
2023-09-13 07:05:21 +00:00
if (EnemyStat.AttackerType == EAttackerType.DEFENSE)
2023-09-12 14:46:57 +00:00
{
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);
}
2023-09-13 07:05:21 +00:00
protected override void SetCurrentHp(float value) => EnemyStat.CurrentHp = value;
public void SetAttackerType(EAttackerType type) => EnemyStat.AttackerType = type;
public void SetOffenseType(EOffenseType type) => EnemyStat.OffenseType = type;
public void SetDefenseType(EDefenseType type) => EnemyStat.DefenseType = type;
2023-09-12 14:46:57 +00:00
#endregion
2023-09-12 07:41:11 +00:00
}
}