├── .github ├── dependabot.yml └── workflows │ ├── build.yml │ └── codeql-analysis.yml ├── .gitignore ├── FloatTool.sln ├── FloatTool ├── App.xaml ├── App.xaml.cs ├── AppHelpers.cs ├── AssemblyInfo.cs ├── Assets │ ├── AboutIcon.xaml │ ├── BenchmarkIcon.xaml │ ├── ButtonIcons.xaml │ ├── DiscordLogo.xaml │ ├── Found.wav │ ├── Icon.ico │ ├── Icon.png │ ├── Icon.svg │ ├── SettingsIcon.xaml │ ├── SkinList.json │ └── WarningIcon.xaml ├── Common │ ├── BaseViewModel.cs │ ├── Calculations.cs │ ├── Logger.cs │ ├── RelayCommand.cs │ ├── Settings.cs │ ├── Skin.cs │ └── Utils.cs ├── FloatTool.csproj ├── FloatTool.csproj.user ├── Languages │ ├── Lang.cs.xaml │ ├── Lang.da.xaml │ ├── Lang.de.xaml │ ├── Lang.es.xaml │ ├── Lang.fi.xaml │ ├── Lang.fr.xaml │ ├── Lang.ga.xaml │ ├── Lang.he.xaml │ ├── Lang.hr.xaml │ ├── Lang.it.xaml │ ├── Lang.ja.xaml │ ├── Lang.ka.xaml │ ├── Lang.lt.xaml │ ├── Lang.lv.xaml │ ├── Lang.pl.xaml │ ├── Lang.pt.xaml │ ├── Lang.ru.xaml │ ├── Lang.tr.xaml │ ├── Lang.uk.xaml │ ├── Lang.xaml │ └── Lang.zh.xaml ├── Properties │ └── PublishProfiles │ │ └── FolderProfile.pubxml ├── Theme │ ├── BigTextBoxStyle.xaml │ ├── CheckboxStyle.xaml │ ├── ComboBoxStyle.xaml │ ├── MainButtonStyle.xaml │ ├── MainTextBoxStyle.xaml │ ├── NumericBox.xaml │ ├── NumericBox.xaml.cs │ ├── Schemes │ │ ├── Dark.xaml │ │ └── Light.xaml │ ├── ScrollBarStyle.xaml │ ├── SwitchButtonStyle.xaml │ ├── TooltipStyle.xaml │ └── TopButtonStyle.xaml ├── ViewModels │ ├── BenchmarkViewModel.cs │ ├── MainViewModel.cs │ └── SettingsViewModel.cs └── Views │ ├── AboutWindow.xaml │ ├── AboutWindow.xaml.cs │ ├── BenchmarkWindow.xaml │ ├── BenchmarkWindow.xaml.cs │ ├── MainWindow.xaml │ ├── MainWindow.xaml.cs │ ├── SettingsWindow.xaml │ ├── SettingsWindow.xaml.cs │ ├── UpdateWindow.xaml │ └── UpdateWindow.xaml.cs ├── ItemsParser ├── ItemParser.cs ├── ItemsParser.csproj ├── Program.cs ├── Structs.cs ├── Utils.cs └── VdfConvert.cs ├── LICENSE ├── README.md └── doc ├── icon.png └── program.png /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: "nuget" 9 | directory: "/" 10 | schedule: 11 | interval: "daily" 12 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build C# Projects 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | build: 7 | runs-on: windows-latest 8 | 9 | steps: 10 | - name: Checkout code 11 | uses: actions/checkout@v4 12 | 13 | - name: Setup .NET 14 | uses: actions/setup-dotnet@v4 15 | with: 16 | dotnet-version: '8.0.x' 17 | 18 | - name: Restore dependencies 19 | run: dotnet restore 20 | 21 | - name: Build solution 22 | run: dotnet build --no-restore --configuration Release 23 | 24 | - name: Publish FloatTool project 25 | run: dotnet publish ./FloatTool/FloatTool.csproj --configuration Release /p:PublishProfile=FolderProfile --output ./publish 26 | 27 | - name: Upload published artifacts 28 | uses: actions/upload-artifact@v4 29 | with: 30 | name: FloatTool-publish 31 | path: ./publish -------------------------------------------------------------------------------- /.github/workflows/codeql-analysis.yml: -------------------------------------------------------------------------------- 1 | # For most projects, this workflow file will not need changing; you simply need 2 | # to commit it to your repository. 3 | # 4 | # You may wish to alter this file to override the set of languages analyzed, 5 | # or to provide custom queries or build logic. 6 | # 7 | # ******** NOTE ******** 8 | # We have attempted to detect the languages in your repository. Please check 9 | # the `language` matrix defined below to confirm you have the correct set of 10 | # supported CodeQL languages. 11 | # 12 | name: "CodeQL" 13 | 14 | on: 15 | push: 16 | branches: [ master ] 17 | pull_request: 18 | # The branches below must be a subset of the branches above 19 | branches: [ master ] 20 | schedule: 21 | - cron: '44 4 * * 4' 22 | 23 | jobs: 24 | analyze: 25 | name: Analyze 26 | runs-on: windows-latest 27 | permissions: 28 | actions: read 29 | contents: read 30 | security-events: write 31 | 32 | strategy: 33 | fail-fast: false 34 | matrix: 35 | language: [ 'csharp' ] 36 | # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] 37 | # Learn more about CodeQL language support at https://git.io/codeql-language-support 38 | 39 | steps: 40 | - name: Checkout repository 41 | uses: actions/checkout@v3 42 | 43 | # Initializes the CodeQL tools for scanning. 44 | - name: Initialize CodeQL 45 | uses: github/codeql-action/init@v2 46 | with: 47 | languages: ${{ matrix.language }} 48 | # If you wish to specify custom queries, you can do so here or in a config file. 49 | # By default, queries listed here will override any specified in a config file. 50 | # Prefix the list here with "+" to use these queries and those in the config file. 51 | # queries: ./path/to/local/query, your-org/your-repo/queries@main 52 | 53 | - name: Setup .NET 54 | uses: actions/setup-dotnet@v1 55 | with: 56 | dotnet-version: '7.0' 57 | 58 | # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). 59 | # If this step fails, then you should remove it and run the build manually (see below) 60 | - name: Autobuild 61 | uses: github/codeql-action/autobuild@v2 62 | 63 | # ℹ️ Command-line programs to run using the OS shell. 64 | # 📚 https://git.io/JvXDl 65 | 66 | # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines 67 | # and modify them (or add more) to build your code if your project 68 | # uses a compiled language 69 | 70 | #- run: | 71 | # make bootstrap 72 | # make release 73 | 74 | - name: Perform CodeQL Analysis 75 | uses: github/codeql-action/analyze@v2 76 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vs/ 2 | bin/ 3 | obj/ 4 | *.user 5 | -------------------------------------------------------------------------------- /FloatTool.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.1.32203.90 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FloatTool", "FloatTool\FloatTool.csproj", "{B1434F55-DAE9-4CC5-9460-8D20D29D1802}" 7 | EndProject 8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ItemsParser", "ItemsParser\ItemsParser.csproj", "{C5DE4078-D17D-45F7-95DC-C60747F8AABA}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {B1434F55-DAE9-4CC5-9460-8D20D29D1802}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {B1434F55-DAE9-4CC5-9460-8D20D29D1802}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {B1434F55-DAE9-4CC5-9460-8D20D29D1802}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {B1434F55-DAE9-4CC5-9460-8D20D29D1802}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {C5DE4078-D17D-45F7-95DC-C60747F8AABA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {C5DE4078-D17D-45F7-95DC-C60747F8AABA}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {C5DE4078-D17D-45F7-95DC-C60747F8AABA}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {C5DE4078-D17D-45F7-95DC-C60747F8AABA}.Release|Any CPU.Build.0 = Release|Any CPU 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {33BF2014-254B-4A9C-980E-FB79F5D24D39} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /FloatTool/App.xaml: -------------------------------------------------------------------------------- 1 |  17 | 18 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /FloatTool/AppHelpers.cs: -------------------------------------------------------------------------------- 1 | /* 2 | - Copyright(C) 2022 Prevter 3 | - 4 | - This program is free software: you can redistribute it and/or modify 5 | - it under the terms of the GNU General Public License as published by 6 | - the Free Software Foundation, either version 3 of the License, or 7 | - (at your option) any later version. 8 | - 9 | - This program is distributed in the hope that it will be useful, 10 | - but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | - GNU General Public License for more details. 13 | - 14 | - You should have received a copy of the GNU General Public License 15 | - along with this program. If not, see . 16 | */ 17 | 18 | using DiscordRPC; 19 | using FloatTool.Common; 20 | using System.Collections.Generic; 21 | using System.IO; 22 | 23 | namespace FloatTool 24 | { 25 | internal static class AppHelpers 26 | { 27 | public static FileSystemWatcher Watcher; 28 | public static DiscordRpcClient DiscordClient; 29 | public static string VersionCode; 30 | public static string AppDirectory; 31 | public static Settings Settings; 32 | public static List ThemesFound { get; set; } 33 | } 34 | } -------------------------------------------------------------------------------- /FloatTool/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* 2 | - Copyright(C) 2022 Prevter 3 | - 4 | - This program is free software: you can redistribute it and/or modify 5 | - it under the terms of the GNU General Public License as published by 6 | - the Free Software Foundation, either version 3 of the License, or 7 | - (at your option) any later version. 8 | - 9 | - This program is distributed in the hope that it will be useful, 10 | - but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | - GNU General Public License for more details. 13 | - 14 | - You should have received a copy of the GNU General Public License 15 | - along with this program. If not, see . 16 | */ 17 | using System.Windows; 18 | 19 | [assembly: ThemeInfo( 20 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 21 | //(used if a resource is not found in the page, 22 | // or application resource dictionaries) 23 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 24 | //(used if a resource is not found in the page, 25 | // app, or any theme specific resource dictionaries) 26 | )] 27 | -------------------------------------------------------------------------------- /FloatTool/Assets/AboutIcon.xaml: -------------------------------------------------------------------------------- 1 |  17 | 20 | 21 | M482.906-269.333q17.427 0 29.594-12.25 12.166-12.25 12.166-30.084v-166.667q0-17.183-12.283-29.424Q500.099-520 482.673-520q-17.427 0-29.717 12.242-12.289 12.241-12.289 29.424v166.667q0 17.834 12.406 30.084 12.407 12.25 29.833 12.25Zm-3.035-337.333q17.796 0 29.962-11.833Q522-630.332 522-647.824q0-18.809-12.021-30.825-12.021-12.017-29.792-12.017-18.52 0-30.354 11.841Q438-666.984 438-648.508q0 17.908 12.038 29.875 12.038 11.967 29.833 11.967Zm.001 547.999q-87.157 0-163.841-33.353-76.684-33.354-133.671-90.34-56.986-56.987-90.34-133.808-33.353-76.821-33.353-164.165 0-87.359 33.412-164.193 33.413-76.834 90.624-134.057 57.211-57.224 133.757-89.987t163.578-32.763q87.394 0 164.429 32.763 77.034 32.763 134.117 90 57.082 57.237 89.916 134.292 32.833 77.056 32.833 164.49 0 87.433-32.763 163.67-32.763 76.236-89.987 133.308-57.223 57.073-134.261 90.608-77.037 33.535-164.45 33.535Z 22 | 23 | -------------------------------------------------------------------------------- /FloatTool/Assets/BenchmarkIcon.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | M 53.160328 73.32662 V 16.606488 c 0 -5.3683 13.728579 -5.696576 13.728579 0 V 73.350767 Z M 32.80832 73.36781 V 32.045845 c 0 -4.92034 13.72858 -5.261315 13.72858 0 V 73.387738 Z M 13.250169 73.312773 V 46.386718 c 0 -5.210027 13.72858 -5.168115 13.72858 0 v 26.937518 z 22 | 23 | -------------------------------------------------------------------------------- /FloatTool/Assets/ButtonIcons.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | M 21.598028 19.825707 20.707014 20.716709 34.465 34.474517 20.707014 48.232707 21.598028 49.123327 35.356014 35.36552 49.114003 49.123327 50.004634 48.232707 36.246648 34.474517 50.004634 20.716709 49.114003 19.825707 35.356014 33.583897 Z 22 | 23 | 24 | m 24.651955 20.770647 h 20.836309 c 1.662 0 3 1.338 3 3 v 20.836309 c 0 1.662 -1.338 3 -3 3 H 24.651955 c -1.662 0 -3 -1.338 -3 -3 V 23.770647 c 0 -1.662 1.338 -3 3 -3 z 25 | 26 | 27 | M 17.494216 34.566778 H 53.401953 28 | 29 | -------------------------------------------------------------------------------- /FloatTool/Assets/DiscordLogo.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | M60.1045 4.8978C55.5792 2.8214 50.7265 1.2916 45.6527 0.41542C45.5603 0.39851 45.468 0.440769 45.4204 0.525289C44.7963 1.6353 44.105 3.0834 43.6209 4.2216C38.1637 3.4046 32.7345 3.4046 27.3892 4.2216C26.905 3.0581 26.1886 1.6353 25.5617 0.525289C25.5141 0.443589 25.4218 0.40133 25.3294 0.41542C20.2584 1.2888 15.4057 2.8186 10.8776 4.8978C10.8384 4.9147 10.8048 4.9429 10.7825 4.9795C1.57795 18.7309 -0.943561 32.1443 0.293408 45.3914C0.299005 45.4562 0.335386 45.5182 0.385761 45.5576C6.45866 50.0174 12.3413 52.7249 18.1147 54.5195C18.2071 54.5477 18.305 54.5139 18.3638 54.4378C19.7295 52.5728 20.9469 50.6063 21.9907 48.5383C22.0523 48.4172 21.9935 48.2735 21.8676 48.2256C19.9366 47.4931 18.0979 46.6 16.3292 45.5858C16.1893 45.5041 16.1781 45.304 16.3068 45.2082C16.679 44.9293 17.0513 44.6391 17.4067 44.3461C17.471 44.2926 17.5606 44.2813 17.6362 44.3151C29.2558 49.6202 41.8354 49.6202 53.3179 44.3151C53.3935 44.2785 53.4831 44.2898 53.5502 44.3433C53.9057 44.6363 54.2779 44.9293 54.6529 45.2082C54.7816 45.304 54.7732 45.5041 54.6333 45.5858C52.8646 46.6197 51.0259 47.4931 49.0921 48.2228C48.9662 48.2707 48.9102 48.4172 48.9718 48.5383C50.038 50.6034 51.2554 52.5699 52.5959 54.435C52.6519 54.5139 52.7526 54.5477 52.845 54.5195C58.6464 52.7249 64.529 50.0174 70.6019 45.5576C70.6551 45.5182 70.6887 45.459 70.6943 45.3942C72.1747 30.0791 68.2147 16.7757 60.1968 4.9823C60.1772 4.9429 60.1437 4.9147 60.1045 4.8978ZM23.7259 37.3253C20.2276 37.3253 17.3451 34.1136 17.3451 30.1693C17.3451 26.225 20.1717 23.0133 23.7259 23.0133C27.308 23.0133 30.1626 26.2532 30.1066 30.1693C30.1066 34.1136 27.28 37.3253 23.7259 37.3253ZM47.3178 37.3253C43.8196 37.3253 40.9371 34.1136 40.9371 30.1693C40.9371 26.225 43.7636 23.0133 47.3178 23.0133C50.9 23.0133 53.7545 26.2532 53.6986 30.1693C53.6986 34.1136 50.9 37.3253 47.3178 37.3253Z 22 | 23 | -------------------------------------------------------------------------------- /FloatTool/Assets/Found.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Prevter/FloatTool/dc502e8dcf1dd7a25df2ef04de81c3899a40c6a3/FloatTool/Assets/Found.wav -------------------------------------------------------------------------------- /FloatTool/Assets/Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Prevter/FloatTool/dc502e8dcf1dd7a25df2ef04de81c3899a40c6a3/FloatTool/Assets/Icon.ico -------------------------------------------------------------------------------- /FloatTool/Assets/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Prevter/FloatTool/dc502e8dcf1dd7a25df2ef04de81c3899a40c6a3/FloatTool/Assets/Icon.png -------------------------------------------------------------------------------- /FloatTool/Assets/SettingsIcon.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | M 32.871094 73.265758 C 32.313691 73.088238 31.865564 72.628887 31.723912 72.089844 31.701329 72.003906 31.410005 70 31.076525 67.636719 30.743046 65.273437 30.461043 63.286746 30.449854 63.221852 30.430838 63.111562 30.388066 63.08527 29.794833 62.819187 28.317912 62.15675 26.757678 61.243215 25.297511 60.185957 L 24.79424 59.821555 22.485011 60.753 c -6.427632 2.592633 -6.167792 2.491375 -6.454751 2.515387 -0.49373 0.04132 -1.025649 -0.166703 -1.343227 -0.525301 C 14.521766 62.556469 7.7637008 50.873008 7.6711184 50.613844 7.5276805 50.212328 7.5654445 49.688027 7.7649426 49.311227 7.912016 49.033441 8.0137945 48.924488 8.4596551 48.567543 8.7291402 48.351801 15.062009 43.384969 15.226306 43.2605 c 0.0063 -0.0048 -0.008 -0.16466 -0.03185 -0.355297 C 14.94365 40.89802 14.951372 38.820425 15.216866 36.875 l 0.01866 -0.136719 -1.452574 -1.132812 c -3.453831 -2.693524 -5.5337915 -4.334656 -5.7031365 -4.499892 -0.4369922 -0.42639 -0.6068691 -1.07319 -0.4306074 -1.63952 0.045145 -0.145051 1.3171438 -2.387953 3.4855639 -6.146058 2.770366 -4.801344 3.451464 -5.954952 3.610553 -6.115367 0.352444 -0.355383 0.908869 -0.537903 1.394507 -0.45743 0.158796 0.02631 0.923439 0.313683 2.141466 0.804809 1.041963 0.420135 2.933992 1.183101 4.204508 1.69548 l 2.310028 0.931597 0.443878 -0.328311 c 1.395086 -1.031865 3.135083 -2.046744 4.672195 -2.725126 0.479522 -0.211631 0.518875 -0.237014 0.537833 -0.346916 0.01125 -0.06522 0.293302 -2.052173 0.626781 -4.415454 C 31.410005 10 31.701329 7.9960937 31.723912 7.9101562 31.844657 7.450673 32.195758 7.0376441 32.647526 6.823632 l 0.26263 -0.1244133 H 40 47.089844 l 0.260922 0.1236141 c 0.423445 0.2006109 0.762183 0.5680094 0.910015 0.9870133 0.04626 0.1311199 1.308824 8.8457279 1.309742 9.0402539 0 0.02444 0.197868 0.130137 0.439454 0.234888 1.492015 0.646942 3.391671 1.751808 4.777367 2.77858 l 0.431875 0.320011 1.228281 -0.496129 c 7.280309 -2.940676 7.263852 -2.934218 7.535809 -2.957018 0.477293 -0.04001 0.960632 0.141375 1.301714 0.488512 0.136743 0.139171 1.00159 1.605873 3.58618 6.081837 2.125535 3.680974 3.434363 5.986549 3.481473 6.132813 0.11014 0.341947 0.0842 0.854418 -0.05899 1.165464 -0.05772 0.125381 -0.159164 0.296428 -0.225437 0.380106 -0.06627 0.08368 -1.732082 1.412293 -3.701797 2.952481 -1.969715 1.540186 -3.586457 2.803985 -3.592762 2.80844 -0.0063 0.0045 0.008 0.164075 0.03185 0.354711 0.236336 1.891386 0.247461 3.540677 0.03683 5.460528 -0.04223 0.384918 -0.07238 0.702653 -0.067 0.706078 0.0183 0.01165 2.346359 1.834918 4.697281 3.678782 1.289063 1.011027 2.417207 1.917984 2.506992 2.015453 0.396293 0.430234 0.539274 1.03809 0.371204 1.578105 -0.04498 0.144512 -1.285575 2.334059 -3.382754 5.970278 -1.821453 3.15814 -3.388621 5.859796 -3.482602 6.003675 -0.365769 0.56 -1.033684 0.857571 -1.662504 0.740684 -0.160844 -0.0299 -8.429996 -3.326125 -8.585941 -3.422504 -0.01315 -0.0081 -0.199297 0.117141 -0.413676 0.278367 -1.34957 1.014961 -3.230539 2.113653 -4.774293 2.788703 -0.441617 0.193114 -0.479844 0.218242 -0.498937 0.328016 -0.01137 0.06539 -0.293454 2.052476 -0.626848 4.415758 -0.333395 2.363281 -0.624645 4.367187 -0.647219 4.453125 -0.120703 0.459445 -0.471828 0.872508 -0.923605 1.086523 l -0.262629 0.124414 -7.03125 0.0074 c -5.603834 0.0059 -7.062971 -0.0027 -7.1875 -0.04239 z M 41.404645 51.57857 c 2.841339 -0.3288 5.529312 -1.757886 7.414226 -3.941851 1.535609 -1.779239 2.480906 -3.92134 2.767785 -6.271969 0.08563 -0.701641 0.08563 -2.027859 0 -2.729499 -0.169008 -1.384834 -0.51623 -2.548638 -1.137023 -3.811032 -0.566695 -1.152388 -1.269852 -2.12995 -2.206649 -3.067798 -0.938289 -0.939347 -1.90357 -1.633587 -3.067203 -2.205966 -1.690593 -0.831586 -3.271574 -1.200331 -5.15625 -1.202633 -0.856621 -0.001 -1.337513 0.03871 -2.088583 0.172648 -4.324698 0.771247 -7.828019 3.90703 -9.115541 8.159217 -0.534089 1.763893 -0.620328 3.838145 -0.237011 5.700688 0.361122 1.754691 1.187107 3.507047 2.321109 4.924312 0.424673 0.53075 1.275214 1.380274 1.795807 1.793657 1.318379 1.046867 2.811858 1.794644 4.38106 2.19357 0.779536 0.198176 1.468227 0.303656 2.376753 0.364027 0.366129 0.02433 1.440906 -0.01828 1.95152 -0.07737 z 22 | 23 | -------------------------------------------------------------------------------- /FloatTool/Assets/WarningIcon.xaml: -------------------------------------------------------------------------------- 1 | 17 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /FloatTool/Common/BaseViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel; 3 | using System.Runtime.CompilerServices; 4 | 5 | namespace FloatTool.Common 6 | { 7 | public abstract class BaseViewModel : INotifyPropertyChanged 8 | { 9 | public event PropertyChangedEventHandler? PropertyChanged; 10 | 11 | public BaseViewModel() 12 | { 13 | 14 | } 15 | 16 | public void OnPropertyChanged([CallerMemberName] string propertyName = "") 17 | { 18 | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 19 | } 20 | 21 | public void SetField(ref T field, T value, [CallerMemberName] string propertyName = "") 22 | { 23 | if (EqualityComparer.Default.Equals(field, value)) 24 | return; 25 | 26 | field = value; 27 | OnPropertyChanged(propertyName); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /FloatTool/Common/Calculations.cs: -------------------------------------------------------------------------------- 1 | /* 2 | - Copyright(C) 2022 Prevter 3 | - 4 | - This program is free software: you can redistribute it and/or modify 5 | - it under the terms of the GNU General Public License as published by 6 | - the Free Software Foundation, either version 3 of the License, or 7 | - (at your option) any later version. 8 | - 9 | - This program is distributed in the hope that it will be useful, 10 | - but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | - GNU General Public License for more details. 13 | - 14 | - You should have received a copy of the GNU General Public License 15 | - along with this program. If not, see . 16 | */ 17 | 18 | using System.Numerics; 19 | 20 | namespace FloatTool.Common 21 | { 22 | static public class Calculations 23 | { 24 | public static double Craft(InputSkin[] ingridients, double minFloat, double floatRange) 25 | { 26 | return floatRange * (ingridients[0].WearValue 27 | + ingridients[1].WearValue 28 | + ingridients[2].WearValue 29 | + ingridients[3].WearValue 30 | + ingridients[4].WearValue 31 | + ingridients[5].WearValue 32 | + ingridients[6].WearValue 33 | + ingridients[7].WearValue 34 | + ingridients[8].WearValue 35 | + ingridients[9].WearValue) + minFloat; 36 | } 37 | 38 | public static bool NextCombination(int[] num, int n) 39 | { 40 | bool finished = false; 41 | for (int i = 9; !finished; --i) 42 | { 43 | if (num[i] < n + i) 44 | { 45 | ++num[i]; 46 | if (i < 9) 47 | for (int j = i + 1; j < 10; ++j) 48 | num[j] = num[j - 1] + 1; 49 | return true; 50 | } 51 | finished = i == 0; 52 | } 53 | return false; 54 | } 55 | 56 | public static bool NextCombination(int[] arr, int n, int step) 57 | { 58 | arr[9] += step; 59 | if (arr[9] < n + 10) return true; 60 | else 61 | { 62 | fix_loop: 63 | int overflow = arr[9] - (n + 10); 64 | for (int i = 9; i >= 0; --i) 65 | { 66 | if (arr[i] < n + i) 67 | { 68 | ++arr[i]; 69 | for (int j = i + 1; j < 10; ++j) 70 | arr[j] = arr[j - 1] + 1; 71 | 72 | arr[9] += overflow; 73 | 74 | if (arr[9] < n + 10) return true; 75 | else goto fix_loop; 76 | } 77 | } 78 | return false; 79 | } 80 | } 81 | 82 | public static long GetCombinationsCount(int poolSize) 83 | { 84 | BigInteger fact1 = poolSize; 85 | for (int i = poolSize - 1; i > 10; i--) 86 | fact1 *= i; 87 | 88 | BigInteger fact2 = poolSize - 10; 89 | for (int i = poolSize - 11; i > 1; i--) 90 | fact2 *= i; 91 | 92 | return (long)(fact1 / fact2); 93 | } 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /FloatTool/Common/Logger.cs: -------------------------------------------------------------------------------- 1 | /* 2 | - Copyright(C) 2022 Prevter 3 | - 4 | - This program is free software: you can redistribute it and/or modify 5 | - it under the terms of the GNU General Public License as published by 6 | - the Free Software Foundation, either version 3 of the License, or 7 | - (at your option) any later version. 8 | - 9 | - This program is distributed in the hope that it will be useful, 10 | - but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | - GNU General Public License for more details. 13 | - 14 | - You should have received a copy of the GNU General Public License 15 | - along with this program. If not, see . 16 | */ 17 | 18 | using log4net; 19 | using log4net.Appender; 20 | using log4net.Core; 21 | using log4net.Layout; 22 | using log4net.Repository.Hierarchy; 23 | using System.Reflection; 24 | 25 | namespace FloatTool.Common 26 | { 27 | public sealed class Logger 28 | { 29 | public static ILog Log { get; } = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 30 | 31 | public static void Initialize() 32 | { 33 | Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository(); 34 | 35 | PatternLayout patternLayout = new() 36 | { 37 | ConversionPattern = "%date [%thread] %-5level - %message%newline" 38 | }; 39 | patternLayout.ActivateOptions(); 40 | 41 | RollingFileAppender roller = new() 42 | { 43 | AppendToFile = false, 44 | File = @"logs/log.txt", 45 | Layout = patternLayout, 46 | MaxSizeRollBackups = 5, 47 | MaximumFileSize = "250KB", 48 | RollingStyle = RollingFileAppender.RollingMode.Size, 49 | StaticLogFileName = true 50 | }; 51 | roller.ActivateOptions(); 52 | hierarchy.Root.AddAppender(roller); 53 | 54 | MemoryAppender memory = new(); 55 | memory.ActivateOptions(); 56 | hierarchy.Root.AddAppender(memory); 57 | 58 | hierarchy.Root.Level = Level.Info; 59 | hierarchy.Configured = true; 60 | } 61 | 62 | public static void Debug(object message) => Log.Debug(message); 63 | public static void Info(object message) => Log.Info(message); 64 | public static void Warn(object message) => Log.Warn(message); 65 | public static void Error(object message) => Log.Error(message); 66 | public static void Fatal(object message) => Log.Fatal(message); 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /FloatTool/Common/RelayCommand.cs: -------------------------------------------------------------------------------- 1 | /* 2 | - Copyright(C) 2022 Prevter 3 | - 4 | - This program is free software: you can redistribute it and/or modify 5 | - it under the terms of the GNU General Public License as published by 6 | - the Free Software Foundation, either version 3 of the License, or 7 | - (at your option) any later version. 8 | - 9 | - This program is distributed in the hope that it will be useful, 10 | - but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | - GNU General Public License for more details. 13 | - 14 | - You should have received a copy of the GNU General Public License 15 | - along with this program. If not, see . 16 | */ 17 | 18 | using System; 19 | using System.Windows.Input; 20 | 21 | namespace FloatTool.Common 22 | { 23 | public sealed class RelayCommand : ICommand 24 | { 25 | readonly Action _execute; 26 | readonly Predicate _canExecute; 27 | 28 | public RelayCommand(Action execute) 29 | : this(execute, null) 30 | { 31 | } 32 | 33 | public RelayCommand(Action execute, Predicate canExecute) 34 | { 35 | _execute = execute ?? throw new ArgumentNullException(nameof(execute)); 36 | _canExecute = canExecute; 37 | } 38 | 39 | public bool CanExecute(object parameters) 40 | { 41 | return _canExecute == null || _canExecute(parameters); 42 | } 43 | 44 | public event EventHandler CanExecuteChanged 45 | { 46 | add { CommandManager.RequerySuggested += value; } 47 | remove { CommandManager.RequerySuggested -= value; } 48 | } 49 | 50 | public void Execute(object parameters) 51 | { 52 | _execute(parameters); 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /FloatTool/Common/Settings.cs: -------------------------------------------------------------------------------- 1 | /* 2 | - Copyright(C) 2022-2023 Prevter 3 | - 4 | - This program is free software: you can redistribute it and/or modify 5 | - it under the terms of the GNU General Public License as published by 6 | - the Free Software Foundation, either version 3 of the License, or 7 | - (at your option) any later version. 8 | - 9 | - This program is distributed in the hope that it will be useful, 10 | - but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | - GNU General Public License for more details. 13 | - 14 | - You should have received a copy of the GNU General Public License 15 | - along with this program. If not, see . 16 | */ 17 | 18 | using Microsoft.Win32; 19 | using Newtonsoft.Json; 20 | using System; 21 | using System.Collections.Generic; 22 | using System.IO; 23 | using System.Threading; 24 | 25 | namespace FloatTool.Common 26 | { 27 | public enum Currency 28 | { 29 | USD = 1, GBP = 2, 30 | EUR = 3, CHF = 4, 31 | RUB = 5, PLN = 6, 32 | BRL = 7, JPY = 8, 33 | NOK = 9, IDR = 10, 34 | MYR = 11, PHP = 12, 35 | SGD = 13, THB = 14, 36 | VND = 15, KRW = 16, 37 | TRY = 17, UAH = 18, 38 | MXN = 19, CAD = 20, 39 | AUD = 21, NZD = 22, 40 | CNY = 23, INR = 24, 41 | CLP = 25, PEN = 26, 42 | COP = 27, ZAR = 28, 43 | HKD = 29, TWD = 30, 44 | SAR = 31, AED = 32, 45 | ARS = 34, ILS = 35, 46 | BYN = 36, KZT = 37, 47 | KWD = 38, QAR = 39, 48 | CRC = 40, UYU = 41, 49 | RMB = 9000, NXP = 9001 50 | } 51 | 52 | // These are currently the same, but that can change later. 53 | public enum FloatAPI 54 | { 55 | CSFloat, 56 | SteamInventoryHelper 57 | } 58 | 59 | public enum ExtensionType 60 | { 61 | CSFloat, 62 | SteamInventoryHelper 63 | } 64 | 65 | public static class CurrencyHelper 66 | { 67 | //Method to get the currency name from the enum 68 | public static Currency GetCurrencyByIndex(int index) 69 | { 70 | return (Currency)Enum.GetValues(typeof(Currency)).GetValue(index); 71 | } 72 | 73 | //Method to get index of a currency 74 | public static int GetIndexFromCurrency(Currency currency) 75 | { 76 | return Array.IndexOf(Enum.GetValues(typeof(Currency)), currency); 77 | } 78 | } 79 | 80 | public sealed class Settings 81 | { 82 | public string LanguageCode { get; set; } = Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName; 83 | public Currency Currency { get; set; } = Currency.USD; 84 | public string ThemeURI { get; set; } = "/Theme/Schemes/Dark.xaml"; 85 | public bool Sound { get; set; } = true; 86 | public bool CheckForUpdates { get; set; } = true; 87 | public bool DiscordRPC { get; set; } = true; 88 | public bool UseParallel { get; set; } = false; 89 | public int ThreadCount { get; set; } = Environment.ProcessorCount; 90 | public FloatAPI FloatAPI { get; set; } = FloatAPI.CSFloat; 91 | public ExtensionType ExtensionType { get; set; } = ExtensionType.CSFloat; 92 | 93 | public void Load() 94 | { 95 | try 96 | { 97 | string settingsPath = Path.Join(AppHelpers.AppDirectory, "settings.json"); 98 | if (File.Exists(settingsPath)) 99 | { 100 | var settings = File.ReadAllText(settingsPath); 101 | var tmpSettings = JsonConvert.DeserializeObject(settings); 102 | LanguageCode = tmpSettings.LanguageCode; 103 | Currency = tmpSettings.Currency; 104 | ThemeURI = tmpSettings.ThemeURI; 105 | Sound = tmpSettings.Sound; 106 | CheckForUpdates = tmpSettings.CheckForUpdates; 107 | DiscordRPC = tmpSettings.DiscordRPC; 108 | UseParallel = tmpSettings.UseParallel; 109 | ThreadCount = tmpSettings.ThreadCount; 110 | FloatAPI = tmpSettings.FloatAPI; 111 | ExtensionType = tmpSettings.ExtensionType; 112 | } 113 | else 114 | { 115 | LoadOld(); 116 | Save(); 117 | } 118 | } 119 | catch (Exception ex) 120 | { 121 | Logger.Log.Error("Error loading settings", ex); 122 | } 123 | } 124 | 125 | public void LoadOld() 126 | { 127 | // Load settings from registry 128 | const string userRoot = "HKEY_CURRENT_USER"; 129 | const string subkey = "Software\\FloatTool"; 130 | const string keyName = userRoot + "\\" + subkey; 131 | 132 | try 133 | { 134 | using var hkcu = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry64); 135 | var key = hkcu.OpenSubKey(@"SOFTWARE\FloatTool"); 136 | 137 | if (key == null) return; 138 | 139 | LanguageCode = (string)Registry.GetValue(keyName, "languageCode", LanguageCode); 140 | Currency = (Currency)Registry.GetValue(keyName, "currency", Currency); 141 | ThemeURI = (string)Registry.GetValue(keyName, "themeURI", ThemeURI); 142 | ThreadCount = (int)Registry.GetValue(keyName, "lastThreads", ThreadCount); 143 | Sound = (string)Registry.GetValue(keyName, "sound", Sound ? "True" : "False") == "True"; 144 | CheckForUpdates = (string)Registry.GetValue(keyName, "updateCheck", CheckForUpdates ? "True" : "False") == "True"; 145 | DiscordRPC = (string)Registry.GetValue(keyName, "discordRPC", DiscordRPC ? "True" : "False") == "True"; 146 | 147 | key.Close(); 148 | Logger.Log.Info("Loaded settings from registry"); 149 | 150 | MigrateFromOldVersion(); 151 | } 152 | catch (Exception ex) 153 | { 154 | Logger.Log.Error("Error loading settings from registry", ex); 155 | } 156 | } 157 | 158 | public void Save() 159 | { 160 | try 161 | { 162 | if (!Directory.Exists(AppHelpers.AppDirectory)) 163 | Directory.CreateDirectory(AppHelpers.AppDirectory); 164 | 165 | var settings = JsonConvert.SerializeObject(this, Formatting.Indented); 166 | File.WriteAllText(Path.Join(AppHelpers.AppDirectory, "settings.json"), settings); 167 | } 168 | catch (Exception ex) 169 | { 170 | Logger.Log.Error("Error saving settings", ex); 171 | } 172 | } 173 | 174 | public void MigrateFromOldVersion() 175 | { 176 | // This method cleans up old settings and data 177 | try 178 | { 179 | RegistryKey regkeySoftware = Registry.CurrentUser.OpenSubKey("SOFTWARE", true); 180 | regkeySoftware.DeleteSubKeyTree("FloatTool"); 181 | regkeySoftware.Close(); 182 | } 183 | catch (Exception ex) 184 | { 185 | Logger.Log.Error("Error saving settings", ex); 186 | } 187 | 188 | List oldFiles = new() 189 | { 190 | "debug.log", 191 | "FloatCore.dll", 192 | "FloatTool.exe.config", 193 | "FloatTool.pdb", 194 | "itemData.json", 195 | "theme.json", 196 | "Updater.exe" 197 | }; 198 | 199 | foreach (var file in oldFiles) 200 | { 201 | if (File.Exists(file)) 202 | File.Delete(file); 203 | } 204 | 205 | App.CleanOldFiles(); 206 | Save(); 207 | } 208 | 209 | public override string ToString() 210 | { 211 | return JsonConvert.SerializeObject(this, Formatting.Indented); 212 | } 213 | } 214 | } 215 | -------------------------------------------------------------------------------- /FloatTool/Common/Skin.cs: -------------------------------------------------------------------------------- 1 | /* 2 | - Copyright(C) 2022 Prevter 3 | - 4 | - This program is free software: you can redistribute it and/or modify 5 | - it under the terms of the GNU General Public License as published by 6 | - the Free Software Foundation, either version 3 of the License, or 7 | - (at your option) any later version. 8 | - 9 | - This program is distributed in the hope that it will be useful, 10 | - but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | - GNU General Public License for more details. 13 | - 14 | - You should have received a copy of the GNU General Public License 15 | - along with this program. If not, see . 16 | */ 17 | 18 | using System.Collections.Generic; 19 | 20 | namespace FloatTool.Common 21 | { 22 | public sealed class Collection 23 | { 24 | public string Name; 25 | public bool CanBeStattrak; 26 | public string LowestRarity; 27 | public string HighestRarity; 28 | public string Link; 29 | public List Skins; 30 | } 31 | 32 | public struct SkinModel 33 | { 34 | public string Name; 35 | public string Rarity; 36 | public double MinWear; 37 | public double MaxWear; 38 | 39 | public bool IsQualityInRange(string quality) 40 | { 41 | var range = Skin.GetFloatRangeForQuality(quality); 42 | return new FloatRange(MinWear, MaxWear).IsOverlapped(range); 43 | } 44 | } 45 | 46 | public enum Quality 47 | { 48 | Consumer, 49 | Industrial, 50 | MilSpec, 51 | Restricted, 52 | Classified, 53 | Covert 54 | } 55 | 56 | public struct Skin 57 | { 58 | public string Name; 59 | public double MinFloat; 60 | public double MaxFloat; 61 | public double FloatRange; 62 | public Quality Rarity; 63 | 64 | public Skin(string name, double minWear, double maxWear, Quality rarity) 65 | { 66 | Name = name; 67 | MinFloat = minWear; 68 | MaxFloat = maxWear; 69 | FloatRange = (MaxFloat - MinFloat) / 10; 70 | Rarity = rarity; 71 | } 72 | 73 | public Skin(SkinModel model) : this(model.Name, model.MinWear, model.MaxWear, FromString(model.Rarity)) { } 74 | 75 | public static string NextRarity(string rarity) 76 | { 77 | return rarity switch 78 | { 79 | "Consumer" => "Industrial", 80 | "Industrial" => "Mil-Spec", 81 | "Mil-Spec" => "Restricted", 82 | "Restricted" => "Classified", 83 | "Classified" => "Covert", 84 | _ => "Nothing", 85 | }; 86 | } 87 | 88 | public static Quality FromString(string value) 89 | { 90 | return value switch 91 | { 92 | "Consumer" => Quality.Consumer, 93 | "Industrial" => Quality.Industrial, 94 | "Mil-Spec" => Quality.MilSpec, 95 | "Restricted" => Quality.Restricted, 96 | "Classified" => Quality.Classified, 97 | _ => Quality.Covert, 98 | }; 99 | } 100 | 101 | public static FloatRange GetFloatRangeForQuality(string quality) 102 | { 103 | float lowestWear; 104 | float highestWear; 105 | 106 | switch (quality) 107 | { 108 | case "Factory New": 109 | lowestWear = 0f; 110 | highestWear = 0.07f; 111 | break; 112 | case "Minimal Wear": 113 | lowestWear = 0.07f; 114 | highestWear = 0.15f; 115 | break; 116 | case "Field-Tested": 117 | lowestWear = 0.15f; 118 | highestWear = 0.38f; 119 | break; 120 | case "Well-Worn": 121 | lowestWear = 0.38f; 122 | highestWear = 0.45f; 123 | break; 124 | case "Battle-Scarred": 125 | lowestWear = 0.45f; 126 | highestWear = 1f; 127 | break; 128 | default: 129 | lowestWear = 0f; 130 | highestWear = 1f; 131 | break; 132 | } 133 | 134 | return new FloatRange(lowestWear, highestWear); 135 | } 136 | 137 | } 138 | 139 | public struct InputSkin 140 | { 141 | public double WearValue; 142 | public float Price; 143 | public Currency SkinCurrency; 144 | public string ListingID; 145 | 146 | public double GetWearValue => WearValue; 147 | 148 | public InputSkin(double wear, float price, Currency currency, string listingId = "") 149 | { 150 | WearValue = wear; 151 | Price = price; 152 | SkinCurrency = currency; 153 | ListingID = listingId; 154 | } 155 | 156 | internal int CompareTo(InputSkin b) 157 | { 158 | return WearValue.CompareTo(b.WearValue); 159 | } 160 | } 161 | } 162 | -------------------------------------------------------------------------------- /FloatTool/FloatTool.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | WinExe 5 | net8.0-windows10.0.22000.0 6 | true 7 | x64 8 | Prevter 9 | https://prevter.me/floattool 10 | https://github.com/prevter/floattool 11 | en 12 | 1.5.1 13 | $(AssemblyVersion) 14 | Assets\Icon.ico 15 | embedded 16 | False 17 | false 18 | enable 19 | 7.0 20 | 21 | 22 | 23 | portable 24 | 25 | 26 | 27 | portable 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | MSBuild:Compile 56 | AboutIcon.Designer.cs 57 | 58 | 59 | $(DefaultXamlRuntime) 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /FloatTool/FloatTool.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | <_LastSelectedProfileId>E:\PROJECTS\FloatTool\FloatTool\Properties\PublishProfiles\FolderProfile.pubxml 5 | 6 | 7 | 8 | Code 9 | 10 | 11 | Code 12 | 13 | 14 | Code 15 | 16 | 17 | Code 18 | 19 | 20 | 21 | 22 | Designer 23 | 24 | 25 | Designer 26 | 27 | 28 | Designer 29 | 30 | 31 | Designer 32 | 33 | 34 | Designer 35 | 36 | 37 | Designer 38 | 39 | 40 | Designer 41 | 42 | 43 | Designer 44 | 45 | 46 | Designer 47 | 48 | 49 | Designer 50 | 51 | 52 | Designer 53 | 54 | 55 | Designer 56 | 57 | 58 | Designer 59 | 60 | 61 | Designer 62 | 63 | 64 | -------------------------------------------------------------------------------- /FloatTool/Languages/Lang.cs.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | Typ zbraně: 22 | Kůže: 23 | Kvalitní: 24 | výsledky: 25 | Režim vyhledávání: 26 | Požadovaný plovák: 27 | Počet: 28 | Přeskočit: 29 | Start 30 | Stop 31 | Najdi jednu 32 | Seřadit 33 | Klesající 34 | Počet vláken: 35 | Rozsah řemesel: 36 | Aktuální rychlost: 37 | kombinace/sekundu 38 | Kontrolované kombinace: 39 | Chyba! Tato kůže nemůže mít tuto kvalitu. 40 | 41 | 42 | Nastavení 43 | Jazyk: 44 | Měna: 45 | Téma: 46 | Získejte témata 47 | Otevřete složku motivů 48 | Povolit zvuk 49 | Kontrola aktualizací 50 | 51 | 52 | Benchmark 53 | Více vláken 54 | Jedno vlákno 55 | Spustit benchmark 56 | Aktualizace 57 | Vlákna 58 | Vlákno 59 | Zveřejnit výsledek 60 | 61 | 62 | kopírovat 63 | Možný plovák: 64 | Ingredience: 65 | Cena: 66 | 67 | 68 | Nastavení vyhledávání 69 | Benchmarking 70 | Hledání 71 | 72 | 73 | Hledání skinu na trhu 74 | Získávání plavidel z tržiště 75 | Chyba! Nepodařilo se získat plováky z tržiště 76 | Chyba! Z tržiště se nepodařilo získat více než 10 plaváků 77 | Spouštění vyhledávání 78 | Hledání dokončeno 79 | 80 | 81 | Aktualizace k dispozici 82 | Později 83 | Neptej se 84 | -------------------------------------------------------------------------------- /FloatTool/Languages/Lang.da.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | Våbentype: 22 | Hud: 23 | Kvalitet: 24 | Resultater: 25 | Søgetilstand: 26 | Ønsket flyder: 27 | Tælle: 28 | Springe: 29 | Start 30 | Hold op 31 | Find en 32 | Sortere 33 | Aftagende 34 | Trådantal: 35 | Håndværkssortiment: 36 | Aktuel hastighed: 37 | kombinationer/sekund 38 | Markerede kombinationer: 39 | Fejl! Denne hud kan ikke have denne kvalitet. 40 | Fejl! Dette skin kan ikke være StatTrak. 41 | 42 | 43 | Indstillinger 44 | Sprog: 45 | Betalingsmiddel: 46 | Tema: 47 | Hent temaer 48 | Åbn mappen temaer 49 | Aktiver lyd 50 | Søg efter opdateringer 51 | 52 | 53 | Benchmark 54 | Flere tråde 55 | Enkelt tråd 56 | Start benchmark 57 | Opdatering 58 | Tråde 59 | Tråd 60 | Udgiv resultat 61 | 62 | 63 | Kopi 64 | Mulig flyder: 65 | Ingredienser: 66 | Pris: 67 | 68 | 69 | Opsætning af søgning 70 | Benchmarking 71 | Søger 72 | 73 | 74 | Søger hud på markedspladsen 75 | Få flyder fra markedspladsen 76 | Fejl! Kunne ikke hente flydere fra markedspladsen 77 | Fejl! Kunne ikke få mere end 10 flydere fra markedspladsen 78 | Starter søgning 79 | Færdig med at søge 80 | 81 | 82 | Opdatering tilgængelig 83 | Senere 84 | Spørg ikke 85 | -------------------------------------------------------------------------------- /FloatTool/Languages/Lang.de.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | Waffentyp: 22 | Haut: 23 | Qualität: 24 | Ergebnisse: 25 | Suchmodus: 26 | Gewünschter Schwimmer: 27 | Anzahl: 28 | Überspringen: 29 | Start 30 | Stoppen 31 | Einen finden 32 | Sortieren 33 | Absteigend 34 | Fadenzahl: 35 | Bastelbereich: 36 | Momentane Geschwindigkeit: 37 | Kombinationen/Sekunde 38 | Geprüfte Kombinationen: 39 | Fehler! Diese Haut kann diese Qualität nicht haben. 40 | 41 | 42 | Einstellungen 43 | Sprache: 44 | Währung: 45 | Thema: 46 | Holen Sie sich Themen 47 | Themenordner öffnen 48 | Sound einschalten 49 | Auf Updates prüfen 50 | 51 | 52 | Benchmark 53 | Mehrere Fäden 54 | Einzelner Thread 55 | Benchmark starten 56 | Aktualisieren 57 | Fäden 58 | Gewinde 59 | Ergebnis veröffentlichen 60 | 61 | 62 | Kopieren 63 | Möglicher Schwimmer: 64 | Zutaten: 65 | Preis: 66 | 67 | 68 | Suche einrichten 69 | Benchmarking 70 | Suchen 71 | 72 | 73 | Skin auf dem Marktplatz suchen 74 | Floats vom Marktplatz bekommen 75 | Fehler! Floats konnten nicht vom Marktplatz abgerufen werden 76 | Fehler! Es konnten nicht mehr als 10 Floats vom Marktplatz abgerufen werden 77 | Suche starten 78 | Suche beendet 79 | 80 | 81 | Update verfügbar 82 | Später 83 | Frag nicht 84 | -------------------------------------------------------------------------------- /FloatTool/Languages/Lang.es.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | Tipo de arma: 22 | Piel: 23 | Calidad: 24 | Resultados: 25 | Modo de búsqueda: 26 | Flotador deseado: 27 | Contar: 28 | Saltear: 29 | Comienzo 30 | Detenerse 31 | Encuentra uno 32 | Clasificar 33 | Descendente 34 | Número de hilos: 35 | Gama artesanal: 36 | Velocidad actual: 37 | combinaciones/segundo 38 | Combinaciones marcadas: 39 | ¡Error! Esta piel no puede tener esta cualidad. 40 | 41 | 42 | Ajustes 43 | Idioma: 44 | Divisa: 45 | Temática: 46 | Conseguir temas 47 | Abrir carpeta de temas 48 | Activar sonido 49 | Buscar actualizaciones 50 | 51 | 52 | Punto de referencia 53 | Múltiples hilos 54 | Hilo único 55 | Empezar punto de referencia 56 | Actualizar 57 | Hilos 58 | Hilo 59 | Publicar resultado 60 | 61 | 62 | Dupdo 63 | Posible flotador: 64 | Ingredientes: 65 | Precio: 66 | 67 | 68 | Configuración de la búsqueda 69 | evaluación comparativa 70 | buscando 71 | 72 | 73 | Buscando piel en el mercado 74 | Obtener flotadores del mercado 75 | ¡Error! No se pudieron obtener flotadores del mercado 76 | ¡Error! No se pudieron obtener más de 10 carrozas del mercado 77 | Iniciando búsqueda 78 | búsqueda terminada 79 | 80 | 81 | Actualización disponible 82 | Luego 83 | No preguntes 84 | -------------------------------------------------------------------------------- /FloatTool/Languages/Lang.fi.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | Aseen tyyppi: 22 | Iho: 23 | Laatu: 24 | Tulokset: 25 | Hakutila: 26 | Haluttu kelluvuus: 27 | Kreivi: 28 | Ohita: 29 | alkaa 30 | Lopettaa 31 | Löydä yksi 32 | Järjestellä 33 | Laskeva 34 | Lankamäärä: 35 | Askarteluvalikoima: 36 | Nykyinen nopeus: 37 | yhdistelmät/sekunti 38 | Tarkistetut yhdistelmät: 39 | Virhe! Tällä iholla ei voi olla tätä laatua. 40 | 41 | 42 | asetukset 43 | Kieli: 44 | Valuutta: 45 | Teema: 46 | Hanki teemoja 47 | Avaa teemakansio 48 | Äänet päälle 49 | Tarkista päivitykset 50 | 51 | 52 | Vertailuarvo 53 | Useita lankoja 54 | Yksi lanka 55 | Aloita benchmark 56 | Päivittää 57 | Kierteet 58 | Lanka 59 | Julkaise tulos 60 | 61 | 62 | Kopio 63 | Mahdollinen kelluvuus: 64 | Ainekset: 65 | Hinta: 66 | 67 | 68 | Haun määrittäminen 69 | Benchmarking 70 | Etsitään 71 | 72 | 73 | Etsitään ihoa torilta 74 | Kelluvien saaminen torilta 75 | Virhe! Ei saatu kellukkeita torilta 76 | Virhe! Ei voinut saada enempää kuin 10 floatsia torilta 77 | Haun käynnistäminen 78 | Haku on valmis 79 | 80 | 81 | Päivitys saatavilla 82 | Myöhemmin 83 | Älä kysy 84 | -------------------------------------------------------------------------------- /FloatTool/Languages/Lang.fr.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | Type d'arme : 22 | La peau: 23 | Qualité: 24 | Résultats : 25 | Mode de recherche : 26 | Flotteur souhaité : 27 | Compter: 28 | Sauter: 29 | Démarrer 30 | Arrêt 31 | Trouvez-en un 32 | Sorte 33 | Descendant 34 | Nombre de fils : 35 | Gamme artisanale : 36 | Vitesse actuelle: 37 | combinaisons/seconde 38 | Combinaisons cochées : 39 | Erreur! Cette peau ne peut pas avoir cette qualité. 40 | 41 | 42 | Réglages 43 | Langue: 44 | Monnaie: 45 | Thème: 46 | Obtenir thèmes 47 | Ouvrir le dossier des thèmes 48 | Activer le son 49 | Vérifier les mises à jour 50 | 51 | 52 | Référence 53 | Plusieurs fils 54 | Fil unique 55 | Commencer le benchmark 56 | Mise à jour 57 | Fils 58 | Fil de discussion 59 | Publier le résultat 60 | 61 | 62 | Copie 63 | Flottant éventuel : 64 | Ingrédients: 65 | Prix: 66 | 67 | 68 | Configuration de la recherche 69 | Analyse comparative 70 | Recherche 71 | 72 | 73 | Recherche de peau sur le marché 74 | Obtenir des flotteurs du marché 75 | Erreur! Impossible d'obtenir des flotteurs du marché 76 | Erreur! Impossible d'obtenir plus de 10 flotteurs du marché 77 | Lancement de la recherche 78 | Recherche terminée 79 | 80 | 81 | Mise à jour disponible 82 | Plus tard 83 | Ne demandez pas 84 | -------------------------------------------------------------------------------- /FloatTool/Languages/Lang.ga.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | Cineál Airm: 22 | Craiceann: 23 | Cáilíocht: 24 | Torthaí: 25 | Mód Cuardaigh: 26 | Snámhán Inmhianaithe: 27 | Comhair: 28 | Scipeáil: 29 | Tosaigh 30 | Stop 31 | Faigh ceann 32 | Sórtáil 33 | íslitheach 34 | Comhaireamh snáithe: 35 | Raon ceardaíochta: 36 | Luas reatha: 37 | teaglamaí/dara 38 | Comhcheangail sheiceáil: 39 | Earráid! Ní féidir an caighdeán seo a bheith ag an gcraiceann seo. 40 | 41 | 42 | Socruithe 43 | Teanga: 44 | Airgeadra: 45 | Téama: 46 | Faigh téamaí 47 | Oscail fillteán téamaí 48 | Cumasaigh fuaim 49 | Seiceáil do nuashrónaithe 50 | 51 | 52 | Tagarmharc 53 | Snáitheanna iolracha 54 | Snáithe aonair 55 | Tosaigh tagarmharc 56 | Nuashonrú 57 | Snáitheanna 58 | Snáithe 59 | Foilsigh an toradh 60 | 61 | 62 | Cóipeáil 63 | Snámhán féideartha: 64 | Comhábhair: 65 | Praghas: 66 | 67 | 68 | Cuardach a shocrú 69 | Tagarmharcáil 70 | Cuardach 71 | 72 | 73 | Craicne a chuardach ar an margadh 74 | Snámhóga a fháil ón margadh 75 | Earráid! Níorbh fhéidir snámháin a fháil ón margadh 76 | Earráid! Níorbh fhéidir níos mó ná 10 snámhán a fháil ón margadh 77 | Cuardach a thosú 78 | Críochnaíodh an cuardach 79 | 80 | 81 | Nuashonrú ar fáil 82 | Níos déanaí 83 | Ná fiafraigh 84 | -------------------------------------------------------------------------------- /FloatTool/Languages/Lang.he.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | סוג נשק: 22 | עור: 23 | איכות: 24 | תוצאות: 25 | מצב חיפוש: 26 | ציפה רצויה: 27 | לספור: 28 | לדלג: 29 | הַתחָלָה 30 | תפסיק 31 | מצא אחד 32 | סוג 33 | יורד 34 | ספירת חוטים: 35 | טווח מלאכה: 36 | מהירות נוכחית: 37 | שילובים/שנייה 38 | שילובים מסומנים: 39 | שְׁגִיאָה! העור הזה לא יכול לקבל את האיכות הזו. 40 | 41 | 42 | הגדרות 43 | שפה: 44 | מַטְבֵּעַ: 45 | נושא: 46 | קבל ערכות נושא 47 | פתח את תיקיית הנושאים 48 | אפשר צליל 49 | בדוק עדכונים 50 | 51 | 52 | Benchmark 53 | חוטים מרובים 54 | חוט בודד 55 | התחל benchmark 56 | עדכון 57 | חוטים 58 | פְּתִיל 59 | פרסם תוצאה 60 | 61 | 62 | עותק 63 | ציפה אפשרית: 64 | רכיבים: 65 | מחיר: 66 | 67 | 68 | הגדרת חיפוש 69 | Benchmarking 70 | מחפש 71 | 72 | 73 | מחפש עור בשוק 74 | קבלת מצופים משוק 75 | שְׁגִיאָה! לא ניתן היה להשיג צפים משוק 76 | שְׁגִיאָה! לא ניתן היה להשיג יותר מ-10 צפים מ-marketplace 77 | מתחילים בחיפוש 78 | סיים לחפש 79 | 80 | 81 | עדכון זמין 82 | יותר מאוחר 83 | אל תשאלו 84 | -------------------------------------------------------------------------------- /FloatTool/Languages/Lang.hr.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | Vrsta oružja: 22 | Koža: 23 | kvaliteta: 24 | Ishodi: 25 | Način pretraživanja: 26 | Željeni plovak: 27 | Računati: 28 | Preskočiti: 29 | Početak 30 | Stop 31 | Pronađite jednu 32 | Vrsta 33 | Silazni 34 | Broj niti: 35 | Raspon obrta: 36 | Trenutna brzina: 37 | kombinacije/drugi 38 | Provjerene kombinacije: 39 | Greška! Ova koža ne može imati ovu kvalitetu. 40 | Greška! Ova koža ne može biti StatTrak. 41 | 42 | 43 | Postavke 44 | Jezik: 45 | Valuta: 46 | Tema: 47 | Nabavite teme 48 | Otvorite mapu tema 49 | Omogući zvuk 50 | Provjerite ima li ažuriranja 51 | 52 | 53 | Benchmark 54 | Više niti 55 | Jednostruki navoj 56 | Pokreni benchmark 57 | Ažuriraj 58 | Niti 59 | Nit 60 | Objavite rezultat 61 | 62 | 63 | Kopirati 64 | Moguće plutanje: 65 | Sastojci: 66 | Cijena: 67 | 68 | 69 | Postavljanje pretraživanja 70 | Benchmarking 71 | Pretraživanje 72 | 73 | 74 | Pretraživanje kože na tržištu 75 | Dobivanje plutajućih proizvoda s tržišta 76 | Greška! Nisam mogao nabaviti plovke s tržišta 77 | Greška! Nisam mogao dobiti više od 10 plutajućih s tržišta 78 | Pokretanje pretraživanja 79 | Završeno pretraživanje 80 | 81 | 82 | Ažuriranje dostupno 83 | Kasnije 84 | Ne pitajte 85 | -------------------------------------------------------------------------------- /FloatTool/Languages/Lang.it.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | Tipo di arma: 22 | Pelle: 23 | Qualità: 24 | Risultati: 25 | Modalità di ricerca: 26 | Galleggiante desiderato: 27 | Contare: 28 | Saltare: 29 | Inizio 30 | Fermare 31 | Trova uno 32 | Ordinare 33 | Discendente 34 | Conteggio discussioni: 35 | Gamma artigianale: 36 | Velocità attuale: 37 | combinazioni/secondo 38 | Combinazioni controllate: 39 | Errore! Questa pelle non può avere questa qualità. 40 | 41 | 42 | Impostazioni 43 | Lingua: 44 | Moneta: 45 | Tema: 46 | Ottieni temi 47 | Apri la cartella dei temi 48 | Abilita l'audio 49 | Controlla gli aggiornamenti 50 | 51 | 52 | Segno di riferimento 53 | Più fili 54 | Filo singolo 55 | Avvia benchmark 56 | Aggiornare 57 | Fili 58 | Filo 59 | Pubblica il risultato 60 | 61 | 62 | copia 63 | Possibile galleggiante: 64 | Ingredienti: 65 | Prezzo: 66 | 67 | 68 | Impostazione della ricerca 69 | Analisi comparativa 70 | Ricerca 71 | 72 | 73 | Ricerca skin sul mercato 74 | Ottenere galleggianti dal mercato 75 | Errore! Impossibile ottenere float dal mercato 76 | Errore! Non è stato possibile ottenere più di 10 float dal mercato 77 | Avvio della ricerca 78 | Ricerca finita 79 | 80 | 81 | Aggiornamento disponibile 82 | Dopo 83 | Non chiedere 84 | -------------------------------------------------------------------------------- /FloatTool/Languages/Lang.ja.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | 武器の種類: 22 | 肌: 23 | 品質: 24 | 結果: 25 | 検索モード: 26 | 希望するフロート: 27 | カウント: 28 | スキップ: 29 | 始める 30 | 止まる 31 | 1つ見つける 32 | 選別 33 | 降順 34 | スレッド数: 35 | クラフト範囲: 36 | 現在の速度: 37 | 組み合わせ/秒 38 | チェックされた組み合わせ: 39 | エラー!この肌はこの品質を持つことはできません。 40 | 41 | 42 | 設定 43 | 言語: 44 | 通貨: 45 | テーマ: 46 | テーマを取得 47 | テーマフォルダを開く 48 | サウンドを有効にする 49 | 更新を確認する 50 | 51 | 52 | 基準 53 | 複数のスレッド 54 | シングルスレッド 55 | ベンチマークを開始 56 | アップデート 57 | スレッド 58 | スレッド 59 | 結果を公開する 60 | 61 | 62 | コピー 63 | 可能なフロート: 64 | 材料: 65 | 価格: 66 | 67 | 68 | 検索の設定 69 | ベンチマーク 70 | 検索 71 | 72 | 73 | マーケットプレイスでスキンを検索する 74 | 市場からフロートを取得する 75 | エラー!マーケットプレイスからフロートを取得できませんでした 76 | エラー!マーケットプレイスから10個以上のフロートを入手できませんでした 77 | 検索を開始する 78 | 検索を終了しました 79 | 80 | 81 | 利用可能なアップデート 82 | 後で 83 | 聞かないで 84 | -------------------------------------------------------------------------------- /FloatTool/Languages/Lang.ka.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | იარაღის ტიპი: 22 | Კანი: 23 | ხარისხი: 24 | შედეგები: 25 | ძიების რეჟიმი: 26 | სასურველი ფლოტი: 27 | დათვლა: 28 | გამოტოვება: 29 | დაწყება 30 | გაჩერდი 31 | იპოვე ერთი 32 | დალაგება 33 | Დაღმავალი 34 | თემების რაოდენობა: 35 | ხელნაკეთობების დიაპაზონი: 36 | მიმდინარე სიჩქარე: 37 | კომბინაციები/მეორე 38 | შემოწმებული კომბინაციები: 39 | შეცდომა! ამ კანს არ შეიძლება ჰქონდეს ეს ხარისხი. 40 | 41 | 42 | პარამეტრები 43 | Ენა: 44 | ვალუტა: 45 | თემა: 46 | მიიღეთ თემები 47 | გახსენით თემების საქაღალდე 48 | ხმის ჩართვა 49 | Შეამოწმოთ განახლებები 50 | 51 | 52 | ნიშნული 53 | მრავალი ძაფი 54 | ერთი ძაფი 55 | დაწყება საორიენტაციო 56 | განახლება 57 | ძაფები 58 | ძაფი 59 | შედეგის გამოქვეყნება 60 | 61 | 62 | კოპირება 63 | შესაძლო ცურვა: 64 | ინგრედიენტები: 65 | ფასი: 66 | 67 | 68 | ძიების დაყენება 69 | Benchmarking 70 | ეძებს 71 | 72 | 73 | კანის ძებნა ბაზარზე 74 | ფლოტის მიღება ბაზრიდან 75 | შეცდომა! ბაზრიდან მოძრავი ფურცლების მიღება ვერ მოხერხდა 76 | შეცდომა! ბაზრიდან 10-ზე მეტი ცურვის მიღება ვერ მოხერხდა 77 | ძიების დაწყება 78 | დაასრულა ძებნა 79 | 80 | 81 | Განახლება შესაძლებელია 82 | მოგვიანებით 83 | Არ იკითხო 84 | -------------------------------------------------------------------------------- /FloatTool/Languages/Lang.lt.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | Ginklo tipas: 22 | Paveikslėlis: 23 | Kokybė: 24 | Rezultatai: 25 | Paieškos režimas: 26 | Norimas susidėvėjimo laipsnis: 27 | Skaičiavimas: 28 | Praleisti: 29 | Pradėti 30 | Sustabdyti 31 | Surasti vieną 32 | Rūšiuoti 33 | Mažėjimo tvarka 34 | Branduolių kiekis: 35 | Krafto diapazonas: 36 | Dabartinis greitis: 37 | Kombinacijos per sekundę 38 | Patikrintos kombinacijos: 39 | Klaida! Šis paveikslėlis negali būti tokios kokybės. 40 | 41 | 42 | Nustatymai 43 | Kalba: 44 | Valiuta: 45 | Tema: 46 | Gauti temų 47 | Atidaryti temų aplanką 48 | Įjungti garsą 49 | Tikrinti, ar yra atnaujinimų 50 | 51 | 52 | Benchmark 53 | Keli srautai 54 | Vienas srautas 55 | Pradėti benchmark 56 | Atnaujinti 57 | Keli srautai 58 | Vienas srautas 59 | Paskelbti rezultatą 60 | 61 | 62 | Kopijuoti 63 | Galimas susidėvėjimo laipsnis: 64 | Komponentai: 65 | Kaina: 66 | 67 | 68 | Paieškos nustatymas 69 | Benchmarking 70 | Ieškoma 71 | 72 | 73 | Paveikslėlio paieška prekyvietėje 74 | Susidėvėjimo laipsnio gavimas prekyvietėje 75 | Klaida! Nepavyko gauti susidėvėjimo laipsnio prekyvietėje 76 | Klaida! Nepavyko gauti daugaiu dešimties susidėvėjimo laipsnių prekyvietėje 77 | Pradėti paiešką 78 | Paieška baigta 79 | 80 | 81 | Galimas atnaujinimas 82 | Vėliau 83 | Neklauskite 84 | -------------------------------------------------------------------------------- /FloatTool/Languages/Lang.lv.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | Ieroča veids: 22 | Āda: 23 | Kvalitāte: 24 | Rezultāti: 25 | Meklēšanas režīms: 26 | Vēlamais pludiņš: 27 | Skaits: 28 | Izlaist: 29 | Sākt 30 | Pietura 31 | Atrodi vienu 32 | Kārtot 33 | lejupejoša 34 | Pavedienu skaits: 35 | Amatniecības klāsts: 36 | Pašreizējais ātrums: 37 | kombinācijas/sekundē 38 | Pārbaudītās kombinācijas: 39 | Kļūda! Šai ādai nevar būt šāda kvalitāte. 40 | 41 | 42 | Iestatījumi 43 | Valoda: 44 | Valūta: 45 | Tēma: 46 | Iegūstiet motīvus 47 | Atveriet motīvu mapi 48 | Iespējot skaņu 49 | Meklēt atjauninājumus 50 | 51 | 52 | Etalons 53 | Vairāki pavedieni 54 | Viens pavediens 55 | Sāciet etalonu 56 | Atjaunināt 57 | Pavedieni 58 | Pavediens 59 | Publicēt rezultātu 60 | 61 | 62 | Kopēt 63 | Possible float: 64 | Sastāvdaļas: 65 | Cena: 66 | 67 | 68 | Meklēšanas iestatīšana 69 | Salīdzinošā novērtēšana 70 | Meklēšana 71 | 72 | 73 | Searching skin on marketplace 74 | Pludiņu iegūšana no tirgus 75 | Kļūda! Nevarēja dabūt pludiņus no tirgus 76 | Kļūda! Nevarēja iegūt vairāk par 10 pludiņiem no tirgus 77 | Starting up search 78 | Meklēšana pabeigta 79 | 80 | 81 | Pieejams atjauninājums 82 | Vēlāk 83 | Neprasi 84 | -------------------------------------------------------------------------------- /FloatTool/Languages/Lang.pl.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | Rodzaj broni: 22 | Skóra: 23 | Jakość: 24 | Wyniki: 25 | Tryb szukania: 26 | Pożądany pływak: 27 | Liczyć: 28 | Pomijać: 29 | Początek 30 | Zatrzymać 31 | Znajdź jeden 32 | Sortować 33 | Malejąco 34 | Ilość wątków: 35 | Zakres rzemiosła: 36 | Obecna prędkość: 37 | kombinacje/sekunda 38 | Sprawdzone kombinacje: 39 | Błąd! Ta skóra nie może mieć tej jakości. 40 | Błąd! Ta skórka nie może być StatTrak. 41 | 42 | 43 | Ustawienia 44 | Język: 45 | Waluta: 46 | Temat: 47 | Pobierz motywy 48 | Otwórz folder motywów 49 | Włączyć dźwięk 50 | Sprawdź aktualizacje 51 | 52 | 53 | Reper 54 | Wiele wątków 55 | Pojedynczy wątek 56 | Uruchom test porównawczy 57 | Aktualizacja 58 | Wątki 59 | Wątek 60 | Opublikuj wynik 61 | 62 | 63 | Kopiuj 64 | Możliwe pływanie: 65 | Składniki: 66 | Cena £: 67 | 68 | 69 | Konfigurowanie wyszukiwania 70 | Analiza porównawcza 71 | Badawczy 72 | 73 | 74 | Wyszukiwanie skórki na rynku 75 | Pobieranie pływaków z rynku 76 | Błąd! Nie udało się pobrać pływaków z rynku 77 | Błąd! Nie udało się uzyskać więcej niż 10 pływaków z rynku 78 | Rozpoczęcie wyszukiwania 79 | Zakończono wyszukiwanie 80 | 81 | 82 | Dostępna aktualizacja 83 | Później 84 | Nie pytaj 85 | -------------------------------------------------------------------------------- /FloatTool/Languages/Lang.pt.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | Tipo de arma: 22 | Pele: 23 | Qualidade: 24 | Resultados: 25 | Modo de pesquisa: 26 | Flutuador Desejado: 27 | Contar: 28 | Pular: 29 | Começar 30 | Pare 31 | Encontre um 32 | Ordenar 33 | descendente 34 | Contagem de fios: 35 | Gama de artesanato: 36 | Velocidade atual: 37 | combinações/segundo 38 | Combinações verificadas: 39 | Erro! Esta pele não pode ter esta qualidade. 40 | 41 | 42 | Definições 43 | Linguagem: 44 | Moeda: 45 | Tema: 46 | Obter temas 47 | Abra a pasta de temas 48 | Habilitar som 49 | Verifique se há atualizações 50 | 51 | 52 | Referência 53 | Vários tópicos 54 | Linha única 55 | Iniciar referência 56 | Atualizar 57 | Tópicos 58 | Fio 59 | Publicar resultado 60 | 61 | 62 | cópia de 63 | Possível flutuação: 64 | Ingredientes: 65 | Preço: 66 | 67 | 68 | Configurando a pesquisa 69 | avaliação comparativa 70 | Procurando 71 | 72 | 73 | Pesquisando skin no marketplace 74 | Obtendo floats do mercado 75 | Erro! Não foi possível obter carros alegóricos do mercado 76 | Erro! Não foi possível obter mais de 10 carros alegóricos do mercado 77 | Iniciando a pesquisa 78 | Pesquisa concluída 79 | 80 | 81 | Atualização disponível 82 | Mais tarde 83 | Não pergunte 84 | -------------------------------------------------------------------------------- /FloatTool/Languages/Lang.ru.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | Тип оружия: 22 | Скин: 23 | Качество: 24 | Результаты: 25 | Режим поиска: 26 | Нужный флоат: 27 | Количество: 28 | Пропуск: 29 | Старт 30 | Стоп 31 | Найти один 32 | Сортировать 33 | По убыванию 34 | Количество потоков: 35 | Диапазон крафта: 36 | Текущая скорость: 37 | комбинаций/секунду 38 | Проверено комбинаций: 39 | Ошибка! Этот скин не может иметь это качество. 40 | Ошибка! Этот скин не может быть StatTrak. 41 | Внимание! Вы ввели значение которое виходит за рамки для текущих настроек. 42 | Ошибка! Не удалось перевести в число. 43 | 44 | 45 | Настройки 46 | Язык: 47 | Валюта: 48 | Тема: 49 | Получить темы 50 | Открыть папку тем 51 | Включить звук 52 | Проверять обновления 53 | 54 | 55 | Бенчмарк 56 | Многопоточный 57 | Однопоточный 58 | Запустить бенчмарк 59 | Обновить 60 | Потоков 61 | Поток 62 | Опубликовать результат 63 | 64 | 65 | Скопировать 66 | Возможный флоат: 67 | Ингредиенты: 68 | Цена: 69 | 70 | 71 | Настраиваю поиск 72 | Бенчмаркинг 73 | Поиск 74 | 75 | 76 | Ищу скин на торговой площадке 77 | Получаю флоаты з торговой площадки 78 | Ошибка! Не удалось получить флоаты с торговой площадки 79 | Ошибка! Не удалось получить больше 10-ти флоатов 80 | Начинаю поиск 81 | Завершил поиск 82 | 83 | 84 | Доступно обновление 85 | Позже 86 | Не напоминать 87 | 88 | 89 | Информация 90 | Версия: 91 | Автор: 92 | Лицензия: 93 | Исходный код: 94 | Благодарности: 95 | Использованные библиотеки: 96 | Проверить обновления 97 | Discord сервер: 98 | 99 | -------------------------------------------------------------------------------- /FloatTool/Languages/Lang.tr.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | Silah türü: 22 | Deri: 23 | Kalite: 24 | Sonuçlar: 25 | Arama modu: 26 | İstenilen Şamandıra: 27 | Saymak: 28 | Atlamak: 29 | Başlangıç 30 | Durmak 31 | birini bul 32 | Çeşit 33 | Azalan 34 | Konu sayısı: 35 | zanaat aralığı: 36 | Geçerli hız: 37 | kombinasyonlar/saniye 38 | Kontrol edilen kombinasyonlar: 39 | Hata! Bu cilt bu kaliteye sahip olamaz. 40 | 41 | 42 | Ayarlar 43 | Dilim: 44 | Para birimi: 45 | Tema: 46 | Temalar edinmek 47 | Temalar klasörünü aç 48 | Sesi etkinleştir 49 | Güncellemeleri kontrol et 50 | 51 | 52 | Kalite testi 53 | Birden çok iş parçacığı 54 | Tek iplik 55 | Karşılaştırmayı başlat 56 | Güncelleme 57 | İş Parçacığı 58 | İplik 59 | Sonucu yayınla 60 | 61 | 62 | kopyala 63 | Olası şamandıra: 64 | İçindekiler: 65 | Fiyat: 66 | 67 | 68 | Aramayı ayarlama 69 | kıyaslama 70 | Aranıyor 71 | 72 | 73 | Pazar yerinde cilt aranıyor 74 | Pazar yerinden şamandıra almak 75 | Hata! Pazar yerinden yüzer alamadım 76 | Hata! Pazar yerinden 10'dan fazla şamandıra alınamadı 77 | Aramayı başlatma 78 | Arama tamamlandı 79 | 80 | 81 | Güncelleme uygun 82 | Daha sonra 83 | Sorma 84 | -------------------------------------------------------------------------------- /FloatTool/Languages/Lang.uk.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | Тип зброї: 22 | Скін: 23 | Якість: 24 | Результати: 25 | Режим пошуку: 26 | Потрібний флоат: 27 | Кількість: 28 | Пропуск: 29 | Старт 30 | Стоп 31 | Знайти один 32 | Сортувати 33 | За спаданням 34 | Кількість потоків: 35 | Діапазон крафту: 36 | Поточна швидкість: 37 | комбінацій/секунду 38 | Перевірено комбінацій: 39 | Помилка! Цей скін не можете мати цю якість. 40 | Помилка! Цей скін не може бути StatTrak. 41 | Увага! Ви ввели значення яке виходить за рамки для поточних налаштувань. 42 | Помилка! Не вдалося перевести в число. 43 | 44 | 45 | Налаштування 46 | Мова: 47 | Валюта: 48 | Тема: 49 | Отримати теми 50 | Відкрити папку тем 51 | Ввімкнути звук 52 | Перевіряти оновлення 53 | Показати розширені 54 | API флоатів: 55 | Форматувати для: 56 | Використовувати "Parallel.For" 57 | 58 | 59 | Бенчмарк 60 | Багатопоточний 61 | Однопоточний 62 | Запустити бенчмарк 63 | Оновити 64 | Потоків 65 | Потік 66 | Опублікувати результат 67 | Показувати тільки поточну версію 68 | 69 | 70 | Скопіювати 71 | Можливий флоат: 72 | Інгредієнти: 73 | Ціна: 74 | 75 | 76 | Налаштовую пошук 77 | Бенчмаркінг 78 | Пошук 79 | 80 | 81 | Шукаю скін на торговій площадці 82 | Отримую флоати з торгової площадки 83 | Помилка! Не вдалося отримати флоати з торгової площадки 84 | Помилка! Не вдалося отримати більше 10-ти флоатів 85 | Починаю пошук 86 | Закінчив пошук 87 | 88 | 89 | Доступне оновлення 90 | Пізніше 91 | Не нагадувати 92 | 93 | 94 | Інформація 95 | Версія: 96 | Автор: 97 | Ліцензія: 98 | Вихідний код: 99 | Подяка: 100 | Використані бібліотеки: 101 | Перевірити оновлення 102 | Discord сервер: 103 | 104 | -------------------------------------------------------------------------------- /FloatTool/Languages/Lang.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | Weapon Type: 22 | Skin: 23 | Quality: 24 | Outcomes: 25 | Search Mode: 26 | Desired Float: 27 | Count: 28 | Skip: 29 | Start 30 | Stop 31 | Find one 32 | Sort 33 | Descending 34 | Thread count: 35 | Craft range: 36 | Current speed: 37 | combinations/second 38 | Checked combinations: 39 | Error! This skin can not have this quality. 40 | Error! This skin can not be StatTrak. 41 | Warning! You've entered value that is out of bounds for current settings. 42 | Error! Can't convert this to number. 43 | 44 | 45 | Settings 46 | Language: 47 | Currency: 48 | Theme: 49 | Get themes 50 | Open themes folder 51 | Enable sound 52 | Check for updates 53 | Show advanced 54 | Float fetcher API: 55 | Format for: 56 | Use "Parallel.For" 57 | 58 | 59 | Benchmark 60 | Multiple threads 61 | Single thread 62 | Start benchmark 63 | Update 64 | Threads 65 | Thread 66 | Publish result 67 | Show only current version 68 | 69 | 70 | Copy 71 | Possible float: 72 | Ingredients: 73 | Price: 74 | 75 | 76 | Setting up search 77 | Benchmarking 78 | Searching 79 | 80 | 81 | Searching skin on marketplace 82 | Getting floats from marketplace 83 | Error! Couldn't get floats from marketplace 84 | Error! Couldn't get more than 10 floats from marketplace 85 | Starting up search 86 | Finished searching 87 | 88 | 89 | Update available 90 | Later 91 | Do not ask 92 | 93 | 94 | About 95 | Version: 96 | Author: 97 | License: 98 | Source code: 99 | Thanks to: 100 | Used libraries: 101 | Check for updates 102 | Discord server: 103 | 104 | -------------------------------------------------------------------------------- /FloatTool/Languages/Lang.zh.xaml: -------------------------------------------------------------------------------- 1 | 17 | 20 | 21 | 武器类型: 22 | 皮肤: 23 | 质量: 24 | 结果: 25 | 搜索模式: 26 | 所需的浮动: 27 | 数数: 28 | 跳过: 29 | 开始 30 | 停止 31 | 找一个 32 | 种类 33 | 降序 34 | 线程数: 35 | 工艺范围: 36 | 现在的速度: 37 | 组合/秒 38 | 检查组合: 39 | 错误!这种皮肤不可能有这种品质。 40 | 错误!这个皮肤不能是 StatTrak。 41 | 42 | 43 | 设置 44 | 语言: 45 | 货币: 46 | 主题: 47 | 获取主题 48 | 打开主题文件夹 49 | 启用声音 50 | 检查更新 51 | 52 | 53 | 基准 54 | 多线程 55 | 单线程 56 | 开始基准测试 57 | 更新 58 | 线程 59 | 线 60 | 发布结果 61 | 62 | 63 | 复制 64 | 可能的浮动: 65 | 原料: 66 | 价格: 67 | 68 | 69 | 设置搜索 70 | 基准测试 71 | 搜索 72 | 73 | 74 | 在市场上搜索皮肤 75 | 从市场上获取花车 76 | 错误!无法从市场获得花车 77 | 错误!无法从市场上获得超过 10 个花车 78 | 启动搜索 79 | 完成搜索 80 | 81 | 82 | 可用更新 83 | 之后 84 | 不要问 85 | -------------------------------------------------------------------------------- /FloatTool/Properties/PublishProfiles/FolderProfile.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | Release 8 | Any CPU 9 | bin\Release\net7.0-windows\publish\win-x64\ 10 | FileSystem 11 | <_TargetId>Folder 12 | net7.0-windows 13 | win-x64 14 | false 15 | true 16 | false 17 | 18 | -------------------------------------------------------------------------------- /FloatTool/Theme/BigTextBoxStyle.xaml: -------------------------------------------------------------------------------- 1 |  17 | 19 | 43 | -------------------------------------------------------------------------------- /FloatTool/Theme/CheckboxStyle.xaml: -------------------------------------------------------------------------------- 1 |  17 | 19 | 46 | -------------------------------------------------------------------------------- /FloatTool/Theme/MainButtonStyle.xaml: -------------------------------------------------------------------------------- 1 |  17 | 19 | 44 | 72 | -------------------------------------------------------------------------------- /FloatTool/Theme/MainTextBoxStyle.xaml: -------------------------------------------------------------------------------- 1 |  17 | 19 | 49 | -------------------------------------------------------------------------------- /FloatTool/Theme/NumericBox.xaml: -------------------------------------------------------------------------------- 1 |  17 | 24 | 28 | 29 | 30 | 31 | 32 | 33 | 44 | 68 | 84 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /FloatTool/Theme/NumericBox.xaml.cs: -------------------------------------------------------------------------------- 1 | /* 2 | - Copyright(C) 2022 Prevter 3 | - 4 | - This program is free software: you can redistribute it and/or modify 5 | - it under the terms of the GNU General Public License as published by 6 | - the Free Software Foundation, either version 3 of the License, or 7 | - (at your option) any later version. 8 | - 9 | - This program is distributed in the hope that it will be useful, 10 | - but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | - GNU General Public License for more details. 13 | - 14 | - You should have received a copy of the GNU General Public License 15 | - along with this program. If not, see . 16 | */ 17 | 18 | using System; 19 | using System.Windows; 20 | using System.Windows.Controls; 21 | using System.Windows.Input; 22 | 23 | namespace FloatTool.Theme 24 | { 25 | public partial class NumericBox : UserControl 26 | { 27 | public event EventHandler ValueChanged; 28 | 29 | public int Value 30 | { 31 | get { return (int)GetValue(ValueProperty); } 32 | set { TrySetValue(value); } 33 | } 34 | 35 | public int Minimum 36 | { 37 | get { return (int)GetValue(MinimumProperty); } 38 | set { SetValue(MinimumProperty, value); } 39 | } 40 | 41 | public int Maximum 42 | { 43 | get { return (int)GetValue(MaximumProperty); } 44 | set { SetValue(MaximumProperty, value); } 45 | } 46 | 47 | public static readonly DependencyProperty ValueProperty = 48 | DependencyProperty.Register("Value", typeof(int), typeof(NumericBox), 49 | new FrameworkPropertyMetadata(0, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault)); 50 | 51 | public static readonly DependencyProperty MinimumProperty = 52 | DependencyProperty.Register("Minimum", typeof(int), typeof(NumericBox), 53 | new PropertyMetadata(0)); 54 | 55 | public static readonly DependencyProperty MaximumProperty = 56 | DependencyProperty.Register("Maximum", typeof(int), typeof(NumericBox), 57 | new PropertyMetadata(100)); 58 | 59 | 60 | public NumericBox() 61 | { 62 | InitializeComponent(); 63 | } 64 | 65 | private void TrySetValue(int value) 66 | { 67 | if (value >= Minimum && value <= Maximum) 68 | SetValue(ValueProperty, value); 69 | else if (value < Minimum) 70 | SetValue(ValueProperty, Minimum); 71 | else if (value > Maximum) 72 | SetValue(ValueProperty, Maximum); 73 | } 74 | 75 | private void Up_Click(object sender, RoutedEventArgs e) 76 | { 77 | Value++; 78 | ValueChanged?.Invoke(this, Value); 79 | } 80 | 81 | private void Down_Click(object sender, RoutedEventArgs e) 82 | { 83 | Value--; 84 | ValueChanged?.Invoke(this, Value); 85 | } 86 | 87 | private static bool IsTextAllowed(string text) 88 | { 89 | return Array.TrueForAll(text.ToCharArray(), 90 | delegate (char c) 91 | { 92 | return char.IsDigit(c); 93 | } 94 | ); 95 | } 96 | 97 | private void TextBox_Pasting(object sender, DataObjectPastingEventArgs e) 98 | { 99 | if (e.DataObject.GetDataPresent(typeof(string))) 100 | { 101 | string text = (string)e.DataObject.GetData(typeof(string)); 102 | if (!IsTextAllowed(text)) 103 | { 104 | e.CancelCommand(); 105 | } 106 | 107 | Value = int.Parse(text); 108 | ValueChanged?.Invoke(this, Value); 109 | } 110 | else 111 | { 112 | e.CancelCommand(); 113 | } 114 | } 115 | 116 | private void PreviewTextInputHandler(Object sender, TextCompositionEventArgs e) 117 | { 118 | e.Handled = !IsTextAllowed(e.Text); 119 | } 120 | 121 | private void InputBox_TextChanged(object sender, TextChangedEventArgs e) 122 | { 123 | if (!IsTextAllowed(inputBox.Text) || string.IsNullOrEmpty(inputBox.Text)) 124 | return; 125 | 126 | Value = int.Parse(inputBox.Text); 127 | ValueChanged?.Invoke(this, Value); 128 | } 129 | } 130 | } 131 | -------------------------------------------------------------------------------- /FloatTool/Theme/Schemes/Dark.xaml: -------------------------------------------------------------------------------- 1 |  17 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /FloatTool/Theme/Schemes/Light.xaml: -------------------------------------------------------------------------------- 1 |  17 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /FloatTool/Theme/ScrollBarStyle.xaml: -------------------------------------------------------------------------------- 1 |  17 | 19 | 40 | 102 | -------------------------------------------------------------------------------- /FloatTool/Theme/SwitchButtonStyle.xaml: -------------------------------------------------------------------------------- 1 |  17 | 19 | 56 | -------------------------------------------------------------------------------- /FloatTool/Theme/TooltipStyle.xaml: -------------------------------------------------------------------------------- 1 |  17 | 19 | 41 | -------------------------------------------------------------------------------- /FloatTool/Theme/TopButtonStyle.xaml: -------------------------------------------------------------------------------- 1 |  17 | 19 | 40 | -------------------------------------------------------------------------------- /FloatTool/Views/AboutWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using FloatTool.Common; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Diagnostics; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | using System.Windows; 9 | using System.Windows.Controls; 10 | using System.Windows.Data; 11 | using System.Windows.Documents; 12 | using System.Windows.Input; 13 | using System.Windows.Media; 14 | using System.Windows.Media.Imaging; 15 | using System.Windows.Navigation; 16 | using System.Windows.Shapes; 17 | 18 | namespace FloatTool.Views 19 | { 20 | public sealed class AboutData 21 | { 22 | public string AuthorUrl { get; set; } = Utils.HOME_URL[..Utils.HOME_URL.LastIndexOf('/')]; 23 | public string CurrentVersion { get; set; } = AppHelpers.VersionCode; 24 | } 25 | 26 | /// 27 | /// Interaction logic for AboutWindow.xaml 28 | /// 29 | public partial class AboutWindow : Window 30 | { 31 | public AboutWindow() 32 | { 33 | DataContext = new AboutData(); 34 | 35 | InitializeComponent(); 36 | } 37 | 38 | protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) 39 | { 40 | base.OnMouseLeftButtonDown(e); 41 | if (e.GetPosition(this).Y < 40) DragMove(); 42 | } 43 | 44 | private void WindowButton_Click(object sender, RoutedEventArgs e) 45 | { 46 | Close(); 47 | } 48 | 49 | private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e) 50 | { 51 | Process.Start(new ProcessStartInfo { FileName = e.Uri.ToString(), UseShellExecute = true }); 52 | } 53 | 54 | private void Hyperlink_CheckUpdates(object sender, RequestNavigateEventArgs e) 55 | { 56 | Task.Factory.StartNew(() => 57 | { 58 | var update = Utils.CheckForUpdates().Result; 59 | if (update != null && update.TagName != AppHelpers.VersionCode) 60 | { 61 | Dispatcher.Invoke(new Action(() => 62 | { 63 | Logger.Info("New version available"); 64 | var updateWindow = new UpdateWindow(update) 65 | { 66 | Owner = this 67 | }; 68 | updateWindow.ShowDialog(); 69 | })); 70 | } 71 | }); 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /FloatTool/Views/SettingsWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | /* 2 | - Copyright(C) 2022 Prevter 3 | - 4 | - This program is free software: you can redistribute it and/or modify 5 | - it under the terms of the GNU General Public License as published by 6 | - the Free Software Foundation, either version 3 of the License, or 7 | - (at your option) any later version. 8 | - 9 | - This program is distributed in the hope that it will be useful, 10 | - but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | - GNU General Public License for more details. 13 | - 14 | - You should have received a copy of the GNU General Public License 15 | - along with this program. If not, see . 16 | */ 17 | 18 | using FloatTool.Common; 19 | using FloatTool.ViewModels; 20 | using System; 21 | using System.Diagnostics; 22 | using System.IO; 23 | using System.Windows; 24 | using System.Windows.Input; 25 | 26 | namespace FloatTool 27 | { 28 | public sealed partial class SettingsWindow : Window 29 | { 30 | public SettingsWindow() 31 | { 32 | InitializeComponent(); 33 | DataContext = new SettingsViewModel(this); 34 | Logger.Log.Info("Opened settings window"); 35 | } 36 | 37 | protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) 38 | { 39 | base.OnMouseLeftButtonDown(e); 40 | if (e.GetPosition(this).Y < 40) DragMove(); 41 | } 42 | 43 | private void WindowButton_Click(object sender, RoutedEventArgs e) 44 | { 45 | AppHelpers.Settings.Save(); 46 | Logger.Log.Info($"Saved settings: {AppHelpers.Settings}"); 47 | Logger.Log.Info($"Closed settings window"); 48 | Close(); 49 | } 50 | 51 | private void OpenThemesFolder_Click(object sender, RoutedEventArgs e) 52 | { 53 | var appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 54 | var subfolder = "floattool\\themes"; 55 | var combined = Path.Combine(appdata, subfolder); 56 | Logger.Log.Info("Opened themes folder: " + combined); 57 | Process.Start("explorer.exe", combined); 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /FloatTool/Views/UpdateWindow.xaml: -------------------------------------------------------------------------------- 1 |  17 | 30 | 31 | 32 | 33 | 34 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 68 | 69 |