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