public static Captive Create(GameScenario scenario, Person person, Faction faction) { if (person.BelongedFaction == null) { return null; } if (person.BelongedFaction == faction) { return null; } Captive captive = new Captive(); captive.Scenario = scenario; captive.ID = scenario.Captives.GetFreeGameObjectID(); captive.CaptivePerson = person; person.BelongedCaptive = captive; captive.CaptiveFaction = person.BelongedFaction; scenario.Captives.AddCaptiveWithEvent(captive); captive.CaptiveFaction.AddSelfCaptive(captive); faction.AddCaptive(captive); return captive; }
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()); } }
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); } }