Elin Decompiled Documentation EA 23.331 Nightly
Loading...
Searching...
No Matches
Lang.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5
6public class Lang
7{
8 public enum LangCode
9 {
10 None = 0,
11 JP = 10,
12 EN = 20,
13 CN = 30
14 }
15
16 public class Words
17 {
18 public char comma;
19
20 public char period;
21 }
22
23 public static NaturalStringComparer comparer = new NaturalStringComparer();
24
25 public static bool runUpdate;
26
27 public static Words words = new Words();
28
29 public static string langCode = "";
30
31 public static string suffix = "";
32
33 public static string space = "";
34
35 public static List<Dictionary<string, object>> listName;
36
37 public static List<Dictionary<string, object>> listAlias;
38
39 public static bool isJP;
40
41 public static bool isEN;
42
43 public static bool isBuiltin;
44
45 public static List<char[]> articlesToRemove;
46
47 public static LangGeneral General;
48
49 public static LangGame Game;
50
51 public static LangNote Note;
52
53 public static SourceData List;
54
55 public static LangSetting setting;
56
57 public static ExcelData excelDialog;
58
59 public static List<Func<List<string>>> excelDialogLoaders = new List<Func<List<string>>>();
60
61 public static bool IsBuiltin(string id)
62 {
63 if (!(id == "JP"))
64 {
65 return id == "EN";
66 }
67 return true;
68 }
69
70 public static void Init(string lang)
71 {
72 setting = MOD.langs.TryGetValue(lang) ?? MOD.langs["EN"];
73 langCode = lang;
74 isJP = lang == "JP";
75 isEN = lang == "EN";
76 isBuiltin = lang == "JP" || lang == "EN";
77 suffix = ((!isBuiltin) ? "_L" : (isJP ? "_JP" : ""));
78 space = (setting.useSpace ? " " : "");
79 char.TryParse("_comma".lang(), out words.comma);
80 char.TryParse("_period".lang(), out words.period);
81 SourceData.LangSuffix = suffix;
82 articlesToRemove = new List<char[]>();
83 string[] list = GetList("_articlesToRemove");
84 foreach (string text in list)
85 {
86 articlesToRemove.Add(text.ToCharArray());
87 }
88 }
89
90 public static string Get(string id)
91 {
92 if (!(General != null))
93 {
94 return id;
95 }
96 return General.Get(id);
97 }
98
99 public static bool Has(string id)
100 {
101 return General.map.ContainsKey(id);
102 }
103
104 public static string TryGet(string id)
105 {
106 if (!General.map.ContainsKey(id))
107 {
108 return null;
109 }
110 return Get(id);
111 }
112
113 public static string[] GetList(string id)
114 {
115 return List.GetList(id);
116 }
117
118 public static string ParseRaw(string text, string val1, string val2 = null, string val3 = null, string val4 = null, string val5 = null)
119 {
120 StringBuilder stringBuilder = new StringBuilder(text);
121 stringBuilder.Replace("#1", val1 ?? "");
122 if (val2 != null)
123 {
124 stringBuilder.Replace("#(s2)", (val2.Replace(",", "").ToInt() <= 1) ? "" : "_s".lang());
125 }
126 stringBuilder.Replace("#(s)", (val1.Replace(",", "").ToInt() <= 1) ? "" : "_s".lang());
127 if (val2 != null)
128 {
129 stringBuilder.Replace("#2", val2);
130 }
131 if (val3 != null)
132 {
133 stringBuilder.Replace("#3", val3);
134 }
135 if (val4 != null)
136 {
137 stringBuilder.Replace("#4", val4);
138 }
139 if (val5 != null)
140 {
141 stringBuilder.Replace("#5", val5);
142 }
143 return stringBuilder.ToString();
144 }
145
146 public static string Parse(string idLang, string val1, string val2 = null, string val3 = null, string val4 = null, string val5 = null)
147 {
148 return ParseRaw(Get(idLang), val1, val2, val3, val4, val5);
149 }
150
151 public static string LoadText(string id)
152 {
153 return null;
154 }
155
156 public static string _Number(int a)
157 {
158 return $"{a:#,0}";
159 }
160
161 public static string _currency(object a, string IDCurrency)
162 {
163 return ("u_currency_" + IDCurrency).lang($"{a:#,0}");
164 }
165
166 public static string _currency(object a, bool showUnit = false, int unitSize = 14)
167 {
168 return $"{a:#,0}" + ((!showUnit) ? "" : ((unitSize == 0) ? "u_money".lang(a?.ToString() ?? "") : ("<size=" + unitSize + "> " + "u_money".lang(a?.ToString() ?? "") + "</size>")));
169 }
170
171 public static string _weight(int a, int b, bool showUnit = true, int unitSize = 0)
172 {
173 return (0.001f * (float)a).ToString("#0.0") + "/" + (0.001f * (float)b).ToString("#0.0") + ((!showUnit) ? "" : ((unitSize == 0) ? "s" : ("<size=" + unitSize + "> s</size>")));
174 }
175
176 public static string _gender(int id)
177 {
178 return GetList("genders")[id];
179 }
180
181 public static string _weight(int a, bool showUnit = true, int unitSize = 0)
182 {
183 return (0.001f * (float)a).ToString("#0.0") + ((!showUnit) ? "" : ((unitSize == 0) ? "s" : ("<size=" + unitSize + "> s</size>")));
184 }
185
186 public static string _rarity(int a)
187 {
188 return a switch
189 {
190 4 => "SSR",
191 3 => "SR",
192 2 => "R",
193 1 => "C",
194 0 => "K",
195 _ => "LE",
196 };
197 }
198
199 public static string _ChangeNum(int prev, int now)
200 {
201 return prev + " ⇒ " + now;
202 }
203
204 public static ExcelData.Sheet GetDialogSheet(string idSheet)
205 {
206 if (excelDialog == null)
207 {
208 excelDialog = new ExcelData(CorePath.CorePackage.TextDialog + "dialog.xlsx");
210 List<ExcelData> list = new List<ExcelData>();
211 if (!isBuiltin)
212 {
213 list.Add(new ExcelData(CorePath.CorePackage.TextDialogLocal + "dialog.xlsx"));
214 }
215 foreach (Func<List<string>> excelDialogLoader in excelDialogLoaders)
216 {
217 list.AddRange(from f in excelDialogLoader()
218 select new ExcelData(f));
219 }
220 for (int i = 0; i < excelDialog.book.NumberOfSheets; i++)
221 {
222 string sheetName = excelDialog.book.GetSheetAt(i).SheetName;
223 excelDialog.BuildMap(sheetName);
224 foreach (ExcelData item in list)
225 {
226 item.BuildMap(sheetName);
227 ExcelData.Sheet sheet = item.sheets[sheetName];
228 if (item.book.GetSheet(sheetName) == null)
229 {
230 sheet.list.Clear();
231 sheet.map.Clear();
232 }
233 foreach (var (text2, value) in sheet.map)
234 {
235 if (!text2.IsEmpty())
236 {
237 excelDialog.sheets[sheetName].map[text2] = value;
238 }
239 }
240 }
241 }
242 }
243 return excelDialog.sheets[idSheet];
244 }
245
246 public static string[] GetDialog(string idSheet, string idTopic)
247 {
248 Dictionary<string, string> dictionary = GetDialogSheet(idSheet).map.TryGetValue(idTopic);
249 if (dictionary == null)
250 {
251 return new string[1] { idTopic };
252 }
253 string key = "text_" + langCode;
254 string text = dictionary.GetValueOrDefault(key) ?? dictionary.GetValueOrDefault("text");
255 if (text.IsEmpty())
256 {
257 text = dictionary["text_EN"];
258 }
259 return text.Split(new string[3] { "\r\n", "\r", "\n" }, StringSplitOptions.None);
260 }
261}
static string TextDialog
Definition: CorePath.cs:51
static string TextDialogLocal
Definition: CorePath.cs:53
List< Dictionary< string, string > > list
Definition: ExcelData.cs:16
Dictionary< string, Dictionary< string, string > > map
Definition: ExcelData.cs:14
Dictionary< string, Sheet > sheets
Definition: ExcelData.cs:25
void LoadBook()
Definition: ExcelData.cs:49
virtual void BuildMap(string sheetName="_default")
Definition: ExcelData.cs:77
XSSFWorkbook book
Definition: ExcelData.cs:21
char period
Definition: Lang.cs:20
char comma
Definition: Lang.cs:18
Definition: Lang.cs:7
static List< Func< List< string > > > excelDialogLoaders
Definition: Lang.cs:59
static Words words
Definition: Lang.cs:27
static string _weight(int a, int b, bool showUnit=true, int unitSize=0)
Definition: Lang.cs:171
static string[] GetDialog(string idSheet, string idTopic)
Definition: Lang.cs:246
static LangSetting setting
Definition: Lang.cs:55
static NaturalStringComparer comparer
Definition: Lang.cs:23
static LangGeneral General
Definition: Lang.cs:47
static string _rarity(int a)
Definition: Lang.cs:186
static string suffix
Definition: Lang.cs:31
static LangNote Note
Definition: Lang.cs:51
static string _currency(object a, bool showUnit=false, int unitSize=14)
Definition: Lang.cs:166
static string _Number(int a)
Definition: Lang.cs:156
static List< char[]> articlesToRemove
Definition: Lang.cs:45
static List< Dictionary< string, object > > listAlias
Definition: Lang.cs:37
static bool IsBuiltin(string id)
Definition: Lang.cs:61
static string _ChangeNum(int prev, int now)
Definition: Lang.cs:199
static string _gender(int id)
Definition: Lang.cs:176
static List< Dictionary< string, object > > listName
Definition: Lang.cs:35
static string LoadText(string id)
Definition: Lang.cs:151
static bool runUpdate
Definition: Lang.cs:25
static string Get(string id)
Definition: Lang.cs:90
static bool isEN
Definition: Lang.cs:41
static string _weight(int a, bool showUnit=true, int unitSize=0)
Definition: Lang.cs:181
static string langCode
Definition: Lang.cs:29
static string[] GetList(string id)
Definition: Lang.cs:113
static SourceData List
Definition: Lang.cs:53
static ExcelData excelDialog
Definition: Lang.cs:57
static string space
Definition: Lang.cs:33
static string ParseRaw(string text, string val1, string val2=null, string val3=null, string val4=null, string val5=null)
Definition: Lang.cs:118
static LangGame Game
Definition: Lang.cs:49
static ExcelData.Sheet GetDialogSheet(string idSheet)
Definition: Lang.cs:204
static string _currency(object a, string IDCurrency)
Definition: Lang.cs:161
static void Init(string lang)
Definition: Lang.cs:70
LangCode
Definition: Lang.cs:9
static bool isBuiltin
Definition: Lang.cs:43
static bool Has(string id)
Definition: Lang.cs:99
static bool isJP
Definition: Lang.cs:39
static string TryGet(string id)
Definition: Lang.cs:104
static string Parse(string idLang, string val1, string val2=null, string val3=null, string val4=null, string val5=null)
Definition: Lang.cs:146
Definition: MOD.cs:7
static Dictionary< string, LangSetting > langs
Definition: MOD.cs:8
virtual string[] GetList(string id)
Definition: SourceData.cs:910
string Get(string id)
Definition: SourceLang.cs:12