using UnityEngine; // ReSharper disable once CheckNamespace namespace BlueWaterProject { public class EnemyAi : CombatAi { #region Properties and variables protected EnemyStat enemyStat; #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"); } } 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 } }