2using System.Collections.Generic;
77 private static readonly Dictionary<string, string>
builtinPackages =
new Dictionary<string, string>
79 {
"_Elona",
"elin_core1" },
80 {
"_Lang_Chinese",
"elin_language_chinese" },
81 {
"_ModdingKit",
"elin.plugins.modding" },
82 {
"Mod_Slot",
"elin_minigame_slot" }
91 DirectoryInfo directoryInfo =
dirInfo;
92 if (directoryInfo !=
null && directoryInfo.Exists)
107 string text = s.Trim().ToLowerInvariant();
117 if (!dirName.IsEmpty())
126 if (dir !=
null &&
builtinPackages.TryGetValue(dir.Name, out var value))
144 if (!File.Exists(
dirInfo.FullName +
"/package.xml"))
154 string text = dirInfo.FullName +
"/package.xml";
155 if (!File.Exists(text))
162 bytes = File.ReadAllBytes(text);
167 Debug.LogWarning(
$"#mod package.xml can't be read: {text}\n{ex}");
171 XDocument xDocument =
ModXml.
Load(bytes, out error);
172 if (xDocument?.Root ==
null)
174 parseError = error.IsEmpty(
"no root element");
175 Debug.LogWarning(
"#mod package.xml failed to parse: " + text +
"\n" +
parseError);
180 string packageId =
null;
184 string[] array =
null;
186 List<string[]> rows =
null;
187 List<string[]> rows2 =
null;
188 List<string[]> rows3 =
null;
189 List<string[]> rows4 =
null;
192 foreach (XElement
item in xDocument.Root.Descendants())
197 Debug.LogWarning(
"#mod package.xml unknown element <" +
item.Name.LocalName +
">, ignored: " + text);
200 if (text7 !=
item.Name.LocalName)
202 Debug.LogWarning(
"#mod package.xml <" +
item.Name.LocalName +
"> should be written as <" + text7 +
">, parsed: " + text);
229 num = Mathf.Clamp(result, -999, 999);
251 catch (Exception ex2)
254 Debug.LogWarning(
$"#mod package.xml failed to parse: {text}\n{ex2}");
278 Debug.Log(
"Activating(" + (num + 1) +
") : " +
title +
"/" +
id);
286 DirectoryInfo[] directories =
dirInfo.GetDirectories();
287 foreach (DirectoryInfo directoryInfo
in directories)
289 if (directoryInfo.Name.ToLower() ==
"actor")
291 FileInfo[] files = directoryInfo.GetFiles(
"*.xlsx", SearchOption.TopDirectoryOnly);
292 foreach (FileInfo fileInfo
in files)
296 DirectoryInfo[] directories2 = directoryInfo.GetDirectories();
297 foreach (DirectoryInfo directoryInfo2
in directories2)
299 Log.
App(directoryInfo2.FullName);
300 string text = directoryInfo2.Name.ToLower();
301 if (!(text ==
"pcc"))
303 if (!(text ==
"sprite"))
307 files = directoryInfo2.GetFiles();
308 foreach (FileInfo fileInfo2
in files)
310 if (fileInfo2.Name.EndsWith(
".png"))
318 DirectoryInfo[] directories3 = directoryInfo2.GetDirectories();
319 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)