public void AddDiplomaticAbility(DiplomaticAbility diplomaticAbility) { if (diplomaticAbility == null) { throw new ArgumentNullException("diplomaticAbility"); } if (this.HasAbility(diplomaticAbility.Name)) { return; } Diagnostics.Assert(this.diplomaticAbilities != null); this.diplomaticAbilities.Add(diplomaticAbility); diplomaticAbility.IsActive = true; }
private bool CheckAbilityPrerequisites(DiplomaticAbility diplomaticAbility, params string[] flags) { if (diplomaticAbility == null || diplomaticAbility.Definition == null) { throw new ArgumentNullException(); } if (diplomaticAbility.Definition.DiplomaticPrerequisites == null) { return(true); } IGameService service = Services.GetService <IGameService>(); global::Game game = service.Game as global::Game; return(game == null || game.Empires == null || (diplomaticAbility.Definition.CheckDiplomaticAbilityPrerequisites(game.Empires[this.OwnerEmpireIndex], game.Empires[this.OtherEmpireIndex]) && diplomaticAbility.Definition.CheckPrerequisites(game.Empires[this.OwnerEmpireIndex]))); }
public int GetAbilityActivationTurn(StaticString abilityName) { if (StaticString.IsNullOrEmpty(abilityName)) { throw new ArgumentNullException("abilityName"); } Diagnostics.Assert(this.diplomaticAbilities != null); DiplomaticAbility diplomaticAbility = this.diplomaticAbilities.Find((DiplomaticAbility match) => match.Name == abilityName); if (diplomaticAbility == null) { return(-1); } return(diplomaticAbility.ActivationTurn); }
public bool HasInactiveAbility(StaticString abilityName) { if (StaticString.IsNullOrEmpty(abilityName)) { throw new ArgumentNullException("abilityName"); } Diagnostics.Assert(this.diplomaticAbilities != null); int count = this.diplomaticAbilities.Count; for (int i = 0; i < count; i++) { DiplomaticAbility diplomaticAbility = this.diplomaticAbilities[i]; if (diplomaticAbility.Name == abilityName) { return(!diplomaticAbility.IsActive); } } return(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; }
public virtual void ReadXml(XmlReader reader) { int num = reader.ReadVersionAttribute(); reader.ReadStartElement(); this.OwnerEmpireIndex = reader.ReadElementString <int>("OwnerEmpireIndex"); this.OtherEmpireIndex = reader.ReadElementString <int>("OtherEmpireIndex"); string text = reader.ReadElementString <string>("State"); if (string.IsNullOrEmpty(text)) { this.State = null; Diagnostics.Assert(this.OwnerEmpireIndex == this.OtherEmpireIndex); } else { IDatabase <DiplomaticRelationState> database = Databases.GetDatabase <DiplomaticRelationState>(false); DiplomaticRelationState state; if (!database.TryGetValue(text, out state)) { Diagnostics.LogError("Can't retrieve diplomatic relation state {0} from database.", new object[] { text }); } this.State = state; } this.TurnAtTheBeginningOfTheState = reader.ReadElementString <int>("TurnAtTheBeginningOfTheState"); int attribute = reader.GetAttribute <int>("Count"); reader.ReadStartElement("DiplomaticAbilities"); if (num >= 3) { for (int i = 0; i < attribute; i++) { DiplomaticAbility diplomaticAbility = new DiplomaticAbility(); reader.ReadElementSerializable <DiplomaticAbility>(ref diplomaticAbility); ((IDiplomaticRelationManagment)this).AddDiplomaticAbility(diplomaticAbility); } } else { IDatabase <DiplomaticAbilityDefinition> database2 = Databases.GetDatabase <DiplomaticAbilityDefinition>(false); for (int j = 0; j < attribute; j++) { string text2 = reader.ReadElementString <string>("DiplomaticAbility"); if (text2 == "PassOverArmies") { text2 = DiplomaticAbilityDefinition.PassThroughArmies; } if (text2 == "VisionAndMapExchange") { text2 = DiplomaticAbilityDefinition.VisionExchange; } DiplomaticAbilityDefinition diplomaticAbilityDefinition; if (!database2.TryGetValue(text2, out diplomaticAbilityDefinition)) { Diagnostics.LogError("Can't retrieve the diplomatic ability {0}.", new object[] { text2 }); } ((IDiplomaticRelationManagment)this).AddDiplomaticAbility(diplomaticAbilityDefinition); } } reader.ReadEndElement("DiplomaticAbilities"); if (num >= 2) { this.score = new DiplomaticRelationScore(1f, -100f, 100f); reader.ReadElementSerializable <DiplomaticRelationScore>(ref this.score); } IEndTurnService service = Services.GetService <IEndTurnService>(); this.RelationDuration = (float)(service.Turn - this.TurnAtTheBeginningOfTheState); }