Skip to content

Commit 02c4d37

Browse files
Add GetFile API to PolyScript
1 parent 32042ab commit 02c4d37

File tree

3 files changed

+28
-9
lines changed

3 files changed

+28
-9
lines changed

PolyMod.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
https://polymod.dev/nuget/v3/index.json;
1111
</RestoreAdditionalProjectSources>
1212
<Configurations>IL2CPP</Configurations>
13+
<RootNamespace>PolyMod</RootNamespace>
1314
<Version>1.2.7</Version>
1415
<PolytopiaVersion>2.16.0.15379</PolytopiaVersion>
1516
<Authors>PolyModdingTeam</Authors>

src/Api/PolyScript.cs

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,47 @@
11
using BepInEx.Logging;
22
using Newtonsoft.Json.Linq;
3-
using PolyMod.Managers;
43

54
namespace PolyMod.Api;
65

76
public abstract class PolyScriptBase
87
{
9-
internal abstract void Initialize(string name, ManualLogSource logger);
8+
/// <summary>
9+
/// Initializes the PolyScript with the given mod and logger.
10+
/// </summary>
11+
/// <param name="mod">The mod instance.</param>
12+
/// <param name="logger">The logger instance.</param>
13+
internal abstract void Initialize(Mod mod, ManualLogSource logger);
14+
15+
/// <summary>>
16+
/// Called when the mod is loaded.
17+
/// </summary>
1018
public abstract void Load();
11-
public abstract void UnLoad();
19+
20+
/// <summary>
21+
/// Called when the mod is unloaded.
22+
/// </summary>
23+
public abstract void Unload();
24+
1225
internal PolyScriptBase()
1326
{
1427
}
1528
}
1629
public abstract class PolyScript<TConfig, TExposedConfig> : PolyScriptBase where TConfig : class where TExposedConfig : class
1730
{
18-
internal override void Initialize(string name, ManualLogSource logger)
31+
internal override void Initialize(Mod mod, ManualLogSource logger)
1932
{
20-
ModName = name;
21-
Config = new Config<TConfig>(name, Config<TConfig>.ConfigTypes.PerMod);
22-
ExposedConfig = new Config<TExposedConfig>(name, Config<TExposedConfig>.ConfigTypes.Exposed);
33+
Mod = mod;
34+
Config = new Config<TConfig>(mod.id, Config<TConfig>.ConfigTypes.PerMod);
35+
ExposedConfig = new Config<TExposedConfig>(mod.id, Config<TExposedConfig>.ConfigTypes.Exposed);
2336
Logger = logger;
2437
}
2538

26-
public string ModName { get; private set; } = null!;
39+
internal byte[]? GetFile(string fileName)
40+
{
41+
return Registry.mods[Mod.id].files.FirstOrDefault(f => f.name == fileName)?.bytes;
42+
}
43+
44+
public Mod Mod { get; private set; } = null!;
2745
protected Config<TConfig> Config { get; private set; } = null!;
2846
protected Config<TExposedConfig> ExposedConfig { get; private set; } = null!;
2947
protected ManualLogSource Logger { get; private set; } = null!;

src/Loader.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -474,7 +474,7 @@ public static void LoadAssemblyFile(Mod mod, Mod.File file)
474474
is { } modType)
475475
{
476476
var modInstance = (Api.PolyScriptBase) Activator.CreateInstance(modType)!;
477-
modInstance.Initialize(mod.id, BepInEx.Logging.Logger.CreateLogSource($"PolyMod] [{mod.id}"));
477+
modInstance.Initialize(mod, BepInEx.Logging.Logger.CreateLogSource($"PolyMod] [{mod.id}"));
478478
modInstance.Load();
479479
return;
480480
}

0 commit comments

Comments
 (0)