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); }
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; }