private static void Main(string[] args)
{
Setting = Settings.ReadSetting("Terraria_JP/Settings.xml");
// XMLをリソースから呼び出す
var asm = Assembly.GetExecutingAssembly();
var stream = asm.GetManifestResourceStream("Terraria.language.xml");
try
{
var local = new FileStream("Terraria_JP/language.xml", FileMode.Open);
if (local != null)
{
stream = local;
}
}
catch
{
}
// XMLファイルを読み込む
var xml = new XmlDocument();
xml.Load(stream);
// XMLの内容を文字列に保存する
var xpath = "/language/lang";
var node_lang = xml.DocumentElement.SelectSingleNode(xpath);
Ja.language = new Dictionary <string, Dictionary <int, string> >();
// 各種ランゲージデータ(items, prefixsなど)を読み込んでいく
foreach (XmlNode node1 in node_lang.ChildNodes)
{
var index = node1.LocalName;
var dic = new Dictionary <int, string>();
Ja.language.Add(index, dic);
var dic_en = new Dictionary <int, string>();
Ja.language.Add(index + "_en", dic_en);
// 個別のランゲージデータ(item, prefixなど)を読み込む
foreach (XmlNode node2 in node1.ChildNodes)
{
// 個別の項目がカラで無ければ、辞書に追加
if (node2["int"] != null)
{
int i = 0;
if (int.TryParse(node2["int"].InnerText, out i))
{
if (node2["ja"] != null)
{
dic.Add(i, node2["ja"].InnerText);
}
if (node2["en"] != null)
{
dic_en.Add(i, node2["en"].InnerText);
}
}
}
}
}
// XMLを解放
xml = null;
// 元々のMain関数を呼び出す
var type = typeof(Terraria.Program);
var method = type.GetMethod("_Main");
method.Invoke(type, new object[] { args });
return;
}