-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMod.cs
61 lines (53 loc) · 1.83 KB
/
Mod.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Game;
using Game.Modding;
using Game.SceneFlow;
using Colossal.IO.AssetDatabase;
using Colossal.Logging;
using Colossal.PSI.Environment;
using Colossal.UI;
using Game.Prefabs;
using Game.PSI;
using JetBrains.Annotations;
using UnityEngine;
using Hash128 = Colossal.Hash128;
using StreamReader = System.IO.StreamReader;
namespace AssetPacksManager
{
public class Mod : IMod
{
public string ModPath { get; set; }
public static ApmLogger Logger = new();
public void OnLoad(UpdateSystem updateSystem)
{
ApmLogger.Init();
if (GameManager.instance.modManager.TryGetExecutableAsset(this, out var asset))
{
//if (!DisableLogging)
// Logger.Info($"Current mod asset at {asset.path}");
ModPath = Path.GetDirectoryName(asset.path);
UIManager.defaultUISystem.AddHostLocation("apm", Path.Combine(Path.GetDirectoryName(asset.path), "Resources"), false);
}
Setting setting = new (this);
setting.RegisterInOptionsUI();
GameManager.instance.localizationManager.AddSource("en-US", new LocaleEN(setting));
AssetDatabase.global.LoadSettings(nameof(AssetPacksManager), setting, new Setting(this));
Setting.Instance = setting;
Setting.Instance.UpdateLogLevel();
Logger.Info(Setting.Instance.ToString());
updateSystem.UpdateAt<AssetPackLoaderSystem>(SystemUpdatePhase.MainLoop);
}
public void OnDispose()
{
if (Setting.Instance != null)
{
Setting.Instance.UnregisterInOptionsUI();
Setting.Instance = null;
}
}
}
}