private void AddWarRelationships(IEnumerable <StanceLink> stances) { foreach (StanceLink stanceLink in from x in stances where x.IsAtWar select x into w orderby w.Faction1.Name.ToString() + w.Faction2.Name.ToString() select w) { if (stanceLink.Faction1 is Kingdom && stanceLink.Faction2 is Kingdom && !stanceLink.Faction1.IsMinorFaction && !stanceLink.Faction2.IsMinorFaction) { bool isFaction1War = stanceLink.Faction1 == Faction1 || stanceLink.Faction2 == Faction1; bool isFaction2War = stanceLink.Faction1 == Faction2 || stanceLink.Faction2 == Faction2; if (isFaction1War && isFaction2War) { // make sure we only add the shared war once if (Faction1Wars.Any(war => war.Faction == Faction2)) { continue; } } if (isFaction1War) { Faction1Wars.Add(new DiplomacyFactionRelationshipVM(stanceLink.Faction1 == Faction1 ? stanceLink.Faction2 : stanceLink.Faction1)); } if (isFaction2War) { Faction2Wars.Add(new DiplomacyFactionRelationshipVM(stanceLink.Faction1 == Faction2 ? stanceLink.Faction2 : stanceLink.Faction1)); } } } }
public void UpdateDiplomacyProperties() { if (Faction1Wars == null) { Faction1Wars = new MBBindingList <DiplomacyFactionRelationshipVM>(); } if (Faction1Allies == null) { Faction1Allies = new MBBindingList <DiplomacyFactionRelationshipVM>(); } if (Faction2Wars == null) { Faction2Wars = new MBBindingList <DiplomacyFactionRelationshipVM>(); } if (Faction2Allies == null) { Faction2Allies = new MBBindingList <DiplomacyFactionRelationshipVM>(); } if (Faction1Pacts == null) { Faction1Pacts = new MBBindingList <DiplomacyFactionRelationshipVM>(); } if (Faction2Pacts == null) { Faction2Pacts = new MBBindingList <DiplomacyFactionRelationshipVM>(); } Faction1Wars.Clear(); Faction1Allies.Clear(); Faction2Wars.Clear(); Faction2Allies.Clear(); Faction1Pacts.Clear(); Faction2Pacts.Clear(); AddWarRelationships(Faction1.Stances); AddWarRelationships(Faction2.Stances); foreach (Kingdom kingdom in Kingdom.All) { if (FactionManager.IsAlliedWithFaction(kingdom, Faction1) && kingdom != Faction1) { Faction1Allies.Add(new DiplomacyFactionRelationshipVM(kingdom)); } if (FactionManager.IsAlliedWithFaction(kingdom, Faction2) && kingdom != Faction2) { Faction2Allies.Add(new DiplomacyFactionRelationshipVM(kingdom)); } AddNonAggressionPactRelationships(kingdom, Faction1, Faction1Pacts); AddNonAggressionPactRelationships(kingdom, Faction2, Faction2Pacts); } }