using UnityEngine; public class AutoModeOperationAgent : IOperationAgent { protected StoryBattleField storyBattleField; public AutoModeOperationAgent(BattleField battleField) : base(battleField) { storyBattleField = battleField as StoryBattleField; } float lastTime; float lastSendTime; public override void Run() { //最低1秒 if (Time.time - lastTime < 0.2f) return; lastTime = Time.time; if (AutoFightModel.Instance.isPause) return; // 自动挑战boss if (AutoFightModel.Instance.isAutoChallengeBoss) { if (!MainLevelManager.Instance.CanChallengeBoss()) { DoNext(); return; } //上次挑战boss失败了,再次尝试要等CD if (AutoFightModel.Instance.nowChallengeCount > 0 && Time.time - AutoFightModel.Instance.lastChallengeTime < AutoFightModel.Instance.maxTryChallengeCD) { DoNext(); return; } //已经开始boss战斗 BattleField battleField = BattleManager.Instance.GetActiveBattleFieldByName(BattleConst.StoryBossBattleField); if (battleField != null) return; if (Time.time - lastSendTime < 1.0f) return; lastSendTime = Time.time; Debug.Log($"开始挑战boss ServerNow{TimeUtility.ServerNow}"); FightBoss(); return; } DoNext(); } public override void DoNext() { storyBattleField.RequestFight(); } void FightBoss() { BattleManager.Instance.SendTurnFight(2); BattleManager.Instance.storyBattleField.CleanBattle(); AutoFightModel.Instance.isPause = true; } }