public void RegisterSynchronousJob(SynchronousJob job)
 {
     if (job == null)
     {
         throw new ArgumentNullException("job");
     }
     if (this.State != TickableState.NeedTick)
     {
         this.State = TickableState.NeedTick;
     }
     Diagnostics.Assert(this.synchronousDelegates != null);
     this.synchronousDelegates.Add(job);
 }
Esempio n. 2
0
 public void Initialize(params object[] parameters)
 {
     this.State     = TickableState.NeedTick;
     this.ErrorCode = AIArmyMission.AIArmyMissionErrorCode.None;
     if (this.aiBehaviorTree == null)
     {
         this.aiBehaviorTree = new AIBehaviorTree(this.AIArmyMissionDefinition.Root)
         {
             AICommander = this.AICommander
         };
         this.aiBehaviorTree.Initialize();
     }
     this.aiBehaviorTree.Variables.Add("$Army", this.Army);
     this.TrySetParameters(parameters);
 }
    public void Tick()
    {
        if (this.synchronousDelegates.Count == 0)
        {
            this.State = TickableState.NoTick;
            return;
        }
        if (this.lastJobIndex <= 0)
        {
            this.lastJobIndex = this.synchronousDelegates.Count - 1;
        }
        Diagnostics.Assert(this.synchronousDelegates != null);
        int num = 0;

        while (this.lastJobIndex >= 0 && num++ <= this.tickLimit)
        {
            SynchronousJob synchronousJob = this.synchronousDelegates[this.lastJobIndex];
            if (synchronousJob == null)
            {
                goto IL_83;
            }
            switch (synchronousJob())
            {
            case SynchronousJobState.Running:
                break;

            case SynchronousJobState.Success:
            case SynchronousJobState.Failure:
                goto IL_83;

            default:
                goto IL_83;
            }
IL_73:
            this.lastJobIndex--;
            continue;
IL_83:
            this.synchronousDelegates.RemoveAt(this.lastJobIndex);
            goto IL_73;
        }
    }
Esempio n. 4
0
 public void Tick()
 {
     if (this.Completion != AIArmyMission.AIArmyMissionCompletion.Running)
     {
         this.State = TickableState.NoTick;
         return;
     }
     this.ErrorCode = AIArmyMission.AIArmyMissionErrorCode.None;
     if (this.aiBehaviorTree != null)
     {
         if (this.aiBehaviorTree.AICommander != this.AICommander)
         {
             this.aiBehaviorTree.AICommander = this.AICommander;
         }
         State state = this.aiBehaviorTree.Execute(new object[0]);
         this.LastPathfindTargetPosition = this.aiBehaviorTree.LastPathfindTargetPosition;
         this.ErrorCode = (AIArmyMission.AIArmyMissionErrorCode) this.aiBehaviorTree.ErrorCode;
         if (state == Amplitude.Unity.AI.BehaviourTree.State.Running)
         {
             if (this.ErrorCode == AIArmyMission.AIArmyMissionErrorCode.MoveInProgress)
             {
                 this.aiBehaviorTree.Reset();
                 return;
             }
         }
         else
         {
             if (state == Amplitude.Unity.AI.BehaviourTree.State.Failure)
             {
                 this.Completion = AIArmyMission.AIArmyMissionCompletion.Fail;
                 return;
             }
             this.Completion = AIArmyMission.AIArmyMissionCompletion.Success;
             return;
         }
     }
     else
     {
         this.Completion = AIArmyMission.AIArmyMissionCompletion.Fail;
     }
 }
Esempio n. 5
0
    protected virtual void Running()
    {
        AIData_Army aidata = this.aiDataRepository.GetAIData <AIData_Army>(this.AIDataArmyGUID);

        if (aidata == null || aidata.ArmyMission == null)
        {
            this.Completion = AICommanderMission.AICommanderMissionCompletion.Fail;
            return;
        }
        switch (aidata.ArmyMission.Completion)
        {
        case AIArmyMission.AIArmyMissionCompletion.Fail:
        {
            AIArmyMission.AIArmyMissionErrorCode errorCode = aidata.ArmyMission.ErrorCode;
            aidata.ArmyMission.Reset();
            TickableState tickableState = TickableState.NoTick;
            this.Completion = this.GetCompletionFor(errorCode, out tickableState);
            this.State      = tickableState;
            return;
        }

        case AIArmyMission.AIArmyMissionCompletion.Running:
            aidata.ArmyMission.Tick();
            return;

        case AIArmyMission.AIArmyMissionCompletion.Success:
        {
            aidata.ArmyMission.Reset();
            TickableState tickableState2 = TickableState.NoTick;
            this.Completion = this.GetCompletionWhenSuccess(aidata, out tickableState2);
            this.State      = tickableState2;
            return;
        }

        default:
            return;
        }
    }
Esempio n. 6
0
 protected override AICommanderMission.AICommanderMissionCompletion GetCompletionFor(AIArmyMission.AIArmyMissionErrorCode errorCode, out TickableState tickableState)
 {
     return(base.GetCompletionFor(errorCode, out tickableState));
 }
Esempio n. 7
0
 protected override AICommanderMission.AICommanderMissionCompletion GetCompletionWhenSuccess(AIData_Army aiArmyData, out TickableState tickableState)
 {
     tickableState = TickableState.Optional;
     return(AICommanderMission.AICommanderMissionCompletion.Success);
 }
 protected override AICommanderMission.AICommanderMissionCompletion GetCompletionWhenSuccess(AIData_Army armyData, out TickableState tickableState)
 {
     tickableState = TickableState.Optional;
     if (this.IsMissionCompleted())
     {
         return(AICommanderMission.AICommanderMissionCompletion.Success);
     }
     return(AICommanderMission.AICommanderMissionCompletion.Initializing);
 }
 protected override AICommanderMission.AICommanderMissionCompletion GetCompletionWhenSuccess(AIData_Army armyData, out TickableState tickableState)
 {
     tickableState = base.State;
     if (armyData.Army.GetPropertyValue(SimulationProperties.Movement) <= 0f)
     {
         base.State = TickableState.NoTick;
         this.SetRequestMessageExecutionState(RequestUnitListMessage.RequestUnitListState.RegroupingPending);
     }
     return(AICommanderMission.AICommanderMissionCompletion.Initializing);
 }
Esempio n. 10
0
 protected override AICommanderMission.AICommanderMissionCompletion GetCompletionWhenSuccess(AIData_Army aiArmyData, out TickableState tickableState)
 {
     tickableState = TickableState.Optional;
     if (this.IsMissionCompleted() || this.IsRegionColonized())
     {
         return(AICommanderMission.AICommanderMissionCompletion.Success);
     }
     return(AICommanderMission.AICommanderMissionCompletion.Running);
 }
Esempio n. 11
0
 protected override AICommanderMission.AICommanderMissionCompletion GetCompletionFor(AIArmyMission.AIArmyMissionErrorCode errorCode, out TickableState tickableState)
 {
     if (errorCode == AIArmyMission.AIArmyMissionErrorCode.NoTargetSelected && base.AIDataArmyGUID.IsValid && !this.IsMissionCompleted() && !this.IsRegionColonized())
     {
         tickableState = TickableState.Optional;
         return(AICommanderMission.AICommanderMissionCompletion.Running);
     }
     if (errorCode == AIArmyMission.AIArmyMissionErrorCode.InvalidDestination && this.PositionIndex + 1 < this.ListOfPosition.Length)
     {
         int positionIndex = this.PositionIndex;
         this.PositionIndex = positionIndex + 1;
         tickableState      = TickableState.NoTick;
         return(AICommanderMission.AICommanderMissionCompletion.Running);
     }
     return(base.GetCompletionFor(errorCode, out tickableState));
 }
Esempio n. 12
0
 protected virtual AICommanderMission.AICommanderMissionCompletion GetCompletionWhenSuccess(AIData_Army armyData, out TickableState tickableState)
 {
     tickableState = TickableState.Optional;
     return(AICommanderMission.AICommanderMissionCompletion.Initializing);
 }
Esempio n. 13
0
 protected virtual AICommanderMission.AICommanderMissionCompletion GetCompletionFor(AIArmyMission.AIArmyMissionErrorCode errorCode, out TickableState tickableState)
 {
     if (errorCode == AIArmyMission.AIArmyMissionErrorCode.MoveInProgress)
     {
         tickableState = TickableState.NeedTick;
         return(AICommanderMission.AICommanderMissionCompletion.Running);
     }
     if (errorCode == AIArmyMission.AIArmyMissionErrorCode.NoTargetSelected)
     {
         tickableState = TickableState.Optional;
         return(AICommanderMission.AICommanderMissionCompletion.Success);
     }
     if (errorCode == AIArmyMission.AIArmyMissionErrorCode.DestinationNotReached || errorCode == AIArmyMission.AIArmyMissionErrorCode.NoMovementPoint || errorCode == AIArmyMission.AIArmyMissionErrorCode.NoSavingPosition || errorCode == AIArmyMission.AIArmyMissionErrorCode.AllActionPointSpent)
     {
         tickableState = TickableState.NoTick;
         return(AICommanderMission.AICommanderMissionCompletion.Running);
     }
     if (errorCode == AIArmyMission.AIArmyMissionErrorCode.TargetBesieging)
     {
         tickableState = TickableState.NoTick;
         return(AICommanderMission.AICommanderMissionCompletion.Initializing);
     }
     if (errorCode == AIArmyMission.AIArmyMissionErrorCode.PathNotFound || errorCode == AIArmyMission.AIArmyMissionErrorCode.TargetLocked)
     {
         tickableState = TickableState.Optional;
         return(AICommanderMission.AICommanderMissionCompletion.Running);
     }
     if (errorCode == AIArmyMission.AIArmyMissionErrorCode.OrderGoToFail || errorCode == AIArmyMission.AIArmyMissionErrorCode.AlreadyInPosition || errorCode == AIArmyMission.AIArmyMissionErrorCode.NoTargetInRange || errorCode == AIArmyMission.AIArmyMissionErrorCode.SearchFail || errorCode == AIArmyMission.AIArmyMissionErrorCode.InvalidDestination)
     {
         tickableState = TickableState.Optional;
         return(AICommanderMission.AICommanderMissionCompletion.Initializing);
     }
     tickableState = TickableState.NoTick;
     return(AICommanderMission.AICommanderMissionCompletion.Fail);
 }