fuck anonymous objects

This commit is contained in:
Assistant 2020-02-18 01:39:31 -07:00
parent 88927d8549
commit d121c02336
3 changed files with 43 additions and 5 deletions

View file

@ -26,6 +26,7 @@ namespace ModAssistant
public const string BeatModsAPIUrl = "https://beatmods.com/api/v1/";
public const string TeknikAPIUrl = "https://api.teknik.io/v1/";
public const string BeatModsURL = "https://beatmods.com";
public const string BeatModsAlias = "https://alias.beatmods.com/aliases.json";
public const string WeebCDNAPIURL = "https://pat.assistant.moe/api/v1.0/";
public const string BeatModsModsOptions = "mod?status=approved";
public const string MD5Spacer = " ";

View file

@ -72,8 +72,8 @@
<TextBlock FontSize="10">
<TextBlock Text="{DynamicResource MainWindow:GameVersionLabel}" />:
</TextBlock>
<ComboBox Name="GameVersionsBox" Margin="0,5,5,0" SelectionChanged="GameVersionsBox_SelectionChanged">
</ComboBox>
<ComboBox Name="GameVersionsBox" Margin="0,5,5,0" SelectionChanged="GameVersionsBox_SelectionChanged" />
<ComboBox Name="GameVersionsBoxOverride" Margin="0,5,5,0" Visibility="Collapsed" />
</StackPanel>
</Grid>

View file

@ -18,6 +18,7 @@ namespace ModAssistant
public static MainWindow Instance;
public static bool ModsOpened = false;
public static string GameVersion;
public static string GameVersionOverride;
public TaskCompletionSource<bool> VersionLoadStatus = new TaskCompletionSource<bool>();
public string MainText
@ -89,15 +90,27 @@ namespace ModAssistant
{
var resp = await HttpClient.GetAsync(Utils.Constants.BeatModsAPIUrl + "version");
var body = await resp.Content.ReadAsStringAsync();
List<string> versions = JsonSerializer.Deserialize<string[]>(body).ToList();
resp = await HttpClient.GetAsync(Utils.Constants.BeatModsAlias);
body = await resp.Content.ReadAsStringAsync();
object jsonObject = JsonSerializer.DeserializeObject(body);
Dispatcher.Invoke(() =>
{
GameVersion = GetGameVersion(versions);
GameVersion = GetGameVersion(versions, jsonObject);
GameVersionsBox.ItemsSource = versions;
GameVersionsBox.SelectedValue = GameVersion;
if (!string.IsNullOrEmpty(GameVersionOverride))
{
GameVersionsBox.Visibility = Visibility.Collapsed;
GameVersionsBoxOverride.Visibility = Visibility.Visible;
GameVersionsBoxOverride.Text = GameVersionOverride;
GameVersionsBoxOverride.IsEnabled = false;
}
if (!string.IsNullOrEmpty(GameVersion) && Properties.Settings.Default.Agreed)
{
MainWindow.Instance.ModsButton.IsEnabled = true;
@ -118,7 +131,7 @@ namespace ModAssistant
}
}
private string GetGameVersion(List<string> versions)
private string GetGameVersion(List<string> versions, object aliases)
{
string version = Utils.GetVersion();
if (!string.IsNullOrEmpty(version) && versions.Contains(version))
@ -126,6 +139,12 @@ namespace ModAssistant
return version;
}
string aliasOf = CheckAliases(versions, aliases, version);
if (!string.IsNullOrEmpty(aliasOf))
{
return aliasOf;
}
string versionsString = String.Join(",", versions.ToArray());
if (Properties.Settings.Default.AllGameVersions != versionsString)
{
@ -145,6 +164,24 @@ namespace ModAssistant
return versions[0];
}
private string CheckAliases(List<string> versions, object aliases, string detectedVersion)
{
Dictionary<string, object> Objects = (Dictionary<string, object>)aliases;
foreach (string version in versions)
{
object[] aliasArray = (object[])Objects[version];
foreach (object alias in aliasArray)
{
if (alias.ToString() == detectedVersion)
{
GameVersionOverride = detectedVersion;
return version;
}
}
}
return string.Empty;
}
private async Task ShowModsPage()
{
void OpenModsPage()