private void guiAddProfile_Click(object sender, EventArgs e) { BattleTag battleTag; try { battleTag = new BattleTag(guiBattleTag.Text); } catch (Exception) { MessageBox.Show("Battle Tag syntax is invalid: verify the battle tag."); return; } var host = (Host)guiBattleNetHostList.SelectedItem; var profileExists = config.Profiles.Any(p => p.BattleTag.Id.ToLower() == battleTag.Id.ToLower() && p.Host.Url == host.Url); if (profileExists) { MessageBox.Show("The profile already exists."); return; } FetchCareer(battleTag, host); var profileContainer = new D3ProfileContainer(battleTag, host); config.Profiles.Add(profileContainer); AddProfile(profileContainer); }
private void guiProfileLookup_Click(object sender, EventArgs e) { var battleTag = new BattleTag(guiBattleTag.Text); var node = new TreeNode("Career of " + battleTag + " on " + D3Api.Host); Career career; try { career = Career.CreateFromBattleTag(battleTag); } catch (FileNotInCacheException) { MessageBox.Show(Resources.CareerWasNotFoundInCache); return; } catch (BNetResponseFailedException) { MessageBox.Show(Resources.BattleNetSentHttpError); return; } catch (BNetFailureObjectReturnedException) { MessageBox.Show(Resources.BattleNetSentError); return; } node.Tag = new BNetContext<Career>(D3Api.Host, battleTag, career); node.Nodes.AddRange(CreateNodeFromD3Object(career).ToArray()); guiD3ProfileTreeView.Nodes.Add(node); }
public void ConstructorSuccess() { var tag = new BattleTag("tok#2360"); Assert.AreEqual("tok", tag.Name); Assert.AreEqual("2360", tag.Code); Assert.AreEqual("tok#2360", tag.Id); }
public static Career GetCareerFromBattleTag(BattleTag battleTag) { Career career; using (var stream = DataProvider.FetchData(GetCareerUrl(battleTag) + "/index" + ApiLocaleSuffix)) { career = Career.CreateFromJSonStream(stream); } return career; }
public static Hero GetHeroFromHeroId(BattleTag battleTag, String heroId) { Hero hero; using (var stream = DataProvider.FetchData(GetHeroUrlFromHeroId(battleTag, heroId) + ApiLocaleSuffix)) { hero = Hero.CreateFromJSonStream(stream); } return hero; }
private static void Main(string[] args) { RegisterPcl.Register(); var battleTag = new BattleTag("Tok#2360"); // WriteCareer(battleTag); WriteCalculation(battleTag); Console.WriteLine(); Console.WriteLine("= = = = END = = = ="); Console.ReadLine(); }
private static void Main(string[] args) { D3Api.ApiKey = ApiKey; var battleTag = new BattleTag("Tok#2360"); // WriteCareer(battleTag); WriteCalculation(battleTag).Wait(); Console.WriteLine(); Console.WriteLine("= = = = END = = = ="); Console.ReadLine(); }
private void OnSubmit() { try { var battleTag = new BattleTag(battleTagEditText.Text); var resultIntent = new Intent(); resultIntent.PutExtra("battleTag", battleTag.ToString()); resultIntent.PutExtra("host", serverSpinner.SelectedItem.ToString()); SetResult(Result.Ok, resultIntent); Finish(); } catch (Exception) { Toast.MakeText(this, "Battle Tag format is incorrect", ToastLength.Long).Show(); } }
public static Hero CreateFromHeroId(BattleTag battleTag, String heroId) { return D3Api.GetHeroFromHeroId(battleTag, heroId); }
private static void WriteCalculation(BattleTag battleTag) { Console.WriteLine("= = = = Calculator of {0} = = = =", battleTag); Console.WriteLine("Downloading {0}", "career"); var career = Career.CreateFromBattleTag(battleTag); if (career == null || career.Heroes.Length == 0) { return; } Console.WriteLine("Downloading Hero {0}/{1}", battleTag, career.Heroes[0].name); var hero = Hero.CreateFromHeroId(battleTag, career.Heroes[0].id); if (hero == null || hero.items == null) { return; } Console.WriteLine("Downloading {0}", "bracers"); var bracers = hero.items.bracers.GetFullItem(); Console.WriteLine("Downloading {0}", "feet"); var feet = hero.items.feet.GetFullItem(); Console.WriteLine("Downloading {0}", "hands"); var hands = hero.items.hands.GetFullItem(); Console.WriteLine("Downloading {0}", "head"); var head = hero.items.head.GetFullItem(); Console.WriteLine("Downloading {0}", "leftFinger"); var leftFinger = hero.items.leftFinger.GetFullItem(); Console.WriteLine("Downloading {0}", "legs"); var legs = hero.items.legs.GetFullItem(); Console.WriteLine("Downloading {0}", "mainHand"); var mainHand = hero.items.mainHand.GetFullItem(); Console.WriteLine("Downloading {0}", "neck"); var neck = hero.items.neck.GetFullItem(); Console.WriteLine("Downloading {0}", "offHand"); var offHand = hero.items.offHand.GetFullItem(); Console.WriteLine("Downloading {0}", "rightFinger"); var rightFinger = hero.items.rightFinger.GetFullItem(); Console.WriteLine("Downloading {0}", "shoulders"); var shoulders = hero.items.shoulders.GetFullItem(); Console.WriteLine("Downloading {0}", "torso"); var torso = hero.items.torso.GetFullItem(); Console.WriteLine("Downloading {0}", "waist"); var waist = hero.items.waist.GetFullItem(); var items = new List<Item> { bracers, feet, hands, head, leftFinger, legs, neck, rightFinger, shoulders, torso, waist }.Where(i => i != null).ToList(); var allItems = new List<Item>(items) { mainHand, offHand }.Where(i => i != null).ToList(); Console.WriteLine("Calculating activated set"); foreach (var set in allItems.GetActivatedSets()) { Console.WriteLine("Activated set: {0}", set.name); } var setBonus = new Item(allItems.GetActivatedSetBonus()); items.Add(setBonus); var d3Calculator = new D3Calculator(hero, mainHand, offHand, items.ToArray()); Console.WriteLine("Calculation results"); var dps = d3Calculator.GetHeroDps(new List<ID3SkillModifier>(), new List<ID3SkillModifier>()); Console.WriteLine("Dexterity : {0}", d3Calculator.GetHeroDexterity().Min); Console.WriteLine("DPS : {0}", dps.Min); Console.WriteLine("Attack speed: {0}", d3Calculator.GetActualAttackSpeed().Min); }
public static Career CreateFromBattleTag(BattleTag battleTag) { return D3Api.GetCareerFromBattleTag(battleTag); }
public D3HeroContainer(HeroSummary heroSummary, BattleTag battleTag, Host host) { HeroSummary = heroSummary; BattleTag = battleTag; Host = host; }
private void guiProfileLookup_Click(object sender, EventArgs e) { var battleTag = new BattleTag(guiBattleTag.Text); var node = new TreeNode("Career of " + battleTag + " on " + D3Api.Host); Career career; try { career = Career.CreateFromBattleTag(battleTag); } catch (FileNotInCacheException) { MessageBox.Show("Career was not found in cache: go online to retrieve it."); return; } catch (BNetResponseFailedException) { MessageBox.Show("Battle.net sent an http error: try again later."); return; } catch (BNetFailureObjectReturnedException) { MessageBox.Show("Battle.net sent an error: verify the battle tag."); return; } node.Tag = new BNetContext<Career>(D3Api.Host, battleTag, career); node.Nodes.AddRange(CreateNodeFromD3Object(career).ToArray()); guiD3ProfileTreeView.Nodes.Add(node); }
public static async Task<Hero> CreateFromHeroIdAsync(BattleTag battleTag, string heroId) { return await D3Api.GetHeroFromHeroIdAsync(battleTag, heroId); }
public Hero GetHeroFromBattleTag(BattleTag battleTag) { return Hero.CreateFromHeroId(battleTag, Id); }
private static void WriteCareer(BattleTag battleTag) { var career = Career.CreateFromBattleTag(battleTag); Console.WriteLine("BattleTag: " + career.BattleTag.Id); Console.WriteLine("Last hero played: {0}", career.LastHeroPlayed); Console.WriteLine("Time played on Monk is {0}", career.TimePlayed.Monk); Console.WriteLine("Kills: monsters={0} / elites={1} / hardcore monsters={2}", career.Kills.Monsters, career.Kills.Elites, career.Kills.HardcoreMonsters); Console.WriteLine(); Console.WriteLine("Heroes count: " + career.Heroes.Length); foreach (var heroDigest in career.Heroes) { Console.WriteLine("Hero {0}: {1} is {2} level {3} + {4} last updated {5}", heroDigest.Id, heroDigest.Name, heroDigest.HeroClass, heroDigest.Level, heroDigest.ParagonLevel, heroDigest.LastUpdated); var heroFull = heroDigest.GetHeroFromBattleTag(battleTag); if (heroFull.Items.MainHand != null) { var mainHand = Item.CreateFromTooltipParams(heroFull.Items.MainHand.TooltipParams); Console.WriteLine("Hero main hand: level {0} {1} (DPS {2}-{3}) is of type {4}", mainHand.ItemLevel, mainHand.Name, mainHand.Dps.Min, mainHand.Dps.Max, mainHand.TypeName); } if (heroFull.Items.Torso != null) { var torso = Item.CreateFromTooltipParams(heroFull.Items.Torso.TooltipParams); Console.WriteLine("Hero torso: level {0} {1} (armor {2}-{3}) is of type {4}", torso.ItemLevel, torso.Name, torso.Armor.Min, torso.Armor.Max, torso.TypeName); } Console.WriteLine("Hero DPS {0}", heroFull.Stats.Damage); } Console.WriteLine(); Console.WriteLine("Fallen Heroes count: " + career.FallenHeroes.Length); foreach (var heroDigest in career.FallenHeroes) { Console.WriteLine("Hero {0}: {1} is {2} level {3} + {4} ", heroDigest.Id, heroDigest.Name, heroDigest.Hardcore, heroDigest.Level, heroDigest.ParagonLevel); } }
private static async Task WriteCalculation(BattleTag battleTag) { Console.WriteLine("= = = = Calculator of {0} = = = =", battleTag); Console.WriteLine("Downloading {0}", "career"); var career = await D3Api.GetCareerFromBattleTagAsync(battleTag); if (career == null || career.Heroes.Length == 0) { return; } Console.WriteLine("Downloading Hero {0}/{1}", battleTag, career.Heroes[0].Name); var hero = await D3Api.GetHeroFromHeroIdAsync(battleTag, career.Heroes[0].Id); if (hero?.Items == null) { return; } var bracersTask = GetFullItem(hero.Items.Bracers, "bracers"); var feetTask = GetFullItem(hero.Items.Feet, "feet"); var handsTask = GetFullItem(hero.Items.Hands, "hands"); var headTask = GetFullItem(hero.Items.Hands, "head"); var leftFingerTask = GetFullItem(hero.Items.LeftFinger, "leftFinger"); var legsTask = GetFullItem(hero.Items.Legs, "legs"); var mainHandTask = GetFullItem(hero.Items.MainHand, "mainHand"); var neckTask = GetFullItem(hero.Items.Neck, "neck"); var offHandTask = GetFullItem(hero.Items.OffHand, "offHand"); var rightFingerTask = GetFullItem(hero.Items.RightFinger, "rightFinger"); var shouldersTask = GetFullItem(hero.Items.Shoulders, "shoulders"); var torsoTask = GetFullItem(hero.Items.Torso, "torso"); var waistTask = GetFullItem(hero.Items.Waist, "waist"); Task.WaitAll(bracersTask, feetTask, handsTask, headTask, leftFingerTask, legsTask, mainHandTask, neckTask, offHandTask, rightFingerTask, shouldersTask, torsoTask, waistTask); var bracers = bracersTask.Result; var feet = feetTask.Result; var hands = handsTask.Result; var head = headTask.Result; var leftFinger = leftFingerTask.Result; var legs = legsTask.Result; var mainHand = mainHandTask.Result; var neck = neckTask.Result; var offHand = offHandTask.Result; var rightFinger = rightFingerTask.Result; var shoulders = shouldersTask.Result; var torso = torsoTask.Result; var waist = waistTask.Result; var items = new List<Item> { bracers, feet, hands, head, leftFinger, legs, neck, rightFinger, shoulders, torso, waist }.Where(i => i != null).ToList(); var allItems = new List<Item>(items) { mainHand, offHand }.Where(i => i != null).ToList(); Console.WriteLine("Calculating activated set"); foreach (var set in allItems.GetActivatedSets()) { Console.WriteLine("Activated set: {0}", set.name); } var setBonus = new Item(allItems.GetActivatedSetBonus()); items.Add(setBonus); var d3Calculator = new D3Calculator(hero, mainHand, offHand, items.ToArray()); Console.WriteLine("Calculation results"); var dps = d3Calculator.GetHeroDps(new List<ID3SkillModifier>(), new List<ID3SkillModifier>()); Console.WriteLine("Dexterity : {0}", d3Calculator.GetHeroDexterity().Min); Console.WriteLine("DPS : {0}", dps.Min); Console.WriteLine("Attack speed: {0}", d3Calculator.GetActualAttackSpeed().Min); }
public D3ProfileContainer(BattleTag battleTag, Host host) { BattleTag = battleTag; Host = host; }
private void ShowCareer(Career career, BattleTag battleTag, Host host) { if (career == null) { return; } guiHeroesPanel.Controls.Clear(); foreach (var hero in career.Heroes) { var control = new D3HeroControl(hero); control.Click += d3HeroControl_Click; control.Tag = new D3HeroContainer(hero, battleTag, host); guiHeroesPanel.Controls.Add(control); } guiRefreshCareer.Visible = true; }
private static Career FetchCareer(BattleTag battleTag, Host host) { D3Api.Host = host.Url; Career career; try { career = Career.CreateFromBattleTag(battleTag); } catch (FileNotInCacheException) { MessageBox.Show("Career was not found in cache: go online to retrieve it."); return null; } catch (BNetResponse403Exception) { MessageBox.Show("Battle.net sent an http error: 403 - Too much requests ?"); return null; } catch (BNetResponseFailedException) { MessageBox.Show("Battle.net sent an http error: try again later."); return null; } catch (BNetFailureObjectReturnedException) { MessageBox.Show("Battle.net sent an error: verify the battle tag."); return null; } return career; }
public static String GetCareerUrl(BattleTag battleTag) { return ApiUrl + "profile/" + Uri.EscapeUriString(battleTag.Name) + "-" + battleTag.Code + "/"; }
private static Hero FetchHero(HeroSummary heroSummary, BattleTag battleTag, Host host) { D3Api.Host = host.Url; Hero hero; try { hero = heroSummary.GetHeroFromBattleTag(battleTag); } catch (FileNotInCacheException) { MessageBox.Show("Hero was not found in cache: go online to retrieve it."); return null; } catch (BNetResponseFailedException) { MessageBox.Show("Battle.net sent an http error: try again later."); return null; } catch (BNetFailureObjectReturnedException) { MessageBox.Show("Battle.net sent an error: verify the battle tag."); return null; } return hero; }
public static String GetHeroUrlFromHeroId(BattleTag battleTag, String heroId) { return GetCareerUrl(battleTag) + "hero/" + heroId; }
public BNetProfileControl(BattleTag battleTag, Host host) : this() { BattleTag = battleTag; Host = host; }