This repository has been archived by the owner on Mar 27, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
SubModule.cs
69 lines (58 loc) · 2.52 KB
/
SubModule.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
62
63
64
65
66
67
68
69
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using TaleWorlds.CampaignSystem;
using TaleWorlds.Core;
using TaleWorlds.MountAndBlade;
namespace WandererStringsLoader
{
public class SubModule : MBSubModuleBase
{
static bool isDefaultModuleDir(string dir)
{
HashSet<string> defaultModuleDirs = new HashSet<string> { "SandBox", "SandBoxCore", "StoryMode", "CustomBattle", "Native" };
string dirname = Path.GetFileName(dir);
return defaultModuleDirs.Contains(dirname);
}
private string[] FindWandererStringsXMLs()
{
string assemblyDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string currentModuleDir = Path.Combine(assemblyDir, "..", "..");
string modulesDir = Path.Combine(currentModuleDir, "..");
string[] moduleDirs = Directory.GetDirectories(modulesDir, "*", SearchOption.TopDirectoryOnly);
List<string> allWandererStringsList = new List<string>();
foreach (string moduleDir in moduleDirs)
{
if (isDefaultModuleDir(moduleDir))
{
continue;
}
string moduleDataDir = Path.Combine(moduleDir, "ModuleData");
if (Directory.Exists(moduleDataDir))
{
string[] wandererStringsFiles = Directory.GetFiles(moduleDataDir, "wanderer_strings_*.xml", SearchOption.TopDirectoryOnly);
allWandererStringsList.AddRange(wandererStringsFiles);
}
}
return allWandererStringsList.ToArray();
}
private void LoadWandererStringsXMLs(CampaignGameStarter gameInitializer)
{
string[] wandererXMLFiles = this.FindWandererStringsXMLs();
foreach (string filePath in wandererXMLFiles)
{
gameInitializer.LoadGameTexts(filePath);
}
}
public override void OnGameLoaded(Game game, object initializerObject)
{
base.OnGameLoaded(game, initializerObject);
this.LoadWandererStringsXMLs((CampaignGameStarter)initializerObject);
}
public override void OnNewGameCreated(Game game, object initializerObject)
{
base.OnNewGameCreated(game, initializerObject);
this.LoadWandererStringsXMLs((CampaignGameStarter)initializerObject);
}
}
}