Skip to content

Commit 342d13d

Browse files
committed
Minor cleanup, dependency assertion.
1 parent 4cf708d commit 342d13d

9 files changed

Lines changed: 291 additions & 254 deletions

File tree

Experiment5ParallelMenuLoading/Loaders/GSModMenuLoad.cs

Lines changed: 160 additions & 151 deletions
Large diffs are not rendered by default.

Experiment5ParallelMenuLoading/Loaders/ModMenuLoad.cs

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
using System.Threading.Tasks;
88
using UnityEngine;
99

10-
namespace ShortMenuLoader
10+
namespace ShortMenuLoader.Loaders
1111
{
1212
internal class ModMenuLoad
1313
{
@@ -28,7 +28,7 @@ public static IEnumerator ModMenuLoadStart(List<SceneEdit.SMenuItem> menuList, D
2828
{
2929
try
3030
{
31-
if (TMonitor.TryEnter(modFiles, Main.TimeoutLimit.Value))
31+
if (TMonitor.TryEnter(modFiles, ShortMenuLoader.TimeoutLimit.Value))
3232
{
3333
try
3434
{
@@ -42,20 +42,20 @@ public static IEnumerator ModMenuLoadStart(List<SceneEdit.SMenuItem> menuList, D
4242
}
4343
else
4444
{
45-
Main.PLogger.LogError($"Timed out waiting for mutex to allow entry...");
45+
ShortMenuLoader.PLogger.LogError($"Timed out waiting for mutex to allow entry...");
4646
}
4747
}
4848
catch
4949
{
50-
Main.PLogger.LogError("Couldn't read .mod file at: " + mod);
50+
ShortMenuLoader.PLogger.LogError("Couldn't read .mod file at: " + mod);
5151
}
5252
}
5353
54-
Main.PLogger.LogInfo($"After loading all .mod files, we have allocated: {GC.GetTotalMemory(false) * 0.000001}");
54+
ShortMenuLoader.PLogger.LogInfo($"After loading all .mod files, we have allocated: {GC.GetTotalMemory(false) * 0.000001}");
5555
}));
5656
*/
5757

58-
foreach (var mod in Main.FilesInModFolder.Where(t => t.ToLower().EndsWith(".mod")))
58+
foreach (var mod in ShortMenuLoader.FilesInModFolder.Where(t => t.ToLower().EndsWith(".mod")))
5959
{
6060
var mi2 = new SceneEdit.SMenuItem();
6161
if (InitModMenuItemScript(mi2, mod, out var icon))
@@ -69,7 +69,7 @@ public static IEnumerator ModMenuLoadStart(List<SceneEdit.SMenuItem> menuList, D
6969
/*
7070
if (servantWorker.IsFaulted)
7171
{
72-
Main.PLogger.LogError($"Servant task failed due to an unexpected error!");
72+
ShortMenuLoader.PLogger.LogError($"Servant task failed due to an unexpected error!");
7373
7474
throw servantWorker.Exception;
7575
}
@@ -85,11 +85,11 @@ public static IEnumerator ModMenuLoadStart(List<SceneEdit.SMenuItem> menuList, D
8585

8686
if (loaderWorker.IsFaulted)
8787
{
88-
Main.PLogger.LogWarning($"Worker task failed due to an unexpected error! SceneEditInstance is considered a full failure: {loaderWorker.Exception.InnerException.Message}\n{loaderWorker.Exception.InnerException.StackTrace}\n\nwe will try restarting the load task...");
88+
ShortMenuLoader.PLogger.LogWarning($"Worker task failed due to an unexpected error! SceneEditInstance is considered a full failure: {loaderWorker.Exception?.InnerException?.Message}\n{loaderWorker.Exception.InnerException.StackTrace}\n\nwe will try restarting the load task...");
8989

9090
yield return new WaitForSecondsRealtime(2);
9191

92-
Main.SceneEditInstance.StartCoroutine(ModMenuLoadStart(menuList, menuGroupMemberDic));
92+
ShortMenuLoader.SceneEditInstance.StartCoroutine(ModMenuLoadStart(menuList, menuGroupMemberDic));
9393

9494
yield break;
9595
}
@@ -108,19 +108,19 @@ public static IEnumerator ModMenuLoadStart(List<SceneEdit.SMenuItem> menuList, D
108108

109109
foreach (var mi2 in modIconLoads.Keys)
110110
{
111-
//AccessTools.Method(typeof(SceneEdit), "AddMenuItemToList").Invoke(Main.@this, new object[] { mi2 });
112-
Main.SceneEditInstance.AddMenuItemToList(mi2);
111+
//AccessTools.Method(typeof(SceneEdit), "AddMenuItemToList").Invoke(ShortMenuLoader.@this, new object[] { mi2 });
112+
ShortMenuLoader.SceneEditInstance.AddMenuItemToList(mi2);
113113
//this.AddMenuItemToList(mi2);
114114
menuList.Add(mi2);
115-
if (!Main.SceneEditInstance.m_menuRidDic.ContainsKey(mi2.m_nMenuFileRID))
115+
if (!ShortMenuLoader.SceneEditInstance.m_menuRidDic.ContainsKey(mi2.m_nMenuFileRID))
116116
{
117-
Main.SceneEditInstance.m_menuRidDic.Add(mi2.m_nMenuFileRID, mi2);
117+
ShortMenuLoader.SceneEditInstance.m_menuRidDic.Add(mi2.m_nMenuFileRID, mi2);
118118
}
119119
else
120120
{
121-
Main.SceneEditInstance.m_menuRidDic[mi2.m_nMenuFileRID] = mi2;
121+
ShortMenuLoader.SceneEditInstance.m_menuRidDic[mi2.m_nMenuFileRID] = mi2;
122122
}
123-
//string parentMenuName = AccessTools.Method(typeof(SceneEdit), "GetParentMenuFileName").Invoke(Main.@this, new object[] { mi2 }) as string;
123+
//string parentMenuName = AccessTools.Method(typeof(SceneEdit), "GetParentMenuFileName").Invoke(ShortMenuLoader.@this, new object[] { mi2 }) as string;
124124
var parentMenuName = SceneEdit.GetParentMenuFileName(mi2);
125125
//string parentMenuName = SceneEdit.GetParentMenuFileName(mi2);
126126
if (!string.IsNullOrEmpty(parentMenuName))
@@ -138,14 +138,14 @@ public static IEnumerator ModMenuLoadStart(List<SceneEdit.SMenuItem> menuList, D
138138
mi2.m_listMember = new List<SceneEdit.SMenuItem> { mi2 };
139139
}
140140

141-
if (Main.BreakInterval.Value < Time.realtimeSinceStartup - Main.Time)
141+
if (ShortMenuLoader.BreakInterval.Value < Time.realtimeSinceStartup - ShortMenuLoader.Time)
142142
{
143143
yield return null;
144-
Main.Time = Time.realtimeSinceStartup;
144+
ShortMenuLoader.Time = Time.realtimeSinceStartup;
145145
}
146146
}
147-
Main.ThreadsDone++;
148-
Main.PLogger.LogInfo($".Mods finished loading at: {Main.WatchOverall.Elapsed}");
147+
ShortMenuLoader.ThreadsDone++;
148+
ShortMenuLoader.PLogger.LogInfo($".Mods finished loading at: {ShortMenuLoader.WatchOverall.Elapsed}");
149149
}
150150

151151
public static bool InitModMenuItemScript(SceneEdit.SMenuItem mi, string fStrModFileName, out byte[] icon)
@@ -160,7 +160,7 @@ public static bool InitModMenuItemScript(SceneEdit.SMenuItem mi, string fStrModF
160160
var text = binaryReader.ReadString();
161161
if (text != "CM3D2_MOD")
162162
{
163-
Main.PLogger.LogError("InitModMenuItemScript (例外 : ヘッダーファイルが不正です。) The following header for this file indicates that this is not a mod file: " + text + " @ " + fStrModFileName);
163+
ShortMenuLoader.PLogger.LogError("InitModMenuItemScript (例外 : ヘッダーファイルが不正です。) The following header for this file indicates that this is not a mod file: " + text + " @ " + fStrModFileName);
164164

165165
return false;
166166
}
@@ -179,7 +179,7 @@ public static bool InitModMenuItemScript(SceneEdit.SMenuItem mi, string fStrModF
179179
}
180180
catch
181181
{
182-
Main.PLogger.LogError("(カテゴリがありません。) There is no category called: " + text5 + " @ " + fStrModFileName);
182+
ShortMenuLoader.PLogger.LogError("(カテゴリがありません。) There is no category called: " + text5 + " @ " + fStrModFileName);
183183

184184
return false;
185185
}
@@ -212,7 +212,7 @@ public static bool InitModMenuItemScript(SceneEdit.SMenuItem mi, string fStrModF
212212
mi.m_strInfo = text4.Replace("《改行》", "\n");
213213
mi.m_strCateName = strCateName;
214214

215-
if (Main.PutMenuFileNameInItemDescription.Value)
215+
if (ShortMenuLoader.PutMenuFileNameInItemDescription.Value)
216216
{
217217
mi.m_strInfo += $"\n\n{Path.GetFileName(fStrModFileName)}";
218218
}
@@ -223,7 +223,7 @@ public static bool InitModMenuItemScript(SceneEdit.SMenuItem mi, string fStrModF
223223
}
224224
catch
225225
{
226-
Main.PLogger.LogWarning("(カテゴリがありません。) There is no category called: " + mi.m_strCateName + " @ " + fStrModFileName);
226+
ShortMenuLoader.PLogger.LogWarning("(カテゴリがありません。) There is no category called: " + mi.m_strCateName + " @ " + fStrModFileName);
227227
mi.m_mpn = MPN.null_mpn;
228228
}
229229

@@ -268,7 +268,7 @@ public static bool InitModMenuItemScript(SceneEdit.SMenuItem mi, string fStrModF
268268
}
269269
catch
270270
{
271-
Main.PLogger.LogError("(無限色IDがありません。) There is no infinite color ID called: " + text8 + " @ " + fStrModFileName);
271+
ShortMenuLoader.PLogger.LogError("(無限色IDがありません。) There is no infinite color ID called: " + text8 + " @ " + fStrModFileName);
272272
}
273273
mi.m_pcMultiColorID = pcMultiColorId;
274274
}
@@ -279,7 +279,7 @@ public static bool InitModMenuItemScript(SceneEdit.SMenuItem mi, string fStrModF
279279
}
280280
catch (Exception ex)
281281
{
282-
Main.PLogger.LogError("InitModMenuItemScript The following MOD item menu file could not be loaded (MODアイテムメニューファイルが読み込めませんでした。) : " + fStrModFileName + "\n\n" + ex.Message + "\n" + ex.StackTrace);
282+
ShortMenuLoader.PLogger.LogError("InitModMenuItemScript The following MOD item menu file could not be loaded (MODアイテムメニューファイルが読み込めませんでした。) : " + fStrModFileName + "\n\n" + ex.Message + "\n" + ex.StackTrace);
283283
return false;
284284
}
285285
return true;

Experiment5ParallelMenuLoading/Loaders/VanillaMenuLoad.cs

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
using HarmonyLib;
2-
using Newtonsoft.Json;
3-
using System;
1+
using System;
42
using System.Collections;
53
using System.Collections.Generic;
64
using System.Diagnostics;
75
using System.IO;
86
using System.Linq;
97
using System.Threading.Tasks;
8+
using HarmonyLib;
9+
using Newtonsoft.Json;
1010
using UnityEngine;
1111

12-
namespace ShortMenuLoader
12+
namespace ShortMenuLoader.Loaders
1313
{
1414
internal class VanillaMenuLoad
1515
{
@@ -21,7 +21,7 @@ public static IEnumerator LoadCache(int retry = 0)
2121
{
2222
_cacheLoadDone = false;
2323

24-
if (!Main.SmvdLoaded && Main.UseVanillaCache.Value)
24+
if (!ShortMenuLoader.SmvdLoaded && ShortMenuLoader.UseVanillaCache.Value)
2525
{
2626
var cacheLoader = Task.Factory.StartNew(() =>
2727
{
@@ -46,20 +46,20 @@ public static IEnumerator LoadCache(int retry = 0)
4646
{
4747
if (cacheLoader.Exception?.InnerException != null)
4848
{
49-
Main.PLogger.LogError(
49+
ShortMenuLoader.PLogger.LogError(
5050
$"There was an error while attempting to load the vanilla cache: \n{cacheLoader.Exception.InnerException.Message}\n{cacheLoader.Exception.InnerException.StackTrace}\n\nAn attempt will be made to restart the load task...");
5151
}
5252

5353
yield return new WaitForSecondsRealtime(5);
5454

55-
Main.PlugInstance.StartCoroutine(LoadCache(++retry));
55+
ShortMenuLoader.PlugInstance.StartCoroutine(LoadCache(++retry));
5656

5757
yield break;
5858
}
5959

6060
if (cacheLoader.Exception?.InnerException != null)
6161
{
62-
Main.PLogger.LogError(
62+
ShortMenuLoader.PLogger.LogError(
6363
$"There was an error while attempting to load the vanilla cache: \n{cacheLoader.Exception.InnerException.Message}\n{cacheLoader.Exception.InnerException.StackTrace}\n\nThis is the 4th attempt to kick-start the task. Cache will be deleted and rebuilt next time.");
6464
}
6565

@@ -73,7 +73,7 @@ public static IEnumerator LoadCache(int retry = 0)
7373

7474
public static IEnumerator SaveCache(Dictionary<SceneEdit.SMenuItem, string> filesToLoad, int retry = 0)
7575
{
76-
if (Main.SmvdLoaded || !Main.UseVanillaCache.Value)
76+
if (ShortMenuLoader.SmvdLoaded || !ShortMenuLoader.UseVanillaCache.Value)
7777
{
7878
yield break;
7979
}
@@ -90,7 +90,7 @@ public static IEnumerator SaveCache(Dictionary<SceneEdit.SMenuItem, string> file
9090

9191
File.WriteAllText(CacheFile, JsonConvert.SerializeObject(_menuCache));
9292

93-
Main.PLogger.LogInfo("Finished cleaning and saving the mod cache...");
93+
ShortMenuLoader.PLogger.LogInfo("Finished cleaning and saving the mod cache...");
9494
});
9595

9696
while (cacheSaver.IsCompleted == false)
@@ -107,19 +107,19 @@ public static IEnumerator SaveCache(Dictionary<SceneEdit.SMenuItem, string> file
107107
{
108108
if (cacheSaver.Exception?.InnerException != null)
109109
{
110-
Main.PLogger.LogError(
110+
ShortMenuLoader.PLogger.LogError(
111111
$"Cache saver task failed due to an unexpected error! SceneEditInstance is considered a minor failure: {cacheSaver.Exception.InnerException.Message}\n{cacheSaver.Exception.InnerException.StackTrace}\n\nAn attempt will be made to restart the task again...");
112112
}
113113

114114
yield return new WaitForSecondsRealtime(5);
115115

116-
Main.PlugInstance.StartCoroutine(SaveCache(filesToLoad, ++retry));
116+
ShortMenuLoader.PlugInstance.StartCoroutine(SaveCache(filesToLoad, ++retry));
117117
}
118118
else
119119
{
120120
if (cacheSaver.Exception?.InnerException != null)
121121
{
122-
Main.PLogger.LogFatal(
122+
ShortMenuLoader.PLogger.LogFatal(
123123
$"Cache saver task failed due to an unexpected error! SceneEditInstance is considered a minor failure: {cacheSaver.Exception.InnerException.Message}\n{cacheSaver.Exception.InnerException.StackTrace}\n\nNo further attempts will be made to start the task again...");
124124

125125
throw cacheSaver.Exception.InnerException;
@@ -155,7 +155,7 @@ public static IEnumerator VanillaMenuLoadStart(List<SceneEdit.SMenuItem> menuLis
155155

156156
//SceneEditInstance entire for loop is what loads in normal game menus. It's been left relatively untouched.
157157

158-
if (!Main.SmvdLoaded)
158+
if (!ShortMenuLoader.SmvdLoaded)
159159
{
160160
var fileCount = menuDataBase.GetDataSize();
161161

@@ -181,7 +181,7 @@ public static IEnumerator VanillaMenuLoadStart(List<SceneEdit.SMenuItem> menuLis
181181
VanillaMenuLoaderSmvdCompat.LoadFromSmvdDictionary(ref filesToLoadFromDatabase);
182182
}
183183

184-
if (_cacheLoadDone != true && Main.UseVanillaCache.Value)
184+
if (_cacheLoadDone != true && ShortMenuLoader.UseVanillaCache.Value)
185185
{
186186
yield return new TimedWaitUntil(() => _cacheLoadDone, 0.5f);
187187
}
@@ -192,7 +192,7 @@ public static IEnumerator VanillaMenuLoadStart(List<SceneEdit.SMenuItem> menuLis
192192
{
193193
string iconFileName = null;
194194

195-
if (_menuCache.ContainsKey(mi.m_strMenuFileName) && Main.UseVanillaCache.Value)
195+
if (_menuCache.ContainsKey(mi.m_strMenuFileName) && ShortMenuLoader.UseVanillaCache.Value)
196196
{
197197
var tempStub = _menuCache[mi.m_strMenuFileName];
198198

@@ -214,14 +214,14 @@ public static IEnumerator VanillaMenuLoadStart(List<SceneEdit.SMenuItem> menuLis
214214
}
215215
else
216216
{
217-
Main.PLogger.LogWarning("GameData folder was changed! We'll be wiping the vanilla cache clean and rebuilding it now.");
217+
ShortMenuLoader.PLogger.LogWarning("GameData folder was changed! We'll be wiping the vanilla cache clean and rebuilding it now.");
218218
_menuCache = new Dictionary<string, MenuStub>();
219219
}
220220
}
221221

222222
if (string.IsNullOrEmpty(mi.m_strMenuName))
223223
{
224-
//Main.PLogger.LogInfo($"Loading {mi.m_strMenuFileName} from the database as it wasn't in cache...");
224+
//ShortMenuLoader.PLogger.LogInfo($"Loading {mi.m_strMenuFileName} from the database as it wasn't in cache...");
225225
ReadMenuItemDataFromNative(mi, filesToLoadFromDatabase[mi], out iconFileName);
226226
}
227227

@@ -245,7 +245,7 @@ public static IEnumerator VanillaMenuLoadStart(List<SceneEdit.SMenuItem> menuLis
245245
}
246246
catch (Exception ex)
247247
{
248-
Main.PLogger.LogError(string.Concat("ReadMenuItemDataFromNative Exception(例外):", mi.m_strMenuFileName, "\n\n", ex.Message, " StackTrace/", ex.StackTrace));
248+
ShortMenuLoader.PLogger.LogError(string.Concat("ReadMenuItemDataFromNative Exception(例外):", mi.m_strMenuFileName, "\n\n", ex.Message, " StackTrace/", ex.StackTrace));
249249
}
250250
}
251251

@@ -257,14 +257,14 @@ public static IEnumerator VanillaMenuLoadStart(List<SceneEdit.SMenuItem> menuLis
257257
foreach (var mi in filesToLoad.Keys)
258258
{
259259
//Added the CRC checks to make this plug compatible with 3.xx
260-
if (!mi.m_bMan && !mi.m_strMenuFileName.Contains("_crc") && !mi.m_strMenuFileName.Contains("crc_") && !GsModMenuLoad.FilesDictionary.ContainsKey(mi.m_strMenuFileName) && Main.SceneEditInstance.editItemTextureCache.IsRegister(mi.m_nMenuFileRID))
260+
if (!mi.m_bMan && !mi.m_strMenuFileName.Contains("_crc") && !mi.m_strMenuFileName.Contains("crc_") && !GsModMenuLoad.FilesDictionary.ContainsKey(mi.m_strMenuFileName) && ShortMenuLoader.SceneEditInstance.editItemTextureCache.IsRegister(mi.m_nMenuFileRID))
261261
{
262-
AccessTools.Method(typeof(SceneEdit), "AddMenuItemToList").Invoke(Main.SceneEditInstance, new object[] { mi });
262+
AccessTools.Method(typeof(SceneEdit), "AddMenuItemToList").Invoke(ShortMenuLoader.SceneEditInstance, new object[] { mi });
263263

264264
menuList.Add(mi);
265265

266-
Main.SceneEditInstance.m_menuRidDic[mi.m_nMenuFileRID] = mi;
267-
var parentMenuName = AccessTools.Method(typeof(SceneEdit), "GetParentMenuFileName").Invoke(Main.SceneEditInstance, new object[] { mi }) as string;
266+
ShortMenuLoader.SceneEditInstance.m_menuRidDic[mi.m_nMenuFileRID] = mi;
267+
var parentMenuName = AccessTools.Method(typeof(SceneEdit), "GetParentMenuFileName").Invoke(ShortMenuLoader.SceneEditInstance, new object[] { mi }) as string;
268268

269269
if (!string.IsNullOrEmpty(parentMenuName))
270270
{
@@ -284,26 +284,26 @@ public static IEnumerator VanillaMenuLoadStart(List<SceneEdit.SMenuItem> menuLis
284284
};
285285
}
286286

287-
if (Main.BreakInterval.Value < Time.realtimeSinceStartup - Main.Time)
287+
if (ShortMenuLoader.BreakInterval.Value < Time.realtimeSinceStartup - ShortMenuLoader.Time)
288288
{
289289
yield return null;
290-
Main.Time = Time.realtimeSinceStartup;
290+
ShortMenuLoader.Time = Time.realtimeSinceStartup;
291291
}
292292
}
293293
}
294294

295-
Main.ThreadsDone++;
296-
Main.PLogger.LogInfo($"Vanilla menus finished loading at: {Main.WatchOverall.Elapsed}. "
297-
+ (Main.SmvdLoaded == false ?
295+
ShortMenuLoader.ThreadsDone++;
296+
ShortMenuLoader.PLogger.LogInfo($"Vanilla menus finished loading at: {ShortMenuLoader.WatchOverall.Elapsed}. "
297+
+ (ShortMenuLoader.SmvdLoaded == false ?
298298
$"We also spent {waitOnKiss.Elapsed} waiting for an unmodified database to finish loading..."
299299
: $"We also spent {waitOnKiss.Elapsed} waiting for SMVD's Database to load..."));
300300

301-
Main.SceneEditInstance.StartCoroutine(SaveCache(filesToLoad));
301+
ShortMenuLoader.SceneEditInstance.StartCoroutine(SaveCache(filesToLoad));
302302
}
303303

304304
public static void ReadMenuItemDataFromNative(SceneEdit.SMenuItem mi, int menuDataBaseIndex, out string iconStr)
305305
{
306-
if (!Main.SmvdLoaded)
306+
if (!ShortMenuLoader.SmvdLoaded)
307307
{
308308
var menuDataBase = GameMain.Instance.MenuDataBase;
309309
menuDataBase.SetIndex(menuDataBaseIndex);
@@ -320,7 +320,7 @@ public static void ReadMenuItemDataFromNative(SceneEdit.SMenuItem mi, int menuDa
320320
mi.m_bOld = menuDataBase.GetVersion() < 2000;
321321
iconStr = menuDataBase.GetIconS();
322322

323-
if (Main.UseVanillaCache.Value)
323+
if (ShortMenuLoader.UseVanillaCache.Value)
324324
{
325325
var newStub = new MenuStub
326326
{
@@ -340,7 +340,7 @@ public static void ReadMenuItemDataFromNative(SceneEdit.SMenuItem mi, int menuDa
340340
_menuCache[mi.m_strMenuFileName] = newStub;
341341
}
342342

343-
if (Main.PutMenuFileNameInItemDescription.Value)
343+
if (ShortMenuLoader.PutMenuFileNameInItemDescription.Value)
344344
{
345345
mi.m_strInfo += $"\n\n{menuDataBase.GetMenuFileName()}";
346346
}

0 commit comments

Comments
 (0)