yyl
2025-08-07 d767a5a0efbac267507be14b5b09bd64015fe560
Main/System/Battle/BattleField/OperationAgent/HandModeOperationAgent.cs
@@ -1,11 +1,14 @@
using UnityEngine;
//   只有主线战斗用到 所以这里可能会放一些主线的特殊处理
public class HandModeOperationAgent : IOperationAgent
{
   protected StoryBattleField storyBattleField;
   public HandModeOperationAgent(BattleField battleField) : base(battleField)
   {
      storyBattleField = battleField as StoryBattleField;
   }
   public override void Run()
@@ -18,13 +21,63 @@
   {
      base.DoNext();
      //   当前没有在播放战斗录像
      if (!battleField.recordPlayer.IsPlaying())
      {
         //   ask for next action
         // 没有下一个包可以发了
         if (!BattleManager.Instance.DistributeNextPackage())
         {
            //   请求下一个战斗包 或者检查战斗是否结束
            // ReqType; // 0-停止战斗回城;1-设置消耗倍值;2-挑战关卡小怪;3-挑战关卡boss;4-继续战斗;
            //   如果在休息 点一下之后应该是挑战小怪或者挑战关卡
            //  如果在战斗 战斗是否结束/战斗持续中 结束应该是挑战下一关 持续应该是继续战斗
            //   检查一下锤子的消耗
            //FightPoint             用于记录消耗战锤倍数,小于等于1时默认1倍,大于1时为对应消耗倍值,0418刷新类型22
            ulong costRate = PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.FightPoint);
            int cost = (int)(costRate > 1 ? costRate : 1) * 1; // 1是默认消耗
            //   检查一下锤子的消耗
            if (!ItemLogicUtility.CheckItemCount(PackType.Item, BattleConst.BattlePointItemID, cost, true))
            {
               return;
            }
            byte reqType;
            if (storyBattleField.battleState == StoryBattleState.Break)
            {
               reqType = 2;
            }
            else if (storyBattleField.battleState == StoryBattleState.Battle)
            {
               if (battleField.IsBattleEnd())
               {
                  reqType = 2; // 继续挑战小怪
               }
               else
               {
                  reqType = 4; // 继续战斗
               }
            }
            else
            {
               Debug.LogError("unknown battle state");
               return;
            }
            BattleManager.Instance.MainFightRequest(reqType);
         }
      }
      else
      {
         Debug.LogError("action doesnt finish, wait a moment please");
      }
   }
}