diff --git a/OtterGui b/OtterGui index dc4ad8a5..c69f49e0 160000 --- a/OtterGui +++ b/OtterGui @@ -1 +1 @@ -Subproject commit dc4ad8a5fd0347642d3fdae5f2dc17a7fbfacaa1 +Subproject commit c69f49e026e17e81df546aa0621f1f575a22534d diff --git a/Penumbra.GameData/Structs/CustomizeData.cs b/Penumbra.GameData/Structs/CustomizeData.cs index c60ee746..37660c08 100644 --- a/Penumbra.GameData/Structs/CustomizeData.cs +++ b/Penumbra.GameData/Structs/CustomizeData.cs @@ -74,7 +74,7 @@ public unsafe struct CustomizeData : IEquatable< CustomizeData > } } - public string WriteBytes() + public override string ToString() { var sb = new StringBuilder(Size * 3); for (var i = 0; i < Size - 1; ++i) diff --git a/Penumbra/Communication/ChangedItemClick.cs b/Penumbra/Communication/ChangedItemClick.cs index fd879280..80ff8e75 100644 --- a/Penumbra/Communication/ChangedItemClick.cs +++ b/Penumbra/Communication/ChangedItemClick.cs @@ -1,6 +1,6 @@ using System; +using OtterGui.Classes; using Penumbra.Api.Enums; -using Penumbra.Util; namespace Penumbra.Communication; diff --git a/Penumbra/Communication/ChangedItemHover.cs b/Penumbra/Communication/ChangedItemHover.cs index 9a658769..afedf8fd 100644 --- a/Penumbra/Communication/ChangedItemHover.cs +++ b/Penumbra/Communication/ChangedItemHover.cs @@ -1,5 +1,5 @@ using System; -using Penumbra.Util; +using OtterGui.Classes; namespace Penumbra.Communication; diff --git a/Penumbra/Communication/CollectionChange.cs b/Penumbra/Communication/CollectionChange.cs index c5a0b93f..7c4946d2 100644 --- a/Penumbra/Communication/CollectionChange.cs +++ b/Penumbra/Communication/CollectionChange.cs @@ -1,7 +1,7 @@ using System; +using OtterGui.Classes; using Penumbra.Collections; using Penumbra.Collections.Manager; -using Penumbra.Util; namespace Penumbra.Communication; diff --git a/Penumbra/Communication/CollectionInheritanceChanged.cs b/Penumbra/Communication/CollectionInheritanceChanged.cs index 3562f457..00e90546 100644 --- a/Penumbra/Communication/CollectionInheritanceChanged.cs +++ b/Penumbra/Communication/CollectionInheritanceChanged.cs @@ -1,6 +1,6 @@ using System; +using OtterGui.Classes; using Penumbra.Collections; -using Penumbra.Util; namespace Penumbra.Communication; diff --git a/Penumbra/Communication/CreatedCharacterBase.cs b/Penumbra/Communication/CreatedCharacterBase.cs index adb92bfe..cbb86fc2 100644 --- a/Penumbra/Communication/CreatedCharacterBase.cs +++ b/Penumbra/Communication/CreatedCharacterBase.cs @@ -1,6 +1,6 @@ using System; +using OtterGui.Classes; using Penumbra.Api; -using Penumbra.Util; namespace Penumbra.Communication; diff --git a/Penumbra/Communication/CreatingCharacterBase.cs b/Penumbra/Communication/CreatingCharacterBase.cs index 8dc1c634..6161a984 100644 --- a/Penumbra/Communication/CreatingCharacterBase.cs +++ b/Penumbra/Communication/CreatingCharacterBase.cs @@ -1,6 +1,6 @@ using System; +using OtterGui.Classes; using Penumbra.Api; -using Penumbra.Util; namespace Penumbra.Communication; diff --git a/Penumbra/Communication/EnabledChanged.cs b/Penumbra/Communication/EnabledChanged.cs index 793663b9..dee5e50f 100644 --- a/Penumbra/Communication/EnabledChanged.cs +++ b/Penumbra/Communication/EnabledChanged.cs @@ -1,6 +1,6 @@ using System; +using OtterGui.Classes; using Penumbra.Api; -using Penumbra.Util; namespace Penumbra.Communication; diff --git a/Penumbra/Communication/ModDataChanged.cs b/Penumbra/Communication/ModDataChanged.cs index 8f16dcfe..941ed4d5 100644 --- a/Penumbra/Communication/ModDataChanged.cs +++ b/Penumbra/Communication/ModDataChanged.cs @@ -1,7 +1,7 @@ using System; +using OtterGui.Classes; using Penumbra.Mods; using Penumbra.Mods.Manager; -using Penumbra.Util; namespace Penumbra.Communication; diff --git a/Penumbra/Communication/ModDirectoryChanged.cs b/Penumbra/Communication/ModDirectoryChanged.cs index 0f30b71b..5a3fb473 100644 --- a/Penumbra/Communication/ModDirectoryChanged.cs +++ b/Penumbra/Communication/ModDirectoryChanged.cs @@ -1,6 +1,6 @@ using System; +using OtterGui.Classes; using Penumbra.Api; -using Penumbra.Util; namespace Penumbra.Communication; diff --git a/Penumbra/Communication/ModDiscoveryFinished.cs b/Penumbra/Communication/ModDiscoveryFinished.cs index 1471d7d7..b8e4e460 100644 --- a/Penumbra/Communication/ModDiscoveryFinished.cs +++ b/Penumbra/Communication/ModDiscoveryFinished.cs @@ -1,5 +1,5 @@ using System; -using Penumbra.Util; +using OtterGui.Classes; namespace Penumbra.Communication; diff --git a/Penumbra/Communication/ModDiscoveryStarted.cs b/Penumbra/Communication/ModDiscoveryStarted.cs index 4e98a3e0..ee193681 100644 --- a/Penumbra/Communication/ModDiscoveryStarted.cs +++ b/Penumbra/Communication/ModDiscoveryStarted.cs @@ -1,5 +1,5 @@ using System; -using Penumbra.Util; +using OtterGui.Classes; namespace Penumbra.Communication; diff --git a/Penumbra/Communication/ModOptionChanged.cs b/Penumbra/Communication/ModOptionChanged.cs index cacc7a89..a86826a3 100644 --- a/Penumbra/Communication/ModOptionChanged.cs +++ b/Penumbra/Communication/ModOptionChanged.cs @@ -1,7 +1,7 @@ using System; +using OtterGui.Classes; using Penumbra.Mods; using Penumbra.Mods.Manager; -using Penumbra.Util; namespace Penumbra.Communication; diff --git a/Penumbra/Communication/ModPathChanged.cs b/Penumbra/Communication/ModPathChanged.cs index e35a0ff4..675759dd 100644 --- a/Penumbra/Communication/ModPathChanged.cs +++ b/Penumbra/Communication/ModPathChanged.cs @@ -1,9 +1,9 @@ using System; using System.IO; +using OtterGui.Classes; using Penumbra.Api; using Penumbra.Mods; using Penumbra.Mods.Manager; -using Penumbra.Util; namespace Penumbra.Communication; diff --git a/Penumbra/Communication/ModSettingChanged.cs b/Penumbra/Communication/ModSettingChanged.cs index 6445b956..c3c9f671 100644 --- a/Penumbra/Communication/ModSettingChanged.cs +++ b/Penumbra/Communication/ModSettingChanged.cs @@ -1,9 +1,9 @@ using System; +using OtterGui.Classes; using Penumbra.Api; using Penumbra.Api.Enums; using Penumbra.Collections; using Penumbra.Mods; -using Penumbra.Util; namespace Penumbra.Communication; diff --git a/Penumbra/Communication/PostSettingsPanelDraw.cs b/Penumbra/Communication/PostSettingsPanelDraw.cs index e460e369..f653bd0b 100644 --- a/Penumbra/Communication/PostSettingsPanelDraw.cs +++ b/Penumbra/Communication/PostSettingsPanelDraw.cs @@ -1,5 +1,5 @@ using System; -using Penumbra.Util; +using OtterGui.Classes; namespace Penumbra.Communication; diff --git a/Penumbra/Communication/PreSettingsPanelDraw.cs b/Penumbra/Communication/PreSettingsPanelDraw.cs index c3e182b0..1167e92f 100644 --- a/Penumbra/Communication/PreSettingsPanelDraw.cs +++ b/Penumbra/Communication/PreSettingsPanelDraw.cs @@ -1,5 +1,5 @@ using System; -using Penumbra.Util; +using OtterGui.Classes; namespace Penumbra.Communication; diff --git a/Penumbra/Communication/TemporaryGlobalModChange.cs b/Penumbra/Communication/TemporaryGlobalModChange.cs index 1f0352a2..8906627b 100644 --- a/Penumbra/Communication/TemporaryGlobalModChange.cs +++ b/Penumbra/Communication/TemporaryGlobalModChange.cs @@ -1,6 +1,6 @@ using System; +using OtterGui.Classes; using Penumbra.Mods; -using Penumbra.Util; namespace Penumbra.Communication; diff --git a/Penumbra/Services/CommunicatorService.cs b/Penumbra/Services/CommunicatorService.cs index 371722b2..3e499317 100644 --- a/Penumbra/Services/CommunicatorService.cs +++ b/Penumbra/Services/CommunicatorService.cs @@ -1,10 +1,17 @@ using System; +using OtterGui.Classes; +using OtterGui.Log; using Penumbra.Communication; namespace Penumbra.Services; public class CommunicatorService : IDisposable { + public CommunicatorService(Logger logger) + { + EventWrapper.ChangeLogger(logger); + } + /// public readonly CollectionChange CollectionChange = new(); diff --git a/Penumbra/Util/EventWrapper.cs b/Penumbra/Util/EventWrapper.cs deleted file mode 100644 index d8d86d5a..00000000 --- a/Penumbra/Util/EventWrapper.cs +++ /dev/null @@ -1,190 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; - -namespace Penumbra.Util; - -public abstract class EventWrapper : IDisposable - where T : Delegate - where TPriority : struct, Enum -{ - private readonly string _name; - private readonly List<(object Subscriber, TPriority Priority)> _event = new(); - - public bool HasSubscribers - => _event.Count > 0; - - protected EventWrapper(string name) - => _name = name; - - public void Dispose() - { - lock (_event) - { - _event.Clear(); - } - } - - public void Subscribe(T subscriber, TPriority priority) - { - lock (_event) - { - var existingIdx = _event.FindIndex(p => (T)p.Subscriber == subscriber); - var idx = _event.FindIndex(p => p.Priority.CompareTo(priority) > 0); - if (idx == existingIdx) - { - if (idx < 0) - _event.Add((subscriber, priority)); - else - _event[idx] = (subscriber, priority); - } - else - { - if (idx < 0) - _event.Add((subscriber, priority)); - else - _event.Insert(idx, (subscriber, priority)); - - if (existingIdx >= 0) - _event.RemoveAt(existingIdx < idx ? existingIdx : existingIdx + 1); - } - } - } - - public void Unsubscribe(T subscriber) - { - lock (_event) - { - var idx = _event.FindIndex(p => (T)p.Subscriber == subscriber); - if (idx >= 0) - _event.RemoveAt(idx); - } - } - - - protected static void Invoke(EventWrapper wrapper) - { - lock (wrapper._event) - { - foreach (var (action, _) in wrapper._event.AsEnumerable().Reverse()) - { - try - { - ((Action)action).Invoke(); - } - catch (Exception ex) - { - Penumbra.Log.Error($"[{wrapper._name}] Exception thrown during invocation:\n{ex}"); - } - } - } - } - - protected static void Invoke(EventWrapper wrapper, T1 a) - { - lock (wrapper._event) - { - foreach (var (action, _) in wrapper._event.AsEnumerable().Reverse()) - { - try - { - ((Action)action).Invoke(a); - } - catch (Exception ex) - { - Penumbra.Log.Error($"[{wrapper._name}] Exception thrown during invocation:\n{ex}"); - } - } - } - } - - protected static void Invoke(EventWrapper wrapper, T1 a, T2 b) - { - lock (wrapper._event) - { - foreach (var (action, _) in wrapper._event.AsEnumerable().Reverse()) - { - try - { - ((Action)action).Invoke(a, b); - } - catch (Exception ex) - { - Penumbra.Log.Error($"[{wrapper._name}] Exception thrown during invocation:\n{ex}"); - } - } - } - } - - protected static void Invoke(EventWrapper wrapper, T1 a, T2 b, T3 c) - { - lock (wrapper._event) - { - foreach (var (action, _) in wrapper._event.AsEnumerable().Reverse()) - { - try - { - ((Action)action).Invoke(a, b, c); - } - catch (Exception ex) - { - Penumbra.Log.Error($"[{wrapper._name}] Exception thrown during invocation:\n{ex}"); - } - } - } - } - - protected static void Invoke(EventWrapper wrapper, T1 a, T2 b, T3 c, T4 d) - { - lock (wrapper._event) - { - foreach (var (action, _) in wrapper._event.AsEnumerable().Reverse()) - { - try - { - ((Action)action).Invoke(a, b, c, d); - } - catch (Exception ex) - { - Penumbra.Log.Error($"[{wrapper._name}] Exception thrown during invocation:\n{ex}"); - } - } - } - } - - protected static void Invoke(EventWrapper wrapper, T1 a, T2 b, T3 c, T4 d, T5 e) - { - lock (wrapper._event) - { - foreach (var (action, _) in wrapper._event.AsEnumerable().Reverse()) - { - try - { - ((Action)action).Invoke(a, b, c, d, e); - } - catch (Exception ex) - { - Penumbra.Log.Error($"[{wrapper._name}] Exception thrown during invocation:\n{ex}"); - } - } - } - } - - protected static void Invoke(EventWrapper wrapper, T1 a, T2 b, T3 c, T4 d, T5 e, T6 f) - { - lock (wrapper._event) - { - foreach (var (action, _) in wrapper._event.AsEnumerable().Reverse()) - { - try - { - ((Action)action).Invoke(a, b, c, d, e, f); - } - catch (Exception ex) - { - Penumbra.Log.Error($"[{wrapper._name}] Exception thrown during invocation:\n{ex}"); - } - } - } - } -}