Ejemplo n.º 1
0
 private void OnChangeContractTermLineQuantity(ContractTermLine contractTermLine)
 {
     if (this.DiplomaticContract == null)
     {
         Diagnostics.LogWarning("Diplomatic contract is null");
         return;
     }
     if (contractTermLine.ContractTerm is DiplomaticTermResourceExchange)
     {
         DiplomaticTermResourceExchange diplomaticTermResourceExchange = contractTermLine.ContractTerm as DiplomaticTermResourceExchange;
         DiplomaticTermResourceExchange term = new DiplomaticTermResourceExchange((DiplomaticTermResourceExchangeDefinition)diplomaticTermResourceExchange.Definition, diplomaticTermResourceExchange.EmpireWhichProposes, diplomaticTermResourceExchange.EmpireWhichProvides, diplomaticTermResourceExchange.EmpireWhichReceives, diplomaticTermResourceExchange.ResourceName, contractTermLine.CurrentQuantity);
         DiplomaticTermChange[]         diplomaticTermChanges = new DiplomaticTermChange[]
         {
             DiplomaticTermChange.Refresh(term, contractTermLine.ContractTerm.Index)
         };
         OrderChangeDiplomaticContractTermsCollection order = new OrderChangeDiplomaticContractTermsCollection(this.DiplomaticContract, diplomaticTermChanges);
         Ticket ticket;
         base.PlayerController.PostOrder(order, out ticket, new EventHandler <TicketRaisedEventArgs>(this.OnOrderChangeDiplomaticContractTermsCollectionResponse));
     }
     else
     {
         if (!(contractTermLine.ContractTerm is DiplomaticTermBoosterExchange))
         {
             Diagnostics.LogError("Trying to change quantity on a term that doesn't have any quantity.");
             return;
         }
         DiplomaticTermBoosterExchange termBoosterExchange = contractTermLine.ContractTerm as DiplomaticTermBoosterExchange;
         DepartmentOfEducation         agency = termBoosterExchange.EmpireWhichProvides.GetAgency <DepartmentOfEducation>();
         List <GameEntityGUID>         list   = (from match in agency
                                                 where match.Constructible.Name == termBoosterExchange.BoosterDefinitionName
                                                 select match into selectedBooster
                                                 select selectedBooster.GUID).ToList <GameEntityGUID>();
         int num = (int)contractTermLine.CurrentQuantity;
         if (num < list.Count)
         {
             list.RemoveRange(num, list.Count - num);
             list.TrimExcess();
         }
         GameEntityGUID[] boosterGUIDs       = list.ToArray();
         DiplomaticTermBoosterExchange term2 = new DiplomaticTermBoosterExchange((DiplomaticTermBoosterExchangeDefinition)termBoosterExchange.Definition, termBoosterExchange.EmpireWhichProposes, termBoosterExchange.EmpireWhichProvides, termBoosterExchange.EmpireWhichReceives, boosterGUIDs, termBoosterExchange.BoosterDefinitionName);
         DiplomaticTermChange[]        diplomaticTermChanges2 = new DiplomaticTermChange[]
         {
             DiplomaticTermChange.Refresh(term2, contractTermLine.ContractTerm.Index)
         };
         OrderChangeDiplomaticContractTermsCollection order2 = new OrderChangeDiplomaticContractTermsCollection(this.DiplomaticContract, diplomaticTermChanges2);
         Ticket ticket2;
         base.PlayerController.PostOrder(order2, out ticket2, new EventHandler <TicketRaisedEventArgs>(this.OnOrderChangeDiplomaticContractTermsCollectionResponse));
     }
 }
Ejemplo n.º 2
0
 private GuiDiplomaticTerm.TermType GetTermType()
 {
     if (!(this.Term.Definition.Category == "Treaty"))
     {
         if (this.Term.Definition.Category == "Resource")
         {
             DiplomaticTermResourceExchange diplomaticTermResourceExchange = this.Term as DiplomaticTermResourceExchange;
             if (diplomaticTermResourceExchange != null)
             {
                 if (diplomaticTermResourceExchange.ResourceName == "EmpireMoney")
                 {
                     return(GuiDiplomaticTerm.TermType.Dust);
                 }
                 IDatabase <ResourceDefinition> database = Databases.GetDatabase <ResourceDefinition>(false);
                 ResourceDefinition             resourceDefinition;
                 if (database.TryGetValue(diplomaticTermResourceExchange.ResourceName, out resourceDefinition))
                 {
                     if (resourceDefinition.ResourceType == ResourceDefinition.Type.Strategic)
                     {
                         return(GuiDiplomaticTerm.TermType.Strategic);
                     }
                     if (resourceDefinition.ResourceType == ResourceDefinition.Type.Luxury)
                     {
                         return(GuiDiplomaticTerm.TermType.Luxury);
                     }
                     if (resourceDefinition.ResourceType == ResourceDefinition.Type.Common)
                     {
                         return(GuiDiplomaticTerm.TermType.Orb);
                     }
                 }
             }
         }
         else
         {
             if (this.Term.Definition.Category == "Booster" && this.Term is DiplomaticTermBoosterExchange)
             {
                 return(GuiDiplomaticTerm.TermType.Booster);
             }
             if (this.Term.Definition.Category == "City" && this.Term is DiplomaticTermCityExchange)
             {
                 return(GuiDiplomaticTerm.TermType.City);
             }
             if (this.Term.Definition.Category == "Fortress" && this.Term is DiplomaticTermFortressExchange)
             {
                 return(GuiDiplomaticTerm.TermType.Fortress);
             }
             if (this.Term.Definition.Category == "Technology" && this.Term is DiplomaticTermTechnologyExchange)
             {
                 return(GuiDiplomaticTerm.TermType.Technology);
             }
         }
         return(GuiDiplomaticTerm.TermType.Unknown);
     }
     if (this.Term is DiplomaticTermDiplomaticRelationState)
     {
         if (this.Term.Definition.PropositionMethod == DiplomaticTerm.PropositionMethod.Negotiation)
         {
             return(GuiDiplomaticTerm.TermType.RelationStateNegotiationTreaty);
         }
         return(GuiDiplomaticTerm.TermType.RelationStateDeclarationTreaty);
     }
     else
     {
         if (this.Term is DiplomaticTermPrisonerExchange)
         {
             return(GuiDiplomaticTerm.TermType.Prisoner);
         }
         if (this.Term.Definition.PropositionMethod == DiplomaticTerm.PropositionMethod.Negotiation)
         {
             return(GuiDiplomaticTerm.TermType.StandardNegotiationTreaty);
         }
         return(GuiDiplomaticTerm.TermType.StandardDeclarationTreaty);
     }
 }
Ejemplo n.º 3
0
    void IDiplomaticContractManagement.SetDiplomaticState(DiplomaticContractState destinationState)
    {
        DiplomaticContractState state   = this.State;
        IGameService            service = Services.GetService <IGameService>();

        Diagnostics.Assert(service != null);
        global::Game game = service.Game as global::Game;

        Diagnostics.Assert(game != null);
        this.TurnAtTheBeginningOfTheState = game.Turn;
        if (destinationState == DiplomaticContractState.Proposed && this.EmpireWhichProposes.IsControlledByAI && !this.EmpireWhichReceives.IsControlledByAI)
        {
            for (int i = this.terms.Count - 1; i >= 0; i--)
            {
                DiplomaticTermResourceExchange diplomaticTermResourceExchange = this.terms[i] as DiplomaticTermResourceExchange;
                if (diplomaticTermResourceExchange != null && diplomaticTermResourceExchange.EmpireWhichProvides.Index == this.EmpireWhichProposes.Index)
                {
                    DepartmentOfTheTreasury agency = diplomaticTermResourceExchange.EmpireWhichProvides.GetAgency <DepartmentOfTheTreasury>();
                    if (agency.TryTransferResources(diplomaticTermResourceExchange.EmpireWhichProvides, diplomaticTermResourceExchange.ResourceName, -diplomaticTermResourceExchange.Amount))
                    {
                        float num;
                        agency.TryGetResourceStockValue(diplomaticTermResourceExchange.EmpireWhichProvides, diplomaticTermResourceExchange.ResourceName, out num, false);
                        Diagnostics.Log("ELCP {0} with {1} Buffering Resource {2} {3}, providerstock2: {4}", new object[]
                        {
                            diplomaticTermResourceExchange.EmpireWhichProvides,
                            diplomaticTermResourceExchange.EmpireWhichReceives,
                            diplomaticTermResourceExchange.ResourceName,
                            diplomaticTermResourceExchange.Amount,
                            num
                        });
                        diplomaticTermResourceExchange.BufferedAmount = diplomaticTermResourceExchange.Amount;
                    }
                }
            }
        }
        if (destinationState == DiplomaticContractState.Negotiation || destinationState == DiplomaticContractState.Refused || destinationState == DiplomaticContractState.Ignored)
        {
            for (int j = this.terms.Count - 1; j >= 0; j--)
            {
                DiplomaticTermResourceExchange diplomaticTermResourceExchange2 = this.terms[j] as DiplomaticTermResourceExchange;
                if (diplomaticTermResourceExchange2 != null && diplomaticTermResourceExchange2.BufferedAmount > 0f)
                {
                    DepartmentOfTheTreasury agency2 = diplomaticTermResourceExchange2.EmpireWhichProvides.GetAgency <DepartmentOfTheTreasury>();
                    agency2.TryTransferResources(diplomaticTermResourceExchange2.EmpireWhichProvides, diplomaticTermResourceExchange2.ResourceName, diplomaticTermResourceExchange2.BufferedAmount);
                    float num2;
                    agency2.TryGetResourceStockValue(diplomaticTermResourceExchange2.EmpireWhichProvides, diplomaticTermResourceExchange2.ResourceName, out num2, false);
                    Diagnostics.Log("ELCP {0} with {1} UnBuffering Resource {2} {3} {4}, providerstock2: {5}", new object[]
                    {
                        diplomaticTermResourceExchange2.EmpireWhichProvides,
                        diplomaticTermResourceExchange2.EmpireWhichReceives,
                        diplomaticTermResourceExchange2.ResourceName,
                        diplomaticTermResourceExchange2.BufferedAmount,
                        diplomaticTermResourceExchange2.Amount,
                        num2
                    });
                    diplomaticTermResourceExchange2.BufferedAmount = 0f;
                }
            }
        }
        if (state == DiplomaticContractState.Proposed && destinationState == DiplomaticContractState.Negotiation)
        {
            global::Empire empireWhichProposes = this.EmpireWhichProposes;
            this.EmpireWhichProposes = this.EmpireWhichReceives;
            this.EmpireWhichReceives = empireWhichProposes;
            float empireWhichProposesEmpirePointInvestment = this.EmpireWhichProposesEmpirePointInvestment;
            this.EmpireWhichProposesEmpirePointInvestment = this.EmpireWhichReceivesEmpirePointInvestment;
            this.EmpireWhichReceivesEmpirePointInvestment = empireWhichProposesEmpirePointInvestment;
            for (int k = this.terms.Count - 1; k >= 0; k--)
            {
                DiplomaticTerm diplomaticTerm = this.terms[k];
                Diagnostics.Assert(diplomaticTerm != null);
                if (!diplomaticTerm.CanApply(this, new string[0]))
                {
                    this.terms.RemoveAt(k);
                }
            }
            int contractRevisionNumber = this.ContractRevisionNumber;
            this.ContractRevisionNumber = contractRevisionNumber + 1;
        }
        if (destinationState == DiplomaticContractState.Signed)
        {
            this.ApplyTerms();
        }
        Diagnostics.Log("Contract {0} pass from state {1} to state {2}.", new object[]
        {
            this.GUID,
            this.State,
            destinationState
        });
        this.State = destinationState;
        this.OnDiplomaticContractChange();
    }
Ejemplo n.º 4
0
 public void GenerateTooltip(AgeTooltip ageTooltip)
 {
     if (this.Type == GuiDiplomaticTerm.TermType.Dust)
     {
         ageTooltip.Class      = "Simple";
         ageTooltip.Content    = string.Empty;
         ageTooltip.ClientData = null;
         return;
     }
     if (this.Type == GuiDiplomaticTerm.TermType.City && this.Term.Definition.Name == DiplomaticTermCityExchange.MimicsCityDeal)
     {
         string text = this.Term.EmpireWhichProvides.Faction.Affinity.Name.ToString();
         text = text.Replace("Affinity", "");
         if (text == "Mezari")
         {
             text = "Vaulters";
         }
         ageTooltip.Class      = "Simple";
         ageTooltip.Content    = "#FFB43F#" + AgeLocalizer.Instance.LocalizeString("%" + text + "IntegrationDescriptor1Title") + "#REVERT#\n\n" + AgeLocalizer.Instance.LocalizeString("%" + text + "IntegrationDescriptor1EffectOverride");
         ageTooltip.ClientData = null;
         return;
     }
     if (this.Type == GuiDiplomaticTerm.TermType.Strategic || this.Type == GuiDiplomaticTerm.TermType.Luxury)
     {
         DiplomaticTermResourceExchange diplomaticTermResourceExchange = this.Term as DiplomaticTermResourceExchange;
         ResourceDefinition             resourceDefinition;
         if (diplomaticTermResourceExchange != null && Databases.GetDatabase <ResourceDefinition>(false).TryGetValue(diplomaticTermResourceExchange.ResourceName, out resourceDefinition))
         {
             IPlayerControllerRepositoryService service = Services.GetService <IGameService>().Game.Services.GetService <IPlayerControllerRepositoryService>();
             Diagnostics.Assert(service != null);
             ResourceTooltipData resourceTooltipData = new ResourceTooltipData(resourceDefinition, service.ActivePlayerController.Empire as global::Empire);
             if (this.Type == GuiDiplomaticTerm.TermType.Luxury)
             {
                 IDatabase <BoosterDefinition> database = Databases.GetDatabase <BoosterDefinition>(false);
                 if (database != null)
                 {
                     resourceTooltipData.Constructible = database.GetValue("Booster" + resourceDefinition.Name);
                 }
             }
             ageTooltip.Class      = resourceTooltipData.TooltipClass;
             ageTooltip.Content    = resourceDefinition.Name;
             ageTooltip.ClientData = resourceTooltipData;
             return;
         }
     }
     else if (this.Type == GuiDiplomaticTerm.TermType.Booster)
     {
         DiplomaticTermBoosterExchange diplomaticTermBoosterExchange = this.Term as DiplomaticTermBoosterExchange;
         BoosterDefinition             boosterDefinition;
         if (diplomaticTermBoosterExchange != null && Databases.GetDatabase <BoosterDefinition>(false).TryGetValue(diplomaticTermBoosterExchange.BoosterDefinitionName, out boosterDefinition))
         {
             GuiStackedBooster guiStackedBooster = new GuiStackedBooster(boosterDefinition);
             ageTooltip.Class      = guiStackedBooster.BoosterDefinition.TooltipClass;
             ageTooltip.Content    = guiStackedBooster.BoosterDefinition.Name;
             ageTooltip.ClientData = guiStackedBooster;
             return;
         }
     }
     else
     {
         if (this.Type == GuiDiplomaticTerm.TermType.Technology)
         {
             DepartmentOfScience.BuildTechnologyTooltip((this.Term as DiplomaticTermTechnologyExchange).TechnologyDefinition, this.Term.EmpireWhichProvides, ageTooltip, MultipleConstructibleTooltipData.TechnologyState.Normal);
             return;
         }
         if (this.Type == GuiDiplomaticTerm.TermType.Orb)
         {
             ageTooltip.Class      = "OrbResource";
             ageTooltip.Content    = "Orb";
             ageTooltip.ClientData = null;
             return;
         }
         ageTooltip.Class      = "Simple";
         ageTooltip.Content    = this.Description;
         ageTooltip.ClientData = this;
     }
 }
    public override bool Equals(DiplomaticTerm other)
    {
        DiplomaticTermResourceExchange diplomaticTermResourceExchange = other as DiplomaticTermResourceExchange;

        return(diplomaticTermResourceExchange != null && diplomaticTermResourceExchange.ResourceName == this.ResourceName);
    }