Skip to content

Commit 360a0aa

Browse files
committed
2 parents a969a8a + 0b1db0d commit 360a0aa

File tree

3 files changed

+29
-9
lines changed

3 files changed

+29
-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.8-pre</Version>
1415
<PolytopiaVersion>2.16.2.15384</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: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,7 @@ private static bool SortMods(Dictionary<string, Mod> mods)
421421
{
422422
foreach (var dependency in mod.dependencies ?? Array.Empty<Mod.Dependency>())
423423
{
424+
if (!graph.ContainsKey(dependency.id)) continue;
424425
graph[dependency.id].Add(id);
425426
inDegree[id]++;
426427
}
@@ -475,7 +476,7 @@ public static void LoadAssemblyFile(Mod mod, Mod.File file)
475476
is { } modType)
476477
{
477478
var modInstance = (Api.PolyScriptBase) Activator.CreateInstance(modType)!;
478-
modInstance.Initialize(mod.id, BepInEx.Logging.Logger.CreateLogSource($"PolyMod] [{mod.id}"));
479+
modInstance.Initialize(mod, BepInEx.Logging.Logger.CreateLogSource($"PolyMod] [{mod.id}"));
479480
modInstance.Load();
480481
return;
481482
}

0 commit comments

Comments
 (0)