public void ResetFaction(Faction faction) { Faction oldFaction = this.BelongedFaction; this.ResetAuto(); this.PlanFacilityKind = null; this.PlanFacilityKindID = -1; if ((faction != null) && base.Scenario.IsPlayer(faction)) { this.AutoHiring = true; this.AutoRewarding = true; } if (this.BelongedFaction != null && this.BelongedFaction != faction) { this.ClearFundPacks(); this.ClearRouteways(); this.ReleaseAllCaptive(); this.PurifyFactionInfluences(); if (this.BelongedSection != null) { this.BelongedSection.RemoveArchitecture(this); } this.DefensiveLegion = null; if (this == this.BelongedFaction.Capital) { Person leader = this.BelongedFaction.Leader; while (this.Persons.Count > 0) { Person person2 = this.Persons[0] as Person; person2.Status = PersonStatus.NoFaction; person2.LocationArchitecture = this; } //this.Persons.Clear(); while (this.MovingPersons.Count > 0) { Person person2 = this.MovingPersons[0] as Person; person2.OutsideTask = OutsideTaskKind.无; person2.TaskDays = 0; person2.Status = PersonStatus.NoFaction; person2.LocationArchitecture = this; person2.TargetArchitecture = null; } //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(); } if (faction != null) { faction.CheckLeaderDeath(leader); } this.BelongedFaction.Destroy(); } this.BelongedFaction.Capital = null; } else { while (this.Persons.Count > 0) { if ((this.Persons[0] as Person).LocationArchitecture != null) { (this.Persons[0] as Person).MoveToArchitecture(this.BelongedFaction.Capital); } } while (this.MovingPersons.Count > 0) { if ((this.MovingPersons[0] as Person).LocationArchitecture != null) { (this.MovingPersons[0] as Person).MoveToArchitecture(this.BelongedFaction.Capital); } } } if (this.BelongedFaction != null) { this.BelongedFaction.RemoveArchitectureMilitaries(this); this.BelongedFaction.RemoveArchitectureKnownData(this); this.BelongedFaction.RemoveArchitecture(this); } if (faction != null) { faction.AddArchitecture(this); this.ApplyFactionInfluences(); faction.AddArchitectureMilitaries(this); } else { this.BelongedFaction = null; } } else if (faction != null) { faction.AddArchitecture(this); this.ApplyFactionInfluences(); 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(); } foreach (LinkNode i in this.AIAllLinkNodes.Values) { i.A.CheckIsFrontLine(); } this.CheckIsFrontLine(); ExtensionInterface.call("ArchitectureResetFaction", new Object[] { this.Scenario, this, oldFaction }); }
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(); } }