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(); } }
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 (Military military in this.Militaries) { this.BelongedFaction.RemoveMilitary(military); } this.PurifyFactionInfluences(); this.BelongedFaction = null; faction.AddArchitecture(this); faction.AddArchitectureKnownData(this); foreach (Captive captive in this.Captives.GetList()) { if (captive.CaptiveFaction == faction) { captive.CaptivePerson.Status = PersonStatus.Normal; captive.CaptivePerson.BelongedCaptive = null; } } foreach (Military military in this.Militaries) { faction.AddMilitary(military); } foreach (Routeway routeway in this.Routeways) { faction.AddRouteway(routeway); } faction.FirstSection.AddArchitecture(this); this.ApplyFactionInfluences(); } if (faction != null) { //this.jianzhuqizi.qizidezi.Text = faction.ToString().Substring(0, 1); } }
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); } }