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