From 02c4d379ef3fc0232cdb03ed641626c6d7486b5a Mon Sep 17 00:00:00 2001 From: IExploitableMan Date: Tue, 30 Dec 2025 11:35:01 +0300 Subject: [PATCH] Add `GetFile` API to `PolyScript` --- PolyMod.csproj | 1 + src/Api/PolyScript.cs | 34 ++++++++++++++++++++++++++-------- src/Loader.cs | 2 +- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/PolyMod.csproj b/PolyMod.csproj index c45d0b7..f1447d2 100644 --- a/PolyMod.csproj +++ b/PolyMod.csproj @@ -10,6 +10,7 @@ https://polymod.dev/nuget/v3/index.json; IL2CPP + PolyMod 1.2.7 2.16.0.15379 PolyModdingTeam diff --git a/src/Api/PolyScript.cs b/src/Api/PolyScript.cs index d53b0dc..7af7481 100644 --- a/src/Api/PolyScript.cs +++ b/src/Api/PolyScript.cs @@ -1,29 +1,47 @@ using BepInEx.Logging; using Newtonsoft.Json.Linq; -using PolyMod.Managers; namespace PolyMod.Api; public abstract class PolyScriptBase { - internal abstract void Initialize(string name, ManualLogSource logger); + /// + /// Initializes the PolyScript with the given mod and logger. + /// + /// The mod instance. + /// The logger instance. + internal abstract void Initialize(Mod mod, ManualLogSource logger); + + /// > + /// Called when the mod is loaded. + /// public abstract void Load(); - public abstract void UnLoad(); + + /// + /// Called when the mod is unloaded. + /// + public abstract void Unload(); + internal PolyScriptBase() { } } public abstract class PolyScript : PolyScriptBase where TConfig : class where TExposedConfig : class { - internal override void Initialize(string name, ManualLogSource logger) + internal override void Initialize(Mod mod, ManualLogSource logger) { - ModName = name; - Config = new Config(name, Config.ConfigTypes.PerMod); - ExposedConfig = new Config(name, Config.ConfigTypes.Exposed); + Mod = mod; + Config = new Config(mod.id, Config.ConfigTypes.PerMod); + ExposedConfig = new Config(mod.id, Config.ConfigTypes.Exposed); Logger = logger; } - public string ModName { get; private set; } = null!; + internal byte[]? GetFile(string fileName) + { + return Registry.mods[Mod.id].files.FirstOrDefault(f => f.name == fileName)?.bytes; + } + + public Mod Mod { get; private set; } = null!; protected Config Config { get; private set; } = null!; protected Config ExposedConfig { get; private set; } = null!; protected ManualLogSource Logger { get; private set; } = null!; diff --git a/src/Loader.cs b/src/Loader.cs index c5dc4d8..beda188 100644 --- a/src/Loader.cs +++ b/src/Loader.cs @@ -474,7 +474,7 @@ public static void LoadAssemblyFile(Mod mod, Mod.File file) is { } modType) { var modInstance = (Api.PolyScriptBase) Activator.CreateInstance(modType)!; - modInstance.Initialize(mod.id, BepInEx.Logging.Logger.CreateLogSource($"PolyMod] [{mod.id}")); + modInstance.Initialize(mod, BepInEx.Logging.Logger.CreateLogSource($"PolyMod] [{mod.id}")); modInstance.Load(); return; }