From 7524a84501e6a7c004e4beb63e6019bea2e4af15 Mon Sep 17 00:00:00 2001 From: Nemesh Date: Mon, 10 May 2021 00:01:26 +0300 Subject: [PATCH] v.0.7.0 Optimizations, custom themes and bug fixes --- FloatToolGUI/Benchmark.cs | 15 +- FloatToolGUI/Calculation.cs | 2 +- FloatToolGUI/FloatToolGUI.csproj | 2 + FloatToolGUI/InputSkin.cs | 16 +- FloatToolGUI/Logger.cs | 4 +- FloatToolGUI/Main.Designer.cs | 67 +- FloatToolGUI/Main.cs | 546 ++- FloatToolGUI/Main.en.resx | 172 +- FloatToolGUI/Main.resx | 3436 +++++++++-------- FloatToolGUI/Properties/Resources.Designer.cs | 20 + FloatToolGUI/Properties/Resources.resx | 6 + FloatToolGUI/Resources/DarkThemePreview.png | Bin 0 -> 31472 bytes FloatToolGUI/Resources/LightThemePreview.png | Bin 0 -> 28858 bytes FloatToolGUI/SettingsForm.Designer.cs | 194 +- FloatToolGUI/SettingsForm.cs | 24 +- FloatToolGUI/SettingsForm.resx | 3 + FloatToolGUI/Utils.cs | 249 +- 17 files changed, 2498 insertions(+), 2258 deletions(-) create mode 100644 FloatToolGUI/Resources/DarkThemePreview.png create mode 100644 FloatToolGUI/Resources/LightThemePreview.png diff --git a/FloatToolGUI/Benchmark.cs b/FloatToolGUI/Benchmark.cs index 7b437b2..8efc8c5 100644 --- a/FloatToolGUI/Benchmark.cs +++ b/FloatToolGUI/Benchmark.cs @@ -32,17 +32,16 @@ public void parseCraft(List inputs, List outputs, string want) { decimal wantFloat = 1; if (CurrentSearchMode != SearchMode.Equal) - decimal.TryParse(want, System.Globalization.NumberStyles.Any, CultureInfo.InvariantCulture, out wantFloat); + decimal.TryParse(want, NumberStyles.Any, CultureInfo.InvariantCulture, out wantFloat); - foreach (var item in outputs) + for (int i = 0; i < outputs.Count; i++) { - decimal flotOrigin = Math.Round(craft(inputs, item.MinFloat, item.MaxFloat), 14); - string flot = craftF(inputs, item.MinFloat, item.MaxFloat); + decimal flotOrigin = Math.Round(craft(inputs, outputs[i].MinFloat, outputs[i].MaxFloat), 14); if ( - ((flotOrigin.ToString(CultureInfo.InvariantCulture).StartsWith(want)) && CurrentSearchMode == SearchMode.Equal) || - ((flotOrigin < wantFloat) && CurrentSearchMode == SearchMode.Less) || - ((flotOrigin > wantFloat) && CurrentSearchMode == SearchMode.Greater) + (flotOrigin.ToString(CultureInfo.InvariantCulture).StartsWith(want, StringComparison.Ordinal) && CurrentSearchMode == SearchMode.Equal) || + (CurrentSearchMode == SearchMode.Less && (flotOrigin < wantFloat)) || + (CurrentSearchMode == SearchMode.Greater && (flotOrigin > wantFloat)) ) { return; @@ -254,7 +253,7 @@ private void submitScoreBtn_Click(object sender, EventArgs e) try { submitScoreBtn.Enabled = false; - HttpWebRequest req = (HttpWebRequest)WebRequest.Create($"{uri}addBenchmark.php?cpu={cpuNameLabel.Text} ({benchmarkThreadsNumericUpdown.Value.ToString()})&speed={speedLabel.Text.Split(' ')[0]}"); + HttpWebRequest req = (HttpWebRequest)WebRequest.Create($"{uri}addBenchmark.php?cpu={cpuNameLabel.Text} ({benchmarkThreadsNumericUpdown.Value} Threads)&speed={speedLabel.Text.Split(' ')[0]}"); req.UserAgent = $"FloatTool/{versionLabel2.Text}"; HttpWebResponse res = (HttpWebResponse)req.GetResponse(); res.Close(); diff --git a/FloatToolGUI/Calculation.cs b/FloatToolGUI/Calculation.cs index fd9586e..e357f37 100644 --- a/FloatToolGUI/Calculation.cs +++ b/FloatToolGUI/Calculation.cs @@ -22,7 +22,7 @@ static public decimal craft(List ingridients, float minFloat, float m decimal avgFloat = 0; foreach (InputSkin f in ingridients) { - avgFloat += (decimal)f.WearValue; + avgFloat += f.WearValue; } avgFloat /= 10; return ((decimal)(maxFloat - minFloat) * avgFloat) + (decimal)minFloat; diff --git a/FloatToolGUI/FloatToolGUI.csproj b/FloatToolGUI/FloatToolGUI.csproj index cb64433..5c9f71b 100644 --- a/FloatToolGUI/FloatToolGUI.csproj +++ b/FloatToolGUI/FloatToolGUI.csproj @@ -193,6 +193,8 @@ + + Always diff --git a/FloatToolGUI/InputSkin.cs b/FloatToolGUI/InputSkin.cs index 1dbb4b1..d0fb848 100644 --- a/FloatToolGUI/InputSkin.cs +++ b/FloatToolGUI/InputSkin.cs @@ -9,20 +9,32 @@ namespace FloatToolGUI public class InputSkin { public Skin SkinReference { get; set; } - public double WearValue { get; set; } + public decimal WearValue { get; set; } public float Price { get; set; } public Currency SkinCurrency { get; set; } - public InputSkin(double wear, float price, Currency currency) { + public InputSkin(decimal wear, float price, Currency currency) { WearValue = wear; Price = price; SkinCurrency = currency; } + public InputSkin(double wear, float price, Currency currency) + { + WearValue = (decimal)wear; + Price = price; + SkinCurrency = currency; + } + internal int CompareTo(InputSkin b) { return WearValue > b.WearValue ? 1 : (WearValue < b.WearValue ? -1 : 0); } + + public override string ToString() + { + return WearValue.ToString(); + } } } diff --git a/FloatToolGUI/Logger.cs b/FloatToolGUI/Logger.cs index caa89ac..9adcc97 100644 --- a/FloatToolGUI/Logger.cs +++ b/FloatToolGUI/Logger.cs @@ -9,6 +9,8 @@ namespace FloatToolGUI { static class Logger { + static string LaunchTime = DateTime.Now.ToString().Replace(' ', '_').Replace(':', '-'); + static public void Log(object data) { using (StreamWriter w = File.AppendText("debug.log")) @@ -20,7 +22,7 @@ static public void Log(object data) static public void SaveCrashReport() { Directory.CreateDirectory("crashreports"); - File.Copy("debug.log", @$"crashreports{Path.DirectorySeparatorChar}{DateTime.Now.ToString().Replace(' ', '_').Replace(':', '-')}.log"); + File.Copy("debug.log", @$"crashreports{Path.DirectorySeparatorChar}{LaunchTime}.log", true); } static public void ClearLogs() diff --git a/FloatToolGUI/Main.Designer.cs b/FloatToolGUI/Main.Designer.cs index fc78aab..9f3f006 100644 --- a/FloatToolGUI/Main.Designer.cs +++ b/FloatToolGUI/Main.Designer.cs @@ -89,6 +89,7 @@ private void InitializeComponent() this.weaponSkinBox = new System.Windows.Forms.ComboBox(); this.panel5 = new System.Windows.Forms.Panel(); this.panel16 = new System.Windows.Forms.Panel(); + this.startSearchSingleButton = new System.Windows.Forms.Button(); this.downloadProgressBar = new FloatToolGUI.CustomProgressBar(); this.searchmodeGreater_btn = new System.Windows.Forms.Button(); this.searchmodeEqual_btn = new System.Windows.Forms.Button(); @@ -136,22 +137,22 @@ private void InitializeComponent() // // splitContainer1 // - this.splitContainer1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(31)))), ((int)(((byte)(31)))), ((int)(((byte)(31))))); resources.ApplyResources(this.splitContainer1, "splitContainer1"); + this.splitContainer1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(31)))), ((int)(((byte)(31)))), ((int)(((byte)(31))))); this.splitContainer1.ForeColor = System.Drawing.Color.White; this.splitContainer1.Name = "splitContainer1"; // // splitContainer1.Panel1 // + resources.ApplyResources(this.splitContainer1.Panel1, "splitContainer1.Panel1"); this.splitContainer1.Panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(31)))), ((int)(((byte)(31)))), ((int)(((byte)(31))))); this.splitContainer1.Panel1.Controls.Add(this.foundCombinationContainer); - resources.ApplyResources(this.splitContainer1.Panel1, "splitContainer1.Panel1"); // // splitContainer1.Panel2 // + resources.ApplyResources(this.splitContainer1.Panel2, "splitContainer1.Panel2"); this.splitContainer1.Panel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(31)))), ((int)(((byte)(31)))), ((int)(((byte)(31))))); this.splitContainer1.Panel2.Controls.Add(this.outputConsoleBox); - resources.ApplyResources(this.splitContainer1.Panel2, "splitContainer1.Panel2"); // // foundCombinationContainer // @@ -161,10 +162,10 @@ private void InitializeComponent() // // outputConsoleBox // + resources.ApplyResources(this.outputConsoleBox, "outputConsoleBox"); this.outputConsoleBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(31)))), ((int)(((byte)(31)))), ((int)(((byte)(31))))); this.outputConsoleBox.BorderStyle = System.Windows.Forms.BorderStyle.None; this.outputConsoleBox.Cursor = System.Windows.Forms.Cursors.Default; - resources.ApplyResources(this.outputConsoleBox, "outputConsoleBox"); this.outputConsoleBox.ForeColor = System.Drawing.Color.White; this.outputConsoleBox.Name = "outputConsoleBox"; this.outputConsoleBox.ReadOnly = true; @@ -178,70 +179,70 @@ private void InitializeComponent() // // panel1 // + resources.ApplyResources(this.panel1, "panel1"); this.panel1.BackColor = System.Drawing.Color.Silver; this.panel1.Controls.Add(this.panel8); this.panel1.Controls.Add(this.panel7); - resources.ApplyResources(this.panel1, "panel1"); this.panel1.Name = "panel1"; // // panel8 // + resources.ApplyResources(this.panel8, "panel8"); this.panel8.Controls.Add(this.panel13); this.panel8.Controls.Add(this.panel10); - resources.ApplyResources(this.panel8, "panel8"); this.panel8.Name = "panel8"; // // panel13 // + resources.ApplyResources(this.panel13, "panel13"); this.panel13.Controls.Add(this.panel11); this.panel13.Controls.Add(this.panel12); - resources.ApplyResources(this.panel13, "panel13"); this.panel13.Name = "panel13"; // // panel11 // - this.panel11.Controls.Add(this.splitContainer1); resources.ApplyResources(this.panel11, "panel11"); + this.panel11.Controls.Add(this.splitContainer1); this.panel11.Name = "panel11"; // // panel12 // - this.panel12.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(31)))), ((int)(((byte)(31)))), ((int)(((byte)(31))))); resources.ApplyResources(this.panel12, "panel12"); + this.panel12.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(31)))), ((int)(((byte)(31)))), ((int)(((byte)(31))))); this.panel12.Name = "panel12"; // // panel10 // - this.panel10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(31)))), ((int)(((byte)(31)))), ((int)(((byte)(31))))); resources.ApplyResources(this.panel10, "panel10"); + this.panel10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(31)))), ((int)(((byte)(31)))), ((int)(((byte)(31))))); this.panel10.Name = "panel10"; // // panel7 // + resources.ApplyResources(this.panel7, "panel7"); this.panel7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(234)))), ((int)(((byte)(242)))), ((int)(((byte)(227))))); this.panel7.Controls.Add(this.panel9); this.panel7.Controls.Add(this.button5); this.panel7.Controls.Add(this.button4); this.panel7.Controls.Add(this.button3); - resources.ApplyResources(this.panel7, "panel7"); this.panel7.Name = "panel7"; // // panel9 // + resources.ApplyResources(this.panel9, "panel9"); this.panel9.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(37)))), ((int)(((byte)(37)))), ((int)(((byte)(37))))); this.panel9.Controls.Add(this.benchmarkButton); this.panel9.Controls.Add(this.settingsButton); this.panel9.Controls.Add(this.MaximizeButton); this.panel9.Controls.Add(this.minimizeBtn); this.panel9.Controls.Add(this.closeBtn); - resources.ApplyResources(this.panel9, "panel9"); this.panel9.Name = "panel9"; this.panel9.MouseDown += new System.Windows.Forms.MouseEventHandler(this.WindowDragEvent); // // benchmarkButton // - this.benchmarkButton.BackColor = System.Drawing.Color.Transparent; resources.ApplyResources(this.benchmarkButton, "benchmarkButton"); + this.benchmarkButton.BackColor = System.Drawing.Color.Transparent; this.benchmarkButton.FlatAppearance.BorderSize = 0; this.benchmarkButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); this.benchmarkButton.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Black; @@ -252,8 +253,8 @@ private void InitializeComponent() // // settingsButton // - this.settingsButton.BackColor = System.Drawing.Color.Transparent; resources.ApplyResources(this.settingsButton, "settingsButton"); + this.settingsButton.BackColor = System.Drawing.Color.Transparent; this.settingsButton.FlatAppearance.BorderSize = 0; this.settingsButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(50)))), ((int)(((byte)(50))))); this.settingsButton.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Black; @@ -296,7 +297,7 @@ private void InitializeComponent() this.closeBtn.ForeColor = System.Drawing.Color.White; this.closeBtn.Name = "closeBtn"; this.closeBtn.UseVisualStyleBackColor = false; - this.closeBtn.Click += new System.EventHandler(this.button8_Click); + this.closeBtn.Click += new System.EventHandler(this.CloseAppButton_Click); // // button5 // @@ -327,11 +328,11 @@ private void InitializeComponent() // // panel3 // + resources.ApplyResources(this.panel3, "panel3"); this.panel3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(37)))), ((int)(((byte)(37)))), ((int)(((byte)(37))))); this.panel3.Controls.Add(this.label24); this.panel3.Controls.Add(this.versionLabel); this.panel3.Controls.Add(this.label8); - resources.ApplyResources(this.panel3, "panel3"); this.panel3.Name = "panel3"; this.panel3.MouseDown += new System.Windows.Forms.MouseEventHandler(this.WindowDragEvent); // @@ -356,6 +357,7 @@ private void InitializeComponent() // // panel6 // + resources.ApplyResources(this.panel6, "panel6"); this.panel6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(44)))), ((int)(((byte)(44)))), ((int)(((byte)(44))))); this.panel6.Controls.Add(this.stattrackCheckBox); this.panel6.Controls.Add(this.checkPossibilityBtn); @@ -370,14 +372,13 @@ private void InitializeComponent() this.panel6.Controls.Add(this.label2); this.panel6.Controls.Add(this.fullSkinName); this.panel6.Controls.Add(this.weaponSkinBox); - resources.ApplyResources(this.panel6, "panel6"); this.panel6.Name = "panel6"; // // stattrackCheckBox // + resources.ApplyResources(this.stattrackCheckBox, "stattrackCheckBox"); this.stattrackCheckBox.Checked = false; this.stattrackCheckBox.ForeColor = System.Drawing.Color.White; - resources.ApplyResources(this.stattrackCheckBox, "stattrackCheckBox"); this.stattrackCheckBox.Name = "stattrackCheckBox"; this.stattrackCheckBox.TurnedOffColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56))))); this.stattrackCheckBox.TurnedOnColor = System.Drawing.Color.Green; @@ -507,9 +508,9 @@ private void InitializeComponent() // // fullSkinName // + resources.ApplyResources(this.fullSkinName, "fullSkinName"); this.fullSkinName.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(32)))), ((int)(((byte)(32))))); this.fullSkinName.BorderStyle = System.Windows.Forms.BorderStyle.None; - resources.ApplyResources(this.fullSkinName, "fullSkinName"); this.fullSkinName.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(150)))), ((int)(((byte)(150)))), ((int)(((byte)(150))))); this.fullSkinName.Name = "fullSkinName"; // @@ -525,15 +526,17 @@ private void InitializeComponent() // // panel5 // + resources.ApplyResources(this.panel5, "panel5"); this.panel5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(44)))), ((int)(((byte)(44)))), ((int)(((byte)(44))))); this.panel5.Controls.Add(this.panel16); this.panel5.Controls.Add(this.panel15); - resources.ApplyResources(this.panel5, "panel5"); this.panel5.Name = "panel5"; // // panel16 // + resources.ApplyResources(this.panel16, "panel16"); this.panel16.BackColor = System.Drawing.Color.Transparent; + this.panel16.Controls.Add(this.startSearchSingleButton); this.panel16.Controls.Add(this.downloadProgressBar); this.panel16.Controls.Add(this.searchmodeGreater_btn); this.panel16.Controls.Add(this.searchmodeEqual_btn); @@ -548,9 +551,20 @@ private void InitializeComponent() this.panel16.Controls.Add(this.searchFloatInput); this.panel16.Controls.Add(this.sortCheckBox); this.panel16.Controls.Add(this.startBtn); - resources.ApplyResources(this.panel16, "panel16"); this.panel16.Name = "panel16"; // + // startSearchSingleButton + // + resources.ApplyResources(this.startSearchSingleButton, "startSearchSingleButton"); + this.startSearchSingleButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56))))); + this.startSearchSingleButton.Cursor = System.Windows.Forms.Cursors.Hand; + this.startSearchSingleButton.FlatAppearance.BorderSize = 0; + this.startSearchSingleButton.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.WindowFrame; + this.startSearchSingleButton.ForeColor = System.Drawing.Color.White; + this.startSearchSingleButton.Name = "startSearchSingleButton"; + this.startSearchSingleButton.UseVisualStyleBackColor = false; + this.startSearchSingleButton.Click += new System.EventHandler(this.StartButtonClick); + // // downloadProgressBar // resources.ApplyResources(this.downloadProgressBar, "downloadProgressBar"); @@ -692,13 +706,13 @@ private void InitializeComponent() // // panel15 // + resources.ApplyResources(this.panel15, "panel15"); this.panel15.BackColor = System.Drawing.Color.Transparent; this.panel15.Controls.Add(this.speedStatusLabel); this.panel15.Controls.Add(this.combinationsStatusLabel); this.panel15.Controls.Add(this.gpuSearch_btn); this.panel15.Controls.Add(this.label10); this.panel15.Controls.Add(this.threadCountInput); - resources.ApplyResources(this.panel15, "panel15"); this.panel15.Name = "panel15"; // // speedStatusLabel @@ -731,9 +745,9 @@ private void InitializeComponent() // // threadCountInput // + resources.ApplyResources(this.threadCountInput, "threadCountInput"); this.threadCountInput.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(32)))), ((int)(((byte)(32))))); this.threadCountInput.BorderStyle = System.Windows.Forms.BorderStyle.None; - resources.ApplyResources(this.threadCountInput, "threadCountInput"); this.threadCountInput.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(150)))), ((int)(((byte)(150)))), ((int)(((byte)(150))))); this.threadCountInput.Maximum = new decimal(new int[] { 1024, @@ -754,16 +768,16 @@ private void InitializeComponent() // // panel2 // + resources.ApplyResources(this.panel2, "panel2"); this.panel2.Controls.Add(this.panel5); this.panel2.Controls.Add(this.panel6); this.panel2.Controls.Add(this.panel3); - resources.ApplyResources(this.panel2, "panel2"); this.panel2.Name = "panel2"; // // panel4 // - this.panel4.Controls.Add(this.panel1); resources.ApplyResources(this.panel4, "panel4"); + this.panel4.Controls.Add(this.panel1); this.panel4.Name = "panel4"; // // WorkStatusUpdater @@ -774,9 +788,9 @@ private void InitializeComponent() // // FloatTool // + resources.ApplyResources(this, "$this"); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(44)))), ((int)(((byte)(44)))), ((int)(((byte)(44))))); - resources.ApplyResources(this, "$this"); this.ControlBox = false; this.Controls.Add(this.panel4); this.Controls.Add(this.panel2); @@ -878,6 +892,7 @@ private void InitializeComponent() private System.Windows.Forms.SplitContainer splitContainer1; private System.Windows.Forms.FlowLayoutPanel foundCombinationContainer; private System.Windows.Forms.Label label24; + private System.Windows.Forms.Button startSearchSingleButton; } } diff --git a/FloatToolGUI/Main.cs b/FloatToolGUI/Main.cs index 0b0d86e..71ea19a 100644 --- a/FloatToolGUI/Main.cs +++ b/FloatToolGUI/Main.cs @@ -62,6 +62,7 @@ public enum Currency RMB = 9000, NXP = 9001 } + public partial class FloatTool : Form { Thread thread1; @@ -74,7 +75,7 @@ public enum SearchMode Equal, Greater } - + public SearchMode CurrentSearchMode = SearchMode.Equal; public Currency currentCurr = Currency.USD; public bool discordWorker = true; @@ -98,6 +99,7 @@ static public string getSkinData(string name) break; } } + return collection + "," + rarity;//json; } } @@ -107,20 +109,20 @@ public void parseCraft(List inputs, List outputs, string want) //List results = new List(); decimal wantFloat = 1; if (CurrentSearchMode != SearchMode.Equal) - decimal.TryParse(want, System.Globalization.NumberStyles.Any, CultureInfo.InvariantCulture, out wantFloat); + decimal.TryParse(want, NumberStyles.Any, CultureInfo.InvariantCulture, out wantFloat); - foreach (var item in outputs) + for (int i = 0; i < outputs.Count; i++) { - decimal flotOrigin = Math.Round(craft(inputs, item.MinFloat, item.MaxFloat), 14); - string flot = craftF(inputs, item.MinFloat, item.MaxFloat); + decimal flotOrigin = Math.Round(craft(inputs, outputs[i].MinFloat, outputs[i].MaxFloat), 14); if ( - ((flotOrigin.ToString(CultureInfo.InvariantCulture).StartsWith(want)) && CurrentSearchMode == SearchMode.Equal) || - ((flotOrigin < wantFloat) && CurrentSearchMode == SearchMode.Less) || - ((flotOrigin > wantFloat) && CurrentSearchMode == SearchMode.Greater) + (flotOrigin.ToString(CultureInfo.InvariantCulture).StartsWith(want, StringComparison.Ordinal) && CurrentSearchMode == SearchMode.Equal) || + (CurrentSearchMode == SearchMode.Less && (flotOrigin < wantFloat)) || + (CurrentSearchMode == SearchMode.Greater && (flotOrigin > wantFloat)) ) { - this.Invoke((MethodInvoker)(() => + string flot = craftF(inputs, outputs[i].MinFloat, outputs[i].MaxFloat); + Invoke((MethodInvoker)(() => { float price = 0f; List floatStrings = new List(); @@ -130,11 +132,11 @@ public void parseCraft(List inputs, List outputs, string want) price += fl.Price; } - Logger.Log($"[{DateTime.Now.ToString()}]: Found coombination {{"); + Logger.Log($"[{DateTime.Now}]: Found coombination {{"); Logger.Log($" Float = {flotOrigin}{newLine}" + $" Test Float = {flot}{newLine}" + $" Price = {price} {inputs[0].SkinCurrency}{newLine}" + - $" Float list = [{String.Join(", ", floatStrings)}]{newLine}}}"); + $" Float list = [{string.Join(", ", floatStrings)}]{newLine}}}"); AddCombinationToList(DateTime.Now.ToString("HH:mm:ss"), flotOrigin, flot, price, floatStrings); ConsoleBuffer.Append($"[{DateTime.Now.ToString("HH:mm:ss")}] {strings.CombinationFound}{newLine}"); @@ -142,6 +144,9 @@ public void parseCraft(List inputs, List outputs, string want) ConsoleBuffer.Append($"{strings.TestFloat}: {flot}{newLine}"); ConsoleBuffer.Append($"Цена: {price} {inputs[0].SkinCurrency}{newLine}"); ConsoleBuffer.Append($"{strings.FloatList}: "); + + if (SingleSearch) Searching = false; + if (!muteSound) { //play sound @@ -162,11 +167,9 @@ public void parseCraft(List inputs, List outputs, string want) }); } - ConsoleBuffer.Append($"[{String.Join(", ", floatStrings)}]{newLine}====================================={newLine}"); + ConsoleBuffer.Append($"[{string.Join(", ", floatStrings)}]{newLine}====================================={newLine}"); } )); - - //textBox2.AppendText( "IEEE754: " + flot + newLine; return; } } @@ -199,10 +202,10 @@ public void UpdateOutcomes() dynamic items = JsonConvert.DeserializeObject(json); foreach (var skn in items) { - if (skn["name"].ToString() == skin) + if (string.Compare(skn["name"].ToString(), skin) == 0) { foreach (var skin2 in items) - if (skn["case"].ToString() == skin2["case"].ToString()) + if (string.Compare(skn["case"].ToString(), skin2["case"].ToString()) == 0) { if (skin2["rarity"].ToString().Split(' ')[0] == getNextRarity(skn["rarity"].ToString().Split(' ')[0])) craftList.Add(skin2); @@ -235,7 +238,7 @@ public void updateSearchStr() search += " (" + weaponQualityBox.Text + ")"; fullSkinName.Text = search; UpdateOutcomes(); - Logger.Log($"[{DateTime.Now.ToString()}]: Changed search skin to: {search}"); + Logger.Log($"[{DateTime.Now}]: Changed search skin to: {search}"); } public void AutoUpdater() @@ -256,8 +259,8 @@ public void AutoUpdater() if (result == DialogResult.Yes) { - string strExeFilePath = System.Reflection.Assembly.GetExecutingAssembly().Location; - string strWorkPath = System.IO.Path.GetDirectoryName(strExeFilePath); + string strExeFilePath = Assembly.GetExecutingAssembly().Location; + string strWorkPath = Path.GetDirectoryName(strExeFilePath); Process.Start($@"{strWorkPath}\Updater.exe", data.Split('|')[1]); Invoke((MethodInvoker)(() => { Close(); } )); } @@ -275,29 +278,34 @@ public FloatTool() ConsoleBuffer = new StringBuilder(); newLine = Environment.NewLine; CheckRegistry(); + UpdateCustomPalette(); + registryData = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\FloatTool", true); - registryData = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\FloatTool"); - - var darkThemeRK = registryData.GetValue("darkMode"); + var soundRK = registryData.GetValue("sound"); var bufferSpeedRK = registryData.GetValue("bufferSpeed"); var discordRPCRK = registryData.GetValue("discordRPC"); var currencyRK = registryData.GetValue("currency"); var updateCheckRK = registryData.GetValue("updateCheck"); + var lastThreadsRK = registryData.GetValue("lastThreads"); + var themeRK = registryData.GetValue("theme"); - ChangeTheme(Convert.ToBoolean(darkThemeRK)); + CurrentPallete = (Pallete)themeRK; + ChangeTheme(); muteSound = !Convert.ToBoolean(soundRK); WorkStatusUpdater.Interval = (int)bufferSpeedRK; discordWorker = Convert.ToBoolean(discordRPCRK); currentCurr = (Currency)currencyRK; + threadCountInput.Value = (int)lastThreadsRK; Logger.Log($"[{DateTime.Now}]: Loaded registry settings:"); - Logger.Log($"Dark mode = {darkThemeRK}"); + Logger.Log($"Theme = {CurrentPallete}"); Logger.Log($"Sound = {soundRK}"); Logger.Log($"Buffer speed = {bufferSpeedRK}"); Logger.Log($"Discord RPC = {discordRPCRK}"); Logger.Log($"Currency = {currencyRK}"); Logger.Log($"Check updates = {updateCheckRK}"); + Logger.Log($"Last threads = {lastThreadsRK}"); if (Convert.ToBoolean(updateCheckRK)) { @@ -306,30 +314,14 @@ public FloatTool() { Thread updater = new Thread(AutoUpdater); updater.Start(); - //ver = CheckUpdates(); } catch(Exception ex) { Logger.Log($"[{DateTime.Now}]: {{EXCEPTION}} {ex.Message}{newLine}{ex.StackTrace}"); Logger.SaveCrashReport(); } - - /*Logger.Log($"Checked version is: {ver}{newLine}Installed: {versionLabel.Text}"); - if (ver != versionLabel.Text) - { - DialogResult result = MessageBox.Show( - $"Доступна версия {ver}! Хотите открыть страницу загрузки?", - "Обновление", - MessageBoxButtons.YesNo, - MessageBoxIcon.Information, - MessageBoxDefaultButton.Button1, - MessageBoxOptions.DefaultDesktopOnly); - - if (result == DialogResult.Yes) - System.Diagnostics.Process.Start("https://github.com/Nemeshio/FloatTool-GUI/releases/latest"); - }*/ } - Logger.Log($"[{DateTime.Now.ToString()}]: Initialized"); + Logger.Log($"[{DateTime.Now}]: Initialized"); } public DiscordRpcClient client; @@ -343,7 +335,7 @@ private void Form1_Load(object sender, EventArgs e) foreach (var skin in items) { - if (skin["name"].ToString().Split('|')[0].TrimEnd() == weaponTypeBox.Text) + if (string.Compare(skin["name"].ToString().Split('|')[0].TrimEnd(), weaponTypeBox.Text) == 0) { Console.WriteLine(skin["name"].ToString().Split('|')[1].Remove(0, 1)); weaponSkinBox.Items.Add(skin["name"].ToString().Split('|')[1].Remove(0, 1)); @@ -382,8 +374,7 @@ private void Form1_Load(object sender, EventArgs e) }); } thread1 = new Thread(runCycle); - this.MaximizedBounds = Screen.FromHandle(this.Handle).WorkingArea; - this.threadCountInput.Value = Environment.ProcessorCount; + MaximizedBounds = Screen.FromHandle(Handle).WorkingArea; AddFont(Properties.Resources.Inter_Regular); } @@ -434,33 +425,33 @@ public void AddCombinationToList(string time, decimal flotOrigin, string flot, f { Panel tmpPanel = new Panel { - BackColor = Color.FromArgb(44, 44, 44), - ForeColor = Color.White, + BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary1), + ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1), Size = new Size(425, 220), Margin = new Padding(3), Font = new Font("Inter", 10f) }; #region Labels - tmpPanel.Controls.Add(new Label - { - AutoSize = true, - Location = new Point(3,3), - Text = $"{outcomeSelectorComboBox.Text}\nВозможный флоат: {flotOrigin.ToString(CultureInfo.InvariantCulture)}\nПроверочный флоат: {flot}" - }); - tmpPanel.Controls.Add(new Label - { - AutoSize = false, - Size = new Size(160, 54), - Location = new Point(263, 3), - TextAlign = ContentAlignment.MiddleRight, - Text = $"{time}\nЦена: {price.ToString("0.00")} {currentCurr}" - }); - tmpPanel.Controls.Add(new Label - { - AutoSize = true, - Location = new Point(3, 62), - Text = "Ингредиенты:" - }); + tmpPanel.Controls.Add(new Label + { + AutoSize = true, + Location = new Point(3,3), + Text = $"{outcomeSelectorComboBox.Text}\nВозможный флоат: {flotOrigin.ToString(CultureInfo.InvariantCulture)}\nПроверочный флоат: {flot}" + }); + tmpPanel.Controls.Add(new Label + { + AutoSize = false, + Size = new Size(160, 54), + Location = new Point(263, 3), + TextAlign = ContentAlignment.MiddleRight, + Text = $"{time}\nЦена: {price.ToString("0.00")} {currentCurr}" + }); + tmpPanel.Controls.Add(new Label + { + AutoSize = true, + Location = new Point(3, 62), + Text = "Ингредиенты:" + }); #endregion #region TextBoxes & Buttons for(int i = 0; i < 10; i++) @@ -469,8 +460,8 @@ public void AddCombinationToList(string time, decimal flotOrigin, string flot, f int x = i > 4 ? 220 : 6; tmpPanel.Controls.Add(new TextBox { - BackColor = Color.FromArgb(32, 32, 32), - ForeColor = Color.White, + BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary4), + ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1), ReadOnly = true, BorderStyle = BorderStyle.FixedSingle, Location = new Point(x, y), @@ -480,7 +471,7 @@ public void AddCombinationToList(string time, decimal flotOrigin, string flot, f var tmpButton = new Button { - BackColor = Color.FromArgb(56, 56, 56), + BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary5), Location = new Point(117 + x, y), Font = new Font("Inter", 8f), Size = new Size(84, 25), @@ -527,7 +518,8 @@ private void StartCalculation() } }); } - + + registryData.SetValue("lastThreads", (int)threadCountInput.Value); totalComb = quantityInput.Value == 10 ? 1 : Fact((int)quantityInput.Value) / (Fact(10) * Fact((int)quantityInput.Value - 10)); currComb = 0; @@ -586,11 +578,12 @@ private void StartCalculation() int counter = 0; foreach (var el in r["listinginfo"]) { - counter++; string lid = r["listinginfo"][el.Name]["listingid"]; string aid = r["listinginfo"][el.Name]["asset"]["id"]; string link = r["listinginfo"][el.Name]["asset"]["market_actions"][0]["link"]; - url = "https://api.csgofloat.com/?url=" + link.Replace("%assetid%", aid).Replace("%listingid%", lid); + + counter++; + using (WebClient wcf = new WebClient()) { try @@ -598,10 +591,11 @@ private void StartCalculation() wcf.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); string jsonf = wcf.DownloadString(url); dynamic rf = JsonConvert.DeserializeObject(jsonf); - //Debug.WriteLine("[DEBUG] " + counter + "/" + count + " load from csgofloat = " + jsonf); - inputSkins.Add(new InputSkin(Convert.ToDouble(rf["iteminfo"]["floatvalue"]), + inputSkins.Add(new InputSkin( + GetWearFromInspectURL(link.Replace("%assetid%", aid).Replace("%listingid%", lid)), (float.Parse(r["listinginfo"][el.Name]["converted_price"].ToString()) + float.Parse(r["listinginfo"][el.Name]["converted_fee"].ToString())) / 100, - currentCurr)); + currentCurr) + ); } catch (Exception ex) { @@ -612,7 +606,7 @@ private void StartCalculation() } } } - this.Invoke((MethodInvoker)(() => + Invoke((MethodInvoker)(() => { downloadProgressBar.Value = counter; })); @@ -649,6 +643,8 @@ private void StartCalculation() line += $"{i.ToString().Replace(',','.')}, "; line = line.Remove(line.Length - 2); textBox2.AppendText("Список флоатов:" + newLine + line + "]" + newLine);*/ + + Logger.Log($"[{DateTime.Now}] Float list: [{string.Join(", ", inputSkins)}]"); outputConsoleBox.ScrollToCaret(); } @@ -662,9 +658,9 @@ private void StartCalculation() foreach (var skin in items) { //Console.WriteLine(skin["name"].ToString()); - if (skin["case"].ToString() == currData.Split(',')[0]) + if (string.Compare(skin["case"].ToString(), currData.Split(',')[0]) == 0) { - if (skin["rarity"].ToString().Split(' ')[0] == getNextRarity(currData.Split(',')[1].Split(' ')[0])) + if (string.Compare(skin["rarity"].ToString().Split(' ')[0], getNextRarity(currData.Split(',')[1].Split(' ')[0])) == 0) { //Console.WriteLine(skin["name"].ToString()); craftList.Add(skin); @@ -717,7 +713,7 @@ private void StartCalculation() Console.WriteLine($"[DEBUG] {threads} threads started!"); - while (true) + while (Searching) { bool okey = true; @@ -734,23 +730,35 @@ private void StartCalculation() Searching = false; - this.Invoke((MethodInvoker)(() => - { - outputConsoleBox.AppendText( "Программа завершила проверку всех комбинаций!" + newLine); - fullSkinName.SelectionStart = fullSkinName.Text.Length; - outputConsoleBox.ScrollToCaret(); - thread1.Abort(); - startBtn.Text = "Старт"; - downloadProgressBar.Value = 0; - SwitchEnabled(); - } - )); + foreach (Thread t in t2) + { + t.Abort(); + } + + Invoke((MethodInvoker)(() => + { + outputConsoleBox.AppendText( "Программа завершила проверку всех комбинаций!" + newLine); + fullSkinName.SelectionStart = fullSkinName.Text.Length; + outputConsoleBox.ScrollToCaret(); + thread1.Abort(); + startBtn.Text = "Старт"; + downloadProgressBar.Value = 0; + SwitchEnabled(); + })); } + + private void StartButtonClick(object sender, EventArgs e) { - if(startBtn.Text == "Старт") { + if (((Button)sender).Name == "startSearchSingleButton") + SingleSearch = true; + else + SingleSearch = false; + + if (startBtn.Text == "Старт") + { thread1.Abort(); thread1 = new Thread(StartCalculation); thread1.Start(); @@ -806,24 +814,24 @@ private void button1_Click(object sender, EventArgs e) if (skn["name"].ToString() == skin) { #region Float ranges - /* - List craftList = new List(); - - foreach (var skin2 in items) - if (skn["case"].ToString() == skin2["case"].ToString()) - { - if (skin2["rarity"].ToString().Split(' ')[0] == getNextRarity(skn["rarity"].ToString().Split(' ')[0])) - craftList.Add(skin2); - } + /* + List craftList = new List(); + + foreach (var skin2 in items) + if (skn["case"].ToString() == skin2["case"].ToString()) + { + if (skin2["rarity"].ToString().Split(' ')[0] == getNextRarity(skn["rarity"].ToString().Split(' ')[0])) + craftList.Add(skin2); + } - foreach (var skinRange in GroupOutcomes(craftList)) - { - ConsoleBuffer.Append($"{newLine}--------Length: {skinRange.Count}--------"); - foreach (var skinObj in skinRange) - ConsoleBuffer.Append(newLine+skinObj.ToString()); - } - */ + foreach (var skinRange in GroupOutcomes(craftList)) + { + ConsoleBuffer.Append($"{newLine}--------Length: {skinRange.Count}--------"); + foreach (var skinObj in skinRange) + ConsoleBuffer.Append(newLine+skinObj.ToString()); + } + */ #endregion if (skn["highestRarity"] == "False") @@ -888,7 +896,7 @@ private void timer1_Tick(object sender, EventArgs e) client.Invoke(); } - private void button8_Click(object sender, EventArgs e) + private void CloseAppButton_Click(object sender, EventArgs e) { Application.Exit(); } @@ -929,12 +937,12 @@ private const int Rectangle LeftCursor { get { return new Rectangle(0, 0, _, this.ClientSize.Height); } } Rectangle BottomCursor { get { return new Rectangle(0, this.ClientSize.Height - _, this.ClientSize.Width, _); } } Rectangle RightCursor { get { return new Rectangle(this.ClientSize.Width - _, 0, _, this.ClientSize.Height); } } - Rectangle TopLeft { get { return new Rectangle(0, 0, _, _); } } Rectangle TopRight { get { return new Rectangle(this.ClientSize.Width - _, 0, _, _); } } Rectangle BottomLeft { get { return new Rectangle(0, this.ClientSize.Height - _, _, _); } } Rectangle BottomRight { get { return new Rectangle(this.ClientSize.Width - _, this.ClientSize.Height - _, _, _); } } - + public bool isDarkMode { get; private set; } + public bool SingleSearch { get; private set; } protected override void WndProc(ref Message message) { @@ -967,7 +975,7 @@ private void WindowDragEvent(object sender, MouseEventArgs e) private void copyButtonClick(object sender, EventArgs e) { - Clipboard.SetText(((System.Windows.Forms.Button)sender).Tag.ToString()); + Clipboard.SetText(((Button)sender).Tag.ToString()); } private void settingsButton_Click(object sender, EventArgs e) @@ -976,11 +984,12 @@ private void settingsButton_Click(object sender, EventArgs e) settings.ShowDialog(); CheckRegistry(); registryData = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\FloatTool"); - ChangeTheme(Convert.ToBoolean(registryData.GetValue("darkMode"))); muteSound = !Convert.ToBoolean(registryData.GetValue("sound")); WorkStatusUpdater.Interval = (int)registryData.GetValue("bufferSpeed"); discordWorker = Convert.ToBoolean(registryData.GetValue("discordRPC")); currentCurr = (Currency)registryData.GetValue("currency"); + CurrentPallete = (Pallete)registryData.GetValue("theme"); + ChangeTheme(); } private void benchmarkButton_Click(object sender, EventArgs e) @@ -989,207 +998,136 @@ private void benchmarkButton_Click(object sender, EventArgs e) benchmark.ShowDialog(); } - void ChangeTheme(bool dark) + void ChangeTheme() { - if (dark) + if (CurrentPallete == Pallete.Dark) { - BackColor = Color.FromArgb(44, 44, 44); - outputConsoleBox.BackColor = Color.FromArgb(31, 31, 31); - outputConsoleBox.ForeColor = Color.FromArgb(255, 255, 255); - splitContainer1.BackColor = Color.FromArgb(31, 31, 31); - splitContainer1.Panel1.BackColor = Color.FromArgb(31, 31, 31); - splitContainer1.Panel2.BackColor = Color.FromArgb(31, 31, 31); - - foundCombinationContainer.BackColor = Color.FromArgb(37, 37, 37); - - panel10.BackColor = Color.FromArgb(31, 31, 31); - panel12.BackColor = Color.FromArgb(31, 31, 31); - - panel3.BackColor = Color.FromArgb(37, 37, 37); - panel9.BackColor = Color.FromArgb(37, 37, 37); - - label1.ForeColor = Color.FromArgb(255, 255, 255); - label2.ForeColor = Color.FromArgb(255, 255, 255); - label3.ForeColor = Color.FromArgb(255, 255, 255); - label4.ForeColor = Color.FromArgb(255, 255, 255); - label5.ForeColor = Color.FromArgb(255, 255, 255); - label6.ForeColor = Color.FromArgb(255, 255, 255); - label7.ForeColor = Color.FromArgb(255, 255, 255); - label8.ForeColor = Color.FromArgb(255, 255, 255); - label11.ForeColor = Color.FromArgb(255, 255, 255); - label12.ForeColor = Color.FromArgb(255, 255, 255); - - panel5.BackColor = Color.FromArgb(44, 44, 44); - panel6.BackColor = Color.FromArgb(44, 44, 44); - - weaponTypeBox.BackColor = Color.FromArgb(32, 32, 32); - weaponTypeBox.ForeColor = Color.FromArgb(150, 150, 150); - weaponSkinBox.BackColor = Color.FromArgb(32, 32, 32); - weaponSkinBox.ForeColor = Color.FromArgb(150, 150, 150); - weaponQualityBox.BackColor = Color.FromArgb(32, 32, 32); - weaponQualityBox.ForeColor = Color.FromArgb(150, 150, 150); - - outcomeSelectorComboBox.BackColor = Color.FromArgb(32, 32, 32); - outcomeSelectorComboBox.ForeColor = Color.FromArgb(150, 150, 150); - - stattrackCheckBox.TurnedOffColor = Color.FromArgb(56, 56, 56); - stattrackCheckBox.TurnedOnColor = Color.Green; - - minimizeBtn.ForeColor = Color.FromArgb(255, 255, 255); - closeBtn.ForeColor = Color.FromArgb(255, 255, 255); - MaximizeButton.ForeColor = Color.FromArgb(255, 255, 255); settingsButton.BackgroundImage = Properties.Resources.gearWhite; benchmarkButton.BackgroundImage = Properties.Resources.benchmarkWhite; - - minimizeBtn.FlatAppearance.MouseOverBackColor = Color.FromArgb(0, 0, 0); - settingsButton.FlatAppearance.MouseOverBackColor = Color.FromArgb(0, 0, 0); - closeBtn.FlatAppearance.MouseOverBackColor = Color.FromArgb(0, 0, 0); - MaximizeButton.FlatAppearance.MouseOverBackColor = Color.FromArgb(0, 0, 0); - settingsButton.FlatAppearance.MouseOverBackColor = Color.FromArgb(0, 0, 0); - benchmarkButton.FlatAppearance.MouseOverBackColor = Color.FromArgb(0, 0, 0); - - sortCheckBox.ForeColor = Color.FromArgb(255, 255, 255); - ascendingCheckBox.ForeColor = Color.FromArgb(255, 255, 255); - - checkPossibilityBtn.BackColor = Color.FromArgb(56, 56, 56); - startBtn.BackColor = Color.FromArgb(56, 56, 56); - checkPossibilityBtn.ForeColor = Color.FromArgb(255, 255, 255); - startBtn.ForeColor = Color.FromArgb(255, 255, 255); - - checkPossibilityBtn.FlatAppearance.MouseOverBackColor = Color.FromName("WindowFrame"); - startBtn.FlatAppearance.MouseOverBackColor = Color.FromName("WindowFrame"); - - fullSkinName.BackColor = Color.FromArgb(32, 32, 32); - fullSkinName.ForeColor = Color.FromArgb(150, 150, 150); - searchFloatInput.BackColor = Color.FromArgb(32, 32, 32); - searchFloatInput.ForeColor = Color.FromArgb(150, 150, 150); - - quantityInput.BackColor = Color.FromArgb(32, 32, 32); - quantityInput.ForeColor = Color.FromArgb(150, 150, 150); - skipValueInput.BackColor = Color.FromArgb(32, 32, 32); - skipValueInput.ForeColor = Color.FromArgb(150, 150, 150); - - label10.ForeColor = Color.FromName("White"); - threadCountInput.BackColor = Color.FromArgb(32, 32, 32); - threadCountInput.ForeColor = Color.FromArgb(150, 150, 150); - - searchModeLabel.ForeColor = Color.White; - speedStatusLabel.ForeColor = Color.White; - combinationsStatusLabel.ForeColor = Color.White; - - searchmodeLess_btn.BackColor = Color.FromArgb(56, 56, 56); - searchmodeLess_btn.ForeColor = Color.FromArgb(255, 255, 255); - searchmodeEqual_btn.BackColor = Color.FromArgb(56, 56, 56); - searchmodeEqual_btn.ForeColor = Color.FromArgb(255, 255, 255); - searchmodeGreater_btn.BackColor = Color.FromArgb(56, 56, 56); - searchmodeGreater_btn.ForeColor = Color.FromArgb(255, 255, 255); - - gpuSearch_btn.BackColor = Color.FromArgb(56, 56, 56); - gpuSearch_btn.ForeColor = Color.FromArgb(255, 255, 255); - - downloadProgressBar.ForeColor = Color.White; - downloadProgressBar.ProgressColor = Color.Green; - downloadProgressBar.BackColor = Color.FromArgb(32, 32, 32); } - else + else if (CurrentPallete == Pallete.Light) { - BackColor = Color.FromArgb(222, 222, 222); - outputConsoleBox.BackColor = Color.FromArgb(255, 255, 255); - outputConsoleBox.ForeColor = Color.FromArgb(0, 0, 0); - splitContainer1.BackColor = Color.FromArgb(255, 255, 255); - splitContainer1.Panel1.BackColor = Color.FromArgb(255, 255, 255); - splitContainer1.Panel2.BackColor = Color.FromArgb(255, 255, 255); - - foundCombinationContainer.BackColor = Color.FromArgb(222, 222, 222); - - panel10.BackColor = Color.FromArgb(255, 255, 255); - panel12.BackColor = Color.FromArgb(255, 255, 255); - - panel3.BackColor = Color.FromArgb(249, 249, 249); - panel9.BackColor = Color.FromArgb(249, 249, 249); - - label1.ForeColor = Color.FromArgb(0, 0, 0); - label2.ForeColor = Color.FromArgb(0, 0, 0); - label3.ForeColor = Color.FromArgb(0, 0, 0); - label4.ForeColor = Color.FromArgb(0, 0, 0); - label5.ForeColor = Color.FromArgb(0, 0, 0); - label6.ForeColor = Color.FromArgb(0, 0, 0); - label7.ForeColor = Color.FromArgb(0, 0, 0); - label8.ForeColor = Color.FromArgb(0, 0, 0); - label11.ForeColor = Color.FromArgb(0, 0, 0); - label12.ForeColor = Color.FromArgb(0, 0, 0); - - panel5.BackColor = Color.FromArgb(222, 222, 222); - panel6.BackColor = Color.FromArgb(222, 222, 222); - - weaponTypeBox.BackColor = Color.FromArgb(255, 255, 255); - weaponTypeBox.ForeColor = Color.FromArgb(10, 10, 10); - weaponSkinBox.BackColor = Color.FromArgb(255, 255, 255); - weaponSkinBox.ForeColor = Color.FromArgb(10, 10, 10); - weaponQualityBox.BackColor = Color.FromArgb(255, 255, 255); - weaponQualityBox.ForeColor = Color.FromArgb(10, 10, 10); - outcomeSelectorComboBox.BackColor = Color.FromArgb(255, 255, 255); - outcomeSelectorComboBox.ForeColor = Color.FromArgb(10, 10, 10); - - stattrackCheckBox.TurnedOffColor = Color.FromArgb(200, 200, 200); - stattrackCheckBox.TurnedOnColor = Color.LimeGreen; - - minimizeBtn.ForeColor = Color.FromArgb(0, 0, 0); - closeBtn.ForeColor = Color.FromArgb(0, 0, 0); - MaximizeButton.ForeColor = Color.FromArgb(0, 0, 0); settingsButton.BackgroundImage = Properties.Resources.gearBlack; benchmarkButton.BackgroundImage = Properties.Resources.benchmarkBlack; + } - minimizeBtn.FlatAppearance.MouseOverBackColor = Color.FromArgb(230, 230, 230); - settingsButton.FlatAppearance.MouseOverBackColor = Color.FromArgb(230, 230, 230); - closeBtn.FlatAppearance.MouseOverBackColor = Color.FromArgb(230, 230, 230); - MaximizeButton.FlatAppearance.MouseOverBackColor = Color.FromArgb(230, 230, 230); - settingsButton.FlatAppearance.MouseOverBackColor = Color.FromArgb(230, 230, 230); - benchmarkButton.FlatAppearance.MouseOverBackColor = Color.FromArgb(230, 230, 230); - - sortCheckBox.ForeColor = Color.FromArgb(0, 0, 0); - ascendingCheckBox.ForeColor = Color.FromArgb(0, 0, 0); - - checkPossibilityBtn.BackColor = Color.FromArgb(249, 249, 249); - startBtn.BackColor = Color.FromArgb(249, 249, 249); - checkPossibilityBtn.ForeColor = Color.FromArgb(0, 0, 0); - startBtn.ForeColor = Color.FromArgb(0, 0, 0); - - fullSkinName.BackColor = Color.FromArgb(255, 255, 255); - fullSkinName.ForeColor = Color.FromArgb(10, 10, 10); - searchFloatInput.BackColor = Color.FromArgb(255, 255, 255); - searchFloatInput.ForeColor = Color.FromArgb(10, 10, 10); - - checkPossibilityBtn.FlatAppearance.MouseOverBackColor = Color.FromArgb(240, 240, 240); - startBtn.FlatAppearance.MouseOverBackColor = Color.FromArgb(240, 240, 240); - - quantityInput.BackColor = Color.FromArgb(255, 255, 255); - quantityInput.ForeColor = Color.FromArgb(10, 10, 10); - skipValueInput.BackColor = Color.FromArgb(255, 255, 255); - skipValueInput.ForeColor = Color.FromArgb(10, 10, 10); - - label10.ForeColor = Color.FromName("Black"); - threadCountInput.BackColor = Color.FromArgb(255, 255, 255); - threadCountInput.ForeColor = Color.FromArgb(10, 10, 10); - - searchModeLabel.ForeColor = Color.Black; - speedStatusLabel.ForeColor = Color.Black; - combinationsStatusLabel.ForeColor = Color.Black; - - searchmodeLess_btn.BackColor = Color.FromArgb(249, 249, 249); - searchmodeLess_btn.ForeColor = Color.FromArgb(0, 0, 0); - searchmodeEqual_btn.BackColor = Color.FromArgb(249, 249, 249); - searchmodeEqual_btn.ForeColor = Color.FromArgb(0, 0, 0); - searchmodeGreater_btn.BackColor = Color.FromArgb(249, 249, 249); - searchmodeGreater_btn.ForeColor = Color.FromArgb(0, 0, 0); - - gpuSearch_btn.BackColor = Color.FromArgb(249, 249, 249); - gpuSearch_btn.ForeColor = Color.FromArgb(0, 0, 0); - - downloadProgressBar.ForeColor = Color.Black; - downloadProgressBar.ProgressColor = Color.FromArgb(119, 194, 119); - downloadProgressBar.BackColor = Color.FromArgb(234, 234, 234); + if (CurrentPallete == Pallete.Custom) + { + UpdateCustomPalette(); + if (CustomPalette.IsDarkButtons) + { + settingsButton.BackgroundImage = Properties.Resources.gearBlack; + benchmarkButton.BackgroundImage = Properties.Resources.benchmarkBlack; + } + else + { + settingsButton.BackgroundImage = Properties.Resources.gearWhite; + benchmarkButton.BackgroundImage = Properties.Resources.benchmarkWhite; + } } + + BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary1); + outputConsoleBox.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary2); + outputConsoleBox.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + splitContainer1.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary2); + splitContainer1.Panel1.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary2); + splitContainer1.Panel2.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary2); + + foundCombinationContainer.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary3); + + panel10.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary2); + panel12.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary2); + + panel3.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary3); + panel9.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary3); + + label1.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + label2.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + label3.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + label4.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + label5.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + label6.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + label7.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + label8.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + label11.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + label12.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + + panel5.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary1); + panel6.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary1); + + weaponTypeBox.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary4); + weaponTypeBox.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary2); + weaponSkinBox.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary4); + weaponSkinBox.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary2); + weaponQualityBox.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary4); + weaponQualityBox.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary2); + + outcomeSelectorComboBox.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary4); + outcomeSelectorComboBox.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary2); + + stattrackCheckBox.TurnedOffColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary6); + stattrackCheckBox.TurnedOnColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary3); + + minimizeBtn.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + closeBtn.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + MaximizeButton.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + + minimizeBtn.FlatAppearance.MouseOverBackColor = GetPalleteColor(CurrentPallete, PalleteColor.OverBackColor1); + settingsButton.FlatAppearance.MouseOverBackColor = GetPalleteColor(CurrentPallete, PalleteColor.OverBackColor1); + closeBtn.FlatAppearance.MouseOverBackColor = GetPalleteColor(CurrentPallete, PalleteColor.OverBackColor1); + MaximizeButton.FlatAppearance.MouseOverBackColor = GetPalleteColor(CurrentPallete, PalleteColor.OverBackColor1); + settingsButton.FlatAppearance.MouseOverBackColor = GetPalleteColor(CurrentPallete, PalleteColor.OverBackColor1); + benchmarkButton.FlatAppearance.MouseOverBackColor = GetPalleteColor(CurrentPallete, PalleteColor.OverBackColor1); + + sortCheckBox.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + ascendingCheckBox.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + + checkPossibilityBtn.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary5); + startBtn.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary5); + startSearchSingleButton.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary5); + checkPossibilityBtn.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + startBtn.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + startSearchSingleButton.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + + checkPossibilityBtn.FlatAppearance.MouseOverBackColor = GetPalleteColor(CurrentPallete, PalleteColor.OverBackColor2); + startBtn.FlatAppearance.MouseOverBackColor = GetPalleteColor(CurrentPallete, PalleteColor.OverBackColor2); + startSearchSingleButton.FlatAppearance.MouseOverBackColor = GetPalleteColor(CurrentPallete, PalleteColor.OverBackColor2); + + searchmodeEqual_btn.FlatAppearance.MouseOverBackColor = GetPalleteColor(CurrentPallete, PalleteColor.OverBackColor2); + searchmodeLess_btn.FlatAppearance.MouseOverBackColor = GetPalleteColor(CurrentPallete, PalleteColor.OverBackColor2); + searchmodeGreater_btn.FlatAppearance.MouseOverBackColor = GetPalleteColor(CurrentPallete, PalleteColor.OverBackColor2); + + fullSkinName.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary4); + fullSkinName.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary2); + searchFloatInput.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary4); + searchFloatInput.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary2); + + quantityInput.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary4); + quantityInput.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary2); + skipValueInput.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary4); + skipValueInput.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary2); + + label10.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + threadCountInput.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary4); + threadCountInput.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary2); + + searchModeLabel.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + speedStatusLabel.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + combinationsStatusLabel.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + + searchmodeLess_btn.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary5); + searchmodeLess_btn.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + searchmodeEqual_btn.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary5); + searchmodeEqual_btn.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + searchmodeGreater_btn.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary5); + searchmodeGreater_btn.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + + gpuSearch_btn.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary5); + gpuSearch_btn.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + + downloadProgressBar.ForeColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary1); + downloadProgressBar.ProgressColor = GetPalleteColor(CurrentPallete, PalleteColor.Secondary3); + downloadProgressBar.BackColor = GetPalleteColor(CurrentPallete, PalleteColor.Primary4); } private void gpuSearch_btn_Click(object sender, EventArgs e) @@ -1212,6 +1150,8 @@ private void gpuSearch_btn_Click(object sender, EventArgs e) } BigInteger last = 0; + private Pallete CurrentPallete; + private void timer2_Tick(object sender, EventArgs e) { var hundrMilsCount = currComb - last; diff --git a/FloatToolGUI/Main.en.resx b/FloatToolGUI/Main.en.resx index f872394..963c915 100644 --- a/FloatToolGUI/Main.en.resx +++ b/FloatToolGUI/Main.en.resx @@ -117,174 +117,88 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Skin Search + + Check - - - NoControl + + + 62, 19 - - Check + + Quality: - - NoControl + + 212, 67 - - - 255, 24 + + 205, 24 + + + 105, 19 + + + Weapon type: - 65, 15 + 81, 19 Full name: - - NoControl - - - NoControl - - - 51, 15 - - - Quality: + + 85, 19 - - NoControl + + Outcomes: - 35, 15 + 44, 19 Skin: - - NoControl + + Find one - - 84, 15 + + 107, 19 - - Weapon type: + + Search mode: - - Bruteforce + + 104, 19 - - NoControl + + Desired float: - - 80, 18 + + 103, 23 - + Ascending - - NoControl - - - 41, 96 - - - 47, 18 - - - Sort - - - NoControl - - 62, 14 + 86, 19 Skip value: - - NoControl - - 51, 14 + 68, 19 Amount: - - NoControl - - - 76, 14 - - - Desired float: - - - NoControl + + 59, 23 - - NoControl + + Sort - + Start - - Result - - - Welcome to FloatTool! -A tool to create cool looking CS:GO skins wear values. - - - 61, 20 - - - Settings - - - 180, 22 - - - Enable sound - - - Play sound when found combination - - - 180, 22 - - - Restart - - - Restart search after a certain time - - - Minutes before restart - - - 82, 20 - - - Information - - - 180, 22 - - - 180, 22 - - - Tutorial - - - 180, 22 - - - About - AAABAAEAAAAAAAEAIACyfAAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAEAAAABAAgGAAAAXHKoZgAAfHlJ diff --git a/FloatToolGUI/Main.resx b/FloatToolGUI/Main.resx index e1b0eb7..a29eb80 100644 --- a/FloatToolGUI/Main.resx +++ b/FloatToolGUI/Main.resx @@ -117,2369 +117,2405 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Fill - - - 0, 0 - - - Horizontal + + 30, 26 - - - True + + panel6 - - Fill + + panel6 - - 5, 5 + + < - - 0, 0, 0, 0 + + + 1 - - 449, 292 + + 1 - + 0 - - foundCombinationContainer - - - System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + panel1 - - splitContainer1.Panel1 + + 30, 26 - - 0 + + 267, 38 - - 5, 5, 5, 5 + + FAMAS - - splitContainer1.Panel1 + + panel6 - - System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Right - - splitContainer1 + + 10, 418 - - 0 + + 147, 23 - - Fill + + 40, 40 - - Inter, 9.75pt + + 1 - - 5, 5 + + 0 - - 40, 40, 40, 40 + + Ауткамы: - - True + + 8 - - Both + + 409, 0 - - 449, 92 + + Количество: - - 0 + + 1 - - Добро пожаловать в FloatTool! -Инструмент для создания флоатов при помощи крафтов CS:GO + + None - - outputConsoleBox + + stattrackCheckBox - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - splitContainer1.Panel2 + + panel16 - + 0 - - 5, 5, 5, 5 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - splitContainer1.Panel2 + + Найти одну - - System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 12 - - splitContainer1 + + Нужный флоат: - - 1 + + panel6 - - 459, 408 + + panel1 - - 302 + + panel16 - - 1 + + $this - - splitContainer1 + + Inter, 8.25pt - - System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + panel5 - - panel11 + + panel1 - - 0 + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 65, 16 - - - Fill + + panel9 - - 0, 10 + + 131, 98 - - 459, 408 + + panel15 - - 2 + + 267, 73 - - panel11 + + Flat - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Nova | Predator (Field-Tested) - - panel13 + + Bottom - - 0 + + Nova - - Top + + 5, 5, 5, 5 - - 0, 0 + + 4 - - 459, 10 + + quantityInput - - 3 + + Horizontal - - panel12 + + 302 - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + FloatTool - - panel13 + + 8 - - 1 + + Inter, 11.249999pt - - Fill + + True - - 10, 0 + + panel6 - - 459, 418 + + NoControl - - 4 + + NoControl - - panel13 + + NoControl - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + outputConsoleBox - - panel8 + + Скин: + + + 40, 0 0 - - Left + + CZ75-Auto - - 0, 0 + + panel6 - - 10, 418 + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 1 + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - panel10 + + panel16 - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 7, 70 - - panel8 + + Five-SeveN - - 1 + + 79, 19 - - Fill + + speedStatusLabel - - 0, 40 + + closeBtn - - 469, 418 + + 11 - - 2 + + 429, 1 - - panel8 + + 1 - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - panel1 + + 5, 2 - - 0 + + 7 - - Zoom + + splitContainer1 - - Flat + + Bottom - - Microsoft JhengHei Light, 40px + + Well-Worn - - NoControl + + panel16 - - 40, 0 + + 288, 34 - - 0, 0, 0, 0 + + NoControl - - Yes + + 0 - - 40, 40 + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 3 + + Inter, 18pt - - benchmarkButton + + Top, Right - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 7 - - panel9 + + Тип оружия: - + 0 - - Zoom + + True - - Flat + + O - - Microsoft JhengHei Light, 40px + + FloatTool - - NoControl + + 213, 24 - - 0, 0 + + 2, 25 - - 0, 0, 0, 0 + + 0, 126 - - Yes + + 120, 22 - - 40, 40 + + 10 - - 3 + + True - - settingsButton + + Inter, 9.75pt - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Полное название: - - panel9 + + 3 - - 1 + + 20% (Tec-9 | Varicamo) - - Top, Right + + searchModeLabel - - Flat + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Inter, 18pt + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - NoControl + + True - - 389, 1 + + 80% (AK-47 | Safari Mesh + 3) - - 40, 40 + + panel9 - - 2 + + ascendingCheckBox - - O + + NoControl - - MaximizeButton + + 4 - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Inter, 9pt - - panel9 + + 1 - - 2 + + 267, 24 - - Top, Right + + Sawed-Off - - Flat + + 0, 0, 0, 0 - - Inter, 18pt + + Microsoft JhengHei Light, 40px - - NoControl + + Flat - - 349, 1 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 40, 39 + + 3 - - 2 + + 0, 0 - - _ + + panel2 - - minimizeBtn + + None - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 119, 19 - - panel9 + + Inter, 9.75pt - - 3 + + Bottom, Left - - Top, Right + + Проверить - - Flat + + 3 - - Inter, 18pt + + v.0.7.0 - - NoControl + + 2 - - 429, 1 + + None - - 40, 40 + + Inter, 9pt - - 0 + + panel6 - - X + + 1 - - closeBtn + + False System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - panel9 + + 285, 13 - - 4 + + 40, 40 - - Top + + label10 - - 0, 0 + + 9 - - 469, 40 + + True - - 3 + + Inter, 12pt - - panel9 + + 1 - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Zoom - - panel7 + + 7, 0 - - 0 + + 7 - - Top, Right + + panel16 - - Flat + + label11 - - Microsoft JhengHei Light, 12pt + + Inter, 14pt, style=Bold - + + 4 + + + True + + + Inter, 11.25pt + + + 389, 1 + + NoControl - - 379, 0 + + NoControl - - 30, 26 + + 0 - - 2 + + 126, 19 - - - + + 0, 0 - - button5 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + None - - panel7 + + Factory New - - 1 + + True - - Top, Right + + - Flat - - Microsoft JhengHei Light, 12pt + + 132, 24 - - NoControl + + Inter, 9.75pt - - 409, 0 + + 11 - - 30, 26 + + 2 - - 1 + + 6 - - O + + 3 - - button4 + + Minimal Wear - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + True - - panel7 + + 469, 40 - + + None + + + 3 + + 2 - - Top, Right + + System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + Flat - - Microsoft JhengHei Light, 12pt + + 244, 0 - - NoControl + + 2 - - 439, 0 + + 2, 0 - - 30, 26 + + None 0 - - X - - - button3 + + NoControl - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + panel3 - - panel7 + + Left - - 3 + + Пропуск: - - Top + + panel6 - - 0, 0 + + 2 - - 469, 40 + + 0 - - 1 + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - panel7 + + 12 - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel1 - - - 1 + + Top, Right - + Fill - - 0, 0 - - - 469, 458 - - - 7 + + threadCountInput - - panel1 + + 5 - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Yes - - panel4 + + foundCombinationContainer - + 0 - - Top, Right - - - True - - - Inter, 8.25pt - - - NoControl + + panel15 - - 177, 19 + + FloatTool - - 60, 14 + + = - - 1 + + Flat - - by Prevter + + True - - label24 + + 0 - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + panel11 - + panel3 - - 0 + + 0, 191 - - True + + button4 - - Inter, 8.25pt + + 3 - - NoControl + + 150, 98 - - 141, 19 + + label2 - - 41, 14 + + Inter, 10.25pt - - 1 + + 0, 0, 0, 0 - - v.0.7.0 + + 126, 16 - - versionLabel + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Проверено комбинаций: 0 / 0 - + panel3 - + 1 - - True - - - Inter, 21.75pt + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - NoControl + + checkPossibilityBtn - - 5, 2 + + 427, 267 - - 140, 35 + + panel7 - + 0 - - FloatTool - - - label8 + + button5 - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 439, 0 - - panel3 + + panel8 - - 2 + + NoControl - - Top + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 0, 0 + + 179, 15 - - 427, 40 + + 5 - - 0 + + Inter, 20.25pt - - panel3 + + 180, 29 - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 449, 292 - - panel2 + + NoControl - - 2 + + 3 - - 86, 66 + + 8 - - 6, 6, 6, 6 + + panel8 - - 40, 24 + + Качество: - - 2 + + 0 - - stattrackCheckBox + + 1 - - FloatToolGUI.CustomControls.CustomToggleSwitch, FloatTool, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + Desert Eagle - - panel6 + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 0 + + 11 - - Bottom, Right + + Inter, 9.75pt - + Flat - - Inter, 10.25pt - - - NoControl - - - 150, 98 + + 406, 24 - - 267, 24 + + CenterScreen 10 - - Проверить + + 469, 418 - - checkPossibilityBtn + + panel13 - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 94, 29 - - panel6 - - - 1 + + NoControl - - None + + 121, 19 - - True + + 0 - + NoControl - - 285, 13 + + 5, 5 - - 82, 19 + + 1 - - 7 + + minimizeBtn - - Качество: + + 427, 191 - - label3 + + Flat - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 0 - + + 141, 19 + + + 1 + + panel6 - - 2 + + Microsoft JhengHei Light, 12pt - - None + + 2 - - Flat + + 0 - - Inter, 9.75pt + + 4 - - 80% (AK-47 | Safari Mesh + 3) + + Inter, 21.75pt - - 20% (Tec-9 | Varicamo) + + 6 - - * Искать всё * + + None - - 204, 66 + + Microsoft JhengHei Light, 12pt - - 213, 24 + + settingsButton - - 6 + + splitContainer1.Panel1 - - 80% (AK-47 | Safari Mesh + 3) + + Top - - outcomeSelectorComboBox + + weaponSkinBox - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + True - + panel6 - - 3 - - - None + + Inter, 14pt, style=Bold - - Flat + + 1 - - Inter, 9.75pt + + 900, 460 - - Factory New + + panel4 - - Minimal Wear + + Flat - - Field-Tested + + 7, 98 - - Well-Worn + + 140, 35 - - Battle-Scarred + + 469, 458 - - 288, 34 + + 204, 66 - - 129, 24 + + 7, 127 - - 6 + + System.Windows.Forms.Timer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Field-Tested + + Flat - - weaponQualityBox + + 1 - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 5 - + panel6 - - 4 + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - None + + 9 - - True + + 429, 0 - - NoControl + + 469, 458 - - 7, 68 + + Bottom - - 79, 19 + + panel5 - - 3 + + Сортировать - - StatTrack: + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - label12 + + 7 - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 86, 66 - - panel6 + + panel16 - - 5 + + NoControl - - None + + 13 - - True + + searchmodeLess_btn - + + panel13 + + NoControl - - 7, 13 + + G3SG1 + + + 131, 73 + + + True + + + panel15 100, 19 - - 3 + + 0 - - Тип оружия: + + NoControl - - label1 + + splitContainer1 - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 14 - - panel6 + + 9 - - 6 - - - Bottom, Left - - - True - - - NoControl - - - 7, 101 - - - 140, 19 - - - 9 - - - Полное название: - - - MiddleCenter - - - label4 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel6 - - - 7 - - - None - - - Flat - - - Inter, 9.75pt - - - AK-47 - - - AUG - - - AWP - - - CZ75-Auto - - - Desert Eagle - - - Dual Berettas - - - FAMAS - - - Five-SeveN - - - G3SG1 - - - Galil AR - - - Glock-18 - - - M249 - - - M4A1-S - - - M4A4 - - - MAC-10 - - - MAG-7 - - - MP5-SD - - - MP7 - - - MP9 - - - Negev - - - Nova - - - P2000 - - - P250 - - - P90 - - - PP-Bizon - - - R8 Revolver - - - Sawed-Off - - - SCAR-20 - - - SG 553 - - - SSG 08 - - - Tec-9 - - - UMP-45 - - - USP-S - - - XM1014 - - - 11, 34 - - - 132, 24 - - - 2 - - - Nova - - - weaponTypeBox - - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel6 - - - 8 - - - None - - + True - - NoControl - - - 127, 68 - - - 77, 19 - - + 4 - - Ауткамы: - - - label11 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel6 + + 2 - - 9 + + combinationsStatusLabel - + None - - True - - - NoControl - - - 146, 12 - - - 50, 19 - - - 4 - - - Скин: - - - label2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - panel6 - - - 10 + + 6 - - Bottom + + 0, 0 - - Inter, 12pt + + 7, 68 - - 0, 126 + + FloatToolGUI.CustomProgressBar, FloatTool, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - 10, 12, 10, 12 + + 140, 19 - - 2, 25 + + + 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 + - - 427, 25 + + label12 - - 0 + + 379, 0 - - Nova | Predator (Field-Tested) + + 4 - - Right + + None - - fullSkinName + + NoControl - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Текущая скорость: 0 комбинаций/сек - - panel6 + + > - - 11 + + 10, 12, 10, 12 - - None + + 129, 24 - - Flat + + MiddleCenter - + + 150, 50 + + + Fill + + + MP9 + + + Negev + + + NoControl + + Inter, 9.75pt - - 150, 34 + + label7 - - 132, 24 + + M4A4 - - 5 + + Glock-18 - - Predator + + M249 - - weaponSkinBox + + MP5-SD - - System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + MP7 + + + Top + + + MAG-7 + + + startSearchSingleButton + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.Timer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + panel15 + + + True - - panel6 + + NoControl - - 12 + + panel11 - - Top + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 0, 40 + + Flat - - 427, 151 + + 150, 21 - + 1 - - panel6 + + Inter, 8.25pt - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 10 - - panel2 + + 0 - + + panel5 + + 1 - - None + + 0 - - Inter, 9.75pt + + NoControl - - 11, 161 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 0, 0, 0, 0 + + Inter, 18pt - - 406, 24 + + 4 - - 12 + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - downloadProgressBar + + splitContainer1.Panel2 - - FloatToolGUI.CustomProgressBar, FloatTool, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - panel16 + + 77, 32 - + 0 - + None - - Flat + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Inter, 14pt, style=Bold + + versionLabel - - NoControl + + 40, 40, 40, 40 - - 180, 29 + + 7 - - 77, 32 + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 11 + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - > + + Fill - - searchmodeGreater_btn + + 427, 151 + + + 11 System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - panel16 - - - 1 - - + None - - Flat - - - Inter, 14pt, style=Bold + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - NoControl + + panel2 - - 94, 29 + + WorkStatusUpdater - - 80, 32 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 11 + + Flat - - = + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - searchmodeEqual_btn + + 0 - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Top - - panel16 + + panel9 - - 2 + + NoControl - - None + + 459, 408 - - Flat + + splitContainer1.Panel2 - - Inter, 14pt, style=Bold + + 3 - - NoControl + + True - - 11, 29 + + 3 - - 77, 32 + + 0, 40 - - 11 + + Top, Right - - < + + 267, 15 - - searchmodeLess_btn + + NoControl - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Zoom - - panel16 + + MAC-10 - - 3 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - None + + 4 - - True + + 2 NoControl - - 7, 7 + + 101, 19 - - 119, 19 + + None - - 5 + + 1 - - Режим поиска: + + 6 - - searchModeLabel + + 75, 19 - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 9 - - panel16 + + Dual Berettas - - 4 + + 41, 14 + + + 79, 19 - - None + + Top, Right - - True + + Потоков: - - NoControl + + Fill - - 7, 70 + + panel6 - - 121, 19 + + False - - 5 + + 427, 458 - - Нужный флоат: + + System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - label5 + + 9 - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + label4 - - panel16 + + NoControl - - 5 + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - None + + Battle-Scarred - - Inter, 9.75pt + + label8 - - 131, 98 + + 900, 460 - - 126, 19 + + 11 - - 3 + + Fill - - quantityInput + + 77, 32 - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Flat - - panel16 + + 146, 12 - - 6 + + Старт - + None - - Inter, 9.75pt + + 40, 40 - - 131, 127 + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 126, 19 + + 5 - - 4 + + weaponTypeBox - - skipValueInput + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 0 - + + 8 + + + 11 + + panel16 - - 7 + + Добро пожаловать в FloatTool! +Инструмент для создания флоатов при помощи крафтов CS:GO - - None + + panel2 - - True + + panel9 - + NoControl - - 267, 38 + + 77, 19 - - 147, 23 + + 459, 10 - - 9 + + None - - По возрастанию + + Inter, 16pt - - ascendingCheckBox + + 50, 19 - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - panel16 + + 1 - - 8 + + 0, 191 - - None + + NoControl - - True + + panel7 - - NoControl + + panel7 - - 7, 127 + + 40, 24 - - 75, 19 + + panel16 - - 7 + + Flat - - Пропуск: + + panel2 - - label7 + + gpuSearch_btn - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + * Искать всё * - - panel16 + + 10, 0 - - 9 + + Inter, 18pt - - None + + 40, 39 - - True + + 0 - - NoControl + + 2, 0, 2, 2 - - 7, 98 + + 60, 14 - - 101, 19 + + Center - - 6 + + Inter, 9.75pt - - Количество: + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - label6 + + Flat - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 0.25000000032783 - - panel16 + + 150, 34 - - 10 + + Top, Right - - None + + by Prevter + + + UMP-45 + + + 459, 408 - + + panel16 + + Inter, 9.75pt - - 131, 73 + + Top + + + panel7 16 - - 126, 16 - - - 2 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 0.25000000032783 + + panel16 - - searchFloatInput + + panel16 - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Top - - panel16 + + 459, 418 - - 11 + + 349, 1 - - None + + splitContainer1.Panel1 - - True + + panel13 - - NoControl + + 0, 40 - - 267, 15 + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 124, 23 + + 126, 19 - - 8 + + 30, 26 - - Сортировать + + 127, 68 - - sortCheckBox + + panel3 - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + panel16 - - 12 + + 3 - - None + + 0 - - Flat + + 229, 15 - - Inter, 20.25pt + + Both - - NoControl + + None - - 267, 70 + + 11, 34 - - 150, 82 + + SG 553 - - 0 + + SSG 08 - - Старт + + 6, 6, 6, 6 - - startBtn + + 6 - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + panel10 - - panel16 + + P250 - - 13 + + P90 - - Fill + + searchmodeGreater_btn - + + P2000 + + 0, 0 - - 427, 191 + + SCAR-20 - - 12 + + PP-Bizon - - panel16 + + R8 Revolver - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 2 - - panel5 + + 8, 50 - - 0 + + Yes - - True + + Fill - - Inter, 9pt + + Inter, 14pt, style=Bold - - NoControl + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 8, 33 + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 229, 15 + + Field-Tested - - 5 + + 0, 0, 0, 0 - - Текущая скорость: 0 комбинаций/сек + + 2 - - speedStatusLabel + + 1 - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 2 - - panel15 + + NoControl - - 0 + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - True + + None - - Inter, 9pt + + X - - NoControl + + True - - 8, 50 + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 179, 15 + + startBtn - + 5 - - Проверено комбинаций: 0 / 0 + + None - - combinationsStatusLabel + + AUG - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + label1 - - panel15 + + System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 1 + + 267, 125 - - Bottom + + label5 + + + $this + + + 5 + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - False + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + Flat - - Inter, 16pt - - - NoControl + + panel6 - - 244, 0 + + panel6 - - 173, 71 + + 2 - - 3 + + 7, 7 - - GPU Тест + + panel7 - - False + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - gpuSearch_btn + + По возрастанию - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + panel9 - - panel15 + + MaximizeButton - - 2 + + 1 - - True + + 0, 0, 0, 0 - + NoControl - - 7, 0 - - - 79, 19 - - - 2 + + 469, 40 - - Потоков: + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - label10 + + 3 - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + None - - panel15 + + 7, 13 - - 3 + + Fill - - Inter, 11.25pt + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 92, 0 + + 12 - - 120, 22 + + 7, 101 - - 1 + + Field-Tested - - threadCountInput + + 0, 0 - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + panel16 - + panel15 - - 4 - - - Bottom + + Fill - - 0, 191 + + weaponQualityBox 427, 76 - - 11 + + 427, 40 - - panel15 + + FloatToolGUI.CustomControls.CustomToggleSwitch, FloatTool, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Fill - - panel5 + + Microsoft JhengHei Light, 12pt - - 1 + + 80, 32 - - Fill + + panel9 - - 0, 191 + + 40, 40 - - 427, 267 + + None - - 0 + + panel12 - - panel5 + + Bottom, Right - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 0, 0 - - panel2 + + benchmarkButton - - 0 + + AWP - - Left + + label3 - - 2, 0 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 427, 458 + + _ - - 8 + + True - - panel2 + + Left - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + searchmodeEqual_btn - - $this + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 1 + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Fill - - 429, 0 + + Inter, 9.75pt - - 469, 458 + + 3 - - 9 + + 11, 29 - - panel4 + + GPU Тест - - System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + True - - $this + + NoControl - + + 80% (AK-47 | Safari Mesh + 3) + + + fullSkinName + + 0 - - 198, 16 - - - True - - - 60 - - - Center + + 449, 92 - - 900, 460 + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Inter, 11.249999pt + + Inter, 8pt - - - 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 - + + NoControl + + + sortCheckBox - - 900, 460 + + NoControl - - 2, 0, 2, 2 + + System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - CenterScreen + + Top, Right - - FloatTool + + panel16 + + + Flat + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 5, 5, 5, 5 + + + 0 + + + AK-47 + + + panel15 + + + 124, 23 + + + Nova + + + 427, 25 + + + panel4 + + + button3 + + + panel16 + + + panel8 + + + Flat + + + 0, 10 + + + 13 + + + Top, Right + + + True + + + label24 + + + 2 + + + 82, 19 + + + downloadProgressBar + + + Inter, 9.75pt + + + NoControl + + + None + + + None + + + 2 + + + 12 + + + 173, 71 + + + 1 + + + NoControl + + + O + + + splitContainer1 + + + System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 DiscordUpdater - - System.Windows.Forms.Timer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - WorkStatusUpdater + + 5, 5 - - System.Windows.Forms.Timer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + label6 - - FloatTool + + Flat - - System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Predator + + + 5 + + + M4A1-S + + + None + + + Flat + + + 2 + + + Microsoft JhengHei Light, 40px + + + 132, 24 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 11, 161 + + + 92, 0 + + + None + + + True + + + True + + + Galil AR + + + 177, 19 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0, 0 + + + 3 + + + Режим поиска: + + + StatTrack: + + + 0, 0 + + + 131, 127 + + + 0, 0 + + + skipValueInput + + + NoControl + + + 2 + + + panel16 + + + 8, 33 + + + searchFloatInput + + + None + + + outcomeSelectorComboBox + + + USP-S + + + XM1014 + + + Tec-9 + + + X + + 65, 16 + + + 198, 16 + + + True + + + 60 + \ No newline at end of file diff --git a/FloatToolGUI/Properties/Resources.Designer.cs b/FloatToolGUI/Properties/Resources.Designer.cs index 25b0cb1..385cd00 100644 --- a/FloatToolGUI/Properties/Resources.Designer.cs +++ b/FloatToolGUI/Properties/Resources.Designer.cs @@ -80,6 +80,16 @@ internal static System.Drawing.Bitmap benchmarkWhite { } } + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap DarkThemePreview { + get { + object obj = ResourceManager.GetObject("DarkThemePreview", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Поиск локализованного ресурса типа System.Drawing.Bitmap. /// @@ -120,6 +130,16 @@ internal static byte[] Inter_Regular { } } + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap LightThemePreview { + get { + object obj = ResourceManager.GetObject("LightThemePreview", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Поиск локализованного ресурса типа System.Drawing.Bitmap. /// diff --git a/FloatToolGUI/Properties/Resources.resx b/FloatToolGUI/Properties/Resources.resx index c8dac01..2f6f423 100644 --- a/FloatToolGUI/Properties/Resources.resx +++ b/FloatToolGUI/Properties/Resources.resx @@ -124,6 +124,9 @@ ..\Resources\benchmarkWhite.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\DarkThemePreview.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\gearBlack.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -136,6 +139,9 @@ ..\Resources\Inter-Regular.ttf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\LightThemePreview.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\loading.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a diff --git a/FloatToolGUI/Resources/DarkThemePreview.png b/FloatToolGUI/Resources/DarkThemePreview.png new file mode 100644 index 0000000000000000000000000000000000000000..974479a4a6a01f318247d34dfc17c410f2af4d7b GIT binary patch literal 31472 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 V^{dYSogE1YB%vS<7X29b{{do4VS)ev literal 0 HcmV?d00001 diff --git a/FloatToolGUI/Resources/LightThemePreview.png b/FloatToolGUI/Resources/LightThemePreview.png new file mode 100644 index 0000000000000000000000000000000000000000..87eca1d62d8bac0bbc1c5bfc3317c53777b314f8 GIT binary patch literal 28858 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 b(pgyr`e}O)tJ#FY literal 0 HcmV?d00001 diff --git a/FloatToolGUI/SettingsForm.Designer.cs b/FloatToolGUI/SettingsForm.Designer.cs index dcf1dfb..4d5c746 100644 --- a/FloatToolGUI/SettingsForm.Designer.cs +++ b/FloatToolGUI/SettingsForm.Designer.cs @@ -33,26 +33,29 @@ private void InitializeComponent() this.panel3 = new System.Windows.Forms.Panel(); this.closeBtn = new System.Windows.Forms.Button(); this.label8 = new System.Windows.Forms.Label(); - this.label1 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label(); this.saveChangesBtn = new System.Windows.Forms.Button(); this.resetChangesBtn = new System.Windows.Forms.Button(); this.bufferSpeedNUP = new System.Windows.Forms.NumericUpDown(); this.label4 = new System.Windows.Forms.Label(); - this.checkUpdatesToggle = new FloatToolGUI.CustomControls.CustomToggleSwitch(); - this.soundToggle = new FloatToolGUI.CustomControls.CustomToggleSwitch(); - this.darkModeToggle = new FloatToolGUI.CustomControls.CustomToggleSwitch(); - this.discordRpcToggle = new FloatToolGUI.CustomControls.CustomToggleSwitch(); this.label5 = new System.Windows.Forms.Label(); this.currencyComboBox = new System.Windows.Forms.ComboBox(); this.label6 = new System.Windows.Forms.Label(); this.currencyBindingSource = new System.Windows.Forms.BindingSource(this.components); this.currencyBindingSource1 = new System.Windows.Forms.BindingSource(this.components); + this.label7 = new System.Windows.Forms.Label(); + this.themeSelectorComboBox = new System.Windows.Forms.ComboBox(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.SettingsHints = new System.Windows.Forms.ToolTip(this.components); + this.discordRpcToggle = new FloatToolGUI.CustomControls.CustomToggleSwitch(); + this.checkUpdatesToggle = new FloatToolGUI.CustomControls.CustomToggleSwitch(); + this.soundToggle = new FloatToolGUI.CustomControls.CustomToggleSwitch(); this.panel3.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.bufferSpeedNUP)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.currencyBindingSource)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.currencyBindingSource1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); this.SuspendLayout(); // // panel3 @@ -100,38 +103,29 @@ private void InitializeComponent() this.label8.Text = "Настройки"; this.label8.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DragWindowMouseDown); // - // label1 - // - this.label1.AutoSize = true; - this.label1.Font = new System.Drawing.Font("Inter", 14F); - this.label1.ForeColor = System.Drawing.Color.White; - this.label1.Location = new System.Drawing.Point(75, 52); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(131, 23); - this.label1.TabIndex = 3; - this.label1.Text = "Тёмная тема"; - // // label2 // this.label2.AutoSize = true; this.label2.Font = new System.Drawing.Font("Inter", 14F); this.label2.ForeColor = System.Drawing.Color.White; - this.label2.Location = new System.Drawing.Point(75, 95); + this.label2.Location = new System.Drawing.Point(74, 285); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(213, 23); this.label2.TabIndex = 3; this.label2.Text = "Звук при нахождении"; + this.SettingsHints.SetToolTip(this.label2, "Проигрывать звуковой сигнал при нахождении комбинации"); // // label3 // this.label3.AutoSize = true; this.label3.Font = new System.Drawing.Font("Inter", 14F); this.label3.ForeColor = System.Drawing.Color.White; - this.label3.Location = new System.Drawing.Point(75, 137); + this.label3.Location = new System.Drawing.Point(74, 327); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(217, 23); this.label3.TabIndex = 3; this.label3.Text = "Проверка обновлений"; + this.SettingsHints.SetToolTip(this.label3, "Проверять наличие обновлений при запуске программы"); // // saveChangesBtn // @@ -143,11 +137,12 @@ private void InitializeComponent() this.saveChangesBtn.Font = new System.Drawing.Font("Inter", 14F); this.saveChangesBtn.ForeColor = System.Drawing.Color.White; this.saveChangesBtn.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.saveChangesBtn.Location = new System.Drawing.Point(8, 320); + this.saveChangesBtn.Location = new System.Drawing.Point(8, 512); this.saveChangesBtn.Name = "saveChangesBtn"; this.saveChangesBtn.Size = new System.Drawing.Size(185, 32); this.saveChangesBtn.TabIndex = 4; this.saveChangesBtn.Text = "Применить"; + this.SettingsHints.SetToolTip(this.saveChangesBtn, "Сохранить настройки"); this.saveChangesBtn.UseVisualStyleBackColor = false; this.saveChangesBtn.Click += new System.EventHandler(this.saveChangesBtn_Click); // @@ -160,11 +155,12 @@ private void InitializeComponent() this.resetChangesBtn.Font = new System.Drawing.Font("Inter", 14F); this.resetChangesBtn.ForeColor = System.Drawing.Color.White; this.resetChangesBtn.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.resetChangesBtn.Location = new System.Drawing.Point(199, 320); + this.resetChangesBtn.Location = new System.Drawing.Point(199, 512); this.resetChangesBtn.Name = "resetChangesBtn"; this.resetChangesBtn.Size = new System.Drawing.Size(185, 32); this.resetChangesBtn.TabIndex = 4; this.resetChangesBtn.Text = "Отмена"; + this.SettingsHints.SetToolTip(this.resetChangesBtn, "Отменить изменения"); this.resetChangesBtn.UseVisualStyleBackColor = false; this.resetChangesBtn.Click += new System.EventHandler(this.resetChangesBtn_Click); // @@ -174,7 +170,7 @@ private void InitializeComponent() this.bufferSpeedNUP.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.bufferSpeedNUP.Font = new System.Drawing.Font("Inter", 14F); this.bufferSpeedNUP.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(150)))), ((int)(((byte)(150)))), ((int)(((byte)(150))))); - this.bufferSpeedNUP.Location = new System.Drawing.Point(8, 280); + this.bufferSpeedNUP.Location = new System.Drawing.Point(7, 470); this.bufferSpeedNUP.Maximum = new decimal(new int[] { 5000, 0, @@ -188,6 +184,7 @@ private void InitializeComponent() this.bufferSpeedNUP.Name = "bufferSpeedNUP"; this.bufferSpeedNUP.Size = new System.Drawing.Size(376, 30); this.bufferSpeedNUP.TabIndex = 5; + this.SettingsHints.SetToolTip(this.bufferSpeedNUP, "Скорость с которой будет выводиться текст в консоль"); this.bufferSpeedNUP.Value = new decimal(new int[] { 250, 0, @@ -200,70 +197,25 @@ private void InitializeComponent() this.label4.AutoSize = true; this.label4.Font = new System.Drawing.Font("Inter", 14F); this.label4.ForeColor = System.Drawing.Color.White; - this.label4.Location = new System.Drawing.Point(4, 253); + this.label4.Location = new System.Drawing.Point(3, 443); this.label4.Name = "label4"; this.label4.Size = new System.Drawing.Size(333, 23); this.label4.TabIndex = 3; this.label4.Text = "Скорость обновления буфера (мс)"; - // - // checkUpdatesToggle - // - this.checkUpdatesToggle.Checked = true; - this.checkUpdatesToggle.ForeColor = System.Drawing.Color.White; - this.checkUpdatesToggle.Location = new System.Drawing.Point(8, 131); - this.checkUpdatesToggle.Name = "checkUpdatesToggle"; - this.checkUpdatesToggle.Size = new System.Drawing.Size(64, 36); - this.checkUpdatesToggle.TabIndex = 2; - this.checkUpdatesToggle.TurnedOffColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56))))); - this.checkUpdatesToggle.TurnedOnColor = System.Drawing.Color.Green; - this.checkUpdatesToggle.OnToggled += new System.EventHandler(this.Toggle_OnToggled); - // - // soundToggle - // - this.soundToggle.Checked = true; - this.soundToggle.ForeColor = System.Drawing.Color.White; - this.soundToggle.Location = new System.Drawing.Point(8, 89); - this.soundToggle.Name = "soundToggle"; - this.soundToggle.Size = new System.Drawing.Size(64, 36); - this.soundToggle.TabIndex = 2; - this.soundToggle.TurnedOffColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56))))); - this.soundToggle.TurnedOnColor = System.Drawing.Color.Green; - this.soundToggle.OnToggled += new System.EventHandler(this.Toggle_OnToggled); - // - // darkModeToggle - // - this.darkModeToggle.Checked = true; - this.darkModeToggle.ForeColor = System.Drawing.Color.White; - this.darkModeToggle.Location = new System.Drawing.Point(8, 46); - this.darkModeToggle.Name = "darkModeToggle"; - this.darkModeToggle.Size = new System.Drawing.Size(64, 36); - this.darkModeToggle.TabIndex = 2; - this.darkModeToggle.TurnedOffColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56))))); - this.darkModeToggle.TurnedOnColor = System.Drawing.Color.Green; - this.darkModeToggle.OnToggled += new System.EventHandler(this.Toggle_OnToggled); - // - // discordRpcToggle - // - this.discordRpcToggle.Checked = true; - this.discordRpcToggle.ForeColor = System.Drawing.Color.White; - this.discordRpcToggle.Location = new System.Drawing.Point(8, 173); - this.discordRpcToggle.Name = "discordRpcToggle"; - this.discordRpcToggle.Size = new System.Drawing.Size(64, 36); - this.discordRpcToggle.TabIndex = 2; - this.discordRpcToggle.TurnedOffColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56))))); - this.discordRpcToggle.TurnedOnColor = System.Drawing.Color.Green; - this.discordRpcToggle.OnToggled += new System.EventHandler(this.Toggle_OnToggled); + this.SettingsHints.SetToolTip(this.label4, "Скорость с которой будет выводиться текст в консоль"); // // label5 // this.label5.AutoSize = true; this.label5.Font = new System.Drawing.Font("Inter", 14F); this.label5.ForeColor = System.Drawing.Color.White; - this.label5.Location = new System.Drawing.Point(75, 179); + this.label5.Location = new System.Drawing.Point(74, 369); this.label5.Name = "label5"; this.label5.Size = new System.Drawing.Size(197, 23); this.label5.TabIndex = 3; this.label5.Text = "Интеграция Discord"; + this.SettingsHints.SetToolTip(this.label5, "Использовать интеграцию Discord Rich Presence чтобы показывать в статусе что вы к" + + "рафтите"); // // currencyComboBox // @@ -273,10 +225,11 @@ private void InitializeComponent() this.currencyComboBox.Font = new System.Drawing.Font("Inter", 14F); this.currencyComboBox.ForeColor = System.Drawing.Color.White; this.currencyComboBox.FormattingEnabled = true; - this.currencyComboBox.Location = new System.Drawing.Point(90, 218); + this.currencyComboBox.Location = new System.Drawing.Point(89, 408); this.currencyComboBox.Name = "currencyComboBox"; this.currencyComboBox.Size = new System.Drawing.Size(173, 31); this.currencyComboBox.TabIndex = 6; + this.SettingsHints.SetToolTip(this.currencyComboBox, "Валюта в которой будет отображатся часть интерфейса"); this.currencyComboBox.SelectedIndexChanged += new System.EventHandler(this.bufferSpeedNUP_ValueChanged); // // label6 @@ -284,11 +237,12 @@ private void InitializeComponent() this.label6.AutoSize = true; this.label6.Font = new System.Drawing.Font("Inter", 14F); this.label6.ForeColor = System.Drawing.Color.White; - this.label6.Location = new System.Drawing.Point(4, 221); + this.label6.Location = new System.Drawing.Point(3, 411); this.label6.Name = "label6"; this.label6.Size = new System.Drawing.Size(85, 23); this.label6.TabIndex = 3; this.label6.Text = "Валюта:"; + this.SettingsHints.SetToolTip(this.label6, "Валюта в которой будет отображатся часть интерфейса"); // // currencyBindingSource // @@ -298,11 +252,94 @@ private void InitializeComponent() // this.currencyBindingSource1.DataSource = typeof(FloatToolGUI.Utils.Currency); // + // label7 + // + this.label7.AutoSize = true; + this.label7.Font = new System.Drawing.Font("Inter", 14F); + this.label7.ForeColor = System.Drawing.Color.White; + this.label7.Location = new System.Drawing.Point(4, 49); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(63, 23); + this.label7.TabIndex = 7; + this.label7.Text = "Тема:"; + // + // themeSelectorComboBox + // + this.themeSelectorComboBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(24)))), ((int)(((byte)(24))))); + this.themeSelectorComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.themeSelectorComboBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.themeSelectorComboBox.Font = new System.Drawing.Font("Inter", 14F); + this.themeSelectorComboBox.ForeColor = System.Drawing.Color.White; + this.themeSelectorComboBox.FormattingEnabled = true; + this.themeSelectorComboBox.Items.AddRange(new object[] { + "Тёмная", + "Светлая", + "Кастомная"}); + this.themeSelectorComboBox.Location = new System.Drawing.Point(78, 46); + this.themeSelectorComboBox.Name = "themeSelectorComboBox"; + this.themeSelectorComboBox.Size = new System.Drawing.Size(305, 31); + this.themeSelectorComboBox.TabIndex = 8; + this.SettingsHints.SetToolTip(this.themeSelectorComboBox, "Выбор темы приложения"); + this.themeSelectorComboBox.SelectedIndexChanged += new System.EventHandler(this.themeSelectorComboBox_SelectedIndexChanged); + // + // pictureBox1 + // + this.pictureBox1.Image = global::FloatToolGUI.Properties.Resources.DarkThemePreview; + this.pictureBox1.Location = new System.Drawing.Point(8, 83); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(375, 190); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox1.TabIndex = 9; + this.pictureBox1.TabStop = false; + // + // discordRpcToggle + // + this.discordRpcToggle.Checked = true; + this.discordRpcToggle.ForeColor = System.Drawing.Color.White; + this.discordRpcToggle.Location = new System.Drawing.Point(7, 363); + this.discordRpcToggle.Name = "discordRpcToggle"; + this.discordRpcToggle.Size = new System.Drawing.Size(64, 36); + this.discordRpcToggle.TabIndex = 2; + this.SettingsHints.SetToolTip(this.discordRpcToggle, "Использовать интеграцию Discord Rich Presence чтобы показывать в статусе что вы к" + + "рафтите"); + this.discordRpcToggle.TurnedOffColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56))))); + this.discordRpcToggle.TurnedOnColor = System.Drawing.Color.Green; + this.discordRpcToggle.OnToggled += new System.EventHandler(this.Toggle_OnToggled); + // + // checkUpdatesToggle + // + this.checkUpdatesToggle.Checked = true; + this.checkUpdatesToggle.ForeColor = System.Drawing.Color.White; + this.checkUpdatesToggle.Location = new System.Drawing.Point(7, 321); + this.checkUpdatesToggle.Name = "checkUpdatesToggle"; + this.checkUpdatesToggle.Size = new System.Drawing.Size(64, 36); + this.checkUpdatesToggle.TabIndex = 2; + this.SettingsHints.SetToolTip(this.checkUpdatesToggle, "Проверять наличие обновлений при запуске программы"); + this.checkUpdatesToggle.TurnedOffColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56))))); + this.checkUpdatesToggle.TurnedOnColor = System.Drawing.Color.Green; + this.checkUpdatesToggle.OnToggled += new System.EventHandler(this.Toggle_OnToggled); + // + // soundToggle + // + this.soundToggle.Checked = true; + this.soundToggle.ForeColor = System.Drawing.Color.White; + this.soundToggle.Location = new System.Drawing.Point(7, 279); + this.soundToggle.Name = "soundToggle"; + this.soundToggle.Size = new System.Drawing.Size(64, 36); + this.soundToggle.TabIndex = 2; + this.SettingsHints.SetToolTip(this.soundToggle, "Проигрывать звуковой сигнал при нахождении комбинации"); + this.soundToggle.TurnedOffColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56))))); + this.soundToggle.TurnedOnColor = System.Drawing.Color.Green; + this.soundToggle.OnToggled += new System.EventHandler(this.Toggle_OnToggled); + // // SettingsForm // this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(31)))), ((int)(((byte)(31)))), ((int)(((byte)(31))))); - this.ClientSize = new System.Drawing.Size(390, 364); + this.ClientSize = new System.Drawing.Size(390, 556); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.themeSelectorComboBox); + this.Controls.Add(this.label7); this.Controls.Add(this.currencyComboBox); this.Controls.Add(this.bufferSpeedNUP); this.Controls.Add(this.resetChangesBtn); @@ -315,8 +352,6 @@ private void InitializeComponent() this.Controls.Add(this.discordRpcToggle); this.Controls.Add(this.checkUpdatesToggle); this.Controls.Add(this.soundToggle); - this.Controls.Add(this.label1); - this.Controls.Add(this.darkModeToggle); this.Controls.Add(this.panel3); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); @@ -328,6 +363,7 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.bufferSpeedNUP)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.currencyBindingSource)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.currencyBindingSource1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -338,8 +374,6 @@ private void InitializeComponent() private System.Windows.Forms.Panel panel3; private System.Windows.Forms.Label label8; private System.Windows.Forms.Button closeBtn; - private CustomControls.CustomToggleSwitch darkModeToggle; - private System.Windows.Forms.Label label1; private CustomControls.CustomToggleSwitch soundToggle; private System.Windows.Forms.Label label2; private CustomControls.CustomToggleSwitch checkUpdatesToggle; @@ -354,5 +388,9 @@ private void InitializeComponent() private System.Windows.Forms.Label label6; private System.Windows.Forms.BindingSource currencyBindingSource; private System.Windows.Forms.BindingSource currencyBindingSource1; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.ComboBox themeSelectorComboBox; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.ToolTip SettingsHints; } } \ No newline at end of file diff --git a/FloatToolGUI/SettingsForm.cs b/FloatToolGUI/SettingsForm.cs index 091c48d..7e66229 100644 --- a/FloatToolGUI/SettingsForm.cs +++ b/FloatToolGUI/SettingsForm.cs @@ -20,14 +20,15 @@ public SettingsForm() { InitializeComponent(); currencyComboBox.DataSource = Enum.GetValues(typeof(Currency)); + themeSelectorComboBox.DataSource = Enum.GetValues(typeof(Pallete)); CheckRegistry(); registryData = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\FloatTool"); - darkModeToggle.Checked = Convert.ToBoolean(registryData.GetValue("darkMode")); soundToggle.Checked = Convert.ToBoolean(registryData.GetValue("sound")); checkUpdatesToggle.Checked = Convert.ToBoolean(registryData.GetValue("updateCheck")); bufferSpeedNUP.Value = (int)registryData.GetValue("bufferSpeed"); discordRpcToggle.Checked = Convert.ToBoolean(registryData.GetValue("discordRPC")); currencyComboBox.SelectedItem = (Currency)registryData.GetValue("currency"); + themeSelectorComboBox.SelectedItem = (Pallete)registryData.GetValue("theme"); saveChangesBtn.Enabled = false; Logger.Log($"[{DateTime.Now}]: Settings window opened"); } @@ -71,12 +72,12 @@ private void saveChangesBtn_Click(object sender, EventArgs e) { CheckRegistry(); registryData = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\FloatTool", true); - registryData.SetValue("darkMode", darkModeToggle.Checked); registryData.SetValue("sound", soundToggle.Checked); registryData.SetValue("updateCheck", checkUpdatesToggle.Checked); registryData.SetValue("bufferSpeed", (int)bufferSpeedNUP.Value); registryData.SetValue("discordRPC", discordRpcToggle.Checked); registryData.SetValue("currency", (int)currencyComboBox.SelectedValue); + registryData.SetValue("theme", (int)themeSelectorComboBox.SelectedItem); registryData.Close(); saveChangesBtn.Enabled = false; Logger.Log($"[{DateTime.Now}]: Settings saved"); @@ -86,14 +87,31 @@ private void resetChangesBtn_Click(object sender, EventArgs e) { CheckRegistry(); registryData = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\FloatTool"); - darkModeToggle.Checked = Convert.ToBoolean(registryData.GetValue("darkMode")); soundToggle.Checked = Convert.ToBoolean(registryData.GetValue("sound")); checkUpdatesToggle.Checked = Convert.ToBoolean(registryData.GetValue("updateCheck")); bufferSpeedNUP.Value = (int)registryData.GetValue("bufferSpeed"); discordRpcToggle.Checked = Convert.ToBoolean(registryData.GetValue("discordRPC")); currencyComboBox.SelectedItem = (Currency)registryData.GetValue("currency"); + themeSelectorComboBox.SelectedItem = (Pallete)registryData.GetValue("theme"); saveChangesBtn.Enabled = false; Logger.Log($"[{DateTime.Now}]: Settings reseted"); } + + private void themeSelectorComboBox_SelectedIndexChanged(object sender, EventArgs e) + { + saveChangesBtn.Enabled = true; + if ((Pallete)themeSelectorComboBox.SelectedItem == Pallete.Dark) + pictureBox1.Image = Properties.Resources.DarkThemePreview; + else if ((Pallete)themeSelectorComboBox.SelectedItem == Pallete.Light) + pictureBox1.Image = Properties.Resources.LightThemePreview; + else + pictureBox1.Image = CustomPalette.Thumbnail; + } + + + private void SetTheme(Pallete pallete) + { + + } } } diff --git a/FloatToolGUI/SettingsForm.resx b/FloatToolGUI/SettingsForm.resx index 4808448..dc5152c 100644 --- a/FloatToolGUI/SettingsForm.resx +++ b/FloatToolGUI/SettingsForm.resx @@ -117,6 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 377, 17 + 17, 17 diff --git a/FloatToolGUI/Utils.cs b/FloatToolGUI/Utils.cs index 6a90f63..b9e4ea7 100644 --- a/FloatToolGUI/Utils.cs +++ b/FloatToolGUI/Utils.cs @@ -4,6 +4,7 @@ using System.Drawing.Text; using System.IO; using System.Linq; +using System.Net; using System.Net.Http; using System.Runtime.InteropServices; using System.Text; @@ -13,8 +14,116 @@ namespace FloatToolGUI { + public class PaletteColors + { + public Color Primary1 { get; set; } + public Color Primary2 { get; set; } + public Color Primary3 { get; set; } + public Color Primary4 { get; set; } + public Color Primary5 { get; set; } + public Color Primary6 { get; set; } + public Color Secondary1 { get; set; } + public Color Secondary2 { get; set; } + public Color Secondary3 { get; set; } + public Color OverBackColor1 { get; set; } + public Color OverBackColor2 { get; set; } + + public string Name { get; set; } + public string Description { get; set; } + public string Author { get; set; } + + public bool IsDarkButtons { get; set; } + + public bool IsThumbnail { get; set; } + public Image Thumbnail { get; set; } + } + static class Utils { + #region Color palette + + //Dark Mode + static Color darkPrimary1 = Color.FromArgb(44, 44, 44); + static Color darkPrimary2 = Color.FromArgb(31, 31, 31); + static Color darkPrimary3 = Color.FromArgb(37, 37, 37); + static Color darkPrimary4 = Color.FromArgb(32, 32, 32); + static Color darkPrimary5 = Color.FromArgb(56, 56, 56); + static Color darkPrimary6 = Color.FromArgb(56, 56, 56); + + static Color darkSecondary1 = Color.White; + static Color darkSecondary2 = Color.FromArgb(150, 150, 150); + static Color darkSecondary3 = Color.Green; + + static Color darkOverBackColor1 = Color.Black; + static Color darkOverBackColor2 = SystemColors.WindowFrame; + + //Light Mode + static Color lightPrimary1 = Color.FromArgb(222, 222, 222); + static Color lightPrimary2 = Color.FromArgb(255, 255, 255); + static Color lightPrimary3 = Color.FromArgb(249, 249, 249); + static Color lightPrimary4 = Color.FromArgb(255, 255, 255); + static Color lightPrimary5 = Color.FromArgb(249, 249, 249); + static Color lightPrimary6 = Color.FromArgb(200, 200, 200); + + static Color lightSecondary1 = Color.Black; + static Color lightSecondary2 = Color.FromArgb(10, 10, 10); + static Color lightSecondary3 = Color.FromArgb(119, 194, 119); + + static Color lightOverBackColor1 = Color.FromArgb(230, 230, 230); + static Color lightOverBackColor2 = Color.FromArgb(240, 240, 240); + + #endregion + + public static PaletteColors CustomPalette { get; } = new PaletteColors(); + + static public void UpdateCustomPalette() + { + try + { + using (StreamReader r = new StreamReader("theme.json")) + { + string json = r.ReadToEnd(); + dynamic items = JsonConvert.DeserializeObject(json); + var colorData = items["colors"]; + CustomPalette.Primary1 = Color.FromArgb((int)colorData["Primary1"][0], (int)colorData["Primary1"][1], (int)colorData["Primary1"][2]); + CustomPalette.Primary2 = Color.FromArgb((int)colorData["Primary2"][0], (int)colorData["Primary2"][1], (int)colorData["Primary2"][2]); + CustomPalette.Primary3 = Color.FromArgb((int)colorData["Primary3"][0], (int)colorData["Primary3"][1], (int)colorData["Primary3"][2]); + CustomPalette.Primary4 = Color.FromArgb((int)colorData["Primary4"][0], (int)colorData["Primary4"][1], (int)colorData["Primary4"][2]); + CustomPalette.Primary5 = Color.FromArgb((int)colorData["Primary5"][0], (int)colorData["Primary5"][1], (int)colorData["Primary5"][2]); + CustomPalette.Primary6 = Color.FromArgb((int)colorData["Primary6"][0], (int)colorData["Primary6"][1], (int)colorData["Primary6"][2]); + CustomPalette.Secondary1 = Color.FromArgb((int)colorData["Secondary1"][0], (int)colorData["Secondary1"][1], (int)colorData["Secondary1"][2]); + CustomPalette.Secondary2 = Color.FromArgb((int)colorData["Secondary2"][0], (int)colorData["Secondary2"][1], (int)colorData["Secondary2"][2]); + CustomPalette.Secondary3 = Color.FromArgb((int)colorData["Secondary3"][0], (int)colorData["Secondary3"][1], (int)colorData["Secondary3"][2]); + CustomPalette.OverBackColor1 = Color.FromArgb((int)colorData["OverBackColor1"][0], (int)colorData["OverBackColor1"][1], (int)colorData["OverBackColor1"][2]); + CustomPalette.OverBackColor2 = Color.FromArgb((int)colorData["OverBackColor2"][0], (int)colorData["OverBackColor2"][1], (int)colorData["OverBackColor2"][2]); + + CustomPalette.Name = items["name"].ToString(); + CustomPalette.Description = items["description"].ToString(); + CustomPalette.Author = items["author"].ToString(); + + CustomPalette.IsDarkButtons = items["darkButtons"]; + + CustomPalette.IsThumbnail = items["thumbnail"]; + if (CustomPalette.IsThumbnail) + { + byte[] bytes = Convert.FromBase64String(items["thumbnailBase64"].ToString()); + + using (MemoryStream ms = new MemoryStream(bytes)) + CustomPalette.Thumbnail = Image.FromStream(ms); + } + else + { + CustomPalette.Thumbnail = Properties.Resources.DarkThemePreview; + } + } + } + catch (Exception ex) + { + Logger.Log($"[{DateTime.Now}]: {{EXCEPTION}} {ex.Message}{Environment.NewLine}{ex.StackTrace}"); + Logger.SaveCrashReport(); + } + } + public enum Currency { USD = 1, GBP = 2, @@ -40,13 +149,124 @@ public enum Currency RMB = 9000, NXP = 9001 } + public enum Pallete + { + Dark, + Light, + Custom + } + + public enum PalleteColor + { + Primary1, + Primary2, + Primary3, + Primary4, + Primary5, + Primary6, + Secondary1, + Secondary2, + Secondary3, + OverBackColor1, + OverBackColor2 + } + + public static Color GetPalleteColor(Pallete pallete, PalleteColor color) + { + if (pallete.CompareTo(Pallete.Dark) == 0) + { + switch (color) + { + case PalleteColor.Primary1: + return darkPrimary1; + case PalleteColor.Primary2: + return darkPrimary2; + case PalleteColor.Primary3: + return darkPrimary3; + case PalleteColor.Primary4: + return darkPrimary4; + case PalleteColor.Primary5: + return darkPrimary5; + case PalleteColor.Primary6: + return darkPrimary6; + case PalleteColor.Secondary1: + return darkSecondary1; + case PalleteColor.Secondary2: + return darkSecondary2; + case PalleteColor.Secondary3: + return darkSecondary3; + case PalleteColor.OverBackColor1: + return darkOverBackColor1; + case PalleteColor.OverBackColor2: + return darkOverBackColor2; + } + } + else if (pallete.CompareTo(Pallete.Light) == 0) + { + switch (color) + { + case PalleteColor.Primary1: + return lightPrimary1; + case PalleteColor.Primary2: + return lightPrimary2; + case PalleteColor.Primary3: + return lightPrimary3; + case PalleteColor.Primary4: + return lightPrimary4; + case PalleteColor.Primary5: + return lightPrimary5; + case PalleteColor.Primary6: + return lightPrimary6; + case PalleteColor.Secondary1: + return lightSecondary1; + case PalleteColor.Secondary2: + return lightSecondary2; + case PalleteColor.Secondary3: + return lightSecondary3; + case PalleteColor.OverBackColor1: + return lightOverBackColor1; + case PalleteColor.OverBackColor2: + return lightOverBackColor2; + } + } + else + { + switch (color) + { + case PalleteColor.Primary1: + return CustomPalette.Primary1; + case PalleteColor.Primary2: + return CustomPalette.Primary2; + case PalleteColor.Primary3: + return CustomPalette.Primary3; + case PalleteColor.Primary4: + return CustomPalette.Primary4; + case PalleteColor.Primary5: + return CustomPalette.Primary5; + case PalleteColor.Primary6: + return CustomPalette.Primary6; + case PalleteColor.Secondary1: + return CustomPalette.Secondary1; + case PalleteColor.Secondary2: + return CustomPalette.Secondary2; + case PalleteColor.Secondary3: + return CustomPalette.Secondary3; + case PalleteColor.OverBackColor1: + return CustomPalette.OverBackColor1; + case PalleteColor.OverBackColor2: + return CustomPalette.OverBackColor2; + } + } + return Color.Black; + } + static public string getNextRarity(string rarity) { - if (rarity == "Consumer") return "Industrial"; - else if (rarity == "Industrial") return "Mil-Spec"; - else if (rarity == "Mil-Spec") return "Restricted"; - else if (rarity == "Restricted") return "Classified"; - else if (rarity == "Classified") return "Covert"; + if (string.Compare(rarity, "Consumer") == 0) return "Industrial"; + else if (string.Compare(rarity, "Industrial") == 0) return "Mil-Spec"; + else if (string.Compare(rarity, "Mil-Spec") == 0) return "Restricted"; + else if (string.Compare(rarity, "Restricted") == 0) return "Classified"; + else if (string.Compare(rarity, "Classified") == 0) return "Covert"; return "Nothing"; } @@ -66,6 +286,19 @@ public static string CheckUpdates() } } + public static decimal GetWearFromInspectURL(string url) + { + url = "https://api.csgofloat.com/?url=" + url; + + using (WebClient wcf = new WebClient()) + { + wcf.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); + string jsonf = wcf.DownloadString(url); + dynamic rf = JsonConvert.DeserializeObject(jsonf); + return Convert.ToDecimal(rf["iteminfo"]["floatvalue"]); + } + } + public static bool testOverlap(float x1, float x2, float y1, float y2) { return (x1 >= y1 && x1 <= y2) || @@ -80,22 +313,24 @@ public static void CheckRegistry() if (registryData == null) { registryData = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\FloatTool"); - registryData.SetValue("darkMode", true); registryData.SetValue("sound", true); registryData.SetValue("updateCheck", true); registryData.SetValue("bufferSpeed", 250); registryData.SetValue("discordRPC", true); registryData.SetValue("currency", (int)Currency.USD); + registryData.SetValue("lastThreads", Environment.ProcessorCount); + registryData.SetValue("theme", (int)Pallete.Dark); registryData.Close(); } else { - if(registryData.GetValue("darkMode") == null) registryData.SetValue("darkMode", true); if (registryData.GetValue("sound") == null) registryData.SetValue("sound", true); if (registryData.GetValue("updateCheck") == null) registryData.SetValue("updateCheck", true); if (registryData.GetValue("bufferSpeed") == null) registryData.SetValue("bufferSpeed", 250); if (registryData.GetValue("discordRPC") == null) registryData.SetValue("discordRPC", true); if (registryData.GetValue("currency") == null) registryData.SetValue("currency", (int)Currency.USD); + if (registryData.GetValue("lastThreads") == null) registryData.SetValue("lastThreads", Environment.ProcessorCount); + if (registryData.GetValue("theme") == null) registryData.SetValue("theme", (int)Pallete.Dark); } }