Elin Decompiled Documentation EA 23.344.1 Nightly
Loading...
Searching...
No Matches
BaseModPackage Class Reference

Public Member Functions

bool IsValidVersion ()
 
bool Init ()
 
void UpdateMeta (bool updateOnly=false)
 
void Activate ()
 
void Parse ()
 

Static Public Member Functions

static string NormalizeId (string s)
 
static bool IsBuiltinDir (string dirName)
 
static bool IsBuiltinPackage (DirectoryInfo dir, string packageId)
 

Public Attributes

string title
 
string author
 
string version
 
string id
 
string description
 
string visibility
 
string[] tags
 
string[][] dependency
 
string[][] incompatible
 
string[][] loadAfter
 
string[][] loadBefore
 
bool builtin
 
bool activated
 
bool willActivate = true
 
bool installed
 
bool banned
 
bool isInPackages
 
bool hasPublishedPackage
 
bool downloadStarted
 
int loadPriority = 100
 
int orderIndex = -1
 
BaseModPackage blockedBy
 
string langDepError
 
BaseModPackage duplicateOf
 
string parseError
 
object item
 
DirectoryInfo dirInfo
 
Text progressText
 

Static Public Attributes

const int defaultLoadPriority = 100
 
const int minLoadPriority = -999
 
const int maxLoadPriority = 999
 
static XmlReader xmlReader
 
static XmlReaderSettings readerSetting
 

Properties

bool CanActivate [get]
 

Static Private Attributes

static readonly Dictionary< string, string > builtinPackages
 

Detailed Description

Definition at line 9 of file BaseModPackage.cs.

Member Function Documentation

◆ Activate()

void BaseModPackage.Activate ( )
inline

Definition at line 273 of file BaseModPackage.cs.

274 {
275 if (CanActivate)
276 {
277 int num = ((BaseModManager.Instance == null) ? (-1) : BaseModManager.Instance.packages.IndexOf(this));
278 Debug.Log("Activating(" + (num + 1) + ") : " + title + "/" + id);
279 activated = true;
280 Parse();
281 }
282 }
List< BaseModPackage > packages
static BaseModManager Instance

References activated, CanActivate, Debug, id, BaseModManager.Instance, BaseModManager.packages, Parse(), and title.

◆ Init()

bool BaseModPackage.Init ( )
inline

Definition at line 142 of file BaseModPackage.cs.

143 {
144 if (!File.Exists(dirInfo.FullName + "/package.xml"))
145 {
146 return false;
147 }
148 UpdateMeta();
149 return true;
150 }
DirectoryInfo dirInfo
void UpdateMeta(bool updateOnly=false)

References dirInfo, and UpdateMeta().

Referenced by ModManager.InitPackagesMeta().

◆ IsBuiltinDir()

static bool BaseModPackage.IsBuiltinDir ( string  dirName)
inlinestatic

Definition at line 115 of file BaseModPackage.cs.

116 {
117 if (!dirName.IsEmpty())
118 {
119 return builtinPackages.ContainsKey(dirName);
120 }
121 return false;
122 }
static readonly Dictionary< string, string > builtinPackages

References builtinPackages.

Referenced by ModManager.LoadLocalPackages().

◆ IsBuiltinPackage()

static bool BaseModPackage.IsBuiltinPackage ( DirectoryInfo  dir,
string  packageId 
)
inlinestatic

Definition at line 124 of file BaseModPackage.cs.

125 {
126 if (dir != null && builtinPackages.TryGetValue(dir.Name, out var value))
127 {
128 return NormalizeId(packageId) == value;
129 }
130 return false;
131 }
static string NormalizeId(string s)

References builtinPackages, and NormalizeId().

Referenced by UpdateMeta().

◆ IsValidVersion()

bool BaseModPackage.IsValidVersion ( )
inline

Definition at line 133 of file BaseModPackage.cs.

134 {
135 if (!builtin && !version.IsEmpty() && version.Split('.').Length >= 3)
136 {
138 }
139 return true;
140 }
Version versionMod
Definition: BaseCore.cs:21
static BaseCore Instance
Definition: BaseCore.cs:11
static Version Get(string str)
Definition: Version.cs:73
bool IsBelow(int _major, int _minor, int _batch)
Definition: Version.cs:49

References builtin, Version.Get(), BaseCore.Instance, Version.IsBelow(), version, and BaseCore.versionMod.

Referenced by LayerMod.ShowInfo().

◆ NormalizeId()

static string BaseModPackage.NormalizeId ( string  s)
inlinestatic

Definition at line 101 of file BaseModPackage.cs.

102 {
103 if (s.IsEmpty())
104 {
105 return null;
106 }
107 string text = s.Trim().ToLowerInvariant();
108 if (!text.IsEmpty())
109 {
110 return text;
111 }
112 return null;
113 }

Referenced by ModManager.ActivatePackageList(), ModManager.FindIncompatible(), IsBuiltinPackage(), ModManager.LoadLoadOrder(), ModXml.ReadIdRow(), ModManager.RegisterLoaded(), and ModManager.UnmetDependency().

◆ Parse()

void BaseModPackage.Parse ( )
inline

Definition at line 284 of file BaseModPackage.cs.

285 {
286 DirectoryInfo[] directories = dirInfo.GetDirectories();
287 foreach (DirectoryInfo directoryInfo in directories)
288 {
289 if (directoryInfo.Name.ToLower() == "actor")
290 {
291 FileInfo[] files = directoryInfo.GetFiles("*.xlsx", SearchOption.TopDirectoryOnly);
292 foreach (FileInfo fileInfo in files)
293 {
294 MOD.actorSources.Add(new ExcelData(fileInfo.FullName));
295 }
296 DirectoryInfo[] directories2 = directoryInfo.GetDirectories();
297 foreach (DirectoryInfo directoryInfo2 in directories2)
298 {
299 Log.App(directoryInfo2.FullName);
300 string text = directoryInfo2.Name.ToLower();
301 if (!(text == "pcc"))
302 {
303 if (!(text == "sprite"))
304 {
305 continue;
306 }
307 files = directoryInfo2.GetFiles();
308 foreach (FileInfo fileInfo2 in files)
309 {
310 if (fileInfo2.Name.EndsWith(".png"))
311 {
312 MOD.sprites.Add(fileInfo2);
313 }
314 }
315 }
316 else
317 {
318 DirectoryInfo[] directories3 = directoryInfo2.GetDirectories();
319 foreach (DirectoryInfo obj in directories3)
320 {
321 MOD.OnAddPcc(obj);
322 }
323 }
324 }
325 }
326 else
327 {
328 BaseModManager.Instance.ParseExtra(directoryInfo, this);
329 }
330 }
331 }
virtual void ParseExtra(DirectoryInfo dir, BaseModPackage package)
void Add(ExcelData data)
Definition: Log.cs:4
static void App(string s)
Definition: Log.cs:7
Definition: MOD.cs:7
static ExcelDataList actorSources
Definition: MOD.cs:20
static ModItemList< Sprite > sprites
Definition: MOD.cs:22
static Action< DirectoryInfo > OnAddPcc
Definition: MOD.cs:24
void Add(FileInfo fi, string path=null, string prefix="")
Definition: ModItemList.cs:85

References MOD.actorSources, ExcelDataList.Add(), ModItemList< T >.Add(), Log.App(), dirInfo, BaseModManager.Instance, MOD.OnAddPcc, BaseModManager.ParseExtra(), and MOD.sprites.

Referenced by Activate().

◆ UpdateMeta()

void BaseModPackage.UpdateMeta ( bool  updateOnly = false)
inline

Definition at line 152 of file BaseModPackage.cs.

153 {
154 string text = dirInfo.FullName + "/package.xml";
155 if (!File.Exists(text))
156 {
157 return;
158 }
159 byte[] bytes;
160 try
161 {
162 bytes = File.ReadAllBytes(text);
163 }
164 catch (Exception ex)
165 {
166 parseError = ex.Message;
167 Debug.LogWarning($"#mod package.xml can't be read: {text}\n{ex}");
168 return;
169 }
170 string error;
171 XDocument xDocument = ModXml.Load(bytes, out error);
172 if (xDocument?.Root == null)
173 {
174 parseError = error.IsEmpty("no root element");
175 Debug.LogWarning("#mod package.xml failed to parse: " + text + "\n" + parseError);
176 return;
177 }
178 string text2 = null;
179 string text3 = null;
180 string packageId = null;
181 string text4 = null;
182 string text5 = null;
183 string text6 = null;
184 string[] array = null;
185 int num = 100;
186 List<string[]> rows = null;
187 List<string[]> rows2 = null;
188 List<string[]> rows3 = null;
189 List<string[]> rows4 = null;
190 try
191 {
192 foreach (XElement item in xDocument.Root.Descendants())
193 {
194 string text7 = ModXml.ValidXml(item.Name.LocalName);
195 if (text7 == null)
196 {
197 Debug.LogWarning("#mod package.xml unknown element <" + item.Name.LocalName + ">, ignored: " + text);
198 continue;
199 }
200 if (text7 != item.Name.LocalName)
201 {
202 Debug.LogWarning("#mod package.xml <" + item.Name.LocalName + "> should be written as <" + text7 + ">, parsed: " + text);
203 }
204 switch (text7)
205 {
206 case "title":
207 text2 = ModXml.Text(item);
208 break;
209 case "author":
210 text3 = ModXml.Text(item);
211 break;
212 case "id":
213 packageId = ModXml.Text(item);
214 break;
215 case "description":
216 text4 = item.Value;
217 break;
218 case "version":
219 text5 = ModXml.Text(item);
220 break;
221 case "tag":
222 case "tags":
223 array = ModXml.SplitTags(ModXml.Text(item));
224 break;
225 case "loadPriority":
226 {
227 if (int.TryParse(ModXml.Text(item), out var result))
228 {
229 num = Mathf.Clamp(result, -999, 999);
230 }
231 break;
232 }
233 case "visibility":
234 text6 = ModXml.Text(item);
235 break;
236 case "dependency":
237 ModXml.ReadIdRow(item, ref rows, text);
238 break;
239 case "incompatible":
240 ModXml.ReadIdRow(item, ref rows2, text);
241 break;
242 case "loadAfter":
243 ModXml.ReadIdRow(item, ref rows3, text);
244 break;
245 case "loadBefore":
246 ModXml.ReadIdRow(item, ref rows4, text);
247 break;
248 }
249 }
250 }
251 catch (Exception ex2)
252 {
253 parseError = ex2.Message;
254 Debug.LogWarning($"#mod package.xml failed to parse: {text}\n{ex2}");
255 return;
256 }
257 title = text2;
258 author = text3;
259 id = packageId;
260 description = text4;
261 version = text5;
262 visibility = text6;
263 tags = array;
264 loadPriority = num;
265 dependency = rows?.ToArray();
266 incompatible = rows2?.ToArray();
267 loadAfter = rows3?.ToArray();
268 loadBefore = rows4?.ToArray();
269 builtin = IsBuiltinPackage(dirInfo, packageId);
270 parseError = null;
271 }
string[][] loadAfter
static bool IsBuiltinPackage(DirectoryInfo dir, string packageId)
string[][] loadBefore
string[][] dependency
string[][] incompatible
Definition: ModXml.cs:10
static XDocument Load(byte[] bytes, out string error)
Definition: ModXml.cs:97
static string[] SplitTags(string value)
Definition: ModXml.cs:27
static string ValidXml(string name)
Definition: ModXml.cs:17
static string Text(XElement e)
Definition: ModXml.cs:22
static void ReadIdRow(XElement e, ref List< string[]> rows, string path)
Definition: ModXml.cs:50

References $, author, builtin, Debug, dependency, description, dirInfo, incompatible, IsBuiltinPackage(), item, ModXml.Load(), loadAfter, loadBefore, loadPriority, parseError, ModXml.ReadIdRow(), ModXml.SplitTags(), tags, ModXml.Text(), title, ModXml.ValidXml(), version, and visibility.

Referenced by Steam.CreateUserContent(), Init(), and LayerMod.OnInit().

Member Data Documentation

◆ activated

bool BaseModPackage.activated

◆ author

string BaseModPackage.author

Definition at line 23 of file BaseModPackage.cs.

Referenced by LayerMod.ShowInfo(), and UpdateMeta().

◆ banned

bool BaseModPackage.banned

Definition at line 51 of file BaseModPackage.cs.

◆ blockedBy

BaseModPackage BaseModPackage.blockedBy

Definition at line 63 of file BaseModPackage.cs.

Referenced by LayerMod.ShowInfo().

◆ builtin

◆ builtinPackages

readonly Dictionary<string, string> BaseModPackage.builtinPackages
staticprivate
Initial value:
= new Dictionary<string, string>
{
{ "_Elona", "elin_core1" },
{ "_Lang_Chinese", "elin_language_chinese" },
{ "_ModdingKit", "elin.plugins.modding" },
{ "Mod_Slot", "elin_minigame_slot" }
}

Definition at line 77 of file BaseModPackage.cs.

Referenced by IsBuiltinDir(), and IsBuiltinPackage().

◆ defaultLoadPriority

const int BaseModPackage.defaultLoadPriority = 100
static

Definition at line 11 of file BaseModPackage.cs.

◆ dependency

string [][] BaseModPackage.dependency

Definition at line 35 of file BaseModPackage.cs.

Referenced by LayerMod.ShowInfo(), ModManager.UnmetDependency(), and UpdateMeta().

◆ description

string BaseModPackage.description

Definition at line 29 of file BaseModPackage.cs.

Referenced by Steam.CreateItemData(), LayerMod.ShowInfo(), and UpdateMeta().

◆ dirInfo

◆ downloadStarted

bool BaseModPackage.downloadStarted

Definition at line 57 of file BaseModPackage.cs.

Referenced by ModManager.DownloadSubscriptions().

◆ duplicateOf

BaseModPackage BaseModPackage.duplicateOf

Definition at line 67 of file BaseModPackage.cs.

Referenced by LayerMod.ShowInfo().

◆ hasPublishedPackage

bool BaseModPackage.hasPublishedPackage

Definition at line 55 of file BaseModPackage.cs.

Referenced by ModManager.ActivatePackageList().

◆ id

◆ incompatible

string [][] BaseModPackage.incompatible

◆ installed

bool BaseModPackage.installed

◆ isInPackages

bool BaseModPackage.isInPackages

Definition at line 53 of file BaseModPackage.cs.

◆ item

◆ langDepError

string BaseModPackage.langDepError

Definition at line 65 of file BaseModPackage.cs.

Referenced by LayerMod.ShowInfo().

◆ loadAfter

string [][] BaseModPackage.loadAfter

Definition at line 39 of file BaseModPackage.cs.

Referenced by LayerMod.ShowInfo(), and UpdateMeta().

◆ loadBefore

string [][] BaseModPackage.loadBefore

Definition at line 41 of file BaseModPackage.cs.

Referenced by LayerMod.ShowInfo(), and UpdateMeta().

◆ loadPriority

int BaseModPackage.loadPriority = 100

Definition at line 59 of file BaseModPackage.cs.

Referenced by UpdateMeta().

◆ maxLoadPriority

const int BaseModPackage.maxLoadPriority = 999
static

Definition at line 15 of file BaseModPackage.cs.

◆ minLoadPriority

const int BaseModPackage.minLoadPriority = -999
static

Definition at line 13 of file BaseModPackage.cs.

◆ orderIndex

int BaseModPackage.orderIndex = -1

Definition at line 61 of file BaseModPackage.cs.

◆ parseError

string BaseModPackage.parseError

◆ progressText

Text BaseModPackage.progressText

Definition at line 75 of file BaseModPackage.cs.

◆ readerSetting

XmlReaderSettings BaseModPackage.readerSetting
static

Definition at line 19 of file BaseModPackage.cs.

◆ tags

string [] BaseModPackage.tags

Definition at line 33 of file BaseModPackage.cs.

Referenced by Steam.CreateItemData(), LayerMod.ShowInfo(), and UpdateMeta().

◆ title

◆ version

string BaseModPackage.version

Definition at line 25 of file BaseModPackage.cs.

Referenced by IsValidVersion(), LayerMod.ShowInfo(), and UpdateMeta().

◆ visibility

string BaseModPackage.visibility

Definition at line 31 of file BaseModPackage.cs.

Referenced by Steam.CreateItemData(), and UpdateMeta().

◆ willActivate

bool BaseModPackage.willActivate = true

Definition at line 47 of file BaseModPackage.cs.

Referenced by LayerMod.ShowInfo().

◆ xmlReader

XmlReader BaseModPackage.xmlReader
static

Definition at line 17 of file BaseModPackage.cs.

Property Documentation

◆ CanActivate

bool BaseModPackage.CanActivate
get

Definition at line 85 of file BaseModPackage.cs.

86 {
87 get
88 {
90 {
91 DirectoryInfo directoryInfo = dirInfo;
92 if (directoryInfo != null && directoryInfo.Exists)
93 {
94 return willActivate;
95 }
96 }
97 return false;
98 }
99 }
bool hasPublishedPackage

Referenced by Activate(), and ModManager.RefreshMods().


The documentation for this class was generated from the following file: