Beispiel #1
0
        private void addControl(string param)
        {
            int    totalWidth = 0;
            string modValue;

            modValue = Mods.ExtractModValue(param);

            //add item mod names
            TextBox modName = new TextBox();

            modName.Text        = param;
            modName.ReadOnly    = true;
            modName.Dock        = DockStyle.Top;
            modName.MaximumSize = new Size((int)(form.Width / 1.1), modName.Height);
            this.form.Controls.Add(modName);
            totalWidth += modName.Width;

            if (param.Contains("(not adjustable)"))
            {
                heightAdjust--;
                return;
            }
            //adjust mod value if adjustable
            Button minMinus = new Button();

            minMinus.Location  = new Point(totalWidth, modName.Height * heightAdjust);
            minMinus.Width     = 20;
            minMinus.Text      = "-";
            minMinus.TextAlign = ContentAlignment.MiddleCenter;
            totalWidth        += minMinus.Width;
            minMinus.Click    += new EventHandler(minMinus_Click);
            minMinus.Name      = "minMinus " + param;

            TextBox minValue = new TextBox();

            minValue.Location = new Point(totalWidth, modName.Height * heightAdjust);
            minValue.Width    = 45;
            totalWidth       += minValue.Width;
            try
            {
                if (Double.Parse(modValue) < 1)
                {
                    minValue.Text = Math.Round((Double.Parse(modValue, CultureInfo.InvariantCulture) * Double.Parse(settings.InitialMinValuesMultiplied, CultureInfo.InvariantCulture)), 2).ToString();
                }
                else
                {
                    minValue.Text = ((int)(Double.Parse(modValue, CultureInfo.InvariantCulture) * Double.Parse(settings.InitialMinValuesMultiplied, CultureInfo.InvariantCulture))).ToString();
                }
            }
            catch
            {
                minValue.Text = modValue;
            }
            minValue.Name = "minVal " + param;

            Button minPlus = new Button();

            minPlus.Location  = new Point(totalWidth, modName.Height * heightAdjust);
            minPlus.Width     = 20;
            minPlus.Text      = "+";
            minPlus.TextAlign = ContentAlignment.MiddleCenter;
            totalWidth       += minPlus.Width;
            minPlus.Click    += new EventHandler(minPlus_Click);
            minPlus.Parent    = minValue;
            minPlus.Name      = "minPlus " + param;

            Button maxMinus = new Button();

            maxMinus.Location  = new Point(totalWidth, modName.Height * heightAdjust);
            maxMinus.Width     = 20;
            maxMinus.Text      = "-";
            maxMinus.TextAlign = ContentAlignment.MiddleCenter;
            totalWidth        += maxMinus.Width;
            maxMinus.Click    += new EventHandler(maxMinus_Click);
            maxMinus.Name      = "maxMinus " + param;

            TextBox maxValue = new TextBox();

            maxValue.Location = new Point(totalWidth, modName.Height * heightAdjust);
            maxValue.Width    = 45;
            totalWidth       += maxValue.Width;
            try
            {
                if (Double.Parse(modValue) < 1)
                {
                    maxValue.Text = Math.Round((Double.Parse(modValue, CultureInfo.InvariantCulture) * Double.Parse(settings.InitialMaxValuesMultiplied, CultureInfo.InvariantCulture)), 2).ToString();
                }
                else
                {
                    maxValue.Text = ((int)(Double.Parse(modValue, CultureInfo.InvariantCulture) * Double.Parse(settings.InitialMaxValuesMultiplied, CultureInfo.InvariantCulture))).ToString();
                }
                if (maxValue.Text == "0")
                {
                    maxValue.Text = "";
                }
            }
            catch
            {
                maxValue.Text = modValue;
            }
            maxValue.Name = "maxVal " + param;;

            Button maxPlus = new Button();

            maxPlus.Location  = new Point(totalWidth, modName.Height * heightAdjust);
            maxPlus.Width     = 20;
            maxPlus.Text      = "+";
            maxPlus.TextAlign = ContentAlignment.MiddleCenter;
            totalWidth       += maxPlus.Width;
            maxPlus.Click    += new EventHandler(this.maxPlus_Click);
            maxPlus.Name      = "maxPlus " + param;

            this.form.Controls.Add(minMinus);
            this.form.Controls.Add(minValue);
            this.form.Controls.Add(minPlus);

            this.form.Controls.Add(maxMinus);
            this.form.Controls.Add(maxValue);
            this.form.Controls.Add(maxPlus);

            //select mod to compare by
            CheckBox checkbox = new CheckBox();

            checkbox.Location = new Point(totalWidth + 2, modName.Height * heightAdjust);
            checkbox.Width    = 20;
            totalWidth       += checkbox.Width;
            checkbox.Name     = "cBox " + param;
            this.form.Controls.Add(checkbox);
            if (settings.InitiallyAllSelected != "0")
            {
                checkbox.Checked = true;
            }
            heightAdjust--;
        }
Beispiel #2
0
        private void generateGeneralControls()
        {
            string itemType = ItemTypes.GetItemType(itemBase);

            if (itemType == "No type found")
            {
                createErrorControl();
                return;
            }

            generalParams = new Dictionary <string, string>()
            {
                { "type", itemType }, { "league", settings.league }
            };
            //create controls
            if (itemBase == "Gem")
            {
                #region Gem controls
                string quality = itemParams.Where(p => p.Contains("Quality:")).FirstOrDefault();
                if (!String.IsNullOrEmpty(quality))
                {
                    heightAdjust++;
                    quality = quality.Split(' ')[1].Replace("+", "").Replace("%", "").Replace("(augmented)", "").Trim();
                }
                else
                {
                    heightAdjust += 2;
                    quality       = "0";
                }

                string level = itemParams.Where(p => p.Contains("Level:")).FirstOrDefault();
                if (!string.IsNullOrEmpty(level))
                {
                    level = level.Split(' ')[1].Trim();
                }
                else
                {
                    level = "1";
                }

                addControl("Quality: " + quality);
                addControl("Level: " + level);
                #endregion
            }
            else
            #region Rare general and pseudo mods
            if (!itemParams[0].Contains("Unique"))
            {
                if (ItemTypes.IsWeapon(itemBase))
                {
                    heightAdjust += 4;
                }
                if (ItemTypes.IsArmor(itemBase))
                {
                    heightAdjust += 4;
                }
                if (ItemTypes.IsWeapon(itemBase) || ItemTypes.IsArmor(itemBase))
                {
                    heightAdjust += 4;
                }
                if (ItemTypes.IsBelt(itemBase) || ItemTypes.IsJewelery(itemBase))
                {
                    heightAdjust += 2;
                }
                if (ItemTypes.IsQuiver(itemBase))
                {
                    heightAdjust++;
                }

                if (ItemTypes.IsWeapon(itemBase))
                {
                    #region Weapon rare and pseudo mods
                    string[]      physDmg    = itemParams.Where(p => p.Contains("Physical Damage:")).FirstOrDefault().Split(':')[1].Replace("(augmented)", "").Trim().Split('-');
                    string        aps        = itemParams.Where(p => p.Contains("Attacks per Second:")).FirstOrDefault().Split(':')[1].Replace("(augmented)", "").Trim();
                    string        crit       = itemParams.Where(p => p.Contains("Critical Strike Chance:")).FirstOrDefault().Split(':')[1].Replace("%", "").Trim();
                    string        elemDmgStr = itemParams.Where(p => p.Contains("Elemental Damage:")).FirstOrDefault();
                    List <string> elemDmg    = new List <string>();
                    if (elemDmgStr != null)
                    {
                        elemDmg = elemDmgStr.Split(':').ToList()[1].Replace("(augmented)", "").Replace(",", "").Replace("  ", " ").Trim().Split(' ').ToList();
                    }
                    //extract dmg, calc pdps edps
                    double pdps = Math.Round((Double.Parse(physDmg[0], CultureInfo.InvariantCulture) + Double.Parse(physDmg[1], CultureInfo.InvariantCulture)) / Double.Parse(aps, CultureInfo.InvariantCulture), 2);
                    double edps = 0;
                    for (int i = 0; i < elemDmg.Count(); i++)
                    {
                        var    tempEdps = elemDmg[i].Split('-');
                        double currEdps = Math.Round((Double.Parse(tempEdps[0].Trim(), CultureInfo.InvariantCulture) + Double.Parse(tempEdps[1].Trim(), CultureInfo.InvariantCulture)) / Double.Parse(aps, CultureInfo.InvariantCulture), 2);
                        edps += currEdps;
                    }
                    addControl("pDPS: " + pdps.ToString());
                    addControl("eDPS: " + edps.ToString());
                    addControl("APS: " + aps);
                    addControl("Crit. Strike: " + crit);
                    insertSeparatorLine("Total values:");
                    #endregion
                }
                else if (ItemTypes.IsArmor(itemBase))
                {
                    #region Armor rare and pseudo mods
                    //extract arm es eva
                    string evaTotal = itemParams.Where(p => p.Contains("Evasion Rating:")).FirstOrDefault();
                    if (!String.IsNullOrEmpty(evaTotal))
                    {
                        evaTotal = Mods.ExtractModValue(evaTotal);
                    }
                    else
                    {
                        evaTotal = "0";
                    }

                    string shieldTotal = itemParams.Where(p => p.Contains("Energy Shield:")).FirstOrDefault();
                    if (!String.IsNullOrEmpty(shieldTotal))
                    {
                        shieldTotal = Mods.ExtractModValue(shieldTotal);
                    }
                    else
                    {
                        shieldTotal = "0";
                    }

                    string armourTotal = itemParams.Where(p => p.Contains("Armour:")).FirstOrDefault();
                    if (!String.IsNullOrEmpty(armourTotal))
                    {
                        armourTotal = Mods.ExtractModValue(armourTotal);
                    }
                    else
                    {
                        armourTotal = "0";
                    }

                    createTotalLifeControl();
                    createTotalResControl();


                    addControl("Armour: " + armourTotal);
                    addControl("Evasion: " + evaTotal);
                    addControl("Energy Shield: " + shieldTotal);
                    insertSeparatorLine("Total values:");
                    #endregion
                }
            }
            #endregion

            if (itemParams[0].Contains("Unique") || itemBase == "Gem")
            {
                if (itemBase != "Gem")
                {
                    generalParams["rarity"] = "Unique";
                }
                generalParams["name"] = itemParams[1];
            }

            #region Sockets and Links
            var socketsAndLinks = Mods.GetSocketsAndLinks(itemParams.Where(p => p.Contains("Sockets")).FirstOrDefault());
            if (socketsAndLinks != null)
            {
                if (itemParams[0].Contains("Unique"))
                {
                    heightAdjust++;
                    heightAdjust += 2;
                }
                addControl("Links: " + socketsAndLinks[1]);
                addControl("Sockets: " + socketsAndLinks[0]);
                insertSeparatorLine("Sockets and links:");
            }
            #endregion

            if (ItemTypes.IsBelt(itemBase) || ItemTypes.IsJewelery(itemBase) || ItemTypes.IsQuiver(itemBase))
            {
                createTotalLifeControl();
                createTotalResControl();
                insertSeparatorLine("Total values:");
            }

            if (itemBase != "Gem")
            {
                itemParams = Mods.FilterItemParams(itemParams);
                addModControls();
            }
            else
            {
                itemParams.Clear();
                addSearchButton();
            }
        }
Beispiel #3
0
        public static string GenerateQuery(List <string> itemParams, List <string> queryValues, Dictionary <string, string> generalParams)
        {
            if (generalParams.Count() > 0)
            {
                if (!generalParams.ContainsKey("league"))
                {
                    MessageBox.Show("Query did not receive the league name. This should never happen, please report this issue. Setting default league to Standard...");
                    AllParams["league"] = "Standard";
                }
                else
                {
                    AllParams["league"] = generalParams["league"];
                }
                if (generalParams.ContainsKey("base"))
                {
                    AllParams["base"] = generalParams["base"];
                }
                if (generalParams.ContainsKey("type"))
                {
                    AllParams["type"] = generalParams["type"];
                }
                if (generalParams.ContainsKey("pdps_min"))
                {
                    AllParams["pdps_min"] = generalParams["pdps_min"];
                }
                if (generalParams.ContainsKey("pdps_max"))
                {
                    AllParams["pdps_max"] = generalParams["pdps_max"];
                }
                if (generalParams.ContainsKey("edps_min"))
                {
                    AllParams["edps_min"] = generalParams["edps_min"];
                }
                if (generalParams.ContainsKey("edps_max"))
                {
                    AllParams["edps_max"] = generalParams["edps_max"];
                }
                if (generalParams.ContainsKey("crit_min"))
                {
                    AllParams["crit_min"] = generalParams["crit_min"];
                }
                if (generalParams.ContainsKey("crit_max"))
                {
                    AllParams["crit_max"] = generalParams["crit_max"];
                }
                if (generalParams.ContainsKey("sockets_min"))
                {
                    AllParams["sockets_min"] = generalParams["sockets_min"];
                }
                if (generalParams.ContainsKey("sockets_max"))
                {
                    AllParams["sockets_max"] = generalParams["sockets_max"];
                }
                if (generalParams.ContainsKey("links_min"))
                {
                    AllParams["link_min"] = generalParams["links_min"];
                }
                if (generalParams.ContainsKey("links_max"))
                {
                    AllParams["link_max"] = generalParams["links_max"];
                }
                if (generalParams.ContainsKey("rarity"))
                {
                    AllParams["rarity"] = generalParams["rarity"];
                }
                if (generalParams.ContainsKey("name"))
                {
                    AllParams["name"] = generalParams["name"];
                }
                if (generalParams.ContainsKey("level_min"))
                {
                    AllParams["level_min"] = generalParams["level_min"];
                }
                if (generalParams.ContainsKey("level_max"))
                {
                    AllParams["level_max"] = generalParams["level_max"];
                }
                if (generalParams.ContainsKey("quality_min"))
                {
                    AllParams["q_min"] = generalParams["quality_min"];
                }
                if (generalParams.ContainsKey("quality_max"))
                {
                    AllParams["q_max"] = generalParams["quality_max"];
                }

                if (generalParams.ContainsKey("eShield_min"))
                {
                    AllParams["shield_min"] = generalParams["eShield_min"];
                }
                if (generalParams.ContainsKey("eShield_max"))
                {
                    AllParams["shield_max"] = generalParams["eShield_max"];
                }
                if (generalParams.ContainsKey("evasion_min"))
                {
                    AllParams["evasion_min"] = generalParams["evasion_min"];
                }
                if (generalParams.ContainsKey("evasion_max"))
                {
                    AllParams["evasion_max"] = generalParams["evasion_max"];
                }
                if (generalParams.ContainsKey("armour_min"))
                {
                    AllParams["armour_min"] = generalParams["armour_min"];
                }
                if (generalParams.ContainsKey("armour_max"))
                {
                    AllParams["armour_max"] = generalParams["armour_max"];
                }
                //pseudos
                if (generalParams.ContainsKey("totalRes_min") && generalParams.ContainsKey("totalRes_max"))
                {
                    RareMods.Add("mod_name=(pseudo) +#% total Elemental Resistance&mod_min=" + generalParams["totalRes_min"] +
                                 "&mod_max=" + generalParams["totalRes_max"]);
                }
                if (generalParams.ContainsKey("totalLife_min") && generalParams.ContainsKey("totalLife_max"))
                {
                    RareMods.Add("mod_name=(pseudo) (total) +# to maximum Life&mod_min=" + generalParams["totalLife_min"] +
                                 "&mod_max=" + generalParams["totalLife_max"]);
                }
            }
            StringBuilder postBuilder = new StringBuilder();

            createQueryParams(itemParams, queryValues);

            foreach (var param in AllParams)
            {
                if (param.Key == "q_min")
                {
                    foreach (var rareMod in RareMods)
                    {
                        postBuilder.Append(Mods.UrlEncodeRareMod(rareMod)).Append("&");
                    }
                    string groupParams = "group_type=And&group_min=&group_max=&group_count=" + RareMods.Count() + "&";
                    postBuilder.Append(groupParams);
                }
                postBuilder.Append(param.Key).Append("=").Append(param.Value).Append("&");
            }

            if (postBuilder[postBuilder.Length - 1] == '&')
            {
                postBuilder.Remove(postBuilder.Length - 1, 1);
            }
            return(postBuilder.ToString());
        }