public void ResetFaction(Faction faction) { this.ResetAuto(); if ((faction != null) && base.Scenario.IsPlayer(faction)) { this.AutoHiring = true; this.AutoRewarding = true; } if (this.BelongedFaction != null) { this.ClearFundPacks(); this.ClearRouteways(); this.ReleaseAllCaptive(); this.BelongedSection.RemoveArchitecture(this); this.DefensiveLegion = null; if (this == this.BelongedFaction.Capital) { Person leader = this.BelongedFaction.Leader; foreach (Person person2 in this.Persons) { this.BelongedFaction.RemovePerson(person2); this.AddNoFactionPerson(person2); } this.Persons.Clear(); foreach (Person person2 in this.MovingPersons) { person2.OutsideTask = OutsideTaskKind.无; person2.TaskDays = 0; if (person2.BelongedFaction != null) { person2.BelongedFaction.RemovePerson(person2); } } this.MovingPersons.Clear(); if ((leader.LocationTroop == null) || leader.IsCaptive) { TroopList list = new TroopList(); foreach (Troop troop in this.BelongedFaction.Troops) { list.Add(troop); } foreach (Troop troop in list) { troop.FactionDestroy(); } this.BelongedFaction.Destroy(); if (faction != null) { faction.CheckLeaderDeath(leader); } } this.BelongedFaction.Capital = null; } else { PersonList list2 = new PersonList(); foreach (Person person2 in this.Persons) { person2.MoveToArchitecture(this.BelongedFaction.Capital); list2.Add(person2); } foreach (Person person2 in list2) { this.RemovePerson(person2); } foreach (Person person2 in this.MovingPersons) { person2.MoveToArchitecture(this.BelongedFaction.Capital); } this.MovingPersons.Clear(); } if (this.BelongedFaction != null) { this.BelongedFaction.RemoveArchitectureMilitaries(this); this.BelongedFaction.RemoveArchitectureKnownData(this); this.BelongedFaction.RemoveArchitecture(this); } if (faction != null) { faction.AddArchitecture(this); faction.AddArchitectureMilitaries(this); faction.AddArchitecturePersons(this); } else { this.BelongedFaction = null; } } else if (faction != null) { faction.AddArchitecture(this); faction.AddArchitectureMilitaries(this); } if (faction != null) { this.jianzhuqizi.qizidezi.Text = faction.ToString().Substring(0, 1); } foreach (Architecture architecture in base.Scenario.Architectures) { architecture.RefreshViewArea(); } foreach (Troop troop in base.Scenario.Troops) { troop.RefreshViewArchitectureRelatedArea(); } }
public void ChangeFaction(Faction faction) { this.ResetAuto(); if ((faction != null) && base.Scenario.IsPlayer(faction)) { this.AutoHiring = true; this.AutoRewarding = true; } if ((faction != null) && (this.BelongedFaction != null)) { this.BelongedFaction.Architectures.Remove(this); this.BelongedFaction.RemoveArchitectureKnownData(this); if (!base.Scenario.IsPlayer(this.BelongedFaction)) { this.ClearRouteways(); } else { foreach (Routeway routeway in this.Routeways) { this.BelongedFaction.RemoveRouteway(routeway); } } foreach (Person person in this.Persons) { this.BelongedFaction.RemovePerson(person); } foreach (Person person in this.MovingPersons) { this.BelongedFaction.RemovePerson(person); } foreach (Captive captive in this.Captives) { this.BelongedFaction.RemoveCaptive(captive); } foreach (Military military in this.Militaries) { this.BelongedFaction.RemoveMilitary(military); } this.BelongedFaction = null; faction.AddArchitecture(this); faction.AddArchitectureKnownData(this); faction.AddArchitecturePersons(this); foreach (Person person in this.MovingPersons) { faction.AddPerson(person); } foreach (Captive captive in this.Captives.GetList()) { if (captive.CaptiveFaction == faction) { captive.CaptivePerson.BelongedCaptive = null; this.RemoveCaptive(captive); captive.CaptiveFaction.RemoveSelfCaptive(captive); base.Scenario.Captives.Remove(captive); } else { faction.AddCaptive(captive); } } this.InformationCoolDown = 0; foreach (Military military in this.Militaries) { faction.AddMilitary(military); } foreach (Routeway routeway in this.Routeways) { faction.AddRouteway(routeway); } faction.FirstSection.AddArchitecture(this); } if (faction != null) { this.jianzhuqizi.qizidezi.Text = faction.ToString().Substring(0, 1); } }