Skip to content

Commit e05dbe9

Browse files
committed
Make everything services.
1 parent cf1dcfc commit e05dbe9

File tree

81 files changed

+220
-317
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

81 files changed

+220
-317
lines changed

Penumbra/Api/TempModManager.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using OtterGui.Services;
12
using Penumbra.Api.Enums;
23
using Penumbra.Collections;
34
using Penumbra.Meta.Manipulations;
@@ -18,7 +19,7 @@ public enum RedirectResult
1819
FilteredGamePath = 3,
1920
}
2021

21-
public class TempModManager : IDisposable
22+
public class TempModManager : IDisposable, IService
2223
{
2324
private readonly CommunicatorService _communicator;
2425

Penumbra/Collections/Cache/CollectionCacheManager.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Dalamud.Plugin.Services;
22
using OtterGui.Classes;
3+
using OtterGui.Services;
34
using Penumbra.Api;
45
using Penumbra.Api.Enums;
56
using Penumbra.Collections.Manager;
@@ -17,7 +18,7 @@
1718

1819
namespace Penumbra.Collections.Cache;
1920

20-
public class CollectionCacheManager : IDisposable
21+
public class CollectionCacheManager : IDisposable, IService
2122
{
2223
private readonly FrameworkManager _framework;
2324
private readonly CommunicatorService _communicator;

Penumbra/Collections/Manager/ActiveCollections.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using Newtonsoft.Json.Linq;
44
using OtterGui;
55
using OtterGui.Classes;
6+
using OtterGui.Services;
67
using Penumbra.Communication;
78
using Penumbra.GameData.Actors;
89
using Penumbra.GameData.Enums;
@@ -11,7 +12,7 @@
1112

1213
namespace Penumbra.Collections.Manager;
1314

14-
public class ActiveCollectionData
15+
public class ActiveCollectionData : IService
1516
{
1617
public ModCollection Current { get; internal set; } = ModCollection.Empty;
1718
public ModCollection Default { get; internal set; } = ModCollection.Empty;
@@ -20,7 +21,7 @@ public class ActiveCollectionData
2021
public readonly ModCollection?[] SpecialCollections = new ModCollection?[Enum.GetValues<Api.Enums.ApiCollectionType>().Length - 3];
2122
}
2223

23-
public class ActiveCollections : ISavable, IDisposable
24+
public class ActiveCollections : ISavable, IDisposable, IService
2425
{
2526
public const int Version = 2;
2627

Penumbra/Collections/Manager/CollectionEditor.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using OtterGui;
2+
using OtterGui.Services;
23
using Penumbra.Api.Enums;
34
using Penumbra.Mods;
45
using Penumbra.Mods.Manager;
@@ -7,7 +8,7 @@
78

89
namespace Penumbra.Collections.Manager;
910

10-
public class CollectionEditor(SaveService saveService, CommunicatorService communicator, ModStorage modStorage)
11+
public class CollectionEditor(SaveService saveService, CommunicatorService communicator, ModStorage modStorage) : IService
1112
{
1213
/// <summary> Enable or disable the mod inheritance of mod idx. </summary>
1314
public bool SetModInheritance(ModCollection collection, Mod mod, bool inherit)

Penumbra/Collections/Manager/CollectionManager.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using OtterGui.Services;
12
using Penumbra.Collections.Cache;
23

34
namespace Penumbra.Collections.Manager;
@@ -8,7 +9,7 @@ public class CollectionManager(
89
InheritanceManager inheritances,
910
CollectionCacheManager caches,
1011
TempCollectionManager temp,
11-
CollectionEditor editor)
12+
CollectionEditor editor) : IService
1213
{
1314
public readonly CollectionStorage Storage = storage;
1415
public readonly ActiveCollections Active = active;

Penumbra/Collections/Manager/CollectionStorage.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
using System;
21
using Dalamud.Interface.Internal.Notifications;
32
using OtterGui;
43
using OtterGui.Classes;
4+
using OtterGui.Services;
55
using Penumbra.Communication;
66
using Penumbra.Mods;
77
using Penumbra.Mods.Editor;
@@ -11,7 +11,6 @@
1111
using Penumbra.Mods.Settings;
1212
using Penumbra.Mods.SubMods;
1313
using Penumbra.Services;
14-
using Penumbra.UI.CollectionTab;
1514

1615
namespace Penumbra.Collections.Manager;
1716

@@ -24,7 +23,7 @@ public readonly record struct LocalCollectionId(int Id) : IAdditionOperators<Loc
2423
=> new(left.Id + right);
2524
}
2625

27-
public class CollectionStorage : IReadOnlyList<ModCollection>, IDisposable
26+
public class CollectionStorage : IReadOnlyList<ModCollection>, IDisposable, IService
2827
{
2928
private readonly CommunicatorService _communicator;
3029
private readonly SaveService _saveService;

Penumbra/Collections/Manager/InheritanceManager.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@
22
using OtterGui;
33
using OtterGui.Classes;
44
using OtterGui.Filesystem;
5+
using OtterGui.Services;
56
using Penumbra.Communication;
67
using Penumbra.Mods.Manager;
78
using Penumbra.Services;
8-
using Penumbra.UI.CollectionTab;
9-
using Penumbra.Util;
109

1110
namespace Penumbra.Collections.Manager;
1211

@@ -15,7 +14,7 @@ namespace Penumbra.Collections.Manager;
1514
/// This is transitive, so a collection A inheriting from B also inherits from everything B inherits.
1615
/// Circular dependencies are resolved by distinctness.
1716
/// </summary>
18-
public class InheritanceManager : IDisposable
17+
public class InheritanceManager : IDisposable, IService
1918
{
2019
public enum ValidInheritance
2120
{
@@ -144,7 +143,8 @@ private void ApplyInheritances()
144143
continue;
145144

146145
changes = true;
147-
Penumbra.Messager.NotificationMessage($"{collection.Name} can not inherit from {subCollection.Name}, removed.", NotificationType.Warning);
146+
Penumbra.Messager.NotificationMessage($"{collection.Name} can not inherit from {subCollection.Name}, removed.",
147+
NotificationType.Warning);
148148
}
149149
else if (_storage.ByName(subCollectionName, out subCollection))
150150
{
@@ -153,12 +153,14 @@ private void ApplyInheritances()
153153
if (AddInheritance(collection, subCollection, false))
154154
continue;
155155

156-
Penumbra.Messager.NotificationMessage($"{collection.Name} can not inherit from {subCollection.Name}, removed.", NotificationType.Warning);
156+
Penumbra.Messager.NotificationMessage($"{collection.Name} can not inherit from {subCollection.Name}, removed.",
157+
NotificationType.Warning);
157158
}
158159
else
159160
{
160161
Penumbra.Messager.NotificationMessage(
161-
$"Inherited collection {subCollectionName} for {collection.AnonymizedName} does not exist, it was removed.", NotificationType.Warning);
162+
$"Inherited collection {subCollectionName} for {collection.AnonymizedName} does not exist, it was removed.",
163+
NotificationType.Warning);
162164
changes = true;
163165
}
164166
}

Penumbra/Collections/Manager/TempCollectionManager.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using OtterGui;
2+
using OtterGui.Services;
23
using Penumbra.Api;
34
using Penumbra.Communication;
45
using Penumbra.GameData.Actors;
@@ -8,7 +9,7 @@
89

910
namespace Penumbra.Collections.Manager;
1011

11-
public class TempCollectionManager : IDisposable
12+
public class TempCollectionManager : IDisposable, IService
1213
{
1314
public int GlobalChangeCounter { get; private set; }
1415
public readonly IndividualCollections Collections;

Penumbra/CommandHandler.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,19 @@
33
using Dalamud.Plugin.Services;
44
using ImGuiNET;
55
using OtterGui.Classes;
6+
using OtterGui.Services;
67
using Penumbra.Api.Enums;
78
using Penumbra.Collections;
89
using Penumbra.Collections.Manager;
910
using Penumbra.GameData.Actors;
1011
using Penumbra.Interop.Services;
1112
using Penumbra.Mods;
1213
using Penumbra.Mods.Manager;
13-
using Penumbra.Services;
1414
using Penumbra.UI;
1515

1616
namespace Penumbra;
1717

18-
public class CommandHandler : IDisposable
18+
public class CommandHandler : IDisposable, IApiService
1919
{
2020
private const string CommandName = "/penumbra";
2121

Penumbra/Configuration.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using OtterGui;
55
using OtterGui.Classes;
66
using OtterGui.Filesystem;
7+
using OtterGui.Services;
78
using OtterGui.Widgets;
89
using Penumbra.Import.Structs;
910
using Penumbra.Interop.Services;
@@ -18,7 +19,7 @@
1819
namespace Penumbra;
1920

2021
[Serializable]
21-
public class Configuration : IPluginConfiguration, ISavable
22+
public class Configuration : IPluginConfiguration, ISavable, IService
2223
{
2324
[JsonIgnore]
2425
private readonly SaveService _saveService;

Penumbra/EphemeralConfig.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using Dalamud.Interface.Internal.Notifications;
22
using Newtonsoft.Json;
33
using OtterGui.Classes;
4+
using OtterGui.Services;
45
using Penumbra.Api.Enums;
56
using Penumbra.Communication;
67
using Penumbra.Enums;
@@ -14,7 +15,7 @@
1415

1516
namespace Penumbra;
1617

17-
public class EphemeralConfig : ISavable, IDisposable
18+
public class EphemeralConfig : ISavable, IDisposable, IService
1819
{
1920
[JsonIgnore]
2021
private readonly SaveService _saveService;

Penumbra/Import/Models/ModelManager.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using Dalamud.Plugin.Services;
22
using Lumina.Data.Parsing;
33
using OtterGui;
4+
using OtterGui.Services;
45
using OtterGui.Tasks;
56
using Penumbra.Collections.Manager;
67
using Penumbra.GameData;
@@ -21,7 +22,8 @@ namespace Penumbra.Import.Models;
2122
using Schema2 = SharpGLTF.Schema2;
2223
using LuminaMaterial = Lumina.Models.Materials.Material;
2324

24-
public sealed class ModelManager(IFramework framework, ActiveCollections collections, GamePathParser parser) : SingleTaskQueue, IDisposable
25+
public sealed class ModelManager(IFramework framework, ActiveCollections collections, GamePathParser parser)
26+
: SingleTaskQueue, IDisposable, IService
2527
{
2628
private readonly IFramework _framework = framework;
2729

Penumbra/Import/Textures/TextureManager.cs

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using Dalamud.Plugin.Services;
44
using Lumina.Data.Files;
55
using OtterGui.Log;
6+
using OtterGui.Services;
67
using OtterGui.Tasks;
78
using OtterTex;
89
using SixLabors.ImageSharp;
@@ -12,22 +13,14 @@
1213

1314
namespace Penumbra.Import.Textures;
1415

15-
public sealed class TextureManager : SingleTaskQueue, IDisposable
16+
public sealed class TextureManager(UiBuilder uiBuilder, IDataManager gameData, Logger logger)
17+
: SingleTaskQueue, IDisposable, IService
1618
{
17-
private readonly Logger _logger;
18-
private readonly UiBuilder _uiBuilder;
19-
private readonly IDataManager _gameData;
19+
private readonly Logger _logger = logger;
2020

21-
private readonly ConcurrentDictionary<IAction, (Task, CancellationTokenSource)> _tasks = new();
21+
private readonly ConcurrentDictionary<IAction, (Task, CancellationTokenSource)> _tasks = new();
2222
private bool _disposed;
2323

24-
public TextureManager(UiBuilder uiBuilder, IDataManager gameData, Logger logger)
25-
{
26-
_uiBuilder = uiBuilder;
27-
_gameData = gameData;
28-
_logger = logger;
29-
}
30-
3124
public IReadOnlyDictionary<IAction, (Task, CancellationTokenSource)> Tasks
3225
=> _tasks;
3326

@@ -64,7 +57,8 @@ private Task Enqueue(IAction action)
6457
{
6558
var token = new CancellationTokenSource();
6659
var task = Enqueue(a, token.Token);
67-
task.ContinueWith(_ => _tasks.TryRemove(a, out var unused), CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.Default);
60+
task.ContinueWith(_ => _tasks.TryRemove(a, out var unused), CancellationToken.None, TaskContinuationOptions.None,
61+
TaskScheduler.Default);
6862
return (task, token);
6963
}).Item1;
7064
}
@@ -217,7 +211,7 @@ public IDalamudTextureWrap LoadTextureWrap(BaseImage image, byte[]? rgba = null,
217211

218212
/// <summary> Load a texture wrap for a given image. </summary>
219213
public IDalamudTextureWrap LoadTextureWrap(byte[] rgba, int width, int height)
220-
=> _uiBuilder.LoadImageRaw(rgba, width, height, 4);
214+
=> uiBuilder.LoadImageRaw(rgba, width, height, 4);
221215

222216
/// <summary> Load any supported file from game data or drive depending on extension and if the path is rooted. </summary>
223217
public (BaseImage, TextureType) Load(string path)
@@ -326,7 +320,7 @@ public static BaseImage ConvertToDds(byte[] rgba, int width, int height)
326320
}
327321

328322
public bool GameFileExists(string path)
329-
=> _gameData.FileExists(path);
323+
=> gameData.FileExists(path);
330324

331325
/// <summary> Add up to 13 mip maps to the input if mip maps is true, otherwise return input. </summary>
332326
public static ScratchImage AddMipMaps(ScratchImage input, bool mipMaps)
@@ -382,7 +376,7 @@ private Stream OpenTexStream(string path)
382376
if (Path.IsPathRooted(path))
383377
return File.OpenRead(path);
384378

385-
var file = _gameData.GetFile(path);
379+
var file = gameData.GetFile(path);
386380
return file != null ? new MemoryStream(file.Data) : throw new Exception($"Unable to obtain \"{path}\" from game files.");
387381
}
388382

Penumbra/Interop/PathResolving/CutsceneService.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using Dalamud.Plugin.Services;
22
using FFXIVClientStructs.FFXIV.Client.Game.Character;
3-
using FFXIVClientStructs.FFXIV.Client.Game.Object;
43
using OtterGui.Services;
54
using Penumbra.GameData.Enums;
65
using Penumbra.GameData.Interop;
@@ -9,7 +8,7 @@
98

109
namespace Penumbra.Interop.PathResolving;
1110

12-
public sealed class CutsceneService : IService, IDisposable
11+
public sealed class CutsceneService : IRequiredService, IDisposable
1312
{
1413
public const int CutsceneStartIdx = (int)ScreenActor.CutsceneStart;
1514
public const int CutsceneEndIdx = (int)ScreenActor.CutsceneEnd;

Penumbra/Interop/PathResolving/IdentifiedCollectionCache.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using Dalamud.Plugin.Services;
22
using FFXIVClientStructs.FFXIV.Client.Game.Character;
33
using FFXIVClientStructs.FFXIV.Client.Game.Object;
4+
using OtterGui.Services;
45
using Penumbra.Collections;
56
using Penumbra.Collections.Manager;
67
using Penumbra.Communication;
@@ -10,7 +11,8 @@
1011

1112
namespace Penumbra.Interop.PathResolving;
1213

13-
public unsafe class IdentifiedCollectionCache : IDisposable, IEnumerable<(nint Address, ActorIdentifier Identifier, ModCollection Collection)>
14+
public unsafe class IdentifiedCollectionCache : IDisposable, IEnumerable<(nint Address, ActorIdentifier Identifier, ModCollection Collection)>,
15+
IService
1416
{
1517
private readonly CommunicatorService _communicator;
1618
private readonly CharacterDestructor _characterDestructor;

Penumbra/Interop/PathResolving/MetaState.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using FFXIVClientStructs.FFXIV.Client.Graphics.Scene;
22
using OtterGui.Classes;
3+
using OtterGui.Services;
34
using Penumbra.Collections;
45
using Penumbra.Api.Enums;
56
using Penumbra.GameData.Structs;
@@ -34,7 +35,7 @@ namespace Penumbra.Interop.PathResolving;
3435
// ChangeCustomize and RspSetupCharacter, which is hooked here, as well as Character.CalculateHeight.
3536

3637
// GMP Entries seem to be only used by "48 8B ?? 53 55 57 48 83 ?? ?? 48 8B", which is SetupVisor.
37-
public sealed unsafe class MetaState : IDisposable
38+
public sealed unsafe class MetaState : IDisposable, IService
3839
{
3940
private readonly Configuration _config;
4041
private readonly CommunicatorService _communicator;

Penumbra/Interop/PathResolving/PathResolver.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using FFXIVClientStructs.FFXIV.Client.System.Resource;
2+
using OtterGui.Services;
23
using Penumbra.Api.Enums;
34
using Penumbra.Collections;
45
using Penumbra.Collections.Manager;
@@ -9,7 +10,7 @@
910

1011
namespace Penumbra.Interop.PathResolving;
1112

12-
public class PathResolver : IDisposable
13+
public class PathResolver : IDisposable, IService
1314
{
1415
private readonly PerformanceTracker _performance;
1516
private readonly Configuration _config;

0 commit comments

Comments
 (0)