Ejemplo n.º 1
0
    public override void Release()
    {
        GlobalObjectiveMessage globalObjectiveMessage;

        if (this.IsMissionFinished(false) && base.AIPlayer.Blackboard.TryGetMessage <GlobalObjectiveMessage>(base.GlobalObjectiveID, out globalObjectiveMessage))
        {
            globalObjectiveMessage.State = BlackboardMessage.StateValue.Message_Canceled;
        }
        if (this.terraformMessageId != 0UL)
        {
            EvaluableMessage_Terraform evaluableMessage_Terraform = base.AIPlayer.Blackboard.GetMessage(this.terraformMessageId) as EvaluableMessage_Terraform;
            if (evaluableMessage_Terraform != null)
            {
                if (evaluableMessage_Terraform.EvaluationState == EvaluableMessage.EvaluableMessageState.Validate || evaluableMessage_Terraform.EvaluationState == EvaluableMessage.EvaluableMessageState.Obtaining || evaluableMessage_Terraform.EvaluationState == EvaluableMessage.EvaluableMessageState.Pending)
                {
                    evaluableMessage_Terraform.Cancel();
                }
                base.AIPlayer.Blackboard.CancelMessage(this.terraformMessageId);
            }
        }
        this.RegionTarget         = null;
        this.terraformPosition    = WorldPosition.Invalid;
        this.deviceDefinitionName = string.Empty;
        base.Release();
    }
Ejemplo n.º 2
0
    protected override bool IsMissionCompleted()
    {
        AICommander_Terraformation commanderObjective = base.Commander as AICommander_Terraformation;

        if (!commanderObjective.IsPositionValidToTerraform(this.terraformPosition))
        {
            return(true);
        }
        EvaluableMessage_Terraform evaluableMessage_Terraform = commanderObjective.AIPlayer.Blackboard.FindFirst <EvaluableMessage_Terraform>(BlackboardLayerID.Empire, (EvaluableMessage_Terraform match) => match.RegionIndex == commanderObjective.RegionIndex && match.TerraformPosition == commanderObjective.TerraformPosition && match.DeviceDefinitionName == this.DeviceDefinitionName);

        return(evaluableMessage_Terraform == null || evaluableMessage_Terraform.State != BlackboardMessage.StateValue.Message_InProgress);
    }
Ejemplo n.º 3
0
    private void SendTerraformAction()
    {
        EvaluableMessage_Terraform evaluableMessage_Terraform = base.AIPlayer.Blackboard.FindFirst <EvaluableMessage_Terraform>(BlackboardLayerID.Empire, (EvaluableMessage_Terraform match) => match.RegionIndex == base.RegionIndex && match.TerraformPosition == this.terraformPosition && match.DeviceDefinitionName == this.DeviceDefinitionName);

        if (evaluableMessage_Terraform == null || evaluableMessage_Terraform.EvaluationState == EvaluableMessage.EvaluableMessageState.Cancel)
        {
            evaluableMessage_Terraform = new EvaluableMessage_Terraform(base.RegionIndex, this.TerraformPosition, this.DeviceDefinitionName);
            this.terraformMessageId    = base.AIPlayer.Blackboard.AddMessage(evaluableMessage_Terraform);
        }
        else
        {
            this.terraformMessageId = evaluableMessage_Terraform.ID;
        }
        evaluableMessage_Terraform.TimeOut = 1;
        evaluableMessage_Terraform.SetInterest(base.GlobalPriority, base.LocalPriority);
    }
Ejemplo n.º 4
0
    public override bool IsMissionFinished(bool forceStep)
    {
        if (!this.IsPositionValidToTerraform(this.terraformPosition))
        {
            return(true);
        }
        if (this.terraformMessageId != 0UL)
        {
            EvaluableMessage_Terraform evaluableMessage_Terraform = base.AIPlayer.Blackboard.GetMessage(this.terraformMessageId) as EvaluableMessage_Terraform;
            if (evaluableMessage_Terraform != null && (evaluableMessage_Terraform.State == BlackboardMessage.StateValue.Message_Canceled || evaluableMessage_Terraform.State == BlackboardMessage.StateValue.Message_Failed || evaluableMessage_Terraform.State == BlackboardMessage.StateValue.Message_Success))
            {
                return(true);
            }
        }
        GlobalObjectiveMessage globalObjectiveMessage;

        return(base.GlobalObjectiveID == 0UL || base.AIPlayer == null || !base.AIPlayer.Blackboard.TryGetMessage <GlobalObjectiveMessage>(base.GlobalObjectiveID, out globalObjectiveMessage) || globalObjectiveMessage.State == BlackboardMessage.StateValue.Message_Canceled || globalObjectiveMessage.State == BlackboardMessage.StateValue.Message_Failed);
    }
    private void OrderTerraform_TicketRaised(object sender, TicketRaisedEventArgs e)
    {
        AICommander_Terraformation commanderObjective = this.aiBehaviorTree.AICommander as AICommander_Terraformation;

        if (commanderObjective != null && !string.IsNullOrEmpty(this.DeviceDefinitionName))
        {
            EvaluableMessage_Terraform evaluableMessage_Terraform = commanderObjective.AIPlayer.Blackboard.FindFirst <EvaluableMessage_Terraform>(BlackboardLayerID.Empire, (EvaluableMessage_Terraform match) => match.RegionIndex == commanderObjective.RegionIndex && match.TerraformPosition == commanderObjective.TerraformPosition);
            if (evaluableMessage_Terraform != null)
            {
                if (this.ticket.PostOrderResponse != PostOrderResponse.Processed)
                {
                    evaluableMessage_Terraform.SetFailedToObtain();
                    this.aiBehaviorTree.ErrorCode = 37;
                }
                else
                {
                    evaluableMessage_Terraform.SetObtained();
                }
            }
        }
        this.orderExecuted = true;
    }