From c9c1af653befbfb225c09b5393b7620bca41b24c Mon Sep 17 00:00:00 2001 From: Chomp Date: Sat, 8 Feb 2025 12:29:56 +0000 Subject: [PATCH] Renamed "OnUpdate" interface Added OnUpdate example mod Expanded `OnUpdateOrder` options --- .../AddOnLoad.cs => 8OnLoad/OnLoadExample.cs} | 14 ++++---- .../Mods/{8AddOnLoad => 8OnLoad}/package.json | 2 +- ExampleMods/Mods/9OnUpdate/OnUpdateExample.cs | 33 +++++++++++++++++++ ExampleMods/Mods/9OnUpdate/package.json | 13 ++++++++ Libraries/Core/Callbacks/DialogueCallbacks.cs | 4 +-- Libraries/Core/Callbacks/HideoutCallbacks.cs | 4 +-- .../Core/Callbacks/InsuranceCallbacks.cs | 4 +-- Libraries/Core/Callbacks/RagfairCallbacks.cs | 4 +-- Libraries/Core/Callbacks/SaveCallbacks.cs | 4 +-- Libraries/Core/Callbacks/TraderCallbacks.cs | 4 +-- .../Core/DI/{OnUpdate.cs => IOnUpdate.cs} | 2 +- Libraries/Core/DI/OnUpdateOrder.cs | 4 ++- 12 files changed, 70 insertions(+), 22 deletions(-) rename ExampleMods/Mods/{8AddOnLoad/AddOnLoad.cs => 8OnLoad/OnLoadExample.cs} (58%) rename ExampleMods/Mods/{8AddOnLoad => 8OnLoad}/package.json (91%) create mode 100644 ExampleMods/Mods/9OnUpdate/OnUpdateExample.cs create mode 100644 ExampleMods/Mods/9OnUpdate/package.json rename Libraries/Core/DI/{OnUpdate.cs => IOnUpdate.cs} (76%) diff --git a/ExampleMods/Mods/8AddOnLoad/AddOnLoad.cs b/ExampleMods/Mods/8OnLoad/OnLoadExample.cs similarity index 58% rename from ExampleMods/Mods/8AddOnLoad/AddOnLoad.cs rename to ExampleMods/Mods/8OnLoad/OnLoadExample.cs index 3c858acc..a2b00311 100644 --- a/ExampleMods/Mods/8AddOnLoad/AddOnLoad.cs +++ b/ExampleMods/Mods/8OnLoad/OnLoadExample.cs @@ -2,17 +2,17 @@ using Core.Models.Utils; using SptCommon.Annotations; -namespace ExampleMods.Mods._8AddOnLoad +namespace ExampleMods.Mods._8OnLoad { // Flag class as being OnLoad and give it a load priority, check `OnLoadOrder` for list of possible choices - [Injectable(InjectableTypeOverride = typeof(IOnLoad), TypePriority = OnLoadOrder.PostSptDatabase)] - [Injectable(InjectableTypeOverride = typeof(AddOnLoad))] - public class AddOnLoad : IOnLoad // Must implement the IOnLoad interface + [Injectable(InjectableTypeOverride = typeof(IOnLoad), TypePriority = OnLoadOrder.PostSptDatabase)] // Can also give an int value for fine-grained control + [Injectable(InjectableTypeOverride = typeof(OnLoadExample))] + public class OnLoadExample : IOnLoad // Must implement the IOnLoad interface { - private readonly ISptLogger _logger; + private readonly ISptLogger _logger; - public AddOnLoad( - ISptLogger logger) + public OnLoadExample( + ISptLogger logger) { _logger = logger; } diff --git a/ExampleMods/Mods/8AddOnLoad/package.json b/ExampleMods/Mods/8OnLoad/package.json similarity index 91% rename from ExampleMods/Mods/8AddOnLoad/package.json rename to ExampleMods/Mods/8OnLoad/package.json index 224d24f8..8394e361 100644 --- a/ExampleMods/Mods/8AddOnLoad/package.json +++ b/ExampleMods/Mods/8OnLoad/package.json @@ -1,5 +1,5 @@ { - "Name": "8AddOnLoad", + "Name": "8OnLoadExample", "Version": "1.0.0", "SptVersion": "~4.0", "LoadBefore": [], diff --git a/ExampleMods/Mods/9OnUpdate/OnUpdateExample.cs b/ExampleMods/Mods/9OnUpdate/OnUpdateExample.cs new file mode 100644 index 00000000..cb0f22fc --- /dev/null +++ b/ExampleMods/Mods/9OnUpdate/OnUpdateExample.cs @@ -0,0 +1,33 @@ +using Core.DI; +using Core.Models.Utils; +using SptCommon.Annotations; + +namespace ExampleMods.Mods._9OnUpdate +{ + // Flag class as being OnLoad and give it a load priority, check `OnLoadOrder` for list of possible choices + [Injectable(InjectableTypeOverride = typeof(IOnUpdate), TypePriority = OnUpdateOrder.PostSptUpdate)] // Can also give it an int value for more fine-grained control + [Injectable(InjectableTypeOverride = typeof(OnUpdateExample))] + public class OnUpdateExample : IOnUpdate // Must implement the IOnUpdate interface + { + private readonly ISptLogger _logger; + + public OnUpdateExample( + ISptLogger logger) + { + _logger = logger; + } + + public bool OnUpdate(long timeSinceLastRun) + { + // Can do work here + _logger.Success($"Mod running update after SPT updates have run!"); + + return true; // Return true for a success, false for failure + } + + public string GetRoute() + { + return "mod-update-example"; + } + } +} diff --git a/ExampleMods/Mods/9OnUpdate/package.json b/ExampleMods/Mods/9OnUpdate/package.json new file mode 100644 index 00000000..1b1aa46f --- /dev/null +++ b/ExampleMods/Mods/9OnUpdate/package.json @@ -0,0 +1,13 @@ +{ + "Name": "9OnUpdateExample", + "Version": "1.0.0", + "SptVersion": "~4.0", + "LoadBefore": [], + "LoadAfter": [], + "IncompatibileMods": [], + "Url": "https://github.com/sp-tarkov/server-csharp/tree/develop/ExampleMods/Mods", + "IsBundleMod": false, + "Author": "SPT", + "Contributors": [], + "Licence": "MIT" +} diff --git a/Libraries/Core/Callbacks/DialogueCallbacks.cs b/Libraries/Core/Callbacks/DialogueCallbacks.cs index e5394838..3bdc18e9 100644 --- a/Libraries/Core/Callbacks/DialogueCallbacks.cs +++ b/Libraries/Core/Callbacks/DialogueCallbacks.cs @@ -8,7 +8,7 @@ using SptCommon.Annotations; namespace Core.Callbacks; -[Injectable(InjectableTypeOverride = typeof(OnUpdate), TypePriority = OnUpdateOrder.DialogueCallbacks)] +[Injectable(InjectableTypeOverride = typeof(IOnUpdate), TypePriority = OnUpdateOrder.DialogueCallbacks)] [Injectable(InjectableTypeOverride = typeof(DialogueCallbacks))] public class DialogueCallbacks( HashUtil _hashUtil, @@ -16,7 +16,7 @@ public class DialogueCallbacks( HttpResponseUtil _httpResponseUtil, DialogueController _dialogueController ) - : OnUpdate + : IOnUpdate { public bool OnUpdate(long timeSinceLastRun) { diff --git a/Libraries/Core/Callbacks/HideoutCallbacks.cs b/Libraries/Core/Callbacks/HideoutCallbacks.cs index 21dc69cc..c64cbc8e 100644 --- a/Libraries/Core/Callbacks/HideoutCallbacks.cs +++ b/Libraries/Core/Callbacks/HideoutCallbacks.cs @@ -9,12 +9,12 @@ using SptCommon.Annotations; namespace Core.Callbacks; -[Injectable(InjectableTypeOverride = typeof(OnUpdate), TypePriority = OnUpdateOrder.HideoutCallbacks)] +[Injectable(InjectableTypeOverride = typeof(IOnUpdate), TypePriority = OnUpdateOrder.HideoutCallbacks)] [Injectable(InjectableTypeOverride = typeof(HideoutCallbacks))] public class HideoutCallbacks( HideoutController _hideoutController, ConfigServer _configServer -) : OnUpdate +) : IOnUpdate { private readonly HideoutConfig _hideoutConfig = _configServer.GetConfig(); diff --git a/Libraries/Core/Callbacks/InsuranceCallbacks.cs b/Libraries/Core/Callbacks/InsuranceCallbacks.cs index 546e4ba2..b8c77d97 100644 --- a/Libraries/Core/Callbacks/InsuranceCallbacks.cs +++ b/Libraries/Core/Callbacks/InsuranceCallbacks.cs @@ -11,7 +11,7 @@ using SptCommon.Annotations; namespace Core.Callbacks; -[Injectable(InjectableTypeOverride = typeof(OnUpdate), TypePriority = OnUpdateOrder.InsuranceCallbacks)] +[Injectable(InjectableTypeOverride = typeof(IOnUpdate), TypePriority = OnUpdateOrder.InsuranceCallbacks)] [Injectable(InjectableTypeOverride = typeof(InsuranceCallbacks))] public class InsuranceCallbacks( InsuranceController _insuranceController, @@ -19,7 +19,7 @@ public class InsuranceCallbacks( HttpResponseUtil _httpResponseUtil, ConfigServer _configServer ) - : OnUpdate + : IOnUpdate { private readonly InsuranceConfig _insuranceConfig = _configServer.GetConfig(); diff --git a/Libraries/Core/Callbacks/RagfairCallbacks.cs b/Libraries/Core/Callbacks/RagfairCallbacks.cs index 8311c924..8d81cb02 100644 --- a/Libraries/Core/Callbacks/RagfairCallbacks.cs +++ b/Libraries/Core/Callbacks/RagfairCallbacks.cs @@ -12,7 +12,7 @@ using SptCommon.Annotations; namespace Core.Callbacks; [Injectable(InjectableTypeOverride = typeof(IOnLoad), TypePriority = OnLoadOrder.RagfairCallbacks)] -[Injectable(InjectableTypeOverride = typeof(OnUpdate), TypePriority = OnUpdateOrder.RagfairCallbacks)] +[Injectable(InjectableTypeOverride = typeof(IOnUpdate), TypePriority = OnUpdateOrder.RagfairCallbacks)] [Injectable(InjectableTypeOverride = typeof(RagfairCallbacks))] public class RagfairCallbacks( HttpResponseUtil _httpResponseUtil, @@ -21,7 +21,7 @@ public class RagfairCallbacks( RagfairTaxService _ragfairTaxService, RagfairPriceService _ragfairPriceService, ConfigServer _configServer -) : IOnLoad, OnUpdate +) : IOnLoad, IOnUpdate { private readonly RagfairConfig _ragfairConfig = _configServer.GetConfig(); diff --git a/Libraries/Core/Callbacks/SaveCallbacks.cs b/Libraries/Core/Callbacks/SaveCallbacks.cs index 31d4c5c4..1fca573a 100644 --- a/Libraries/Core/Callbacks/SaveCallbacks.cs +++ b/Libraries/Core/Callbacks/SaveCallbacks.cs @@ -7,13 +7,13 @@ using SptCommon.Annotations; namespace Core.Callbacks; [Injectable(InjectableTypeOverride = typeof(IOnLoad), TypePriority = OnLoadOrder.SaveCallbacks)] -[Injectable(InjectableTypeOverride = typeof(OnUpdate), TypePriority = OnUpdateOrder.SaveCallbacks)] +[Injectable(InjectableTypeOverride = typeof(IOnUpdate), TypePriority = OnUpdateOrder.SaveCallbacks)] public class SaveCallbacks( SaveServer _saveServer, ConfigServer _configServer, BackupService _backupService ) - : IOnLoad, OnUpdate + : IOnLoad, IOnUpdate { private readonly CoreConfig _coreConfig = _configServer.GetConfig(); diff --git a/Libraries/Core/Callbacks/TraderCallbacks.cs b/Libraries/Core/Callbacks/TraderCallbacks.cs index ebec1186..fbb62120 100644 --- a/Libraries/Core/Callbacks/TraderCallbacks.cs +++ b/Libraries/Core/Callbacks/TraderCallbacks.cs @@ -9,13 +9,13 @@ using SptCommon.Annotations; namespace Core.Callbacks; [Injectable(InjectableTypeOverride = typeof(IOnLoad), TypePriority = OnLoadOrder.TraderCallbacks)] -[Injectable(InjectableTypeOverride = typeof(OnUpdate), TypePriority = OnUpdateOrder.TraderCallbacks)] +[Injectable(InjectableTypeOverride = typeof(IOnUpdate), TypePriority = OnUpdateOrder.TraderCallbacks)] [Injectable(InjectableTypeOverride = typeof(TraderCallbacks))] public class TraderCallbacks( HttpResponseUtil _httpResponseUtil, TraderController _traderController, ConfigServer _configServer -) : IOnLoad, OnUpdate +) : IOnLoad, IOnUpdate { private readonly TraderConfig _traderConfig = _configServer.GetConfig(); diff --git a/Libraries/Core/DI/OnUpdate.cs b/Libraries/Core/DI/IOnUpdate.cs similarity index 76% rename from Libraries/Core/DI/OnUpdate.cs rename to Libraries/Core/DI/IOnUpdate.cs index 1ce820ee..3a98186d 100644 --- a/Libraries/Core/DI/OnUpdate.cs +++ b/Libraries/Core/DI/IOnUpdate.cs @@ -1,6 +1,6 @@ namespace Core.DI; -public interface OnUpdate +public interface IOnUpdate { bool OnUpdate(long timeSinceLastRun); string GetRoute(); diff --git a/Libraries/Core/DI/OnUpdateOrder.cs b/Libraries/Core/DI/OnUpdateOrder.cs index e53c3216..b338b5ad 100644 --- a/Libraries/Core/DI/OnUpdateOrder.cs +++ b/Libraries/Core/DI/OnUpdateOrder.cs @@ -2,10 +2,12 @@ namespace Core.DI; public static class OnUpdateOrder { - public const int DialogueCallbacks = 0; + public const int PreSptUpdate = 0; + public const int DialogueCallbacks = 1; public const int HideoutCallbacks = 100; public const int TraderCallbacks = 200; public const int RagfairCallbacks = 300; public const int InsuranceCallbacks = 400; public const int SaveCallbacks = 500; + public const int PostSptUpdate = 9999; }