public void UpdateTroopTab() { var acc = getSelectedAcc(); var vill = getSelectedVillage(acc); if (acc.AccInfo.Tribe != null) { if (vill.Troops.TroopToTrain != null) { labelTroopsToTrain.Text = $"Selected: {VillageHelper.EnumStrToString(vill.Troops.TroopToTrain.ToString() ?? "")}"; } else { labelTroopsToTrain.Text = "Selected:"; } comboBoxTroopsToTrain.Items.Clear(); int troopsEnum = ((int)acc.AccInfo.Tribe - 1) * 10; for (var i = troopsEnum + 1; i < troopsEnum + 11; i++) { Classificator.TroopsEnum troop = (Classificator.TroopsEnum)i; comboBoxTroopsToTrain.Items.Add(VillageHelper.EnumStrToString(troop.ToString())); } if (comboBoxTroopsToTrain.Items.Count > 0) { comboBoxTroopsToTrain.SelectedIndex = 0; } } else { labelTroopsToTrain.Text = "Selected:"; comboBoxTroopsToTrain.Items.Clear(); } }
public static bool IsTroopOffensive(Classificator.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.Marksman: case TroopsEnum.Bowman: case TroopsEnum.SteppeRider: case TroopsEnum.Marauder: case TroopsEnum.SlaveMilitia: case TroopsEnum.AshWarden: case TroopsEnum.KhopeshWarrior: case TroopsEnum.ReshephChariot: return(true); default: return(false); } }
private void RepeatTask(Village vill, Classificator.TroopsEnum troop, DateTime nextExecute) { vill.Troops.ToResearch.Remove(troop); //Next research when this one finishes if (0 < vill.Troops.ToResearch.Count) { this.NextExecute = nextExecute; } }
public static bool IsTroopRam(Classificator.TroopsEnum troop) { switch (troop) { case TroopsEnum.EgyptianRam: case TroopsEnum.GaulRam: case TroopsEnum.HunRam: case TroopsEnum.RomanRam: case TroopsEnum.TeutonRam: return(true); default: return(false); } }
//You would probably have to take into account ally training bonus, artifacts, helmets, horse fountain... public static TimeSpan GetTrainingTime(Account acc, Village vill, Classificator.TroopsEnum troop, bool great) { var buildingType = TroopsHelper.GetTroopBuilding(troop, great); var building = vill.Build.Buildings.FirstOrDefault(x => x.Type == buildingType); var troopId = (int)troop; if (troopId > 40) { troopId -= 20; //since we don't have values for nature/natars } var baseTime = TrainTime[troopId]; var sec = Math.Pow(0.9, building.Level - 1) * baseTime; var millis = sec % 1; var baseTimespan = new TimeSpan(0, 0, 0, (int)sec, (int)millis * 1000); return(new TimeSpan(baseTimespan.Ticks / acc.AccInfo.ServerSpeed)); }
private string[] GetPossibleTroops(Classificator.BuildingEnum building) { List<string> ret = new List<string>(); ret.Add("None"); var acc = getSelectedAcc(); if (acc.Villages.Count == 0) return ret.ToArray(); //Acc has now been initialised int troopsEnum = ((int)acc.AccInfo.Tribe - 1) * 10; for (var i = troopsEnum + 1; i < troopsEnum + 11; i++) { Classificator.TroopsEnum troop = (Classificator.TroopsEnum)i; if (TroopsHelper.GetTroopBuilding(troop, false) == building) { ret.Add(VillageHelper.EnumStrToString(troop.ToString())); } } return ret.ToArray(); }
public static int[] GetResourceCost(Classificator.TroopsEnum troop, bool great) { var troopId = (int)troop; if (troopId > 40) { troopId -= 20; //since we don't have values for nature/natars } var res = Cost.GetRow(troopId); if (great) //if we are training in GB/GS, cost of each troop is 3 times as much. { for (int i = 0; i < res.Length; i++) { res[i] *= 3; } } return(res); }
// Return how long troop trains (in ms) and how much it costs public static (TimeSpan, Resources) GetTrainCost(HtmlDocument htmlDoc, Classificator.TroopsEnum troop) { var troopNode = htmlDoc.DocumentNode.Descendants("img").FirstOrDefault(x => x.HasClass("u" + (int)troop)); if (troopNode == null) { return(new TimeSpan(), null); } while (!troopNode.HasClass("details")) { troopNode = troopNode.ParentNode; } var duration = troopNode.Descendants("div").FirstOrDefault(x => x.HasClass("duration")); TimeSpan dur = TimeParser.ParseDuration(duration); var resWrapper = troopNode.Descendants("div").FirstOrDefault(x => x.HasClass("resourceWrapper")); Resources res = ResourceParser.GetResourceCost(resWrapper); return(dur, res); }
private string[] GetPossibleTroops(Classificator.BuildingEnum building) { List <string> ret = new List <string>(); ret.Add("None"); var acc = GetSelectedAcc(); if (acc.Villages.Count == 0) { return(ret.ToArray()); //Acc has now been initialised } var tribes = new List <Classificator.TribeEnum>(5); if (NYS.Checked) { tribes.Add(Classificator.TribeEnum.Egyptians); tribes.Add(Classificator.TribeEnum.Gauls); tribes.Add(Classificator.TribeEnum.Huns); tribes.Add(Classificator.TribeEnum.Romans); tribes.Add(Classificator.TribeEnum.Teutons); } else { tribes.Add(acc.AccInfo.Tribe ?? Classificator.TribeEnum.Any); } foreach (var tribe in tribes) { int troopsEnum = ((int)tribe - 1) * 10; for (var i = troopsEnum + 1; i < troopsEnum + 11; i++) { Classificator.TroopsEnum troop = (Classificator.TroopsEnum)i; if (TroopsHelper.GetTroopBuilding(troop, false) == building) { ret.Add(VillageHelper.EnumStrToString(troop.ToString())); } } } return(ret.ToArray()); }
public static bool IsTroopDefensive(Classificator.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); } }
/// <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(Classificator.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); } }
public void UpdateUc() { var acc = GetSelectedAcc(); var vill = GetSelectedVillage(acc); if (acc.AccInfo.Tribe != null) { if (vill.Troops.TroopToTrain != null) { labelTroopsToTrain.Text = $"Selected: {VillageHelper.EnumStrToString(vill.Troops.TroopToTrain.ToString() ?? "")}"; } else { labelTroopsToTrain.Text = "Selected:"; } comboBoxTroopsToTrain.Items.Clear(); int troopsEnum = ((int)acc.AccInfo.Tribe - 1) * 10; for (var i = troopsEnum + 1; i < troopsEnum + 11; i++) { Classificator.TroopsEnum troop = (Classificator.TroopsEnum)i; comboBoxTroopsToTrain.Items.Add(VillageHelper.EnumStrToString(troop.ToString())); } if (comboBoxTroopsToTrain.Items.Count > 0) { comboBoxTroopsToTrain.SelectedIndex = 0; } } else { labelTroopsToTrain.Text = "Selected:"; comboBoxTroopsToTrain.Items.Clear(); } // Village troops info string infoText = "-- Troops already researched:\n"; infoText += string.Join(", ", vill.Troops.Researched) + "\n"; infoText += "-- Troops to be researched:\n"; infoText += string.Join(", ", vill.Troops.ToResearch) + "\n"; infoText += "-- Troop smithy levels:\n"; List <string> levels = new List <string>(); foreach (var level in vill.Troops.Levels) { levels.Add(level.Troop + ": " + level.Level); } infoText += string.Join(", ", levels) + "\n"; infoText += "-- Troop to be improved:\n"; infoText += string.Join(", ", vill.Troops.ToImprove) + "\n"; infoText += $"-- Settlers already trained: {vill.Troops.Settlers}"; //List<string> ctStr = new List<string>(); //foreach(var ct in vill.Troops.CurrentlyTraining.) //{ // ctStr.Add(ct.) //} troopsInfo.Text = infoText; }
public static int GetTroopSpeed(Classificator.TroopsEnum troop) { var troopId = (int)troop; return(speed[troopId]); }
public static int GetTroopUpkeep(Classificator.TroopsEnum troop) { var troopId = (int)troop; return(upkeep[troopId]); }