using UnityEngine; // ReSharper disable once CheckNamespace namespace BlueWaterProject { public class EnemyAi : CombatAi { #region Properties and variables [field: SerializeField] public EnemyStat EnemyStat { get; set; } #endregion #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"); } } #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 protected virtual void InitStart() { var enemyViewData = DataManager.Inst.GetEnemyViewDictionaryFromKey(EnemyStat.ViewIdx); 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; public void SetAttackerType(EAttackerType type) => EnemyStat.AttackerType = type; public void SetOffenseType(EOffenseType type) => EnemyStat.OffenseType = type; public void SetDefenseType(EDefenseType type) => EnemyStat.DefenseType = type; #endregion } }