Elin Decompiled Documentation EA 23.356.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
 
ModGroup group
 
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 275 of file BaseModPackage.cs.

276 {
277 if (CanActivate)
278 {
279 int num = ((BaseModManager.Instance == null) ? (-1) : BaseModManager.Instance.packages.IndexOf(this));
280 Debug.Log("Activating(" + (num + 1) + ") : " + title + "/" + id);
281 activated = true;
282 Parse();
283 }
284 }
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 144 of file BaseModPackage.cs.

145 {
146 if (!File.Exists(dirInfo.FullName + "/package.xml"))
147 {
148 return false;
149 }
150 UpdateMeta();
151 return true;
152 }
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 117 of file BaseModPackage.cs.

118 {
119 if (!dirName.IsEmpty())
120 {
121 return builtinPackages.ContainsKey(dirName);
122 }
123 return false;
124 }
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 126 of file BaseModPackage.cs.

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

References builtinPackages, and NormalizeId().

Referenced by UpdateMeta().

◆ IsValidVersion()

bool BaseModPackage.IsValidVersion ( )
inline

Definition at line 135 of file BaseModPackage.cs.

136 {
137 if (!builtin && !version.IsEmpty() && version.Split('.').Length >= 3)
138 {
140 }
141 return true;
142 }
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 103 of file BaseModPackage.cs.

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

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

◆ Parse()

void BaseModPackage.Parse ( )
inline

Definition at line 286 of file BaseModPackage.cs.

287 {
288 DirectoryInfo[] directories = dirInfo.GetDirectories();
289 foreach (DirectoryInfo directoryInfo in directories)
290 {
291 if (directoryInfo.Name.ToLower() == "actor")
292 {
293 FileInfo[] files = directoryInfo.GetFiles("*.xlsx", SearchOption.TopDirectoryOnly);
294 foreach (FileInfo fileInfo in files)
295 {
296 MOD.actorSources.Add(new ExcelData(fileInfo.FullName));
297 }
298 DirectoryInfo[] directories2 = directoryInfo.GetDirectories();
299 foreach (DirectoryInfo directoryInfo2 in directories2)
300 {
301 Log.App(directoryInfo2.FullName);
302 string text = directoryInfo2.Name.ToLower();
303 if (!(text == "pcc"))
304 {
305 if (!(text == "sprite"))
306 {
307 continue;
308 }
309 files = directoryInfo2.GetFiles();
310 foreach (FileInfo fileInfo2 in files)
311 {
312 if (fileInfo2.Name.EndsWith(".png"))
313 {
314 MOD.sprites.Add(fileInfo2);
315 }
316 }
317 }
318 else
319 {
320 DirectoryInfo[] directories3 = directoryInfo2.GetDirectories();
321 foreach (DirectoryInfo obj in directories3)
322 {
323 MOD.OnAddPcc(obj);
324 }
325 }
326 }
327 }
328 else
329 {
330 BaseModManager.Instance.ParseExtra(directoryInfo, this);
331 }
332 }
333 }
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:93

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 154 of file BaseModPackage.cs.

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

Referenced by LayerMod.ShowInfo().

◆ group

◆ 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 67 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 77 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.SetGroupRow(), and 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 87 of file BaseModPackage.cs.

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

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


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