public static Military Create(GameScenario scenario, Architecture architecture, MilitaryKind kind) { Military military = new Military(); military.Scenario = scenario; military.KindID = kind.ID; military.ID = scenario.Militaries.GetFreeGameObjectID(); if (kind.RecruitLimit == 1) { military.Name = kind.Name; } else { military.Name = kind.Name + "队"; } architecture.AddMilitary(military); architecture.BelongedFaction.AddMilitary(military); scenario.Militaries.AddMilitary(military); architecture.DecreaseFund((int) (kind.CreateCost * kind.GetRateOfNewMilitary(architecture))); if (kind.IsTransport) { military.Quantity = kind.MaxScale; military.Morale = military.MoraleCeiling; military.Combativity = military.CombativityCeiling; } return military; }
public void Enter(Architecture a) { if (a.BelongedFaction == this.BelongedFaction) { PersonList list = new PersonList(); foreach (Person person in this.Persons) { list.Add(person); a.AddPerson(person); } this.Persons.ApplyInfluences(); foreach (Person person in list) { this.RemovePerson(person); } if (this.Army.ShelledMilitary == null) { a.AddMilitary(this.Army); } else { a.AddMilitary(this.Army.ShelledMilitary); base.Scenario.Militaries.Remove(this.Army); } if (this.Food > 0) { a.IncreaseFood(this.Food); } this.MoveCaptiveIntoArchitecture(a); this.Destroy(); this.BelongedLegion.RemoveTroop(this); this.BelongedFaction.RemoveTroop(this); base.Scenario.Troops.RemoveTroop(this); } }
public void Enter(Architecture a, bool doAsk) { if (doAsk && base.Scenario.CurrentPlayer != null && this.OnTransportArrived != null) { this.OnTransportArrived(this, a); } else if (a.BelongedFaction == this.BelongedFaction) { PersonList list = new PersonList(); foreach (Person person in this.Persons) { person.LocationArchitecture = a; person.LocationTroop = null; if (base.Scenario.IsPlayer(this.BelongedFaction) && this.StartingArchitecture != null && this.StartingArchitecture.BelongedFaction == this.BelongedFaction && this.StartingArchitecture.BelongedSection != a.BelongedSection && this.StartingArchitecture != transportReturningTo) { person.MoveToArchitecture(this.StartingArchitecture); } } this.Persons.ApplyInfluences(); if (this.Army.ShelledMilitary == null) { if (this.Army.Quantity > this.Army.Kind.MaxScale) { this.Army.Quantity = this.Army.Kind.MaxScale; } a.AddMilitary(this.Army); } else { if (this.Army.Quantity > this.Army.ShelledMilitary.Kind.MaxScale) { this.Army.Quantity = this.Army.ShelledMilitary.Kind.MaxScale; } a.AddMilitary(this.Army.ShelledMilitary); base.Scenario.Militaries.Remove(this.Army); } a.callReturnedOfficerToWork(); if (this.Food > 0) { a.IncreaseFood(this.Food); } if (this.zijin > 0) { a.IncreaseFund(this.zijin); } this.MoveCaptiveIntoArchitecture(a); this.Destroy(true, false); foreach (Person p in this.persons) { p.LocationTroop = null; p.LocationArchitecture = a; p.WorkKind = p.OldWorkKind; } this.persons.ApplyInfluences(); this.persons.Clear(); ExtensionInterface.call("EnterArchitecture", new Object[] { this.Scenario, this, a }); } }