示例#1
0
 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;
 }
示例#2
0
 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);
     }
 }
示例#3
0
 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 });
     }
 }