Ejemplo n.º 1
0
    private SynchronousJobState SynchronousJob_ChangeEmpirePlan()
    {
        if (this.empirePlanClasses == null)
        {
            this.empirePlanMessages.Clear();
            return(SynchronousJobState.Failure);
        }
        float num = 0f;
        AILayer_AccountManager layer = base.AIEntity.GetLayer <AILayer_AccountManager>();

        Diagnostics.Assert(layer != null);
        Account account = layer.TryGetAccount(AILayer_AccountManager.EmpirePlanAccountName);

        if (account == null)
        {
            this.empirePlanMessages.Clear();
            return(SynchronousJobState.Failure);
        }
        if (this.empirePlanMessages.Count != this.empirePlanClasses.Length)
        {
            Diagnostics.LogError("There must be one empire plan evaluable message by empire plan class.");
            this.empirePlanMessages.Clear();
            return(SynchronousJobState.Failure);
        }
        for (int i = 0; i < this.empirePlanMessages.Count; i++)
        {
            EvaluableMessage_EmpirePlan evaluableMessage_EmpirePlan = this.empirePlanMessages[i];
            if (this.departmentOfPlanification.IsEmpirePlanChoiced)
            {
                evaluableMessage_EmpirePlan.SetObtained();
            }
            else
            {
                EmpirePlanDefinition empirePlanDefinition = this.departmentOfPlanification.GetEmpirePlanDefinition(evaluableMessage_EmpirePlan.EmpirePlanClass, evaluableMessage_EmpirePlan.EmpirePlanLevel);
                if (empirePlanDefinition != null)
                {
                    float productionCostWithBonus = DepartmentOfTheTreasury.GetProductionCostWithBonus(base.AIEntity.Empire.SimulationObject, empirePlanDefinition, DepartmentOfTheTreasury.Resources.EmpirePoint);
                    if (num + productionCostWithBonus <= account.PromisedAmount)
                    {
                        num += productionCostWithBonus;
                        OrderChangeEmpirePlan order = new OrderChangeEmpirePlan(base.AIEntity.Empire.Index, empirePlanDefinition.EmpirePlanClass, empirePlanDefinition.EmpirePlanLevel);
                        Ticket ticket;
                        base.AIEntity.Empire.PlayerControllers.Client.PostOrder(order, out ticket, new EventHandler <TicketRaisedEventArgs>(this.OrderChangeEmpirePlan_TicketRaised));
                    }
                }
            }
        }
        this.empirePlanMessages.Clear();
        return(SynchronousJobState.Success);
    }
Ejemplo n.º 2
0
    private void OrderChangeEmpirePlan_TicketRaised(object sender, TicketRaisedEventArgs e)
    {
        OrderChangeEmpirePlan       orderEmpirePlan             = e.Order as OrderChangeEmpirePlan;
        EvaluableMessage_EmpirePlan evaluableMessage_EmpirePlan = base.AIEntity.AIPlayer.Blackboard.FindFirst <EvaluableMessage_EmpirePlan>(BlackboardLayerID.Empire, (EvaluableMessage_EmpirePlan match) => match.EvaluationState == EvaluableMessage.EvaluableMessageState.Validate && match.EmpirePlanClass == orderEmpirePlan.EmpirePlanClass);

        if (evaluableMessage_EmpirePlan != null)
        {
            if (e.Result == PostOrderResponse.Processed)
            {
                evaluableMessage_EmpirePlan.SetObtained();
            }
            else
            {
                evaluableMessage_EmpirePlan.SetFailedToObtain();
            }
        }
    }