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