Esempio n. 1
0
 public void ChangeFaction(Faction faction)
 {
     if ((faction != null) && (this.BelongedFaction != null))
     {
         if (this.BelongedLegion.BelongedFaction != faction)
         {
             this.BelongedLegion.BelongedFaction.RemoveLegion(this.BelongedLegion);
             faction.AddLegion(this.BelongedLegion);
             if ((this.BelongedLegion.Kind == LegionKind.Offensive) && (this.BelongedLegion.WillArchitecture.BelongedFaction == faction))
             {
                 this.BelongedLegion.Kind = LegionKind.Defensive;
             }
         }
         this.BelongedFaction.Troops.Remove(this);
         this.BelongedFaction.RemoveTroopKnownAreaData(this);
         foreach (Person person in this.Persons)
         {
             this.BelongedFaction.RemovePerson(person);
         }
         foreach (Captive captive in this.Captives)
         {
             this.BelongedFaction.RemoveCaptive(captive);
         }
         this.BelongedFaction.RemoveMilitary(this.Army);
         this.BelongedFaction = null;
         faction.AddTroop(this);
         faction.AddTroopKnownAreaData(this);
         foreach (Person person in this.Persons)
         {
             faction.AddPerson(person);
         }
         foreach (Captive captive in this.Captives.GetList())
         {
             if (captive.CaptiveFaction == faction)
             {
                 captive.CaptivePerson.MoveToArchitecture(captive.CaptiveFaction.Capital);
                 captive.CaptivePerson.BelongedCaptive = null;
                 this.RemoveCaptive(captive);
                 captive.CaptiveFaction.RemoveSelfCaptive(captive);
                 base.Scenario.Captives.Remove(captive);
             }
             else
             {
                 faction.AddCaptive(captive);
             }
         }
         faction.AddMilitary(this.Army);
         this.RefreshWithPersonList(this.Persons.GetList());
     }
 }