├── .gitattributes
├── .gitignore
├── LICENSE
├── README.md
└── osu-rank
├── .Elas
└── ElasConfiguration.props
├── osu-rank.sln
└── osu-rank
├── A@2x.png
├── APis.cs
├── About.xaml
├── About.xaml.cs
├── App.config
├── App.xaml
├── App.xaml.cs
├── Drapeaux
├── AD.png
├── AE.png
├── AG.png
├── AL.png
├── AM.png
├── AR.png
├── AT.png
├── AU.png
├── AZ.png
├── BA.png
├── BB.png
├── BD.png
├── BE.png
├── BF.png
├── BG.png
├── BH.png
├── BJ.png
├── BN.png
├── BO.png
├── BR.png
├── BS.png
├── BT.png
├── BW.png
├── BY.png
├── BZ.png
├── CA.png
├── CD.png
├── CH.png
├── CI.png
├── CL.png
├── CM.png
├── CN.png
├── CO.png
├── CR.png
├── CU.png
├── CY.png
├── CZ.png
├── DE.png
├── DJ.png
├── DK.png
├── DM.png
├── DO.png
├── DZ.png
├── EC.png
├── EE.png
├── EG.png
├── ES.png
├── ET.png
├── FI.png
├── FJ.png
├── FR.png
├── GA.png
├── GB.png
├── GD.png
├── GE.png
├── GF.png
├── GH.png
├── GR.png
├── GT.png
├── GY.png
├── HK.png
├── HM.png
├── HN.png
├── HR.png
├── HU.png
├── IE.png
├── IL.png
├── IN.png
├── IQ.png
├── IR.png
├── IS.png
├── IT.png
├── JM.png
├── JO.png
├── JP.png
├── KE.png
├── KH.png
├── KN.png
├── KR.png
├── KW.png
├── KZ.png
├── LA.png
├── LB.png
├── LC.png
├── LI.png
├── LK.png
├── LT.png
├── LU.png
├── LV.png
├── LY.png
├── MA.png
├── MC.png
├── MD.png
├── ME.png
├── MF.png
├── MG.png
├── MH.png
├── MK.png
├── MM.png
├── MN.png
├── MR.png
├── MT.png
├── MU.png
├── MV.png
├── MW.png
├── MX.png
├── MY.png
├── MZ.png
├── NA.png
├── NE.png
├── NG.png
├── NI.png
├── NL.png
├── NO.png
├── NP.png
├── NZ.png
├── OM.png
├── PA.png
├── PE.png
├── PG.png
├── PH.png
├── PK.png
├── PL.png
├── PT.png
├── PY.png
├── QA.png
├── RE.png
├── RO.png
├── RS.png
├── RU.png
├── SA.png
├── SB.png
├── SC.png
├── SD.png
├── SE.png
├── SG.png
├── SI.png
├── SK.png
├── SL.png
├── SM.png
├── SN.png
├── SR.png
├── ST.png
├── SV.png
├── SY.png
├── TG.png
├── TH.png
├── TL.png
├── TN.png
├── TR.png
├── TT.png
├── TW.png
├── TZ.png
├── UA.png
├── US.png
├── UY.png
├── UZ.png
├── VA.png
├── VC.png
├── VE.png
├── VN.png
├── VU.png
├── YE.png
├── ZA.png
├── ZM.png
└── unknown.png
├── ElementList.txt
├── FodyWeavers.xml
├── Fonts
├── Exo2 - OFL.txt
├── Exo2-Black.ttf
├── Exo2-BlackItalic.ttf
├── Exo2-Bold.ttf
├── Exo2-BoldItalic.ttf
├── Exo2-ExtraBold.ttf
├── Exo2-ExtraBoldItalic.ttf
├── Exo2-ExtraLight.ttf
├── Exo2-ExtraLightItalic.ttf
├── Exo2-Italic.ttf
├── Exo2-Light.ttf
├── Exo2-LightItalic.ttf
├── Exo2-Medium.ttf
├── Exo2-MediumItalic.ttf
├── Exo2-Regular.ttf
├── Exo2-SemiBold.ttf
├── Exo2-SemiBoldItalic.ttf
├── Exo2-Thin.ttf
└── Exo2-ThinItalic.ttf
├── MainWindow.xaml
├── MainWindow.xaml.cs
├── Options.xaml
├── Options.xaml.cs
├── OsuPages
├── Compare.xaml
├── Compare.xaml.cs
├── OneUser.xaml
└── OneUser.xaml.cs
├── Properties
├── AssemblyInfo.cs
├── Resources.Designer.cs
├── Resources.resx
├── Resources.resx.xlf
├── Settings.Designer.cs
└── Settings.settings
├── RipplePages
├── Compare.xaml
├── Compare.xaml.cs
├── OneUser.xaml
└── OneUser.xaml.cs
├── S@2x.png
├── Settings.cs
├── Stringlists
├── README.md
├── StringList 3.0.txt
├── StringList 3.1.txt
├── StringList 4.0.txt
├── StringList 4.3.txt
├── StringList 4.4.txt
└── StringList 4.5.txt
├── Translation
├── README.md
├── osu_rank.txd
└── txdVersion.txt
├── X@2x.png
├── osu!rank-icon-by-Xial.ico
├── osu!rank-icon-by-Xial.png
├── osu-rank.csproj
├── osu-small.png
├── packages.config
├── std-small.png
└── version.txt
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # User-specific files
5 | *.suo
6 | *.user
7 | *.userosscache
8 | *.sln.docstates
9 |
10 | # User-specific files (MonoDevelop/Xamarin Studio)
11 | *.userprefs
12 |
13 | # Build results
14 | [Dd]ebug/
15 | [Dd]ebugPublic/
16 | [Rr]elease/
17 | [Rr]eleases/
18 | x64/
19 | x86/
20 | bld/
21 | [Bb]in/
22 | [Oo]bj/
23 | [Ll]og/
24 |
25 | # Visual Studio 2015 cache/options directory
26 | .vs/
27 | # Uncomment if you have tasks that create the project's static files in wwwroot
28 | #wwwroot/
29 |
30 | # MSTest test Results
31 | [Tt]est[Rr]esult*/
32 | [Bb]uild[Ll]og.*
33 |
34 | # NUNIT
35 | *.VisualState.xml
36 | TestResult.xml
37 |
38 | # Build Results of an ATL Project
39 | [Dd]ebugPS/
40 | [Rr]eleasePS/
41 | dlldata.c
42 |
43 | # DNX
44 | project.lock.json
45 | artifacts/
46 |
47 | *_i.c
48 | *_p.c
49 | *_i.h
50 | *.ilk
51 | *.meta
52 | *.obj
53 | *.pch
54 | *.pdb
55 | *.pgc
56 | *.pgd
57 | *.rsp
58 | *.sbr
59 | *.tlb
60 | *.tli
61 | *.tlh
62 | *.tmp
63 | *.tmp_proj
64 | *.log
65 | *.vspscc
66 | *.vssscc
67 | .builds
68 | *.pidb
69 | *.svclog
70 | *.scc
71 |
72 | # Chutzpah Test files
73 | _Chutzpah*
74 |
75 | # Visual C++ cache files
76 | ipch/
77 | *.aps
78 | *.ncb
79 | *.opendb
80 | *.opensdf
81 | *.sdf
82 | *.cachefile
83 | *.VC.db
84 | *.VC.VC.opendb
85 |
86 | # Visual Studio profiler
87 | *.psess
88 | *.vsp
89 | *.vspx
90 | *.sap
91 |
92 | # TFS 2012 Local Workspace
93 | $tf/
94 |
95 | # Guidance Automation Toolkit
96 | *.gpState
97 |
98 | # ReSharper is a .NET coding add-in
99 | _ReSharper*/
100 | *.[Rr]e[Ss]harper
101 | *.DotSettings.user
102 |
103 | # JustCode is a .NET coding add-in
104 | .JustCode
105 |
106 | # TeamCity is a build add-in
107 | _TeamCity*
108 |
109 | # DotCover is a Code Coverage Tool
110 | *.dotCover
111 |
112 | # NCrunch
113 | _NCrunch_*
114 | .*crunch*.local.xml
115 | nCrunchTemp_*
116 |
117 | # MightyMoose
118 | *.mm.*
119 | AutoTest.Net/
120 |
121 | # Web workbench (sass)
122 | .sass-cache/
123 |
124 | # Installshield output folder
125 | [Ee]xpress/
126 |
127 | # DocProject is a documentation generator add-in
128 | DocProject/buildhelp/
129 | DocProject/Help/*.HxT
130 | DocProject/Help/*.HxC
131 | DocProject/Help/*.hhc
132 | DocProject/Help/*.hhk
133 | DocProject/Help/*.hhp
134 | DocProject/Help/Html2
135 | DocProject/Help/html
136 |
137 | # Click-Once directory
138 | publish/
139 |
140 | # Publish Web Output
141 | *.[Pp]ublish.xml
142 | *.azurePubxml
143 | # TODO: Comment the next line if you want to checkin your web deploy settings
144 | # but database connection strings (with potential passwords) will be unencrypted
145 | *.pubxml
146 | *.publishproj
147 |
148 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
149 | # checkin your Azure Web App publish settings, but sensitive information contained
150 | # in these scripts will be unencrypted
151 | PublishScripts/
152 |
153 | # NuGet Packages
154 | *.nupkg
155 | # The packages folder can be ignored because of Package Restore
156 | **/packages/*
157 | # except build/, which is used as an MSBuild target.
158 | !**/packages/build/
159 | # Uncomment if necessary however generally it will be regenerated when needed
160 | #!**/packages/repositories.config
161 | # NuGet v3's project.json files produces more ignoreable files
162 | *.nuget.props
163 | *.nuget.targets
164 |
165 | # Microsoft Azure Build Output
166 | csx/
167 | *.build.csdef
168 |
169 | # Microsoft Azure Emulator
170 | ecf/
171 | rcf/
172 |
173 | # Windows Store app package directories and files
174 | AppPackages/
175 | BundleArtifacts/
176 | Package.StoreAssociation.xml
177 | _pkginfo.txt
178 |
179 | # Visual Studio cache files
180 | # files ending in .cache can be ignored
181 | *.[Cc]ache
182 | # but keep track of directories ending in .cache
183 | !*.[Cc]ache/
184 |
185 | # Others
186 | ClientBin/
187 | ~$*
188 | *~
189 | *.dbmdl
190 | *.dbproj.schemaview
191 | *.pfx
192 | *.publishsettings
193 | node_modules/
194 | orleans.codegen.cs
195 |
196 | # Since there are multiple workflows, uncomment next line to ignore bower_components
197 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
198 | #bower_components/
199 |
200 | # RIA/Silverlight projects
201 | Generated_Code/
202 |
203 | # Backup & report files from converting an old project file
204 | # to a newer Visual Studio version. Backup files are not needed,
205 | # because we have git ;-)
206 | _UpgradeReport_Files/
207 | Backup*/
208 | UpgradeLog*.XML
209 | UpgradeLog*.htm
210 |
211 | # SQL Server files
212 | *.mdf
213 | *.ldf
214 |
215 | # Business Intelligence projects
216 | *.rdl.data
217 | *.bim.layout
218 | *.bim_*.settings
219 |
220 | # Microsoft Fakes
221 | FakesAssemblies/
222 |
223 | # GhostDoc plugin setting file
224 | *.GhostDoc.xml
225 |
226 | # Node.js Tools for Visual Studio
227 | .ntvs_analysis.dat
228 |
229 | # Visual Studio 6 build log
230 | *.plg
231 |
232 | # Visual Studio 6 workspace options file
233 | *.opt
234 |
235 | # Visual Studio LightSwitch build output
236 | **/*.HTMLClient/GeneratedArtifacts
237 | **/*.DesktopClient/GeneratedArtifacts
238 | **/*.DesktopClient/ModelManifest.xml
239 | **/*.Server/GeneratedArtifacts
240 | **/*.Server/ModelManifest.xml
241 | _Pvt_Extensions
242 |
243 | # Paket dependency manager
244 | .paket/paket.exe
245 | paket-files/
246 |
247 | # FAKE - F# Make
248 | .fake/
249 |
250 | # JetBrains Rider
251 | .idea/
252 | *.sln.iml
253 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | _Icon by [Xial](https://osu.ppy.sh/u/Xial)_
4 |
5 | # osu!rank 4.5.1
6 |
7 | Small open-source utility to show your rank or compare two players without the need to open the website (osu! and Ripple)
8 |
9 | Requires you to use your own osu! API key (if you want to use the osu! part), available [here](http://osu.ppy.sh/p/api). Just fill in whatever name and website, it's automated.
10 |
11 | Our discord server is located right [here](https://discord.gg/3DkH4q6). Come and say hi (or drop some feedback)!
12 |
13 | [osu!forums topic](https://osu.ppy.sh/forum/t/478865)
14 |
15 | ripple forums topic - as soon as ripple forums come (if they ever come)
16 |
17 | ### Notes to translators:
18 |
19 | **lol forget onesky, please stick to pull requests or stringlists + issues. works well**
20 |
21 | What it can do
22 | --------------
23 | ### Check your own stats:
24 | * Rank and country rank
25 | * Performance points
26 | * Ranked and total score
27 | * Your level and experience
28 | * Your playcount
29 | * Your SS/S/A
30 | * Your UID <-- mainly to fill the space, but just in case it can still be useful
31 |
32 | ### Compare two players on their:
33 | * Rank
34 | * Ranked and total scores
35 | * Accuracy
36 | * Playcount
37 | * Performance points
38 |
39 | It also displays the avatar of the user.
40 |
41 | What it doesn't do (but might happen if asked, drop an issue if interested)
42 | ------------------------------------
43 | * Retrieve your top plays
44 |
45 | What it won't ever do
46 | ---------------------
47 | * Compare more than two players (looks quite hard to implement the way I'm doing things)
48 |
49 | If you want to build yourself...
50 | --------------------------------
51 | You'll need Visual Studio 2015 to open the solution
52 |
--------------------------------------------------------------------------------
/osu-rank/.Elas/ElasConfiguration.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | en-US
13 |
14 |
15 |
16 |
17 |
18 | Unmodifiable
19 |
20 |
21 | Unmodifiable
22 |
23 |
24 | Unmodifiable
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 14
4 | VisualStudioVersion = 14.0.24720.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "osu-rank", "osu-rank\osu-rank.csproj", "{81186FED-8E05-4578-B8D1-B1464A5DD942}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Debug|x64 = Debug|x64
12 | Debug|x86 = Debug|x86
13 | Release|Any CPU = Release|Any CPU
14 | Release|x64 = Release|x64
15 | Release|x86 = Release|x86
16 | EndGlobalSection
17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
18 | {81186FED-8E05-4578-B8D1-B1464A5DD942}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
19 | {81186FED-8E05-4578-B8D1-B1464A5DD942}.Debug|Any CPU.Build.0 = Debug|Any CPU
20 | {81186FED-8E05-4578-B8D1-B1464A5DD942}.Debug|x64.ActiveCfg = Debug|x64
21 | {81186FED-8E05-4578-B8D1-B1464A5DD942}.Debug|x64.Build.0 = Debug|x64
22 | {81186FED-8E05-4578-B8D1-B1464A5DD942}.Debug|x86.ActiveCfg = Debug|x86
23 | {81186FED-8E05-4578-B8D1-B1464A5DD942}.Debug|x86.Build.0 = Debug|x86
24 | {81186FED-8E05-4578-B8D1-B1464A5DD942}.Release|Any CPU.ActiveCfg = Release|Any CPU
25 | {81186FED-8E05-4578-B8D1-B1464A5DD942}.Release|Any CPU.Build.0 = Release|Any CPU
26 | {81186FED-8E05-4578-B8D1-B1464A5DD942}.Release|x64.ActiveCfg = Release|x64
27 | {81186FED-8E05-4578-B8D1-B1464A5DD942}.Release|x64.Build.0 = Release|x64
28 | {81186FED-8E05-4578-B8D1-B1464A5DD942}.Release|x86.ActiveCfg = Release|x86
29 | {81186FED-8E05-4578-B8D1-B1464A5DD942}.Release|x86.Build.0 = Release|x86
30 | EndGlobalSection
31 | GlobalSection(SolutionProperties) = preSolution
32 | HideSolutionNode = FALSE
33 | EndGlobalSection
34 | EndGlobal
35 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/A@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/A@2x.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/APis.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using Newtonsoft.Json;
7 | using System.Windows;
8 | using Unclassified.TxLib;
9 | using System.Net.Http;
10 | using System.IO;
11 |
12 | // TODO: Look closely at all possible cases for the get_scores API method on both osu! and Ripple servers
13 | // and return an "universal" format (aka if i accidentally use osu!'s method into a ripple page osu!rank
14 | // doesn't insult me)
15 | // example: get_scores when there's no result:
16 | // - osu! returns `[]` (empty json array)
17 | // - ripple returns `null` (null json value)
18 | // mark's fix with maxIntgr might be of some help...
19 |
20 | namespace osurank
21 | {
22 | // osu!rank related
23 | public class osu
24 | {
25 | static int[] maxIntgr = {int.MaxValue};
26 | // sync
27 | static public dynamic GetUser(string player, string apikey, int gamemode = 0, bool showErrors = true)
28 | {
29 | if (player != "")
30 | {
31 | try {
32 | dynamic userdata = JsonConvert.DeserializeObject(new System.Net.WebClient().DownloadString("http://osu.ppy.sh/api/get_user?type=string&u=" + player + "&m=" + gamemode + "&k=" + apikey));
33 | if (Convert.ToString(userdata) == "[]" || userdata == null)
34 | {
35 | if (showErrors == true) MessageBox.Show(Tx.T("errors.Does not exist", "name", player), Tx.T("errors.Error"), MessageBoxButton.OK, MessageBoxImage.Error);
36 | return maxIntgr;
37 | }
38 | else if (userdata[0].pp_rank == null)
39 | {
40 | if (showErrors == true) MessageBox.Show(Tx.T("errors.Did not play yet", "name", player), Tx.T("errors.Error"), MessageBoxButton.OK, MessageBoxImage.Exclamation);
41 | return maxIntgr;
42 | }
43 | else return userdata;
44 | }
45 | catch (Exception)
46 | {
47 | MessageBox.Show(Tx.T("osu rank.Servers unavailable", "server", "osu!"), Tx.T("errors.Error"), MessageBoxButton.OK, MessageBoxImage.Error);
48 | Environment.Exit(0);
49 | return maxIntgr;
50 | }
51 | }
52 | else
53 | {
54 | if (showErrors == true) MessageBox.Show(Tx.T("errors.No name entered"), Tx.T("errors.Error"), MessageBoxButton.OK, MessageBoxImage.Error);
55 | return maxIntgr;
56 | }
57 | }
58 | static public dynamic GetScores(string apikey, int beatmap, int gamemode = 0, string player = "")
59 | {
60 | return JsonConvert.DeserializeObject(new System.Net.WebClient().DownloadString("http://osu.ppy.sh/api/get_scores?type=string&u=" + player + "&m=" + gamemode + "&k=" + apikey + "&b=" + beatmap));
61 | }
62 |
63 | //async
64 | static public async Task GetUserAsync(string player, string apikey, int gamemode = 0, bool showErrors = true)
65 | {
66 | if (player != "")
67 | {
68 | try
69 | {
70 | dynamic userdata = null;
71 | using (HttpClient apiCall = new HttpClient())
72 | {
73 | userdata = JsonConvert.DeserializeObject(await apiCall.GetStringAsync("http://osu.ppy.sh/api/get_user?type=string&u=" + player + "&m=" + gamemode + "&k=" + apikey));
74 | }
75 | if (Convert.ToString(userdata) == "[]" || userdata == null)
76 | {
77 | if (showErrors == true) MessageBox.Show(Tx.T("errors.Does not exist", "name", player), Tx.T("errors.Error"), MessageBoxButton.OK, MessageBoxImage.Error);
78 | return maxIntgr;
79 | }
80 | else if (userdata[0].pp_rank == null)
81 | {
82 | if (showErrors == true) MessageBox.Show(Tx.T("errors.Did not play yet", "name", player), Tx.T("errors.Error"), MessageBoxButton.OK, MessageBoxImage.Exclamation);
83 | return maxIntgr;
84 | }
85 | else return userdata;
86 | }
87 | catch (Exception)
88 | {
89 | MessageBox.Show(Tx.T("osu rank.Servers unavailable", "server", "osu!"), Tx.T("errors.Error"), MessageBoxButton.OK, MessageBoxImage.Error);
90 | Environment.Exit(0);
91 | return maxIntgr;
92 | }
93 | }
94 | else
95 | {
96 | if (showErrors == true) MessageBox.Show(Tx.T("errors.No name entered"), Tx.T("errors.Error"), MessageBoxButton.OK, MessageBoxImage.Error);
97 | return maxIntgr;
98 | }
99 | }
100 | static public async Task GetScoresAsync(string apikey, int beatmap, int gamemode = 0, string player = "")
101 | {
102 | return JsonConvert.DeserializeObject(await new HttpClient().GetStringAsync("http://osu.ppy.sh/api/get_scores?type=string&u=" + player + "&m=" + gamemode + "&k=" + apikey + "&b=" + beatmap));
103 | }
104 | }
105 |
106 | public class ripple
107 | {
108 | static int[] maxIntgr = { int.MaxValue };
109 | // sync
110 | static public dynamic GetUser(string player, int gamemode = 0, bool showErrors = true)
111 | {
112 | if (player != "")
113 | {
114 | try
115 | {
116 | dynamic userdata = JsonConvert.DeserializeObject(new System.Net.WebClient().DownloadString("http://ripple.moe/api/get_user?type=string&u=" + player + "&m=" + gamemode));
117 | if (Convert.ToString(userdata) == "[]" || userdata == null)
118 | {
119 | if (showErrors == true) MessageBox.Show(Tx.T("errors.Does not exist", "name", player), Tx.T("errors.Error"), MessageBoxButton.OK, MessageBoxImage.Error);
120 | return maxIntgr;
121 | }
122 | else if (userdata[0].pp_rank == null)
123 | {
124 | if (showErrors == true) MessageBox.Show(Tx.T("errors.Did not play yet", "name", player), Tx.T("errors.Error"), MessageBoxButton.OK, MessageBoxImage.Exclamation);
125 | return maxIntgr;
126 | }
127 | else return userdata;
128 | }
129 | catch (Exception)
130 | {
131 | MessageBox.Show(Tx.T("osu rank.Servers unavailable", "server", "Ripple"), Tx.T("errors.Error"), MessageBoxButton.OK, MessageBoxImage.Error);
132 | Environment.Exit(0);
133 | return maxIntgr;
134 | }
135 | }
136 | else
137 | {
138 | if (showErrors == true) MessageBox.Show(Tx.T("errors.No name entered"), Tx.T("errors.Error"), MessageBoxButton.OK, MessageBoxImage.Error);
139 | return maxIntgr;
140 | }
141 | }
142 | static public dynamic GetScores(int beatmap, int gamemode = 0, string player = "")
143 | {
144 | return JsonConvert.DeserializeObject(new System.Net.WebClient().DownloadString("http://ripple.moe/api/get_scores?type=string&u=" + player + "&m=" + gamemode + "&b=" + beatmap));
145 | }
146 |
147 | //async
148 | static public async Task GetUserAsync(string player, int gamemode = 0, bool showErrors = true)
149 | {
150 | if (player != "")
151 | {
152 | try
153 | {
154 | dynamic userdata = null;
155 | using (HttpClient apiCall = new HttpClient())
156 | {
157 | userdata = JsonConvert.DeserializeObject(await apiCall.GetStringAsync("http://ripple.moe/api/get_user?type=string&u=" + player + "&m=" + gamemode));
158 | }
159 | if (Convert.ToString(userdata) == "[]" || userdata == null)
160 | {
161 | if (showErrors == true) MessageBox.Show(Tx.T("errors.Does not exist", "name", player), Tx.T("errors.Error"), MessageBoxButton.OK, MessageBoxImage.Error);
162 | return maxIntgr;
163 | }
164 | else if (userdata[0].pp_rank == null)
165 | {
166 | if (showErrors == true) MessageBox.Show(Tx.T("errors.Did not play yet", "name", player), Tx.T("errors.Error"), MessageBoxButton.OK, MessageBoxImage.Exclamation);
167 | return maxIntgr;
168 | }
169 | else return userdata;
170 | }
171 | catch (Exception)
172 | {
173 | MessageBox.Show(Tx.T("osu rank.Servers unavailable","server","Ripple"), Tx.T("errors.Error"), MessageBoxButton.OK, MessageBoxImage.Error);
174 | Environment.Exit(0);
175 | return maxIntgr;
176 | }
177 | }
178 | else
179 | {
180 | if (showErrors == true) MessageBox.Show(Tx.T("errors.No name entered"), Tx.T("errors.Error"), MessageBoxButton.OK, MessageBoxImage.Error);
181 | return maxIntgr;
182 | }
183 | }
184 | static public async Task GetScoresAsync(int beatmap, int gamemode = 0, string player = "")
185 | {
186 | return JsonConvert.DeserializeObject(await new HttpClient().GetStringAsync("http://ripple.moe/api/get_scores?type=string&u=" + player + "&m=" + gamemode + "&b=" + beatmap));
187 | }
188 | }
189 |
190 | // helper
191 | public static class WebUtils
192 | {
193 | public static Task DownloadAsync(string requestUri, string filename)
194 | {
195 | if (requestUri == null)
196 | throw new ArgumentNullException("requestUri");
197 |
198 | return DownloadAsync(new Uri(requestUri), filename);
199 | }
200 |
201 | public static async Task DownloadAsync(Uri requestUri, string filename)
202 | {
203 | if (filename == null)
204 | throw new ArgumentNullException("filename");
205 |
206 | using (var httpClient = new HttpClient())
207 | {
208 | using (var request = new HttpRequestMessage(HttpMethod.Get, requestUri))
209 | {
210 | using (
211 | Stream contentStream = await (await httpClient.SendAsync(request)).Content.ReadAsStreamAsync(),
212 | stream = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.None, 4096, true))
213 | {
214 | await contentStream.CopyToAsync(stream);
215 | }
216 | }
217 | }
218 | }
219 | }
220 | }
221 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/About.xaml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
28 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
56 |
57 |
60 |
61 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/About.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Diagnostics;
4 | using System.Linq;
5 | using System.Reflection;
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 osurank
19 | {
20 | ///
21 | /// Logique d'interaction pour About.xaml
22 | ///
23 | public partial class About : Page
24 | {
25 | public About()
26 | {
27 | InitializeComponent();
28 | about.Content = "osu!rank " + Assembly.GetExecutingAssembly().GetName().Version.Major
29 | + "." + Assembly.GetExecutingAssembly().GetName().Version.Minor
30 | + "." + Assembly.GetExecutingAssembly().GetName().Version.Build;
31 | }
32 |
33 | private void page_loaded(object sender, RoutedEventArgs e)
34 | {
35 | RenderOptions.SetBitmapScalingMode(osuSmall, BitmapScalingMode.HighQuality);
36 | RenderOptions.SetBitmapScalingMode(stdSmall, BitmapScalingMode.HighQuality);
37 | }
38 |
39 | private void goTopic_Click(object sender, RoutedEventArgs e)
40 | {
41 | Process.Start("https://osu.ppy.sh/forum/t/478865");
42 | }
43 |
44 | private void goGeetHub_Click(object sender, RoutedEventArgs e)
45 | {
46 | Process.Start("https://github.com/Jeremiidesu/osu-rank");
47 | }
48 |
49 | private void reportBug_Click(object sender, RoutedEventArgs e)
50 | {
51 | Process.Start("https://github.com/Jeremiidesu/osu-rank/issues");
52 | }
53 |
54 | private void goContribute_Click(object sender, RoutedEventArgs e)
55 | {
56 | Process.Start("https://github.com/Jeremiidesu/osu-rank/tree/master/osu-rank/osu-rank/Stringlists");
57 | }
58 |
59 | private void goXial_Click(object sender, RoutedEventArgs e)
60 | {
61 | Process.Start("https://osu.ppy.sh/u/Xial");
62 | }
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | OneUser
19 |
20 |
21 |
22 |
23 |
24 | True
25 |
26 |
27 | 15
28 |
29 |
30 | peppy
31 |
32 |
33 | Cookiezi
34 |
35 |
36 | 0
37 |
38 |
39 | False
40 |
41 |
42 |
43 |
44 |
45 | True
46 |
47 |
48 | False
49 |
50 |
51 |
52 |
53 | OneUser
54 |
55 |
56 |
57 |
58 |
59 |
60 | 5eaf09f888b192ed8d4a81b7ff3f531f508d87c9
61 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/App.xaml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
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 | pack://application:,,,/Fonts/#Exo 2
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Configuration;
4 | using System.Data;
5 | using System.Linq;
6 | using System.Threading.Tasks;
7 | using System.Windows;
8 | using System.Globalization;
9 | using osu_rank.Properties;
10 | using Unclassified.TxLib;
11 |
12 | namespace osurank
13 | {
14 | ///
15 | /// Logique d'interaction pour App.xaml
16 | ///
17 | public partial class App : Application
18 | {
19 | // Needed for default language
20 | public static readonly CultureInfo systemCulture = CultureInfo.CurrentCulture;
21 | // Needed for update logic
22 | public static bool HasCheckedForUpdates = false;
23 | public static int version = 31;
24 | public static int minTxdVersionRequired = 3;
25 |
26 | private void App_Startup(object sender, StartupEventArgs e)
27 | {
28 | if (Settings.Default.CanUpgrade)
29 | {
30 | Settings.Default.Upgrade();
31 | Settings.Default.CanUpgrade = false;
32 | Settings.Default.Save();
33 | }
34 | #region language
35 | if (Settings.Default.LanguageCode != "")
36 | {
37 | System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo(Settings.Default.LanguageCode);
38 | }
39 | else if (Settings.Default.LanguageCode == "")
40 | {
41 | System.Threading.Thread.CurrentThread.CurrentCulture = App.systemCulture;
42 | }
43 | /* don't use useless debug code in released build
44 | string[] resourceNames = this.GetType().Assembly.GetManifestResourceNames();
45 | foreach (string resourceName in resourceNames)
46 | {
47 | Console.WriteLine(resourceName);
48 | }
49 | Console.WriteLine(System.Threading.Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName); */
50 | #endregion
51 | }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/AD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/AD.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/AE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/AE.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/AG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/AG.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/AL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/AL.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/AM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/AM.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/AR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/AR.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/AT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/AT.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/AU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/AU.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/AZ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/AZ.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/BA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/BA.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/BB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/BB.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/BD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/BD.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/BE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/BE.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/BF.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/BF.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/BG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/BG.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/BH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/BH.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/BJ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/BJ.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/BN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/BN.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/BO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/BO.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/BR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/BR.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/BS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/BS.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/BT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/BT.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/BW.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/BW.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/BY.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/BY.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/BZ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/BZ.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/CA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/CA.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/CD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/CD.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/CH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/CH.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/CI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/CI.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/CL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/CL.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/CM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/CM.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/CN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/CN.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/CO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/CO.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/CR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/CR.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/CU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/CU.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/CY.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/CY.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/CZ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/CZ.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/DE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/DE.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/DJ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/DJ.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/DK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/DK.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/DM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/DM.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/DO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/DO.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/DZ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/DZ.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/EC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/EC.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/EE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/EE.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/EG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/EG.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/ES.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/ES.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/ET.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/ET.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/FI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/FI.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/FJ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/FJ.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/FR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/FR.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/GA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/GA.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/GB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/GB.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/GD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/GD.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/GE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/GE.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/GF.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/GF.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/GH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/GH.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/GR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/GR.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/GT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/GT.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/GY.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/GY.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/HK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/HK.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/HM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/HM.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/HN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/HN.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/HR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/HR.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/HU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/HU.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/IE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/IE.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/IL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/IL.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/IN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/IN.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/IQ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/IQ.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/IR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/IR.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/IS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/IS.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/IT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/IT.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/JM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/JM.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/JO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/JO.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/JP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/JP.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/KE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/KE.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/KH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/KH.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/KN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/KN.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/KR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/KR.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/KW.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/KW.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/KZ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/KZ.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/LA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/LA.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/LB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/LB.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/LC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/LC.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/LI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/LI.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/LK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/LK.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/LT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/LT.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/LU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/LU.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/LV.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/LV.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/LY.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/LY.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/MA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/MA.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/MC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/MC.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/MD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/MD.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/ME.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/ME.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/MF.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/MF.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/MG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/MG.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/MH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/MH.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/MK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/MK.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/MM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/MM.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/MN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/MN.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/MR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/MR.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/MT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/MT.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/MU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/MU.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/MV.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/MV.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/MW.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/MW.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/MX.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/MX.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/MY.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/MY.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/MZ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/MZ.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/NA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/NA.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/NE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/NE.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/NG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/NG.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/NI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/NI.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/NL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/NL.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/NO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/NO.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/NP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/NP.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/NZ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/NZ.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/OM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/OM.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/PA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/PA.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/PE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/PE.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/PG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/PG.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/PH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/PH.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/PK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/PK.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/PL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/PL.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/PT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/PT.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/PY.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/PY.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/QA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/QA.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/RE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/RE.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/RO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/RO.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/RS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/RS.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/RU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/RU.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/SA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/SA.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/SB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/SB.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/SC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/SC.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/SD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/SD.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/SE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/SE.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/SG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/SG.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/SI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/SI.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/SK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/SK.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/SL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/SL.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/SM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/SM.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/SN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/SN.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/SR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/SR.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/ST.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/ST.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/SV.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/SV.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/SY.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/SY.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/TG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/TG.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/TH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/TH.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/TL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/TL.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/TN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/TN.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/TR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/TR.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/TT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/TT.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/TW.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/TW.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/TZ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/TZ.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/UA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/UA.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/US.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/US.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/UY.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/UY.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/UZ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/UZ.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/VA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/VA.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/VC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/VC.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/VE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/VE.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/VN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/VN.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/VU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/VU.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/YE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/YE.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/ZA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/ZA.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/ZM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/ZM.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Drapeaux/unknown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Drapeaux/unknown.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/ElementList.txt:
--------------------------------------------------------------------------------
1 | osu_api:
2 |
3 | user_id
4 | username
5 | count300
6 | count100
7 | count50
8 | playcount
9 | ranked_score
10 | total_score
11 | pp_rank
12 | level
13 | pp_raw
14 | accuracy
15 | count_rank_ss
16 | count_rank_s
17 | count_rank_a
18 | country
19 | pp_country_rank
20 | events[]
21 |
22 | OneUser:
23 |
24 | playername
25 | Avatar
26 | globalrank
27 | countryRank
28 |
29 | rankedScore
30 | playCount
31 | acc
32 | pp
33 | totalScore
34 | level
35 | grades
36 | userID
37 |
38 | Compare:
39 |
40 | "p1_avatar"
41 | "p1_name"
42 |
43 | "p1_ranking"
44 | "p1_performance"
45 | "p1_acc"
46 | "p1_playcount"
47 | "p1_totalscore"
48 | "p1_rankedscore"
49 |
50 | prefixes : p1, p2, diff
--------------------------------------------------------------------------------
/osu-rank/osu-rank/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Fonts/Exo2 - OFL.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2013, Natanael Gama (www.ndiscovered.com . info(at)ndiscovered.com), with Reserved Font Name 'Exo'
2 | This Font Software is licensed under the SIL Open Font License, Version 1.1.
3 | This license is copied below, and is also available with a FAQ at:
4 | http://scripts.sil.org/OFL
5 |
6 |
7 | -----------------------------------------------------------
8 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
9 | -----------------------------------------------------------
10 |
11 | PREAMBLE
12 | The goals of the Open Font License (OFL) are to stimulate worldwide
13 | development of collaborative font projects, to support the font creation
14 | efforts of academic and linguistic communities, and to provide a free and
15 | open framework in which fonts may be shared and improved in partnership
16 | with others.
17 |
18 | The OFL allows the licensed fonts to be used, studied, modified and
19 | redistributed freely as long as they are not sold by themselves. The
20 | fonts, including any derivative works, can be bundled, embedded,
21 | redistributed and/or sold with any software provided that any reserved
22 | names are not used by derivative works. The fonts and derivatives,
23 | however, cannot be released under any other type of license. The
24 | requirement for fonts to remain under this license does not apply
25 | to any document created using the fonts or their derivatives.
26 |
27 | DEFINITIONS
28 | "Font Software" refers to the set of files released by the Copyright
29 | Holder(s) under this license and clearly marked as such. This may
30 | include source files, build scripts and documentation.
31 |
32 | "Reserved Font Name" refers to any names specified as such after the
33 | copyright statement(s).
34 |
35 | "Original Version" refers to the collection of Font Software components as
36 | distributed by the Copyright Holder(s).
37 |
38 | "Modified Version" refers to any derivative made by adding to, deleting,
39 | or substituting -- in part or in whole -- any of the components of the
40 | Original Version, by changing formats or by porting the Font Software to a
41 | new environment.
42 |
43 | "Author" refers to any designer, engineer, programmer, technical
44 | writer or other person who contributed to the Font Software.
45 |
46 | PERMISSION & CONDITIONS
47 | Permission is hereby granted, free of charge, to any person obtaining
48 | a copy of the Font Software, to use, study, copy, merge, embed, modify,
49 | redistribute, and sell modified and unmodified copies of the Font
50 | Software, subject to the following conditions:
51 |
52 | 1) Neither the Font Software nor any of its individual components,
53 | in Original or Modified Versions, may be sold by itself.
54 |
55 | 2) Original or Modified Versions of the Font Software may be bundled,
56 | redistributed and/or sold with any software, provided that each copy
57 | contains the above copyright notice and this license. These can be
58 | included either as stand-alone text files, human-readable headers or
59 | in the appropriate machine-readable metadata fields within text or
60 | binary files as long as those fields can be easily viewed by the user.
61 |
62 | 3) No Modified Version of the Font Software may use the Reserved Font
63 | Name(s) unless explicit written permission is granted by the corresponding
64 | Copyright Holder. This restriction only applies to the primary font name as
65 | presented to the users.
66 |
67 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
68 | Software shall not be used to promote, endorse or advertise any
69 | Modified Version, except to acknowledge the contribution(s) of the
70 | Copyright Holder(s) and the Author(s) or with their explicit written
71 | permission.
72 |
73 | 5) The Font Software, modified or unmodified, in part or in whole,
74 | must be distributed entirely under this license, and must not be
75 | distributed under any other license. The requirement for fonts to
76 | remain under this license does not apply to any document created
77 | using the Font Software.
78 |
79 | TERMINATION
80 | This license becomes null and void if any of the above conditions are
81 | not met.
82 |
83 | DISCLAIMER
84 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
85 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
86 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
87 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
88 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
89 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
90 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
91 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
92 | OTHER DEALINGS IN THE FONT SOFTWARE.
93 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Fonts/Exo2-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Fonts/Exo2-Black.ttf
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Fonts/Exo2-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Fonts/Exo2-BlackItalic.ttf
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Fonts/Exo2-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Fonts/Exo2-Bold.ttf
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Fonts/Exo2-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Fonts/Exo2-BoldItalic.ttf
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Fonts/Exo2-ExtraBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Fonts/Exo2-ExtraBold.ttf
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Fonts/Exo2-ExtraBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Fonts/Exo2-ExtraBoldItalic.ttf
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Fonts/Exo2-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Fonts/Exo2-ExtraLight.ttf
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Fonts/Exo2-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Fonts/Exo2-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Fonts/Exo2-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Fonts/Exo2-Italic.ttf
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Fonts/Exo2-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Fonts/Exo2-Light.ttf
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Fonts/Exo2-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Fonts/Exo2-LightItalic.ttf
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Fonts/Exo2-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Fonts/Exo2-Medium.ttf
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Fonts/Exo2-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Fonts/Exo2-MediumItalic.ttf
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Fonts/Exo2-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Fonts/Exo2-Regular.ttf
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Fonts/Exo2-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Fonts/Exo2-SemiBold.ttf
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Fonts/Exo2-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Fonts/Exo2-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Fonts/Exo2-Thin.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Fonts/Exo2-Thin.ttf
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Fonts/Exo2-ThinItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/Fonts/Exo2-ThinItalic.ttf
--------------------------------------------------------------------------------
/osu-rank/osu-rank/MainWindow.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Net;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 | using System.Windows;
8 | using System.Windows.Controls;
9 | using System.Windows.Data;
10 | using System.Windows.Documents;
11 | using System.Windows.Input;
12 | using System.Windows.Media;
13 | using System.Windows.Media.Animation;
14 | using System.Windows.Media.Imaging;
15 | using System.Windows.Navigation;
16 | using System.Windows.Shapes;
17 | using Unclassified.TxLib;
18 | using System.Diagnostics;
19 | using System.Globalization;
20 | using System.Net.NetworkInformation;
21 | using osu_rank.Properties;
22 | using System.Net.Http;
23 | using System.IO;
24 |
25 | namespace osurank
26 | {
27 | ///
28 | /// Interaction logic for MainWindow.xaml
29 | ///
30 | public partial class MainWindow : Window
31 | {
32 | bool drawerOpened = false;
33 | public MainWindow()
34 | {
35 | InitializeComponent();
36 | }
37 |
38 | bool hasApiKey = false;
39 | // Navigation drawer
40 | private void menuMouseDown(object sender, MouseButtonEventArgs e)
41 | {
42 | if (drawerOpened==false)
43 | {
44 | Storyboard animation = TryFindResource("MenuOpen") as Storyboard;
45 | animation.Begin();
46 | Storyboard openDrawer = TryFindResource("DrawerOpen") as Storyboard;
47 | openDrawer.Begin();
48 | drawerOpened = true;
49 | }
50 | else
51 | {
52 | closeDrawer();
53 | }
54 | }
55 | private void closeDrawer()
56 | {
57 | Storyboard animation = TryFindResource("MenuClose") as Storyboard;
58 | animation.Begin();
59 | Storyboard closeDrawer = TryFindResource("DrawerClose") as Storyboard;
60 | closeDrawer.Begin();
61 | drawerOpened = false;
62 | }
63 | private void drawerClose(object sender, MouseButtonEventArgs e)
64 | {
65 | closeDrawer();
66 | }
67 |
68 | // Needed for navigation
69 | private void drawerUnbold()
70 | {
71 | goOnePlayer.FontWeight = FontWeights.Regular;
72 | goComparator.FontWeight = FontWeights.Regular;
73 | goRippleOnePlayer.FontWeight = FontWeights.Regular;
74 | goRippleComparator.FontWeight = FontWeights.Regular;
75 | goSettings.FontWeight = FontWeights.Regular;
76 | goAbout.FontWeight = FontWeights.Regular;
77 | }
78 |
79 |
80 | // Navigation code
81 | private void goOneUser_Click(object sender, MouseButtonEventArgs e)
82 | {
83 | drawerUnbold();
84 | Label lbl = sender as Label;
85 | lbl.FontWeight = FontWeights.SemiBold;
86 | actionBar_Text.Content = "osu!rank - " + Tx.T("osu rank.One player");
87 | WindowContent.Navigate(new osuPages.OneUser());
88 | closeDrawer();
89 | }
90 |
91 | private void goCompare_Click(object sender, MouseButtonEventArgs e)
92 | {
93 | drawerUnbold();
94 | Label lbl = sender as Label;
95 | lbl.FontWeight = FontWeights.SemiBold;
96 | actionBar_Text.Content = "osu!rank - " + Tx.T("osu rank.Compare");
97 | WindowContent.Navigate(new osuPages.Compare());
98 | closeDrawer();
99 | }
100 | private void goSettings_Click(object sender, MouseButtonEventArgs e)
101 | {
102 | drawerUnbold();
103 | Label lbl = sender as Label;
104 | lbl.FontWeight = FontWeights.SemiBold;
105 | actionBar_Text.Content = "osu!rank - " + Tx.T("osu rank.Settings");
106 | WindowContent.Navigate(new Options());
107 | closeDrawer();
108 | }
109 |
110 | private async void apiDialog_DialogClosing(object sender, MaterialDesignThemes.Wpf.DialogClosingEventArgs eventArgs)
111 | {
112 | if ((Int16)eventArgs.Parameter == 1)
113 | {
114 | if (keyBox.Text == "")
115 | {
116 | MessageBox.Show(Tx.T("errors.No key entered"), Tx.T("errors.Error"), MessageBoxButton.OK, MessageBoxImage.Error);
117 | eventArgs.Cancel();
118 | }
119 | else
120 | {
121 | string test;
122 | try
123 | {
124 | using (HttpClient wc = new HttpClient())
125 | {
126 | test = await wc.GetStringAsync("https://osu.ppy.sh/api/get_user?k=" + keyBox.Text + "&u=Cookiezi&m=3");
127 | Settings.Default.apikey = keyBox.Text;
128 | }
129 | hasApiKey = true;
130 | osuExpander.IsEnabled = true;
131 | Settings.Default.RippleOnly = false;
132 | Settings.Default.Save();
133 | }
134 | catch (Exception)
135 | {
136 | MessageBox.Show(Tx.T("errors.Invalid key"), Tx.T("errors.Error"), MessageBoxButton.OK, MessageBoxImage.Error);
137 | eventArgs.Cancel();
138 | }
139 | }
140 | }
141 | else if ((Int16)eventArgs.Parameter == 0)
142 | {
143 | MessageBox.Show(Tx.T("errors.You need a key"), Tx.T("errors.Error"), MessageBoxButton.OK, MessageBoxImage.Error);
144 | Application.Current.Shutdown();
145 | }
146 | else if ((Int16)eventArgs.Parameter == -1)
147 | {
148 | osuExpander.IsEnabled = false;
149 | hasApiKey = false;
150 | Settings.Default.RippleOnly = true;
151 | Settings.Default.Save();
152 | drawerUnbold();
153 | goRippleOnePlayer.FontWeight = FontWeights.SemiBold;
154 | actionBar_Text.Content = "Ripple!rank - " + Tx.T("osu rank.One player");
155 | WindowContent.Navigate(new RipplePages.OneUser());
156 | }
157 | }
158 | string osuRankAppdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\osu-rank";
159 | private async Task checkForDictUpdate()
160 | {
161 |
162 | if (!Directory.Exists(osuRankAppdata))
163 | {
164 | Directory.CreateDirectory(osuRankAppdata);
165 | }
166 | if (!File.Exists(osuRankAppdata + @"\txdVersion.txt"))
167 | {
168 | await WebUtils.DownloadAsync(@"https://raw.githubusercontent.com/otaku-overclocks/osu-rank/master/osu-rank/osu-rank/Translation/txdVersion.txt", osuRankAppdata + @"\txdVersion.txt");
169 | await WebUtils.DownloadAsync(@"https://raw.githubusercontent.com/otaku-overclocks/osu-rank/master/osu-rank/osu-rank/Translation/osu_rank.txd", osuRankAppdata + @"\osu_rank.txd");
170 |
171 | }
172 | else
173 | {
174 | int onlineTxdVersion = Convert.ToInt32(await new HttpClient().GetStringAsync(@"https://raw.githubusercontent.com/otaku-overclocks/osu-rank/master/osu-rank/osu-rank/Translation/txdVersion.txt"));
175 | int localTxdVersion = Convert.ToInt32(File.ReadAllText(osuRankAppdata + @"\txdVersion.txt"));
176 | if (onlineTxdVersion <= localTxdVersion)
177 | {
178 | await WebUtils.DownloadAsync(@"https://raw.githubusercontent.com/otaku-overclocks/osu-rank/master/osu-rank/osu-rank/Translation/txdVersion.txt", osuRankAppdata + @"\txdVersion.txt");
179 | await WebUtils.DownloadAsync(@"https://raw.githubusercontent.com/otaku-overclocks/osu-rank/master/osu-rank/osu-rank/Translation/osu_rank.txd", osuRankAppdata + @"\osu_rank.txd");
180 | }
181 | }
182 | }
183 |
184 | private async void windowLoaded(object sender, RoutedEventArgs e)
185 | {
186 | Tx.LoadFromEmbeddedResource("osu_rank.Translation.osu_rank.txd");
187 | if (Settings.Default.apikey == "" && Settings.Default.RippleOnly == false)
188 | {
189 | osuExpander.IsEnabled = true;
190 | hasApiKey = false;
191 | apiDialog.IsOpen = true;
192 | }
193 | else if (Settings.Default.RippleOnly == true)
194 | {
195 | osuExpander.IsEnabled = false;
196 | hasApiKey = false;
197 | drawerUnbold();
198 | goRippleOnePlayer.FontWeight = FontWeights.SemiBold;
199 | actionBar_Text.Content = "Ripple!rank - " + Tx.T("osu rank.One player");
200 | WindowContent.Navigate(new RipplePages.OneUser());
201 | }
202 | else if (Settings.Default.apikey != "" && Settings.Default.RippleOnly == false)
203 | {
204 | osuExpander.IsEnabled = true;
205 | hasApiKey = true;
206 | }
207 | await checkForDictUpdate();
208 | if (Convert.ToInt32(File.ReadAllText(osuRankAppdata + @"\txdVersion.txt"))>App.minTxdVersionRequired)
209 | Tx.LoadFromXmlFile(osuRankAppdata + @"\osu_rank.txd");
210 | if (App.HasCheckedForUpdates == false)
211 | {
212 | App.HasCheckedForUpdates = true;
213 | try
214 | {
215 | string webVersion = await new HttpClient().GetStringAsync("https://raw.githubusercontent.com/Jeremiidesu/osu-rank/master/osu-rank/osu-rank/version.txt");
216 | if (Convert.ToInt32(webVersion) > App.version)
217 | { // New release available
218 | var updateYesNo = MessageBox.Show(Tx.T("update.text"), Tx.T("update.Title"), MessageBoxButton.YesNo, MessageBoxImage.Information);
219 | if (updateYesNo == MessageBoxResult.Yes)
220 | {
221 | Process.Start("https://github.com/Jeremiidesu/osu-rank/releases");
222 | }
223 | }
224 | }
225 | catch (Exception) { }
226 | }
227 | Ping myPing = new Ping();
228 | string host = "osu.ppy.sh";
229 | byte[] buffer = new byte[32];
230 | int timeout = 5000;
231 | PingOptions pingOptions = new PingOptions();
232 | PingReply reply = myPing.Send(host, timeout, buffer, pingOptions);
233 | if (reply.Status != IPStatus.Success)
234 | {
235 | MessageBox.Show(Tx.T("osu rank.Servers unavailable"), Tx.T("errors.Error"), MessageBoxButton.OK, MessageBoxImage.Error);
236 | Environment.Exit(0);
237 | }
238 | }
239 |
240 | private void keyPrompt_Click(object sender, RoutedEventArgs e)
241 | {
242 | Process.Start("http://osu.ppy.sh/p/api");
243 | }
244 |
245 | private void goAbout_MouseDown(object sender, MouseButtonEventArgs e)
246 | {
247 | drawerUnbold();
248 | Label lbl = sender as Label;
249 | lbl.FontWeight = FontWeights.SemiBold;
250 | actionBar_Text.Content = "osu!rank - " + Tx.T("osu rank.About");
251 | WindowContent.Navigate(new About());
252 | closeDrawer();
253 | }
254 |
255 | private void goRippleOneUser_Click(object sender, MouseButtonEventArgs e)
256 | {
257 | drawerUnbold();
258 | Label lbl = sender as Label;
259 | lbl.FontWeight = FontWeights.SemiBold;
260 | actionBar_Text.Content = "Ripple!rank - " + Tx.T("osu rank.One player");
261 | WindowContent.Navigate(new RipplePages.OneUser());
262 | closeDrawer();
263 | }
264 |
265 | private void goRippleCompare_Click(object sender, MouseButtonEventArgs e)
266 | {
267 | drawerUnbold();
268 | Label lbl = sender as Label;
269 | lbl.FontWeight = FontWeights.SemiBold;
270 | actionBar_Text.Content = "Ripple!rank - " + Tx.T("osu rank.Compare");
271 | WindowContent.Navigate(new RipplePages.Compare());
272 | closeDrawer();
273 | }
274 |
275 | private void osuExpander_mouseUp(object sender, MouseButtonEventArgs e)
276 | {
277 | if (hasApiKey==false)
278 | {
279 | apiDialog.IsOpen = true;
280 | }
281 | }
282 | }
283 | }
284 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Options.xaml:
--------------------------------------------------------------------------------
1 |
17 |
18 |
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 |
101 |
104 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Options.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Windows;
7 | using System.Windows.Controls;
8 | using System.Windows.Data;
9 | using System.Windows.Documents;
10 | using System.Windows.Input;
11 | using System.Windows.Media;
12 | using System.Windows.Media.Imaging;
13 | using System.Windows.Shapes;
14 | using System.Reflection;
15 | using System.Globalization;
16 | using Unclassified.TxLib;
17 | using System.Diagnostics;
18 | using System.Windows.Media.Animation;
19 | using System.Net;
20 | using osu_rank.Properties;
21 | using System.IO;
22 |
23 | namespace osurank
24 | {
25 | ///
26 | /// Logique d'interaction pour Options.xaml
27 | ///
28 | public partial class Options : Page
29 | {
30 | public Options()
31 | {
32 |
33 | InitializeComponent();
34 | }
35 |
36 |
37 | private void delaySlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs e)
38 | {
39 | AutorefreshStatus.Content = Tx.T("options.autorefresh.Delay", Convert.ToInt32(delay.Value));
40 | }
41 |
42 | private void autoRefresh_Enabled(object sender, RoutedEventArgs e)
43 | {
44 | AutorefreshStatus.Content = Tx.T("options.autorefresh.Delay", Convert.ToInt32(delay.Value));
45 | delay.IsEnabled = true;
46 | }
47 |
48 | private void autoRefresh_Disabled(object sender, RoutedEventArgs e)
49 | {
50 | AutorefreshStatus.Content = Tx.T("options.state.Disabled");
51 | delay.IsEnabled = false;
52 | }
53 | private void LanguageDropdown_Loaded(object sender, RoutedEventArgs e)
54 | {
55 | foreach (CultureInfo culture in Tx.AvailableCultures)
56 | {
57 | LanguageDropdown.Items.Add(culture.NativeName);
58 | }
59 | }
60 | private void loadSettings()
61 | {
62 | #region language
63 | int languageIndex = 0;
64 | foreach (string culture in Tx.AvailableCultureNames)
65 | {
66 | languageIndex += 1;
67 | if (culture == Settings.Default.LanguageCode)
68 | {
69 | LanguageDropdown.SelectedIndex = languageIndex;
70 | break;
71 | }
72 | }
73 | #endregion
74 | AutorefreshEnable.IsChecked = Settings.Default.RefreshEnable;
75 | if (Settings.Default.RefreshEnable == false)
76 | AutorefreshStatus.Content = Tx.T("options.state.Disabled");
77 | else
78 | delay.Value = Settings.Default.RefreshDelay;
79 | p1Input.Text = Settings.Default.DefaultPlayer;
80 | p2Input.Text = Settings.Default.DefaultPlayer2;
81 | gamemodeDropdown.SelectedIndex = Settings.Default.DefaultGamemode;
82 | startupCheck.IsChecked = Settings.Default.StartupCheck;
83 | }
84 | private void saveSettings()
85 | {
86 | if (LanguageDropdown.SelectedIndex == 0)
87 | {
88 | Settings.Default.LanguageCode = "";
89 | }
90 | else {
91 | Settings.Default.LanguageCode = Tx.AvailableCultures[LanguageDropdown.SelectedIndex - 1].Name;
92 | }
93 | Settings.Default.RefreshEnable = (bool)AutorefreshEnable.IsChecked;
94 | Settings.Default.RefreshDelay = (int)delay.Value;
95 | Settings.Default.DefaultPlayer = p1Input.Text;
96 | Settings.Default.DefaultPlayer2 = p2Input.Text;
97 | Settings.Default.DefaultGamemode = gamemodeDropdown.SelectedIndex;
98 | Settings.Default.StartupCheck = (bool)startupCheck.IsChecked;
99 | Settings.Default.Save();
100 | }
101 | string osuRankAppdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\osu-rank";
102 | private void OK_Click(object sender, RoutedEventArgs e)
103 | {
104 | saveSettings();
105 | #region language
106 | if (Settings.Default.LanguageCode != "")
107 | {
108 | System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo(Settings.Default.LanguageCode);
109 | }
110 | else if (Settings.Default.LanguageCode == "")
111 | {
112 | System.Threading.Thread.CurrentThread.CurrentCulture = App.systemCulture;
113 | }
114 |
115 | if (Convert.ToInt32(File.ReadAllText(osuRankAppdata + @"\txdVersion.txt")) > App.minTxdVersionRequired)
116 | Tx.LoadFromXmlFile(osuRankAppdata + @"\osu_rank.txd");
117 | else Tx.LoadFromEmbeddedResource("osu_rank.Translation.osu_rank.txd");
118 |
119 | #endregion
120 | if (Settings.Default.RefreshEnable == false)
121 | AutorefreshStatus.Content = Tx.T("options.state.Disabled");
122 | else
123 | AutorefreshStatus.Content = Tx.T("options.autorefresh.Delay", Convert.ToInt32(delay.Value));
124 | Storyboard animation = TryFindResource("settingsSaved") as Storyboard;
125 | animation.Begin();
126 | }
127 |
128 | private void Reset_Click(object sender, RoutedEventArgs e)
129 | {
130 | Settings.Default.Reset();
131 | OKButton.IsEnabled = false;
132 | testKey.IsEnabled = true;
133 | keyBox.Text = Settings.Default.apikey;
134 | loadSettings();
135 | }
136 |
137 | private void page_loaded(object sender, RoutedEventArgs e)
138 | {
139 | loadSettings();
140 | }
141 |
142 | private void keyBox_TextChanged(object sender, TextChangedEventArgs e)
143 | {
144 | TextBox txtBox = sender as TextBox;
145 | if (txtBox.Text != Settings.Default.apikey)
146 | {
147 | OKButton.IsEnabled = false;
148 | testKey.IsEnabled = true;
149 | }
150 | }
151 |
152 | private void testKey_Click(object sender, RoutedEventArgs e)
153 | {
154 | if (keyBox.Text == "")
155 | {
156 | MessageBox.Show(Tx.T("errors.No key entered"), Tx.T("errors.Error"), MessageBoxButton.OK, MessageBoxImage.Error);
157 | }
158 | else
159 | {
160 | string test;
161 | try
162 | {
163 | using (WebClient wc = new WebClient())
164 | {
165 | test = wc.DownloadString("https://osu.ppy.sh/api/get_user?k=" + keyBox.Text + "&u=Cookiezi&m=3");
166 | Settings.Default.apikey = keyBox.Text;
167 | OKButton.IsEnabled = true;
168 | testKey.IsEnabled = false;
169 | }
170 | }
171 | catch (Exception)
172 | {
173 | MessageBox.Show(Tx.T("errors.Invalid key"), Tx.T("errors.Error"), MessageBoxButton.OK, MessageBoxImage.Error);
174 | }
175 | }
176 | }
177 | }
178 | }
179 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/OsuPages/Compare.xaml:
--------------------------------------------------------------------------------
1 |
15 |
16 |
17 |
18 |
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 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/OsuPages/Compare.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using System.Windows;
7 | using System.Windows.Controls;
8 | using System.Windows.Data;
9 | using System.Windows.Documents;
10 | using System.Windows.Input;
11 | using System.Windows.Media;
12 | using System.Windows.Media.Imaging;
13 | using System.Windows.Shapes;
14 | using Unclassified.TxLib;
15 | using System.Globalization;
16 | using System.Windows.Threading;
17 | using Newtonsoft.Json.Linq;
18 | using osu_rank.Properties;
19 |
20 | namespace osurank.osuPages
21 | {
22 | ///
23 | /// Logique d'interaction pour Compare.xaml
24 | ///
25 | public partial class Compare : Page
26 | {
27 | // ----- VARIABLES START -----
28 | FontWeight regular = FontWeights.Normal;
29 | FontWeight bold = FontWeights.Bold;
30 | DispatcherTimer autoRefresh = new DispatcherTimer();
31 | string username1 = Settings.Default.DefaultPlayer;
32 | string username2 = Settings.Default.DefaultPlayer2;
33 | int gamemode = Settings.Default.DefaultGamemode;
34 | NumberFormatInfo NFInoDecimal = (NumberFormatInfo)CultureInfo.CurrentCulture.NumberFormat.Clone();
35 | NumberFormatInfo NFIperformance = (NumberFormatInfo)CultureInfo.CurrentCulture.NumberFormat.Clone();
36 | // ------ VARIABLES END ------
37 | public Compare()
38 | {
39 | InitializeComponent();
40 | }
41 |
42 | private async void autoRefresh_Tick(object sender, EventArgs e)
43 | {
44 | await fetchUserData(username1,username2, gamemode, false);
45 | }
46 |
47 | private async void goCompare_Click(object sender, RoutedEventArgs e)
48 | {
49 | username1 = player1Input.Text;
50 | username2 = player2Input.Text;
51 | gamemode = gamemodeDropdown.SelectedIndex;
52 | await fetchUserData(username1, username2, gamemode);
53 | timerReset();
54 | }
55 |
56 | private void resetDifference()
57 | {
58 | diff_ranking.Content = Tx.T("comparator.n ranks", 0);
59 | diff_performance.Content = "0 pp";
60 | diff_acc.Content = "0.00%";
61 | diff_playcount.Content = "0";
62 | diff_totalscore.Content = "0";
63 | diff_rankedscore.Content = "0";
64 | }
65 | private async Task fetchUserData(string player_name1, string player_name2, int gamemode_index, bool show_errors = true)
66 | {
67 | // retrieve userdata
68 | dynamic userdata1 = await osu.GetUserAsync(player: player_name1, gamemode: gamemode_index, apikey: Settings.Default.apikey, showErrors:show_errors);
69 | dynamic userdata2 = await osu.GetUserAsync(player: player_name2, gamemode: gamemode_index, apikey: Settings.Default.apikey);
70 | dynamic player1 = null;
71 | dynamic player2 = null;
72 |
73 | // do nothing if player did not play or player is invalid
74 | if (Convert.ToString(userdata1[0]) == Convert.ToString(int.MaxValue)) { return; }
75 | if (Convert.ToString(userdata2[0]) == Convert.ToString(int.MaxValue)) { return; }
76 | if (userdata1[0].pp_rank == null | userdata1 == null) { return; }
77 | if (userdata2[0].pp_rank == null | userdata2 == null) { return; }
78 |
79 |
80 | if (userdata1[0] != null)
81 | {
82 | player1 = userdata1[0];
83 | p1_avatar.Source = new ImageSourceConverter().ConvertFromString("http://a.ppy.sh/" + player1.user_id) as ImageSource;
84 | p1_name.Content = Convert.ToString(player1.username);
85 | p1_ranking.Content = "#" + player1.pp_rank;
86 | p1_performance.Content = Convert.ToDouble(player1.pp_raw).ToString("n", NFIperformance) + " pp";
87 | p1_acc.Content = Math.Round(Convert.ToDouble(player1.accuracy), 2) + "%";
88 | p1_playcount.Content = Convert.ToInt32(player1.playcount).ToString("n", NFInoDecimal);
89 | p1_totalscore.Content = Convert.ToInt64(player1.total_score).ToString("n", NFInoDecimal);
90 | p1_rankedscore.Content = Convert.ToInt64(player1.ranked_score).ToString("n", NFInoDecimal);
91 | }
92 |
93 |
94 | if (userdata2[0] != null)
95 | {
96 | player2 = userdata2[0];
97 | p2_avatar.Source = new ImageSourceConverter().ConvertFromString("http://a.ppy.sh/" + player2.user_id) as ImageSource;
98 | p2_name.Content = Convert.ToString(player2.username);
99 | p2_ranking.Content = "#" + player2.pp_rank;
100 | p2_performance.Content = Convert.ToDouble(player2.pp_raw).ToString("n", NFIperformance) + " pp";
101 | p2_acc.Content = Math.Round(Convert.ToDouble(player2.accuracy), 2) + "%";
102 | p2_playcount.Content = Convert.ToInt32(player2.playcount).ToString("n", NFInoDecimal);
103 | p2_totalscore.Content = Convert.ToInt64(player2.total_score).ToString("n", NFInoDecimal);
104 | p2_rankedscore.Content = Convert.ToInt64(player2.ranked_score).ToString("n", NFInoDecimal);
105 | }
106 | playerAllregular(1); playerAllregular(2);
107 | if (player1 == player2 && player1 != null)
108 | {
109 | playerAllbold(1);
110 | playerAllbold(2);
111 | resetDifference();
112 | }
113 | else if (player1 == null && player2 != null)
114 | {
115 | playerAllbold(2);
116 | resetPlayer(1);
117 | resetDifference();
118 | }
119 | else if (player1 != null && player1 == null)
120 | {
121 | playerAllbold(1);
122 | resetPlayer(2);
123 | resetDifference();
124 | }
125 | else if (player1 == null && player2 == null)
126 | {
127 | resetPlayer(1);
128 | resetPlayer(2);
129 | resetDifference();
130 | }
131 | else compareStats(player1, player2);
132 |
133 | }
134 | private void compareStats(dynamic player1, dynamic player2)
135 | {
136 | #region comparison
137 | // variables to simplify comparison
138 | // player 1
139 | int p1ranking = Convert.ToInt32(player1.pp_rank);
140 | double p1pp = Convert.ToDouble(player1.pp_raw);
141 | double p1acc = Convert.ToDouble(player1.accuracy);
142 | int p1playcount = Convert.ToInt32(player1.playcount);
143 | long p1totalscore = Convert.ToInt64(player1.total_score);
144 | long p1rankedscore = Convert.ToInt64(player1.ranked_score);
145 | // player 2
146 | int p2ranking = Convert.ToInt32(player2.pp_rank);
147 | double p2pp = Convert.ToDouble(player2.pp_raw);
148 | double p2acc = Convert.ToDouble(player2.accuracy);
149 | int p2playcount = Convert.ToInt32(player2.playcount);
150 | long p2totalscore = Convert.ToInt64(player2.total_score);
151 | long p2rankedscore = Convert.ToInt64(player2.ranked_score);
152 | // difference
153 | long drankedscore, dtotalscore; int dranking, dplaycount; double dpp, dacc;
154 |
155 | // actual comparison display
156 | // pp and ranking
157 | if (p1pp > p2pp)
158 | {
159 | dranking = p2ranking - p1ranking;
160 | dpp = p1pp - p2pp;
161 | p1_ranking.FontWeight = bold;
162 | p1_performance.FontWeight = bold;
163 | }
164 | else
165 | {
166 | dranking = p1ranking - p2ranking;
167 | dpp = p2pp - p1pp;
168 | p2_ranking.FontWeight = bold;
169 | p2_performance.FontWeight = bold;
170 | }
171 | diff_ranking.Content = Tx.T("comparator.n ranks", dranking);
172 | diff_performance.Content = dpp.ToString("n", NFIperformance) + " pp";
173 | // acc
174 | if (p1acc > p2acc)
175 | {
176 | dacc = p1acc - p2acc;
177 | p1_acc.FontWeight = bold;
178 | }
179 | else
180 | {
181 | dacc = p2acc - p1acc;
182 | p2_acc.FontWeight = bold;
183 | }
184 | diff_acc.Content = dacc.ToString("n", NFIperformance) + "%";
185 | // playcount
186 | if (p1playcount > p2playcount)
187 | {
188 | dplaycount = p1playcount - p2playcount;
189 | p1_playcount.FontWeight = bold;
190 | }
191 | else
192 | {
193 | dplaycount = p2playcount - p1playcount;
194 | p2_playcount.FontWeight = bold;
195 | }
196 | diff_playcount.Content = dplaycount.ToString("n", NFInoDecimal);
197 | // totalscore
198 | if (p1totalscore > p2totalscore)
199 | {
200 | dtotalscore = p1totalscore - p2totalscore;
201 | p1_totalscore.FontWeight = bold;
202 | }
203 | else
204 | {
205 | dtotalscore = p2totalscore - p1totalscore;
206 | p2_totalscore.FontWeight = bold;
207 | }
208 | diff_totalscore.Content = dtotalscore.ToString("n", NFInoDecimal);
209 | // rankedscore
210 | if (p1rankedscore > p2rankedscore)
211 | {
212 | drankedscore = p1rankedscore - p2rankedscore;
213 | p1_rankedscore.FontWeight = bold;
214 | }
215 | else
216 | {
217 | drankedscore = p2rankedscore - p1rankedscore;
218 | p2_rankedscore.FontWeight = bold;
219 | }
220 | diff_rankedscore.Content = drankedscore.ToString("n", NFInoDecimal);
221 | #endregion
222 | }
223 |
224 | private void playerAllregular(int player)
225 | {
226 | if (player == 1)
227 | {
228 | p1_ranking.FontWeight = regular;
229 | p1_performance.FontWeight = regular;
230 | p1_acc.FontWeight = regular;
231 | p1_playcount.FontWeight = regular;
232 | p1_totalscore.FontWeight = regular;
233 | p1_rankedscore.FontWeight = regular;
234 | }
235 | else if (player == 2)
236 | {
237 | p2_ranking.FontWeight = regular;
238 | p2_performance.FontWeight = regular;
239 | p2_acc.FontWeight = regular;
240 | p2_playcount.FontWeight = regular;
241 | p2_totalscore.FontWeight = regular;
242 | p2_rankedscore.FontWeight = regular;
243 | }
244 | }
245 | private void playerAllbold(int player)
246 | {
247 | if (player == 1)
248 | {
249 | p1_ranking.FontWeight = bold;
250 | p1_performance.FontWeight = bold;
251 | p1_acc.FontWeight = bold;
252 | p1_playcount.FontWeight = bold;
253 | p1_totalscore.FontWeight = bold;
254 | p1_rankedscore.FontWeight = bold;
255 | }
256 | else if (player == 2)
257 | {
258 | p2_ranking.FontWeight = bold;
259 | p2_performance.FontWeight = bold;
260 | p2_acc.FontWeight = bold;
261 | p2_playcount.FontWeight = bold;
262 | p2_totalscore.FontWeight = bold;
263 | p2_rankedscore.FontWeight = bold;
264 | }
265 | }
266 | private void resetPlayer(int player)
267 | {
268 | if (player == 1)
269 | {
270 | p1_ranking.Content = "#0";
271 | p1_performance.Content = "0 pp";
272 | p1_acc.Content = "0.00%";
273 | p1_playcount.Content = "0";
274 | p1_totalscore.Content = "0";
275 | p1_rankedscore.Content = "0";
276 | }
277 | else if (player == 2)
278 | {
279 | p2_ranking.Content = "#0";
280 | p2_performance.Content = "0 pp";
281 | p2_acc.Content = "0.00%";
282 | p2_playcount.Content = "0";
283 | p2_totalscore.Content = "0";
284 | p2_rankedscore.Content = "0";
285 | }
286 | }
287 | private void timerReset()
288 | {
289 | autoRefresh.Stop();
290 | autoRefresh.Start();
291 | }
292 |
293 | private async void page_loaded(object sender, RoutedEventArgs e)
294 | {
295 | RenderOptions.SetBitmapScalingMode(p1_avatar, BitmapScalingMode.HighQuality); // Completes what the designer can't do
296 | RenderOptions.SetBitmapScalingMode(p2_avatar, BitmapScalingMode.HighQuality); //
297 | this.Title = this.Title + " - osu!rank"; //
298 | Settings.Default.LastWindow = "Compare";
299 | // NumberFormatInfo for Ranked/total score and play count
300 | NFInoDecimal.NumberGroupSeparator = ",";
301 | NFInoDecimal.NumberDecimalSeparator = ".";
302 | NFInoDecimal.NumberDecimalDigits = 0;
303 | // NumberFormatInfo for PPs
304 | NFIperformance.NumberGroupSeparator = ",";
305 | NFIperformance.NumberDecimalSeparator = ".";
306 |
307 | // Timer
308 | autoRefresh.Tick += new EventHandler(autoRefresh_Tick);
309 | autoRefresh.Interval = new TimeSpan(0, Settings.Default.RefreshDelay, 0);
310 | if (Settings.Default.StartupCheck == true)
311 | {
312 | await fetchUserData(username1, username2, gamemode);
313 | if (Settings.Default.RefreshEnable == true)
314 | {
315 | autoRefresh.Start();
316 | }
317 | }
318 | player1Input.Text = username1;
319 | player2Input.Text = username2;
320 | gamemodeDropdown.SelectedIndex = gamemode;
321 | }
322 | }
323 | }
324 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/OsuPages/OneUser.xaml:
--------------------------------------------------------------------------------
1 |
14 |
15 |
16 |
17 |
18 |
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 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Resources;
3 | using System.Runtime.CompilerServices;
4 | using System.Runtime.InteropServices;
5 | using System.Windows;
6 |
7 | // Les informations générales relatives à un assembly dépendent de
8 | // l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations
9 | // associées à un assembly.
10 | [assembly: AssemblyTitle("osu!rank")]
11 | [assembly: AssemblyDescription("")]
12 | [assembly: AssemblyConfiguration("")]
13 | [assembly: AssemblyCompany("")]
14 | [assembly: AssemblyProduct("osu!rank")]
15 | [assembly: AssemblyCopyright("Otaku Overclocks (c) 2016-2017")]
16 | [assembly: AssemblyTrademark("")]
17 | [assembly: AssemblyCulture("")]
18 |
19 | // L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly
20 | // aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de
21 | // COM, affectez la valeur true à l'attribut ComVisible sur ce type.
22 | [assembly: ComVisible(false)]
23 |
24 | //Pour commencer à générer des applications localisables, définissez
25 | //CultureUtiliséePourCoder dans votre fichier .csproj
26 | //dans . Par exemple, si vous utilisez le français
27 | //dans vos fichiers sources, définissez à fr-FR. Puis, supprimez les marques de commentaire de
28 | //l'attribut NeutralResourceLanguage ci-dessous. Mettez à jour "fr-FR" dans
29 | //la ligne ci-après pour qu'elle corresponde au paramètre UICulture du fichier projet.
30 |
31 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
32 |
33 |
34 | [assembly: ThemeInfo(
35 | ResourceDictionaryLocation.None, //où se trouvent les dictionnaires de ressources spécifiques à un thème
36 | //(utilisé si une ressource est introuvable dans la page,
37 | // ou dictionnaires de ressources de l'application)
38 | ResourceDictionaryLocation.SourceAssembly //où se trouve le dictionnaire de ressources générique
39 | //(utilisé si une ressource est introuvable dans la page,
40 | // dans l'application ou dans l'un des dictionnaires de ressources spécifiques à un thème)
41 | )]
42 |
43 |
44 | // Les informations de version pour un assembly se composent des quatre valeurs suivantes :
45 | //
46 | // Version principale
47 | // Version secondaire
48 | // Numéro de build
49 | // Révision
50 | //
51 | // Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut
52 | // en utilisant '*', comme indiqué ci-dessous :
53 | // [assembly: AssemblyVersion("1.0.*")]
54 | [assembly: AssemblyVersion("4.5.1.0")]
55 | [assembly: AssemblyFileVersion("4.5.1.0")]
56 | [assembly: NeutralResourcesLanguage("en")]
57 |
58 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // Ce code a été généré par un outil.
4 | // Version du runtime :4.0.30319.42000
5 | //
6 | // Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
7 | // le code est régénéré.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace osurank.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
17 | ///
18 | // Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
19 | // à l'aide d'un outil, tel que ResGen ou Visual Studio.
20 | // Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
21 | // avec l'option /str ou régénérez votre projet VS.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | public class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | public static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("osu_rank.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Remplace la propriété CurrentUICulture du thread actuel pour toutes
51 | /// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | public static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
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 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Properties/Resources.resx.xlf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 | Hello
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // Ce code a été généré par un outil.
4 | // Version du runtime :4.0.30319.42000
5 | //
6 | // Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
7 | // le code est régénéré.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace osu_rank.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("OneUser")]
29 | public string LastWindow {
30 | get {
31 | return ((string)(this["LastWindow"]));
32 | }
33 | set {
34 | this["LastWindow"] = value;
35 | }
36 | }
37 |
38 | [global::System.Configuration.UserScopedSettingAttribute()]
39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
40 | [global::System.Configuration.DefaultSettingValueAttribute("")]
41 | public string apikey {
42 | get {
43 | return ((string)(this["apikey"]));
44 | }
45 | set {
46 | this["apikey"] = value;
47 | }
48 | }
49 |
50 | [global::System.Configuration.UserScopedSettingAttribute()]
51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
52 | [global::System.Configuration.DefaultSettingValueAttribute("True")]
53 | public bool RefreshEnable {
54 | get {
55 | return ((bool)(this["RefreshEnable"]));
56 | }
57 | set {
58 | this["RefreshEnable"] = value;
59 | }
60 | }
61 |
62 | [global::System.Configuration.UserScopedSettingAttribute()]
63 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
64 | [global::System.Configuration.DefaultSettingValueAttribute("15")]
65 | public int RefreshDelay {
66 | get {
67 | return ((int)(this["RefreshDelay"]));
68 | }
69 | set {
70 | this["RefreshDelay"] = value;
71 | }
72 | }
73 |
74 | [global::System.Configuration.UserScopedSettingAttribute()]
75 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
76 | [global::System.Configuration.DefaultSettingValueAttribute("peppy")]
77 | public string DefaultPlayer {
78 | get {
79 | return ((string)(this["DefaultPlayer"]));
80 | }
81 | set {
82 | this["DefaultPlayer"] = value;
83 | }
84 | }
85 |
86 | [global::System.Configuration.UserScopedSettingAttribute()]
87 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
88 | [global::System.Configuration.DefaultSettingValueAttribute("Cookiezi")]
89 | public string DefaultPlayer2 {
90 | get {
91 | return ((string)(this["DefaultPlayer2"]));
92 | }
93 | set {
94 | this["DefaultPlayer2"] = value;
95 | }
96 | }
97 |
98 | [global::System.Configuration.UserScopedSettingAttribute()]
99 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
100 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
101 | public int DefaultGamemode {
102 | get {
103 | return ((int)(this["DefaultGamemode"]));
104 | }
105 | set {
106 | this["DefaultGamemode"] = value;
107 | }
108 | }
109 |
110 | [global::System.Configuration.UserScopedSettingAttribute()]
111 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
112 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
113 | public bool StartupCheck {
114 | get {
115 | return ((bool)(this["StartupCheck"]));
116 | }
117 | set {
118 | this["StartupCheck"] = value;
119 | }
120 | }
121 |
122 | [global::System.Configuration.UserScopedSettingAttribute()]
123 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
124 | [global::System.Configuration.DefaultSettingValueAttribute("")]
125 | public string LanguageCode {
126 | get {
127 | return ((string)(this["LanguageCode"]));
128 | }
129 | set {
130 | this["LanguageCode"] = value;
131 | }
132 | }
133 |
134 | [global::System.Configuration.UserScopedSettingAttribute()]
135 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
136 | [global::System.Configuration.DefaultSettingValueAttribute("True")]
137 | public bool CanUpgrade {
138 | get {
139 | return ((bool)(this["CanUpgrade"]));
140 | }
141 | set {
142 | this["CanUpgrade"] = value;
143 | }
144 | }
145 |
146 | [global::System.Configuration.UserScopedSettingAttribute()]
147 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
148 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
149 | public bool RippleOnly {
150 | get {
151 | return ((bool)(this["RippleOnly"]));
152 | }
153 | set {
154 | this["RippleOnly"] = value;
155 | }
156 | }
157 | }
158 | }
159 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | OneUser
7 |
8 |
9 |
10 |
11 |
12 | True
13 |
14 |
15 | 15
16 |
17 |
18 | peppy
19 |
20 |
21 | Cookiezi
22 |
23 |
24 | 0
25 |
26 |
27 | False
28 |
29 |
30 |
31 |
32 |
33 | True
34 |
35 |
36 | False
37 |
38 |
39 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/RipplePages/Compare.xaml:
--------------------------------------------------------------------------------
1 |
15 |
16 |
17 |
18 |
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 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/RipplePages/OneUser.xaml:
--------------------------------------------------------------------------------
1 |
14 |
15 |
16 |
17 |
18 |
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 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/S@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/S@2x.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Settings.cs:
--------------------------------------------------------------------------------
1 | namespace osu_rank.Properties {
2 |
3 |
4 | // Cette classe vous permet de gérer des événements spécifiques dans la classe de paramètres :
5 | // L'événement SettingChanging est déclenché avant la modification d'une valeur de paramètre.
6 | // L'événement PropertyChanged est déclenché après la modification d'une valeur de paramètre.
7 | // L'événement SettingsLoaded est déclenché après le chargement des valeurs de paramètre.
8 | // L'événement SettingsSaving est déclenché avant l'enregistrement des valeurs de paramètre.
9 | internal sealed partial class Settings {
10 |
11 | public Settings() {
12 | // // Pour ajouter des gestionnaires d'événements afin d'enregistrer et de modifier les paramètres, supprimez les marques de commentaire des lignes ci-dessous :
13 | //
14 | // this.SettingChanging += this.SettingChangingEventHandler;
15 | //
16 | // this.SettingsSaving += this.SettingsSavingEventHandler;
17 | //
18 | }
19 |
20 | private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
21 | // Ajouter du code pour gérer l'événement SettingChangingEvent ici.
22 | }
23 |
24 | private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
25 | // Ajouter du code pour gérer l'événement SettingsSaving ici.
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Stringlists/README.md:
--------------------------------------------------------------------------------
1 | ## How to translate:
2 | * Look first if your language is in the table below.
3 | * If it is, you can update it if its line isn't bolded
4 | * Just translate all the files with an higher version number than the current one, then open an issue with translated strings
5 | * If it's not there, just translate all the files.
6 |
7 | ### If you have a GitHub account, you can either...
8 | * [Open an issue](https://github.com/Jeremiidesu/osu-rank/issues)
9 | * Edit the file yourself and open a pull request
10 |
11 | ### If you don't have a GitHub account
12 | * Send a private message to either Jeremiidesu or Mark9870 on the osu! forums.
13 | * You also can post the translations on the forum post.
14 |
15 | ## Translation support (outdated, needs recheck)
16 |
17 | | Language | Translators | Last updated version |
18 | |------------------------|-----------------------|----------------------|
19 | | **English** | **Jeremiidesu** | **4.5** |
20 | | **French** | **Jeremiidesu** | **4.5** |
21 | | Italian | LLoyd-chan | 4.3 |
22 | | Russian | Killerbyte | 4.0 |
23 | | Indonesian | Alv | 4.0 |
24 | | Hungarian | Zozimoto | 4.3 |
25 | | Portuguese (Brasil) | nh__, Tark | 4.3 |
26 | | Turkish | oralekin | 4.0 |
27 | | Spanish | Yoshitake | 4.3 |
28 | | German | guro | 4.0 |
29 | | Chinese (Simplified) | Karma, zheshenmeyouxi | 4.0 |
30 | | Polish | Zain Sugieres | 4.3 |
31 | | **Swedish** | **- Kameyo -** | **4.5** |
32 | | Filipino | Mark9870 | 4.4 |
33 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Stringlists/StringList 3.0.txt:
--------------------------------------------------------------------------------
1 | The language you're translating to:
2 | Your username:
3 |
4 | --- Translate what's under this line ---
5 |
6 | Comparator=
7 | Difference=
8 | {#} rank=
9 | {#} ranks=
10 | Player {#}=
11 |
12 | {name} did not play this gamemode.=
13 | {name} does not exist. Did you make a typo?=
14 | Error=
15 | You didn't enter a name!=
16 |
17 | Language=
18 |
19 | Auto refresh=
20 | Delay=
21 | {#} minutes=
22 | {#} minute=
23 | Cancel=
24 | OK=
25 | Check on startup=
26 | Default player settings=
27 | Report a bug=
28 | Reset default values=
29 |
30 | Disabled=
31 | Enabled=
32 |
33 | Compare=
34 | Gamemode=
35 | One player=
36 | Search=
37 | We're sorry but it looks like the osu! servers are unavailable. Please try again later.=
38 | Settings=
39 |
40 | Accuracy=
41 | Enter a name=
42 | Level=
43 | Player name=
44 | Performance=
45 | Play count=
46 | Ranked score=
47 | Ranking=
48 | Total score=
49 | User ID=
50 |
51 | A new version is available! Do you want to download it?=
52 | Update available=
53 |
54 | translated by {name}=
55 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Stringlists/StringList 3.1.txt:
--------------------------------------------------------------------------------
1 | Language you're translating to:
2 | Your username:
3 |
4 | ---- Translate under this line ----
5 |
6 | Save=
7 | Saved=
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Stringlists/StringList 4.0.txt:
--------------------------------------------------------------------------------
1 | Language you're translating to:
2 | Your username:
3 |
4 | ---- Translate under this line ----
5 |
6 | Your API key is incorrect.=
7 | You didn't enter a key!=
8 |
9 | API key=
10 | Enter your osu! API key=
11 | No key? Get one here!=
12 | You need an API key if you want to use the program.=
13 | osu!rank will now close.=
14 |
15 | Test key=
16 |
17 | About osu!rank=
18 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Stringlists/StringList 4.3.txt:
--------------------------------------------------------------------------------
1 | Language you're translating to:
2 | Your username:
3 |
4 | ---- Translate under this line ----
5 |
6 | Updated {time} ago=
7 | (Example: "Updated 00:14:59 ago")
8 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Stringlists/StringList 4.4.txt:
--------------------------------------------------------------------------------
1 | Language you're translating to:
2 | Your username:
3 |
4 | ---- Translate under this line ----
5 |
6 | PP not implemented yet=
7 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Stringlists/StringList 4.5.txt:
--------------------------------------------------------------------------------
1 | Language you're translating to:
2 | Your username:
3 |
4 | ---- Translate under this line ----
5 |
6 | I only want Ripple=
7 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Translation/README.md:
--------------------------------------------------------------------------------
1 | find the stringlists [here](https://github.com/otaku-overclocks/osu-rank/tree/master/osu-rank/osu-rank/Stringlists)
2 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/Translation/txdVersion.txt:
--------------------------------------------------------------------------------
1 | 4
2 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/X@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/X@2x.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/osu!rank-icon-by-Xial.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/osu!rank-icon-by-Xial.ico
--------------------------------------------------------------------------------
/osu-rank/osu-rank/osu!rank-icon-by-Xial.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/osu!rank-icon-by-Xial.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/osu-small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/osu-small.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/osu-rank/osu-rank/std-small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otaku-overclocks/osu-rank/a78cddc13148dcd3244dd5348ef1907399fee762/osu-rank/osu-rank/std-small.png
--------------------------------------------------------------------------------
/osu-rank/osu-rank/version.txt:
--------------------------------------------------------------------------------
1 | 31
--------------------------------------------------------------------------------