Beispiel #1
0
 protected void SendArmyRequest()
 {
     if (this.requestArmy == null)
     {
         RequestArmyMessage message = new RequestArmyMessage(base.Commander.Empire.Index, null, base.Commander.GetPriority(this), base.Commander.Category);
         this.requestArmy = message;
         if (this.armyPattern == null)
         {
             this.armyPattern = this.CreateArmyPattern();
         }
         if (this.armyPattern == null)
         {
             Diagnostics.LogError("Pattern is null. {0}", new object[]
             {
                 this.ToString()
             });
             return;
         }
         this.requestArmy.ArmyPattern = this.armyPattern;
         this.requestArmy.SetPriority(base.Commander.GetPriority(this));
         this.requestArmy.MinimumNeededArmyFulfillement = this.MinimumNeededArmyFulfillement;
         this.requestArmy.FinalPosition = this.GetTargetPositionForTheArmy();
         this.requestArmy.CanAcceptHero = this.MissionCanAcceptHero();
         this.SetExtraArmyRequestInformation();
         base.Commander.AIPlayer.Blackboard.AddMessage(message);
         this.armyPattern = null;
     }
 }
 protected override void Success()
 {
     base.Success();
     if (this.AICommanderRegroupArmies.MissionHasAllUnits(this) && this.AICommanderRegroupArmies.RequestUnitListMessageID != 0UL)
     {
         AIData_Army aidata = this.aiDataRepository.GetAIData <AIData_Army>(base.AIDataArmyGUID);
         Diagnostics.Assert(aidata != null);
         RequestArmyMessage requestArmyMessage = base.Commander.AIPlayer.Blackboard.GetMessage(this.AICommanderRegroupArmies.RequestUnitListMessageID) as RequestArmyMessage;
         if (requestArmyMessage != null)
         {
             requestArmyMessage.ArmyGUID       = aidata.Army.GUID;
             requestArmyMessage.ExecutionState = RequestUnitListMessage.RequestUnitListState.ArmyAvailable;
             requestArmyMessage.TimeOut        = 1;
             if (requestArmyMessage.HeroGUID != GameEntityGUID.Zero)
             {
                 OrderChangeHeroAssignment order = new OrderChangeHeroAssignment(base.Commander.Empire.Index, requestArmyMessage.HeroGUID, aidata.Army.GUID);
                 Ticket ticket;
                 base.Commander.Empire.PlayerControllers.Client.PostOrder(order, out ticket, null);
             }
             if (this.majorEmpireAIEntity != null && this.majorEmpireAIEntity.GetCommanderMissionBasedOnItsArmyRequestArmy(requestArmyMessage.ID) != null)
             {
                 base.SetArmyFree();
                 this.Process();
                 return;
             }
         }
         else
         {
             RequestGarrisonMessage requestGarrisonMessage = base.Commander.AIPlayer.Blackboard.GetMessage(this.AICommanderRegroupArmies.RequestUnitListMessageID) as RequestGarrisonMessage;
             if (requestGarrisonMessage != null)
             {
                 requestGarrisonMessage.ExecutionState = RequestUnitListMessage.RequestUnitListState.ArmyAvailable;
                 requestGarrisonMessage.TimeOut        = 1;
                 this.TransferUnits(requestGarrisonMessage.CityGuid);
             }
             RequestGarrisonCampMessage requestGarrisonCampMessage = base.Commander.AIPlayer.Blackboard.GetMessage(this.AICommanderRegroupArmies.RequestUnitListMessageID) as RequestGarrisonCampMessage;
             if (requestGarrisonCampMessage != null)
             {
                 requestGarrisonCampMessage.ExecutionState = RequestUnitListMessage.RequestUnitListState.ArmyAvailable;
                 requestGarrisonCampMessage.TimeOut        = 1;
                 this.TransferUnits(requestGarrisonCampMessage.CampGuid);
             }
         }
     }
     base.SetArmyFree();
 }