public static bool IsTroopOffensive(TroopsEnum troop) { switch (troop) { case TroopsEnum.Legionnaire: case TroopsEnum.Imperian: case TroopsEnum.EquitesCaesaris: case TroopsEnum.EquitesImperatoris: case TroopsEnum.Swordsman: case TroopsEnum.TheutatesThunder: case TroopsEnum.Haeduan: case TroopsEnum.Clubswinger: case TroopsEnum.Axeman: case TroopsEnum.TeutonicKnight: case TroopsEnum.Mercenary: case TroopsEnum.Bowman: case TroopsEnum.SteppeRider: case TroopsEnum.Marauder: case TroopsEnum.KhopeshWarrior: case TroopsEnum.ReshephChariot: return(true); default: return(false); } }
/// <summary> /// Return the number of troops that should be trained to fill up the training building /// </summary> /// <param name="acc">Account</param> /// <param name="vill">Village where we want to train the troops</param> /// <param name="troop">Troop enumeration</param> /// <param name="great">GB/GS</param> /// <returns></returns> internal static long TroopsToFill(Account acc, Village vill, TroopsEnum troop, bool great) { var troopCost = TroopCost.GetResourceCost(troop, great); var trainTime = TroopCost.GetTrainingTime(acc, vill, troop, great); //how many troops we want to train // Take into account how many troop are already training var trainBuilding = TroopsHelper.GetTroopBuilding(troop, great); var trainingTime = TroopsHelper.GetTrainingTimeForBuilding(trainBuilding, vill); var currentlyTrainingHours = (trainingTime - DateTime.Now).TotalHours; var fillForHours = acc.Settings.FillFor + acc.Settings.FillInAdvance - currentlyTrainingHours; return((long)Math.Ceiling(fillForHours / trainTime.TotalHours)); }
/// <summary> /// When user wants to train a new troop, we need to first upgrade buildings required and then research+improve the troop /// </summary> /// <param name="acc">Account</param> /// <param name="vill">Village</param> /// <param name="troop">Troop we want to research</param> /// <return>True if we have all prerequisite buildings, false otherwise</return> public static bool AddBuildingsForTroop(Account acc, Village vill, TroopsEnum troop) { bool ret = true; //TODO: finish this. If already on the BuildingList, just add the link for PostTask that after the last building gets built to research the unit var prerequisites = TroopsData.GetBuildingPrerequisites(troop); if (prerequisites.Count == 0) { return(ret); } foreach (var prerequisite in prerequisites) { if (!vill.Build.Buildings.Any(x => x.Level >= prerequisite.Level && x.Type == prerequisite.Building)) { ret = false; AddBuildingPrerequisites(acc, vill, prerequisite.Building); } } return(ret); }
public static bool IsTroopDefensive(TroopsEnum troop) { switch (troop) { case TroopsEnum.Legionnaire: case TroopsEnum.Praetorian: case TroopsEnum.Spearman: case TroopsEnum.Paladin: case TroopsEnum.Phalanx: case TroopsEnum.Druidrider: case TroopsEnum.SlaveMilitia: case TroopsEnum.AshWarden: case TroopsEnum.AnhurGuard: case TroopsEnum.ReshephChariot: case TroopsEnum.Mercenary: case TroopsEnum.Marksman: return(true); default: return(false); } }
public static BuildingEnum GetTroopBuilding(TroopsEnum t, bool great) { switch (t) { case TroopsEnum.Legionnaire: case TroopsEnum.Praetorian: case TroopsEnum.Imperian: case TroopsEnum.Clubswinger: case TroopsEnum.Spearman: case TroopsEnum.Axeman: case TroopsEnum.Scout: case TroopsEnum.Phalanx: case TroopsEnum.Swordsman: case TroopsEnum.SlaveMilitia: case TroopsEnum.AshWarden: case TroopsEnum.KhopeshWarrior: case TroopsEnum.Mercenary: case TroopsEnum.Bowman: if (great) { return(BuildingEnum.GreatBarracks); } return(BuildingEnum.Barracks); case TroopsEnum.EquitesLegati: case TroopsEnum.EquitesImperatoris: case TroopsEnum.EquitesCaesaris: case TroopsEnum.Paladin: case TroopsEnum.TeutonicKnight: case TroopsEnum.Pathfinder: case TroopsEnum.TheutatesThunder: case TroopsEnum.Druidrider: case TroopsEnum.Haeduan: case TroopsEnum.SopduExplorer: case TroopsEnum.AnhurGuard: case TroopsEnum.ReshephChariot: case TroopsEnum.Spotter: case TroopsEnum.SteppeRider: case TroopsEnum.Marksman: case TroopsEnum.Marauder: if (great) { return(BuildingEnum.GreatStable); } return(BuildingEnum.Stable); case TroopsEnum.RomanRam: case TroopsEnum.RomanCatapult: case TroopsEnum.TeutonCatapult: case TroopsEnum.TeutonRam: case TroopsEnum.GaulRam: case TroopsEnum.GaulCatapult: case TroopsEnum.EgyptianCatapult: case TroopsEnum.EgyptianRam: case TroopsEnum.HunCatapult: case TroopsEnum.HunRam: return(BuildingEnum.Workshop); default: return(BuildingEnum.Site); //idk, should have error handling } }
public static bool IsTroopRam(TroopsEnum troop) => IsTroopRam((int)troop);
/// <summary> /// For getting building requirements for troop research /// This is for academy research only, for training check for training building! /// </summary> /// <param name="troop">Troop to get building prerequisites for</param> /// <returns>List of prerequisites</returns> public static List <Prerequisite> GetBuildingPrerequisites(TroopsEnum troop) { var ret = new List <Prerequisite>(); switch (troop) { //romans case TroopsEnum.Praetorian: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 1 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Smithy, Level = 1 }); return(ret); case TroopsEnum.Imperian: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 5 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Smithy, Level = 1 }); return(ret); case TroopsEnum.EquitesLegati: ret.Add(new Prerequisite() { Building = BuildingEnum.Stable, Level = 1 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 5 }); return(ret); case TroopsEnum.EquitesImperatoris: ret.Add(new Prerequisite() { Building = BuildingEnum.Stable, Level = 5 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 5 }); return(ret); case TroopsEnum.EquitesCaesaris: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 5 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Stable, Level = 10 }); return(ret); case TroopsEnum.RomanRam: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 10 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Workshop, Level = 1 }); return(ret); case TroopsEnum.RomanCatapult: ret.Add(new Prerequisite() { Building = BuildingEnum.Workshop, Level = 10 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 15 }); return(ret); case TroopsEnum.RomanChief: ret.Add(new Prerequisite() { Building = BuildingEnum.RallyPoint, Level = 10 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 20 }); return(ret); //Teutons case TroopsEnum.Spearman: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 1 }); return(ret); case TroopsEnum.Axeman: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 3 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Smithy, Level = 1 }); return(ret); case TroopsEnum.Scout: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 1 }); ret.Add(new Prerequisite() { Building = BuildingEnum.MainBuilding, Level = 5 }); return(ret); case TroopsEnum.Paladin: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 5 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Stable, Level = 3 }); return(ret); case TroopsEnum.TeutonicKnight: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 15 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Stable, Level = 10 }); return(ret); case TroopsEnum.TeutonRam: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 10 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Workshop, Level = 1 }); return(ret); case TroopsEnum.TeutonCatapult: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 15 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Workshop, Level = 10 }); return(ret); case TroopsEnum.TeutonChief: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 20 }); ret.Add(new Prerequisite() { Building = BuildingEnum.RallyPoint, Level = 5 }); return(ret); //Gauls case TroopsEnum.Swordsman: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 1 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Smithy, Level = 1 }); return(ret); case TroopsEnum.Pathfinder: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 5 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Stable, Level = 1 }); return(ret); case TroopsEnum.TheutatesThunder: ret.Add(new Prerequisite() { Building = BuildingEnum.Stable, Level = 3 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 5 }); return(ret); case TroopsEnum.Druidrider: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 5 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Stable, Level = 5 }); return(ret); case TroopsEnum.Haeduan: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 15 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Stable, Level = 10 }); return(ret); case TroopsEnum.GaulRam: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 10 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Workshop, Level = 1 }); return(ret); case TroopsEnum.GaulCatapult: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 15 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Workshop, Level = 10 }); return(ret); case TroopsEnum.GaulChief: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 20 }); ret.Add(new Prerequisite() { Building = BuildingEnum.RallyPoint, Level = 10 }); return(ret); //Egyptians case TroopsEnum.AshWarden: ret.Add(new Prerequisite() { Building = BuildingEnum.Barracks, Level = 1 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Smithy, Level = 1 }); return(ret); case TroopsEnum.KhopeshWarrior: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 5 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Smithy, Level = 1 }); return(ret); case TroopsEnum.SopduExplorer: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 5 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Stable, Level = 1 }); return(ret); case TroopsEnum.AnhurGuard: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 5 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Stable, Level = 5 }); return(ret); case TroopsEnum.ReshephChariot: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 5 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Stable, Level = 10 }); return(ret); case TroopsEnum.EgyptianRam: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 10 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Workshop, Level = 5 }); return(ret); case TroopsEnum.EgyptianCatapult: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 15 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Workshop, Level = 10 }); return(ret); case TroopsEnum.EgyptianChief: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 20 }); ret.Add(new Prerequisite() { Building = BuildingEnum.RallyPoint, Level = 10 }); return(ret); //Huns case TroopsEnum.Bowman: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 3 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Smithy, Level = 1 }); return(ret); case TroopsEnum.Spotter: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 5 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Stable, Level = 1 }); return(ret); case TroopsEnum.SteppeRider: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 5 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Stable, Level = 3 }); return(ret); case TroopsEnum.Marksman: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 5 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Stable, Level = 5 }); return(ret); case TroopsEnum.Marauder: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 15 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Stable, Level = 10 }); return(ret); case TroopsEnum.HunRam: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 10 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Workshop, Level = 1 }); return(ret); case TroopsEnum.HunCatapult: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 15 }); ret.Add(new Prerequisite() { Building = BuildingEnum.Workshop, Level = 10 }); return(ret); case TroopsEnum.HunChief: ret.Add(new Prerequisite() { Building = BuildingEnum.Academy, Level = 20 }); ret.Add(new Prerequisite() { Building = BuildingEnum.RallyPoint, Level = 10 }); return(ret); default: return(ret); } }