diff --git a/Igniter/ICC.cs b/Igniter/ICC.cs
deleted file mode 100644
index 6138e6a..0000000
--- a/Igniter/ICC.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-namespace Igniter
-{
- public sealed class ICC
- {
- public enum ID
- {
- ViewAllowWindow
- }
-
- public ID IDValue { get; set; }
-
- public object Contents { get; set; }
- }
-}
\ No newline at end of file
diff --git a/Igniter/Igniter.csproj b/Igniter/Igniter.csproj
index f228994..9fe26ca 100644
--- a/Igniter/Igniter.csproj
+++ b/Igniter/Igniter.csproj
@@ -103,9 +103,9 @@
MSBuild:Compile
Designer
-
+
diff --git a/Igniter/MSG/ViewAllowWindow.cs b/Igniter/MSG/ViewAllowWindow.cs
new file mode 100644
index 0000000..08a02b1
--- /dev/null
+++ b/Igniter/MSG/ViewAllowWindow.cs
@@ -0,0 +1,14 @@
+using CommunityToolkit.Mvvm.Messaging.Messages;
+using System.Windows;
+
+namespace Igniter.MSG
+{
+ public sealed class ViewAllowWindow : RequestMessage
+ {
+ public string Text { get; set; }
+
+ public MessageBoxButton Input { get; set; }
+
+ public MessageBoxImage Drawing { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/Igniter/View/MainWindow.xaml.cs b/Igniter/View/MainWindow.xaml.cs
index 2b5a84f..001536e 100644
--- a/Igniter/View/MainWindow.xaml.cs
+++ b/Igniter/View/MainWindow.xaml.cs
@@ -1,32 +1,19 @@
using CommunityToolkit.Mvvm.Messaging;
+using Igniter.MSG;
using Igniter.ViewModel;
-using System;
-using System.Linq;
using System.Windows;
namespace Igniter.View
{
- public partial class MainWindow : IRecipient
+ public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
- WeakReferenceMessenger.Default.Register(this);
+ StrongReferenceMessenger.Default.Register(this, (recipient, message) => message.Reply(MessageBox.Show(this, message.Text, "Qwilight", message.Input, message.Drawing)));
}
- void OnLoaded(object sender, RoutedEventArgs e) => (DataContext as MainViewModel).OnLoaded();
-
- public void Receive(ICC message)
- {
- switch (message.IDValue)
- {
- case ICC.ID.ViewAllowWindow:
- var data = message.Contents as object[];
- var r = MessageBox.Show(this, data[0] as string, "Qwilight", (MessageBoxButton)data[1], (MessageBoxImage)data[2]);
- (data.ElementAtOrDefault(3) as Action)?.Invoke(r);
- break;
- }
- }
+ void OnLoaded(object sender, RoutedEventArgs e) => _ = (DataContext as MainViewModel).OnLoaded();
}
}
diff --git a/Igniter/ViewModels/MainViewModel.cs b/Igniter/ViewModels/MainViewModel.cs
index bde7c55..599af4a 100644
--- a/Igniter/ViewModels/MainViewModel.cs
+++ b/Igniter/ViewModels/MainViewModel.cs
@@ -1,5 +1,6 @@
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Messaging;
+using Igniter.MSG;
using Ionic.Zip;
using System;
using System.Diagnostics;
@@ -36,132 +37,99 @@
set => SetProperty(ref _isVisible, value, nameof(IsVisible));
}
- public void OnLoaded()
+ public async Task OnLoaded()
{
- WeakReferenceMessenger.Default.Send(new ICC
+ switch (StrongReferenceMessenger.Default.Send(new ViewAllowWindow
{
- IDValue = ICC.ID.ViewAllowWindow,
- Contents = new object[]
- {
- LanguageSystem.Instance.Levy,
- MessageBoxButton.OKCancel,
- MessageBoxImage.Information,
- new Action(async r =>
+ Text = LanguageSystem.Instance.Levy,
+ Input = MessageBoxButton.OKCancel,
+ Drawing = MessageBoxImage.Information
+ }).Response)
+ {
+ case MessageBoxResult.OK:
+ while (true)
{
- switch (r)
+ try
{
- case MessageBoxResult.OK:
- while (true)
+ using (var zipFile = ZipFile.Read(Environment.GetCommandLineArgs()[1]))
+ {
+ zipFile.ExtractProgress += (sender, e) =>
{
- try
+ if (e.EntriesTotal > 0)
{
- using (var zipFile = ZipFile.Read(Environment.GetCommandLineArgs()[1]))
- {
- zipFile.ExtractProgress += (sender, e) =>
- {
- if (e.EntriesTotal > 0)
- {
- Value = 100.0 * e.EntriesExtracted / e.EntriesTotal;
- }
- var fileName = e.CurrentEntry?.FileName;
- if (!string.IsNullOrEmpty(fileName))
- {
- Text = fileName;
- }
- };
- await Task.Run(() => zipFile.ExtractAll(Path.GetDirectoryName(IgniterComponent.QwilightFilePath), ExtractExistingFileAction.OverwriteSilently)).ConfigureAwait(false);
- }
+ Value = 100.0 * e.EntriesExtracted / e.EntriesTotal;
+ }
+ var fileName = e.CurrentEntry?.FileName;
+ if (!string.IsNullOrEmpty(fileName))
+ {
+ Text = fileName;
+ }
+ };
+ await Task.Run(() => zipFile.ExtractAll(Path.GetDirectoryName(IgniterComponent.QwilightFilePath), ExtractExistingFileAction.OverwriteSilently)).ConfigureAwait(false);
+ }
- OnIgnited();
- }
- catch (Exception e)
- {
- OnIgnitingFault(e);
- if (IsVisible)
- {
- continue;
- }
- }
- }
- case MessageBoxResult.Cancel:
- Environment.Exit(1);
- break;
+ OnIgnited();
}
- })
- }
- });
+ catch (Exception e)
+ {
+ OnIgnitingFault(e);
+ if (IsVisible)
+ {
+ continue;
+ }
+ }
+ }
+ case MessageBoxResult.Cancel:
+ Environment.Exit(1);
+ break;
+ }
void OnIgnited()
{
IsVisible = false;
- WeakReferenceMessenger.Default.Send(new ICC
+ StrongReferenceMessenger.Default.Send(new ViewAllowWindow
{
- IDValue = ICC.ID.ViewAllowWindow,
- Contents = new object[]
- {
- LanguageSystem.Instance.Ignited,
- MessageBoxButton.OK,
- MessageBoxImage.Information
- }
+ Text = LanguageSystem.Instance.Ignited,
+ Input = MessageBoxButton.OK,
+ Drawing = MessageBoxImage.Information
});
- WeakReferenceMessenger.Default.Send(new ICC
+ switch (StrongReferenceMessenger.Default.Send(new ViewAllowWindow
{
- IDValue = ICC.ID.ViewAllowWindow,
- Contents = new object[]
- {
- LanguageSystem.Instance.ExeQwilight,
- MessageBoxButton.YesNo,
- MessageBoxImage.Question,
- new Action(r =>
- {
- switch (r)
- {
- case MessageBoxResult.Yes:
- Process.Start(IgniterComponent.QwilightFilePath);
- break;
- }
-
- Environment.Exit(0);
- })
- }
- });
+ Text = LanguageSystem.Instance.ExeQwilight,
+ Input = MessageBoxButton.YesNo,
+ Drawing = MessageBoxImage.Question
+ }).Response)
+ {
+ case MessageBoxResult.Yes:
+ Process.Start(IgniterComponent.QwilightFilePath);
+ break;
+ }
+ Environment.Exit(0);
}
void OnIgnitingFault(Exception e)
{
IsVisible = false;
- WeakReferenceMessenger.Default.Send(new ICC
+ StrongReferenceMessenger.Default.Send(new ViewAllowWindow
{
- IDValue = ICC.ID.ViewAllowWindow,
- Contents = new object[]
- {
- e.Message,
- MessageBoxButton.OK,
- MessageBoxImage.Error
- }
+ Text = e.Message,
+ Input = MessageBoxButton.OK,
+ Drawing = MessageBoxImage.Error
});
- WeakReferenceMessenger.Default.Send(new ICC
+ switch (StrongReferenceMessenger.Default.Send(new ViewAllowWindow
{
- IDValue = ICC.ID.ViewAllowWindow,
- Contents = new object[]
- {
- LanguageSystem.Instance.IgnitingFault,
- MessageBoxButton.YesNo,
- MessageBoxImage.Warning,
- new Action(r =>
- {
- switch (r)
- {
- case MessageBoxResult.Yes:
- IsVisible = true;
- break;
- case MessageBoxResult.No:
- Environment.Exit(1);
- break;
- }
- })
- }
- });
+ Text = LanguageSystem.Instance.IgnitingFault,
+ Input = MessageBoxButton.YesNo,
+ Drawing = MessageBoxImage.Warning
+ }).Response)
+ {
+ case MessageBoxResult.Yes:
+ IsVisible = true;
+ break;
+ case MessageBoxResult.No:
+ Environment.Exit(1);
+ break;
+ }
}
}
}
diff --git a/Qwilight/ICC.cs b/Qwilight/ICC.cs
index 9db7030..26bf75b 100644
--- a/Qwilight/ICC.cs
+++ b/Qwilight/ICC.cs
@@ -4,7 +4,6 @@
{
public enum ID
{
- ViewAllowWindow,
ViewEntryWindow,
ViewFileWindow,
Quit,
@@ -23,7 +22,6 @@
GetPwWindowCipher,
ClearPwWindowCipher,
SetBaseDrawingUIElement,
- SetWindowedMode,
SetNoteFileModeWindowInputs,
GetWindowArea,
SetWindowArea,
diff --git a/Qwilight/MSG/SetWindowedMode.cs b/Qwilight/MSG/SetWindowedMode.cs
new file mode 100644
index 0000000..c45cd67
--- /dev/null
+++ b/Qwilight/MSG/SetWindowedMode.cs
@@ -0,0 +1,6 @@
+namespace Qwilight.MSG
+{
+ public sealed class SetWindowedMode
+ {
+ }
+}
\ No newline at end of file
diff --git a/Qwilight/MSG/ViewAllowWindow.cs b/Qwilight/MSG/ViewAllowWindow.cs
new file mode 100644
index 0000000..e102963
--- /dev/null
+++ b/Qwilight/MSG/ViewAllowWindow.cs
@@ -0,0 +1,6 @@
+namespace Qwilight.MSG
+{
+ public sealed class ViewAllowWindow
+ {
+ }
+}
\ No newline at end of file
diff --git a/Qwilight/System/DefaultControllerSystem/DefaultControllerSystem.cs b/Qwilight/System/DefaultControllerSystem/DefaultControllerSystem.cs
index 781a03b..041566b 100644
--- a/Qwilight/System/DefaultControllerSystem/DefaultControllerSystem.cs
+++ b/Qwilight/System/DefaultControllerSystem/DefaultControllerSystem.cs
@@ -1,5 +1,6 @@
using CommunityToolkit.Mvvm.Messaging;
using Qwilight.Compute;
+using Qwilight.MSG;
using Qwilight.Utilities;
using Qwilight.ViewModel;
using System.Diagnostics;
@@ -194,10 +195,7 @@
break;
case VirtualKey.Enter when isAlt:
Configure.Instance.WindowedMode = !Configure.Instance.WindowedMode;
- WeakReferenceMessenger.Default.Send(new()
- {
- IDValue = ICC.ID.SetWindowedMode
- });
+ StrongReferenceMessenger.Default.Send(new SetWindowedMode());
break;
}
switch (input)
diff --git a/Qwilight/Utilities/AwaitUtility.cs b/Qwilight/Utilities/AwaitUtility.cs
index c9bbb53..c5ae62c 100644
--- a/Qwilight/Utilities/AwaitUtility.cs
+++ b/Qwilight/Utilities/AwaitUtility.cs
@@ -6,7 +6,7 @@
{
public static T Await(IAsyncOperation t)
{
- return Await(t);
+ return Await(t.AsTask());
}
public static T Await(Task t)
diff --git a/Qwilight/View/MainWindow/MainWindow.xaml.cs b/Qwilight/View/MainWindow/MainWindow.xaml.cs
index fc04f95..bb5d455 100644
--- a/Qwilight/View/MainWindow/MainWindow.xaml.cs
+++ b/Qwilight/View/MainWindow/MainWindow.xaml.cs
@@ -10,6 +10,7 @@
using Microsoft.UI.Xaml.Input;
using Microsoft.UI.Xaml.Media;
using Qwilight.Compute;
+using Qwilight.MSG;
using Qwilight.ViewModel;
using System.Runtime.InteropServices;
using System.Windows.Input;
@@ -135,6 +136,25 @@
}
lpPrevWndFunc = Marshal.GetDelegateForFunctionPointer(PInvoke.SetWindowLongPtr(_handle, WINDOW_LONG_PTR_INDEX.GWLP_WNDPROC, Marshal.GetFunctionPointerForDelegate(_onWin32)));
+ StrongReferenceMessenger.Default.Register(this, (recipient, message) =>
+ {
+ HandlingUISystem.Instance.HandleParallel(() =>
+ {
+ if (Configure.Instance.WindowedMode)
+ {
+ ResizeMode = ResizeMode.CanResize;
+ WindowStyle = WindowStyle.SingleBorderWindow;
+ WindowState = WindowState.Normal;
+ }
+ else
+ {
+ ResizeMode = ResizeMode.NoResize;
+ WindowStyle = WindowStyle.None;
+ WindowState = WindowState.Maximized;
+ }
+ });
+ });
+
WeakReferenceMessenger.Default.Register(this);
}
@@ -207,23 +227,6 @@
ViewModels.Instance.InputTextValue.HandleOK = data[2] as Action;
ViewModels.Instance.InputTextValue.Open();
break;
- case ICC.ID.SetWindowedMode:
- HandlingUISystem.Instance.HandleParallel(() =>
- {
- if (Configure.Instance.WindowedMode)
- {
- ResizeMode = ResizeMode.CanResize;
- WindowStyle = WindowStyle.SingleBorderWindow;
- WindowState = WindowState.Normal;
- }
- else
- {
- ResizeMode = ResizeMode.NoResize;
- WindowStyle = WindowStyle.None;
- WindowState = WindowState.Maximized;
- }
- });
- break;
case ICC.ID.SetWindowArea:
var windowInfo = new WINDOWINFO
{
diff --git a/Qwilight/ViewModel/ConfigureViewModel.cs b/Qwilight/ViewModel/ConfigureViewModel.cs
index 2daf3d4..a23387a 100644
--- a/Qwilight/ViewModel/ConfigureViewModel.cs
+++ b/Qwilight/ViewModel/ConfigureViewModel.cs
@@ -3,6 +3,7 @@
using FMOD;
using Ionic.Zip;
using Qwilight.Compute;
+using Qwilight.MSG;
using Qwilight.UIComponent;
using Qwilight.Utilities;
using System.Collections.ObjectModel;
@@ -934,10 +935,7 @@
static void OnWindowedMode()
{
Configure.Instance.WindowedMode = !Configure.Instance.WindowedMode;
- WeakReferenceMessenger.Default.Send(new()
- {
- IDValue = ICC.ID.SetWindowedMode
- });
+ StrongReferenceMessenger.Default.Send(new SetWindowedMode());
}
[RelayCommand]
diff --git a/Qwilight/ViewModel/MainViewModel.cs b/Qwilight/ViewModel/MainViewModel.cs
index 1f9497f..f1dd34e 100644
--- a/Qwilight/ViewModel/MainViewModel.cs
+++ b/Qwilight/ViewModel/MainViewModel.cs
@@ -2,6 +2,7 @@
using CommunityToolkit.Mvvm.Messaging;
using Ionic.Zip;
using Qwilight.Compute;
+using Qwilight.MSG;
using Qwilight.NoteFile;
using Qwilight.UIComponent;
using Qwilight.Utilities;
@@ -542,10 +543,7 @@
public async Task OnLoaded(nint handle)
{
- WeakReferenceMessenger.Default.Send(new()
- {
- IDValue = ICC.ID.SetWindowedMode
- });
+ StrongReferenceMessenger.Default.Send(new SetWindowedMode());
StillSystem.Instance.Init(handle);
await MIDISystem.Instance.HandleSystem().ConfigureAwait(false);
@@ -555,8 +553,7 @@
DrawingSystem.Instance.LoadDefaultDrawing();
DrawingSystem.Instance.LoadVeilDrawing();
- await LevelSystem.Instance.LoadJSON(false);
-
+ await LevelSystem.Instance.LoadJSON(false).ConfigureAwait(false);
await ValveSystem.Instance.Init().ConfigureAwait(false);
await Task.Run(() =>
{