2using System.Collections.Generic;
79 private static readonly Dictionary<string, string>
builtinPackages =
new Dictionary<string, string>
81 {
"_Elona",
"elin_core1" },
82 {
"_Lang_Chinese",
"elin_language_chinese" },
83 {
"_ModdingKit",
"elin.plugins.modding" },
84 {
"Mod_Slot",
"elin_minigame_slot" }
93 DirectoryInfo directoryInfo =
dirInfo;
94 if (directoryInfo !=
null && directoryInfo.Exists)
109 string text = s.Trim().ToLowerInvariant();
119 if (!dirName.IsEmpty())
128 if (dir !=
null &&
builtinPackages.TryGetValue(dir.Name, out var value))
146 if (!File.Exists(
dirInfo.FullName +
"/package.xml"))
156 string text = dirInfo.FullName +
"/package.xml";
157 if (!File.Exists(text))
164 bytes = File.ReadAllBytes(text);
169 Debug.LogWarning(
$"#mod package.xml can't be read: {text}\n{ex}");
173 XDocument xDocument =
ModXml.
Load(bytes, out error);
174 if (xDocument?.Root ==
null)
176 parseError = error.IsEmpty(
"no root element");
177 Debug.LogWarning(
"#mod package.xml failed to parse: " + text +
"\n" +
parseError);
182 string packageId =
null;
186 string[] array =
null;
188 List<string[]> rows =
null;
189 List<string[]> rows2 =
null;
190 List<string[]> rows3 =
null;
191 List<string[]> rows4 =
null;
194 foreach (XElement
item in xDocument.Root.Descendants())
199 Debug.LogWarning(
"#mod package.xml unknown element <" +
item.Name.LocalName +
">, ignored: " + text);
202 if (text7 !=
item.Name.LocalName)
204 Debug.LogWarning(
"#mod package.xml <" +
item.Name.LocalName +
"> should be written as <" + text7 +
">, parsed: " + text);
231 num = Mathf.Clamp(result, -999, 999);
253 catch (Exception ex2)
256 Debug.LogWarning(
$"#mod package.xml failed to parse: {text}\n{ex2}");
280 Debug.Log(
"Activating(" + (num + 1) +
") : " +
title +
"/" +
id);
288 DirectoryInfo[] directories =
dirInfo.GetDirectories();
289 foreach (DirectoryInfo directoryInfo
in directories)
291 if (directoryInfo.Name.ToLower() ==
"actor")
293 FileInfo[] files = directoryInfo.GetFiles(
"*.xlsx", SearchOption.TopDirectoryOnly);
294 foreach (FileInfo fileInfo
in files)
298 DirectoryInfo[] directories2 = directoryInfo.GetDirectories();
299 foreach (DirectoryInfo directoryInfo2
in directories2)
301 Log.
App(directoryInfo2.FullName);
302 string text = directoryInfo2.Name.ToLower();
303 if (!(text ==
"pcc"))
305 if (!(text ==
"sprite"))
309 files = directoryInfo2.GetFiles();
310 foreach (FileInfo fileInfo2
in files)
312 if (fileInfo2.Name.EndsWith(
".png"))
320 DirectoryInfo[] directories3 = directoryInfo2.GetDirectories();
321 foreach (DirectoryInfo obj
in directories3)
List< BaseModPackage > packages
virtual void ParseExtra(DirectoryInfo dir, BaseModPackage package)
static BaseModManager Instance
static string NormalizeId(string s)
BaseModPackage duplicateOf
const int defaultLoadPriority
void UpdateMeta(bool updateOnly=false)
const int minLoadPriority
static XmlReaderSettings readerSetting
static bool IsBuiltinPackage(DirectoryInfo dir, string packageId)
const int maxLoadPriority
static bool IsBuiltinDir(string dirName)
static XmlReader xmlReader
static readonly Dictionary< string, string > builtinPackages
static void App(string s)
static ExcelDataList actorSources
static ModItemList< Sprite > sprites
static Action< DirectoryInfo > OnAddPcc
void Add(FileInfo fi, string path=null, string prefix="")
static XDocument Load(byte[] bytes, out string error)
static string[] SplitTags(string value)
static string ValidXml(string name)
static string Text(XElement e)
static void ReadIdRow(XElement e, ref List< string[]> rows, string path)
static Version Get(string str)
bool IsBelow(int _major, int _minor, int _batch)