Skip to content

Commit

Permalink
Remote: Implement multiple base games
Browse files Browse the repository at this point in the history
  • Loading branch information
suchmememanyskill committed Jun 13, 2024
1 parent 0012fce commit c50299d
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 21 deletions.
40 changes: 20 additions & 20 deletions LauncherGamePlugin/Forms/Form.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,31 +66,31 @@ public static Form CreateDismissibleTextPrompt(string text, IApp app)
});
}

public static FormEntry TextInput(string label, string value = "")
=> new TextInputElement(label, value);
public static TextInputElement TextInput(string label, string value = "")
=> new(label, value);

public static TextBoxElement TextBox(string text, FormAlignment alignment = FormAlignment.Default,
string fontWeight = "")
=> new(text, fontWeight, alignment: alignment);

public static FormEntry ClickableLinkBox(string text, Action<Form> action,
public static ClickableLinkBoxElement ClickableLinkBox(string text, Action<Form> action,
FormAlignment alignment = FormAlignment.Default, string fontWeight = "")
=> new ClickableLinkBoxElement(text, alignment: alignment, linkClick: x => action(x.ContainingForm), value: fontWeight);
=> new(text, alignment: alignment, linkClick: x => action(x.ContainingForm), value: fontWeight);

public static FormEntry Toggle(string label, bool value, FormAlignment alignment = FormAlignment.Default, bool enabled = true)
=> new ToggleElement(label, value ? "1" : "0", alignment: alignment, enabled: enabled);
public static ToggleElement Toggle(string label, bool value, FormAlignment alignment = FormAlignment.Default, bool enabled = true)
=> new(label, value ? "1" : "0", alignment: alignment, enabled: enabled);

public static FormEntry FilePicker(string label, string value = "")
=> new FilePickerElement(label, value);
public static FilePickerElement FilePicker(string label, string value = "")
=> new(label, value);

public static FormEntry FolderPicker(string label, string value = "")
=> new FolderPickerElement(label, value);
public static FolderPickerElement FolderPicker(string label, string value = "")
=> new(label, value);

public static FormEntry Dropdown(string label, List<string> dropdownOptions, string value = "")
=> new DropdownElement(label, value, dropdownOptions: dropdownOptions);
public static DropdownElement Dropdown(string label, List<string> dropdownOptions, string value = "")
=> new(label, value, dropdownOptions: dropdownOptions);

public static FormEntry ButtonList(List<ButtonEntry> buttons, FormAlignment alignment = FormAlignment.Default)
=> new ButtonListElement(buttons: buttons, alignment: alignment);
public static ButtonListElement ButtonList(List<ButtonEntry> buttons, FormAlignment alignment = FormAlignment.Default)
=> new(buttons: buttons, alignment: alignment);

public static FormEntry Button(string label, Action<Form> action, FormAlignment alignment = FormAlignment.Default)
=> ButtonList(new() {new(label, action)}, alignment);
Expand All @@ -101,14 +101,14 @@ public static FormEntry Button(string label1, Action<Form> action1, string label
public static FormEntry Button(string label1, Action<Form> action1, string label2, Action<Form> action2, string label3, Action<Form> action3, FormAlignment alignment = FormAlignment.Default)
=> ButtonList(new() {new(label1, action1), new(label2, action2), new(label3, action3)}, alignment);

public static FormEntry Image(string label, Func<Task<byte[]?>> image, Action<Form>? onClick = null, FormAlignment alignment = FormAlignment.Default)
=> new ImageElement(label, getImage: image, alignment: alignment, click: x => onClick?.Invoke(x.ContainingForm));
public static ImageElement Image(string label, Func<Task<byte[]?>> image, Action<Form>? onClick = null, FormAlignment alignment = FormAlignment.Default)
=> new(label, getImage: image, alignment: alignment, click: x => onClick?.Invoke(x.ContainingForm));

public static FormEntry Horizontal(List<FormEntry> entries, int spacing = 5, FormAlignment alignment = FormAlignment.Default)
=> new HorizontalPanelElement(entries: entries, value: spacing.ToString(), alignment: alignment);
public static HorizontalPanelElement Horizontal(List<FormEntry> entries, int spacing = 5, FormAlignment alignment = FormAlignment.Default)
=> new(entries: entries, value: spacing.ToString(), alignment: alignment);

public static FormEntry Separator(int height = 1)
=> new SeperatorElement(value: height.ToString());
public static SeperatorElement Separator(int height = 1)
=> new(value: height.ToString());
}

public static class FormExtensions
Expand Down
25 changes: 25 additions & 0 deletions RemoteDownloaderPlugin/Game/OnlineGame.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
using LauncherGamePlugin;
using LauncherGamePlugin.Enums;
using LauncherGamePlugin.Extensions;
using LauncherGamePlugin.Forms;
using LauncherGamePlugin.Interfaces;

namespace RemoteDownloaderPlugin.Game;
Expand Down Expand Up @@ -47,6 +49,29 @@ public OnlineGame(IEntry entry, Plugin plugin)

public async Task Download()
{
if (Entry is EmuEntry emuEntry)
{
var baseFiles = emuEntry.Files.Where(x => x.Type == "base").ToList();
if (baseFiles.Count >= 2)
{
var form = new Form(new());

form.FormEntries.Add(Form.TextBox("Pick a base edition of the game:", FormAlignment.Center, "Bold"));

baseFiles.ForEach(x => form.FormEntries.Add(Form.ClickableLinkBox($"{x.Name}: {x.DownloadSize.ReadableSize()}", _ =>
{
emuEntry.Files.RemoveAll(y => y.Type == "base" && y.Name != x.Name);
Download();
_plugin.App.HideForm();
}, FormAlignment.Left)));

form.FormEntries.Add(Form.Button("Back", _ => _plugin.App.HideForm()));

_plugin.App.ShowForm(form);
return;
}
}

_download = new GameDownload(Entry);
OnUpdate?.Invoke();

Expand Down
2 changes: 1 addition & 1 deletion SteamGridDbMiddleware/Gui/OnImageEdit.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public async void ShowGui()
foreach (var imageGroup in imageGroups)
{
List<FormEntry> i = imageGroup
.Select(x => Form.Image($"By {x.Author}", () => Storage.ImageDownload(x.Url), _ => Set(x)))
.Select(x => (FormEntry) Form.Image($"By {x.Author}", () => Storage.ImageDownload(x.Url), _ => Set(x)))
.ToList();

if (i.Count == 1)
Expand Down

0 comments on commit c50299d

Please sign in to comment.