Elin Decompiled Documentation EA 23.307 Stable
Loading...
Searching...
No Matches
BookList Class Reference

Classes

class  Item
 

Static Public Member Functions

static void Init ()
 
static Item GetRandomItem (string idCat="Book")
 
static Item GetItem (string id, string idCat="Book")
 
static string[] LoadDefaultBookList ()
 

Static Public Attributes

static List< Func< string[]> > booklistLoaders = new List<Func<string[]>>()
 
static Dictionary< string, Dictionary< string, Item > > dict
 

Detailed Description

Definition at line 7 of file BookList.cs.

Member Function Documentation

◆ GetItem()

static Item BookList.GetItem ( string  id,
string  idCat = "Book" 
)
inlinestatic

Definition at line 96 of file BookList.cs.

97 {
98 Init();
99 return dict[idCat].TryGetValue(id) ?? dict["Book"]["_default"];
100 }
static void Init()
Definition: BookList.cs:32
static Dictionary< string, Dictionary< string, Item > > dict
Definition: BookList.cs:30

References dict, and Init().

◆ GetRandomItem()

static Item BookList.GetRandomItem ( string  idCat = "Book")
inlinestatic

Definition at line 89 of file BookList.cs.

90 {
91 Init();
92 return dict[idCat].Where((KeyValuePair<string, Item> p) => p.Value.chance != 0).ToList().RandomItemWeighted((KeyValuePair<string, Item> p) => p.Value.chance)
93 .Value;
94 }

References dict, and Init().

Referenced by TraitBook.OnCreate().

◆ Init()

static void BookList.Init ( )
inlinestatic

Definition at line 32 of file BookList.cs.

33 {
34 if (dict != null)
35 {
36 return;
37 }
38 dict = new Dictionary<string, Dictionary<string, Item>>();
39 List<string> list = new List<string>();
40 list.AddRange(LoadDefaultBookList());
41 foreach (Func<string[]> booklistLoader in booklistLoaders)
42 {
43 try
44 {
45 list.AddRange(booklistLoader());
46 }
47 catch (Exception arg)
48 {
49 Debug.LogWarning($"#book external booklist loader failed\n{arg}");
50 }
51 }
52 foreach (string item in list)
53 {
54 DirectoryInfo directoryInfo = new DirectoryInfo(item);
55 if (!directoryInfo.Exists)
56 {
57 Debug.LogWarning("#book invalid booklist path/" + item);
58 continue;
59 }
60 string name = directoryInfo.Name;
61 dict.TryAdd(name, new Dictionary<string, Item>());
62 FileInfo[] files = directoryInfo.GetFiles("*.txt", SearchOption.TopDirectoryOnly);
63 foreach (FileInfo fileInfo in files)
64 {
65 using StreamReader streamReader = new StreamReader(fileInfo.FullName);
66 string text = Path.ChangeExtension(fileInfo.Name, null);
67 string text2 = streamReader.ReadLine();
68 int? num = text2?.Length;
69 if (!num.HasValue || num.GetValueOrDefault() <= 0)
70 {
71 Debug.LogWarning("#book invalid first line/" + item);
72 continue;
73 }
74 string[] array = text2.Split(',');
75 dict[name][text] = new Item
76 {
77 cat = name,
78 title = array[0],
79 author = ((array.Length > 1) ? "nameAuthor".lang(array[1]) : "unknownAuthor".lang()),
80 chance = ((array.Length > 2) ? array[2].ToInt() : 100),
81 skin = ((array.Length > 3) ? array[3].ToInt() : 0),
82 id = text,
83 path = fileInfo.FullName
84 };
85 }
86 }
87 }
$
Definition: ModManager.cs:87
item3. title
Definition: UIBook.cs:640
static string[] LoadDefaultBookList()
Definition: BookList.cs:102
static List< Func< string[]> > booklistLoaders
Definition: BookList.cs:28

References $, booklistLoaders, Debug, dict, item, LoadDefaultBookList(), and title.

Referenced by GetItem(), and GetRandomItem().

◆ LoadDefaultBookList()

static string[] BookList.LoadDefaultBookList ( )
inlinestatic

Definition at line 102 of file BookList.cs.

103 {
104 return new string[2]
105 {
107 CorePath.CorePackage.Scroll
108 };
109 }
static string Book
Definition: CorePath.cs:63

References CorePath.CorePackage.Book.

Referenced by Init().

Member Data Documentation

◆ booklistLoaders

List<Func<string[]> > BookList.booklistLoaders = new List<Func<string[]>>()
static

Definition at line 28 of file BookList.cs.

Referenced by Init().

◆ dict

Dictionary<string, Dictionary<string, Item> > BookList.dict
static

Definition at line 30 of file BookList.cs.

Referenced by GetItem(), GetRandomItem(), and Init().


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