| 
using UnityEngine; 
 | 
using System; 
 | 
using System.Collections; 
 | 
using System.Collections.Generic; 
 | 
  
 | 
// 自己推进战斗的 Editor下使用就好 
 | 
public class AIOperationAgent : IOperationAgent 
 | 
{ 
 | 
  
 | 
    protected List<BattleObject> attackList = new List<BattleObject>(); 
 | 
  
 | 
    public AIOperationAgent(BattleField _battleField) : base (_battleField) 
 | 
    { 
 | 
         
 | 
    } 
 | 
  
 | 
    public override void Run() 
 | 
    { 
 | 
        base.Run(); 
 | 
  
 | 
        bool isBattleBegin = battleField.round == 0 && attackList.Count <= 0; 
 | 
  
 | 
        bool isRoundBegin = attackList.Count <= 0; 
 | 
  
 | 
        if (attackList.Count <= 0 && !battleField.recordPlayer.IsPlaying()) 
 | 
        { 
 | 
  
 | 
            // 战斗开始前,根据各自上阵武将战力之和决定谁为先攻方,战力之和高的为先攻主,先攻方优先攻击,确定先攻方后开始战斗。 
 | 
  
 | 
  
 | 
            attackList.AddRange(battleField.battleObjMgr.redCampList); 
 | 
            attackList.AddRange(battleField.battleObjMgr.blueCampList); 
 | 
  
 | 
            // //    排序 战斗力高的靠前 
 | 
            // attackList.Sort((a, b) => { 
 | 
            //     int power1 = a.teamHero.GetPower(); 
 | 
            //     int power2 = b.teamHero.GetPower(); 
 | 
            //     return power2.CompareTo(power1); 
 | 
            // }); 
 | 
  
 | 
            battleField.round++; 
 | 
        } 
 | 
  
 | 
        if (!battleField.recordPlayer.IsPlaying() && attackList.Count > 0) 
 | 
        { 
 | 
            List<RecordAction> playList = new List<RecordAction>(); 
 | 
            if (isBattleBegin) 
 | 
            { 
 | 
                playList.AddRange(CreateBattleBeginActionList()); 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                if (isRoundBegin) 
 | 
                { 
 | 
                    playList.AddRange(CreateRoundBeginActionList()); 
 | 
                } 
 | 
                else 
 | 
                { 
 | 
                    playList.AddRange(CreateActions(attackList[0])); 
 | 
                    attackList.RemoveAt(0); 
 | 
                } 
 | 
            } 
 | 
  
 | 
            battleField.recordPlayer.PlayRecord(playList); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    protected List<RecordAction> CreateBattleBeginActionList() 
 | 
    { 
 | 
        //    战斗开始前的轮次的操作 
 | 
        List<RecordAction> returnList = new List<RecordAction>(); 
 | 
        // attackList 
 | 
        return returnList; 
 | 
    } 
 | 
  
 | 
    protected List<RecordAction> CreateRoundBeginActionList() 
 | 
    { 
 | 
        //    每轮开始前的操作 
 | 
        List<RecordAction> returnList = new List<RecordAction>(); 
 | 
        // attackList 
 | 
        return returnList; 
 | 
    } 
 | 
  
 | 
    protected List<RecordAction> CreateActions(BattleObject _battleObj) 
 | 
    { 
 | 
        List<RecordAction> returnList = new List<RecordAction>(); 
 | 
  
 | 
        List<RecordAction> beforeActionList = CreateBeforeActionActionList(_battleObj); 
 | 
        List<RecordAction> actionList = CreateActionList(_battleObj); 
 | 
        List<RecordAction> afterActionList = CreateAfterActionList(_battleObj); 
 | 
        List<RecordAction> afterDeathActionList = CreateAfterDeathActionList(_battleObj); 
 | 
  
 | 
        returnList.AddRange(beforeActionList); 
 | 
        returnList.AddRange(actionList); 
 | 
        returnList.AddRange(afterActionList); 
 | 
        returnList.AddRange(afterDeathActionList); 
 | 
  
 | 
        return returnList; 
 | 
    } 
 | 
  
 | 
    protected List<RecordAction> CreateBeforeActionActionList(BattleObject _battleObj) 
 | 
    { 
 | 
        // 解异常 加减buff  
 | 
        List<RecordAction> returnList = new List<RecordAction>(); 
 | 
        return returnList; 
 | 
    } 
 | 
  
 | 
    protected List<RecordAction> CreateActionList(BattleObject _battleObj) 
 | 
    { 
 | 
        //    放技能 或者被眩晕 
 | 
        List<RecordAction> returnList = new List<RecordAction>(); 
 | 
  
 | 
  
 | 
        // //    能行动 
 | 
        // if (_battleObj.IsCanDoActions()) 
 | 
        // { 
 | 
        //     //    能放技能 
 | 
        //     if (_battleObj.IsCanCastSkill()) 
 | 
        //     { 
 | 
        //         SkillRecordAction action = new SkillRecordAction(_battleObj.teamHero.heroInfo.heroConfig.AngerSkillID,  
 | 
        //             battleField, _battleObj); 
 | 
  
 | 
        //         // 在这里主动做一下伤害计算 正常都是服务器给的 
 | 
  
 | 
  
 | 
        //         returnList.Add(action); 
 | 
        //     } 
 | 
        //     else 
 | 
        //     { 
 | 
        //         //普攻 
 | 
        //     } 
 | 
        // } 
 | 
        // else 
 | 
        // { 
 | 
        //     //    不能行动 飘字 过 
 | 
  
 | 
        // } 
 | 
  
 | 
        return returnList; 
 | 
    } 
 | 
  
 | 
    protected List<RecordAction> CreateAfterActionList(BattleObject _battleObj) 
 | 
    { 
 | 
        //    其他角色可能有连携攻击 有可能每回合buff有个dot 
 | 
        List<RecordAction> returnList = new List<RecordAction>(); 
 | 
        return returnList; 
 | 
    } 
 | 
  
 | 
    protected List<RecordAction> CreateAfterDeathActionList(BattleObject _battleObj) 
 | 
    { 
 | 
        //    复活 给其他角色加buff之类的操作 
 | 
        List<RecordAction> returnList = new List<RecordAction>(); 
 | 
        return returnList; 
 | 
    } 
 | 
  
 | 
    protected void OnHeroDeath(BattleObject _battleObj) 
 | 
    { 
 | 
  
 | 
    } 
 | 
  
 | 
    protected void OnReviveHero(BattleObject _battleObj) 
 | 
    { 
 | 
  
 | 
    } 
 | 
  
 | 
    public override void DoNext() 
 | 
    { 
 | 
        base.DoNext(); 
 | 
    } 
 | 
} 
 |