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