Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 public static Career GetCareerFromBattleTag(BattleTag battleTag)
 {
     Career career;
     using (var stream = DataProvider.FetchData(GetCareerUrl(battleTag) + "/index" + ApiLocaleSuffix))
     {
         career = Career.CreateFromJSonStream(stream);
     }
     return career;
 }
Ejemplo n.º 6
0
 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;
 }
Ejemplo n.º 7
0
        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();
        }
Ejemplo n.º 8
0
        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();
            }
        }
Ejemplo n.º 10
0
 public static Hero CreateFromHeroId(BattleTag battleTag, String heroId)
 {
     return D3Api.GetHeroFromHeroId(battleTag, heroId);
 }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
 public static Career CreateFromBattleTag(BattleTag battleTag)
 {
     return D3Api.GetCareerFromBattleTag(battleTag);
 }
Ejemplo n.º 13
0
 public D3HeroContainer(HeroSummary heroSummary, BattleTag battleTag, Host host)
 {
     HeroSummary = heroSummary;
     BattleTag = battleTag;
     Host = host;
 }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
 public static async Task<Hero> CreateFromHeroIdAsync(BattleTag battleTag, string heroId)
 {
     return await D3Api.GetHeroFromHeroIdAsync(battleTag, heroId);
 }
Ejemplo n.º 16
0
 public Hero GetHeroFromBattleTag(BattleTag battleTag)
 {
     return Hero.CreateFromHeroId(battleTag, Id);
 }
Ejemplo n.º 17
0
        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);
            }
        }
Ejemplo n.º 18
0
        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);
        }
Ejemplo n.º 19
0
 public D3ProfileContainer(BattleTag battleTag, Host host)
 {
     BattleTag = battleTag;
     Host = host;
 }
Ejemplo n.º 20
0
        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;
        }
Ejemplo n.º 21
0
        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;
        }
Ejemplo n.º 22
0
 public static String GetCareerUrl(BattleTag battleTag)
 {
     return ApiUrl + "profile/" + Uri.EscapeUriString(battleTag.Name) + "-" + battleTag.Code + "/";
 }
Ejemplo n.º 23
0
        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;
        }
Ejemplo n.º 24
0
 public static String GetHeroUrlFromHeroId(BattleTag battleTag, String heroId)
 {
     return GetCareerUrl(battleTag) + "hero/" + heroId;
 }
Ejemplo n.º 25
0
 public BNetProfileControl(BattleTag battleTag, Host host)
     : this()
 {
     BattleTag = battleTag;
     Host = host;
 }