123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using Common.Utility.CombatEvent;
- using Core.State;
- using Fort23.Core;
- using GameLogic.Combat.CombatTool;
- using GameLogic.Combat.Hero;
- using GameLogic.Combat.Hero.State;
- using GameLogic.Combat.Hero.SubStatus;
- using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
- using UnityEngine;
- using UnityEngine.AI;
- public class CombatAIBasic : IDisposable
- {
- public StateControl stateControl;
- protected BetterList<SubStatusBasic> _subStatusList = new BetterList<SubStatusBasic>();
- // public NavMeshObstacle NavMeshObstacle;
- protected CombatHeroEntity _showBaiscEntity;
- public CombatHeroStateBasic CurrState
- {
- get { return stateControl.CurrIState as CombatHeroStateBasic; }
- }
- /// <summary>
- /// 当前聚焦的目标
- /// </summary>
- public virtual IHero currFocusTarget
- {
- get { return _currFocusTarget; }
- set { _currFocusTarget = value; }
- }
- protected IHero _currFocusTarget;
- private float _t;
- public virtual void Init(CombatHeroEntity combatHeroEntity)
- {
- _showBaiscEntity = combatHeroEntity;
- stateControl = new StateControl();
- ProInitState();
- ProInit();
- }
- protected virtual void ProInit()
- {
- }
- public virtual void AddSubStatus(SubStatusBasic subStatusBasic)
- {
- if (!_subStatusList.Contains(subStatusBasic))
- {
- subStatusBasic.Init(_showBaiscEntity);
- _subStatusList.Add(subStatusBasic);
- }
- }
- public virtual T GetSubStatus<T>() where T : SubStatusBasic
- {
- for (int i = 0; i < _subStatusList.Count; i++)
- {
- if (_subStatusList[i] is (T))
- {
- return _subStatusList[i] as T;
- }
- }
- return null;
- }
- public virtual void RemoveSubStatus(SubStatusBasic subStatusBasic)
- {
- if (_subStatusList.Contains(subStatusBasic))
- {
- _subStatusList.Remove(subStatusBasic);
- }
- }
- public virtual void RemoveSubStatus<T>()
- {
- for (int i = 0; i < _subStatusList.Count; i++)
- {
- if (_subStatusList[i] is T)
- {
- _subStatusList.RemoveAt(i);
- i--;
- }
- }
- }
- protected virtual void ProInitState()
- {
- }
- public virtual void ChangeState(string name, IStateEnterData iStateEnterData = null, bool isQiangZhi = false)
- {
- stateControl.ChangeState(name, iStateEnterData, isQiangZhi);
- }
- public virtual void Update(float t)
- {
- if (CombatController.currActiveCombat.isStopAi)
- {
- if (stateControl.CurrStateName.Equals(CombatHeroStateType.move))
- {
- stateControl.ChangeState(CombatHeroStateType.idle);
- }
- return;
- }
- for (int i = 0; i < _subStatusList.Count; i++)
- {
- SubStatusBasic subStatusBasic = _subStatusList[i];
- string s = subStatusBasic.IsGetStateName();
- if (!string.IsNullOrEmpty(s))
- {
- stateControl.ChangeState(s);
- }
- _subStatusList[i].Update(t);
- }
- stateControl.Update(t);
- ProUpdate();
- }
- protected virtual void ProUpdate()
- {
- }
- public void Dispose()
- {
- ProDispose();
- _showBaiscEntity = null;
- stateControl.Dispose();
- stateControl = null;
- }
- protected virtual void ProDispose()
- {
- }
- }
|