Remove built-in Init method

This commit is contained in:
Yoshi Askharoun
2024-05-20 23:43:21 -05:00
parent 49479d4cd9
commit 249681c7bd
4 changed files with 23 additions and 8 deletions
-2
View File
@@ -56,8 +56,6 @@ public abstract class Mod
public virtual AbstractUICollection? GetDefaultOptionsUI() => null;
public virtual Task Init() => Task.CompletedTask;
public abstract Task<string?> Apply();
public abstract Task<string?> Reset();
+9 -2
View File
@@ -1,12 +1,14 @@
using OwlCore.AbstractUI.Models;
using OwlCore.ComponentModel;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using ZuneModCore.Win32;
namespace ZuneModCore.Mods;
public class FeaturesOverrideMod : Mod
public class FeaturesOverrideMod : Mod, IAsyncInit
{
private const string ZUNE_FEATURESOVERRIDE_REGKEY = RegEdit.ZUNE_REG_PATH + "FeaturesOverride";
@@ -57,8 +59,12 @@ public class FeaturesOverrideMod : Mod
public override IReadOnlyList<Type>? DependentMods => null;
public override Task Init()
public bool IsInitialized { get; private set; }
public Task InitAsync(CancellationToken token = default)
{
if (IsInitialized) return Task.CompletedTask;
foreach (AbstractUIElement uiElem in OptionsUI!)
{
if (uiElem is AbstractBoolean boolElem)
@@ -68,6 +74,7 @@ public class FeaturesOverrideMod : Mod
}
}
IsInitialized = true;
return Task.CompletedTask;
}
+9 -2
View File
@@ -1,4 +1,5 @@
using OwlCore.AbstractUI.Models;
using OwlCore.ComponentModel;
using System;
using System.Collections.Generic;
using System.IO;
@@ -9,7 +10,7 @@ using static ZuneModCore.Mods.FeaturesOverrideMod;
namespace ZuneModCore.Mods;
public class WebservicesMod : Mod
public class WebservicesMod : Mod, IAsyncInit
{
private const int ZUNESERVICES_ENDPOINTS_BLOCK_OFFSET = 0x14D60;
private const int ZUNESERVICES_ENDPOINTS_BLOCK_LENGTH = 0x884;
@@ -86,8 +87,13 @@ public class WebservicesMod : Mod
public override IReadOnlyList<Type>? DependentMods => null;
public override Task Init()
public bool IsInitialized { get; private set; }
public Task InitAsync(CancellationToken token = default)
{
if (IsInitialized)
return Task.CompletedTask;
_client = new()
{
Timeout = TimeSpan.FromSeconds(3)
@@ -97,6 +103,7 @@ public class WebservicesMod : Mod
newHostBox.ValueChanged += OnHostChanged;
newHostBox.Value = "zunes.me";
IsInitialized = true;
return Task.CompletedTask;
}
+5 -2
View File
@@ -1,5 +1,6 @@
using CommunityToolkit.Mvvm.Messaging;
using OwlCore.AbstractUI.Models;
using OwlCore.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using ZuneModCore;
@@ -43,7 +44,8 @@ namespace ZuneModdingHelper.Pages
mod.ZuneInstallDir = _modConfig.ZuneInstallDir;
// Stage 0: Initialize mod
await mod.Init();
if (mod is IAsyncInit initMod)
await initMod.InitAsync();
++progDialog.Progress;
// Stage 1: Display AbstractUI for options
@@ -105,7 +107,8 @@ namespace ZuneModdingHelper.Pages
mod.ZuneInstallDir = _modConfig.ZuneInstallDir;
await mod.Init();
if (mod is IAsyncInit initMod)
await initMod.InitAsync();
++progDialog.Progress;
// TODO: Implement AbstractUI display for reset options