public static Troop CreateSimulateTroop(GameObjectList persons, Military military, Point startPosition) { Troop troop = new Troop(); troop.Scenario = military.Scenario; troop.Simulating = true; if (persons != null) { foreach (Person person in persons) { troop.AddPerson(person); } troop.SetLeader(persons[0] as Person); troop.BackupArmyLeaderID = (military.Leader != null) ? military.Leader.ID : -1; troop.BackupArmyLeaderExperience = military.LeaderExperience; troop.BackupArmyLeader = military.Leader; troop.Army = military; troop.SimulateInitializePosition(startPosition); foreach (Person person in persons) { person.LocationTroop = null; } } troop.Simulating = false; military.Leader = troop.BackupArmyLeader; military.LeaderExperience = troop.BackupArmyLeaderExperience; military.LeaderID = troop.BackupArmyLeaderID; return troop; }
public static Troop CreateSimulateTroop(Architecture architecture, GameObjectList persons, Person Leader, Military military, int rationdays, Point startPosition) { Troop troop = new Troop(); troop.Scenario = architecture.Scenario; troop.BelongedFaction = architecture.BelongedFaction; troop.Simulating = true; troop.TechnologyIncrement = architecture.Technology / 50; troop.StartingArchitecture = architecture; if (persons != null) { foreach (Person person in persons) { troop.AddPerson(person); } troop.SetLeader(Leader); } if (military != null) { troop.BackupArmyLeaderID = (military.Leader != null) ? military.Leader.ID : -1; troop.BackupArmyLeaderExperience = military.LeaderExperience; troop.BackupArmyLeader = military.Leader; troop.Army = military; troop.Food = military.FoodCostPerDay * rationdays; } if (persons != null) { troop.SimulateInitializePosition(startPosition); foreach (Person person in persons) { person.LocationTroop = null; } } troop.Simulating = false; if (military != null) { military.Leader = troop.BackupArmyLeader; military.LeaderExperience = troop.BackupArmyLeaderExperience; military.LeaderID = troop.BackupArmyLeaderID; } return troop; }
public static Troop Create(Architecture from, GameObjectList persons, Person leader, Military military, int food, Point position) { Troop troop = new Troop(); troop.Scenario = from.Scenario; troop.destination = position; troop.realDestination = position; troop.StartingArchitecture = from; troop.ID = troop.Scenario.Troops.GetFreeGameObjectID(); foreach (Person person in persons.GetList()) { troop.AddPerson(person); from.RemovePerson(person); } troop.SetLeader(leader); if (from.BelongedFaction != null) { from.BelongedFaction.AddTroop(troop); troop.TechnologyIncrement = from.Technology / 50; if (military.ShelledMilitary == null) { from.RemoveMilitary(military); } else { from.RemoveMilitary(military.ShelledMilitary); from.Scenario.Militaries.AddMilitary(military); } } troop.Army = military; if (food < 0) { if (from.Food > (6 * military.FoodMax)) { troop.Food = military.FoodMax; } else if (from.Food > (3 * military.FoodMax)) { troop.Food = military.FoodCostPerDay * ((int) Math.Ceiling((double) (((float) military.RationDays) / 2f))); } else if (from.Food > military.FoodMax) { troop.Food = military.FoodCostPerDay * (1 + (military.RationDays / 4)); } else if (from.Food > (military.FoodCostPerDay * (1 + (military.RationDays / 6)))) { troop.Food = military.FoodCostPerDay * (1 + (military.RationDays / 6)); } else if (from.Food > military.FoodCostPerDay) { troop.Food = military.FoodCostPerDay; } else { troop.Food = 0; } } else { troop.Food = food; } if (troop.Food > 0) { from.DecreaseFood(troop.Food); } troop.InitializePosition(position); troop.Scenario.Troops.AddTroopWithEvent(troop); if (troop.OnTroopCreate != null) { troop.OnTroopCreate(troop); } return troop; }