From 249681c7bd78d231dd129678f9751179506ab6cb Mon Sep 17 00:00:00 2001 From: Yoshi Askharoun Date: Mon, 20 May 2024 23:43:21 -0500 Subject: [PATCH] Remove built-in Init method --- ZuneModCore/Mod.cs | 2 -- ZuneModCore/Mods/FeaturesOverrideMod.cs | 11 +++++++++-- ZuneModCore/Mods/WebservicesMod.cs | 11 +++++++++-- ZuneModdingHelper/Pages/ModsPage.xaml.cs | 7 +++++-- 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/ZuneModCore/Mod.cs b/ZuneModCore/Mod.cs index 5e4b31c..d8630cf 100644 --- a/ZuneModCore/Mod.cs +++ b/ZuneModCore/Mod.cs @@ -56,8 +56,6 @@ public abstract class Mod public virtual AbstractUICollection? GetDefaultOptionsUI() => null; - public virtual Task Init() => Task.CompletedTask; - public abstract Task Apply(); public abstract Task Reset(); diff --git a/ZuneModCore/Mods/FeaturesOverrideMod.cs b/ZuneModCore/Mods/FeaturesOverrideMod.cs index 224590d..be9a30a 100644 --- a/ZuneModCore/Mods/FeaturesOverrideMod.cs +++ b/ZuneModCore/Mods/FeaturesOverrideMod.cs @@ -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? 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; } diff --git a/ZuneModCore/Mods/WebservicesMod.cs b/ZuneModCore/Mods/WebservicesMod.cs index 5a3c9fe..fca2bb1 100644 --- a/ZuneModCore/Mods/WebservicesMod.cs +++ b/ZuneModCore/Mods/WebservicesMod.cs @@ -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? 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; } diff --git a/ZuneModdingHelper/Pages/ModsPage.xaml.cs b/ZuneModdingHelper/Pages/ModsPage.xaml.cs index bf859cd..793f891 100644 --- a/ZuneModdingHelper/Pages/ModsPage.xaml.cs +++ b/ZuneModdingHelper/Pages/ModsPage.xaml.cs @@ -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