コード例 #1
0
        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));
                    }
                }
            }
        }
コード例 #2
0
        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);
            }
        }