bool IDiplomaticRelationManagment.RemoveDiplomaticAbility(DiplomaticAbilityDefinition diplomaticAbilityDefinition) { if (diplomaticAbilityDefinition == null) { throw new ArgumentNullException("diplomaticAbilityDefinition"); } Diagnostics.Assert(this.diplomaticAbilities != null); int num = 0; for (int i = 0; i < this.diplomaticAbilities.Count; i++) { if (this.diplomaticAbilities[i].Definition.Name == diplomaticAbilityDefinition.Name) { this.diplomaticAbilities[i].IsActive = false; this.diplomaticAbilities.RemoveAt(i); num++; } } if (num > 0) { Diagnostics.Log("Diplomatic relation between empire {0} and empire {1}: Remove ability {2}", new object[] { this.OwnerEmpireIndex, this.OtherEmpireIndex, diplomaticAbilityDefinition.Name }); return(true); } return(false); }
public void RefreshDiplomaticAbilities() { IGameService service = Services.GetService <IGameService>(); global::Game game = service.Game as global::Game; Diagnostics.Assert(game != null); int count = this.diplomaticAbilities.Count; for (int i = 0; i < count; i++) { DiplomaticAbilityDefinition definition = this.diplomaticAbilities[i].Definition; if (definition != null) { bool flag = definition.CheckDiplomaticAbilityPrerequisites(game.Empires[this.OwnerEmpireIndex], game.Empires[this.OtherEmpireIndex]) && definition.CheckPrerequisites(game.Empires[this.OwnerEmpireIndex]); if (flag != this.diplomaticAbilities[i].IsActive) { if (this.diplomaticAbilities[i].IsActive) { this.diplomaticAbilities[i].IsActive = false; this.UpdateEmpireDiplomaticAbilityDescriptor(definition, game.Empires[this.OwnerEmpireIndex], false); } else { this.diplomaticAbilities[i].IsActive = true; this.UpdateEmpireDiplomaticAbilityDescriptor(definition, game.Empires[this.OwnerEmpireIndex], true); } } } } }
private void UpdateEmpireDiplomaticAbilityDescriptor(DiplomaticAbilityDefinition diplomaticAbilityDefinition, global::Empire empire, bool isAddOperation) { if (diplomaticAbilityDefinition == null || diplomaticAbilityDefinition.Descriptors == null) { return; } for (int i = 0; i < diplomaticAbilityDefinition.Descriptors.Length; i++) { SimulationDescriptor descriptor = diplomaticAbilityDefinition.Descriptors[i]; if (isAddOperation) { empire.AddDescriptor(descriptor, false); } else { empire.RemoveDescriptor(descriptor); } } empire.Refresh(false); }
void IDiplomaticRelationManagment.AddDiplomaticAbility(DiplomaticAbilityDefinition diplomaticAbilityDefinition) { if (diplomaticAbilityDefinition == null) { throw new ArgumentNullException("diplomaticAbilityDefinition"); } if (this.HasAbility(diplomaticAbilityDefinition.Name)) { return; } IGameService service = Services.GetService <IGameService>(); Diagnostics.Assert(service != null); global::Game game = service.Game as global::Game; Diagnostics.Assert(game != null); DiplomaticAbility diplomaticAbility = new DiplomaticAbility(diplomaticAbilityDefinition, game.Turn); Diagnostics.Assert(this.diplomaticAbilities != null); this.diplomaticAbilities.Add(diplomaticAbility); diplomaticAbility.IsActive = true; }