/// <summary> /// 获取服务数据集 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="result"></param> /// <param name="isShow">Status不为0: 是否弹窗</param> /// <returns></returns> public static T GetServiceData <T>(this BaseResultData <T> result, bool isShow = true) { var data = default(T); //todo 硬编码,需要调整 if (result.Status == 0) { data = result.Data; } else { if (isShow) { MessageHelper.ShowWarning(result.Msg); } LogHelper.Info(typeof(Utilities).FullName, result.Msg); } return(data); }
// 데이터 CSV 파일은 POE 클라이언트를 VisualGGPK.exe (libggpk) 를 통해 추출할 수 있다. private bool BaseDataUpdates(string path) { bool success = false; if (File.Exists(path + "csv/ko/BaseItemTypes.csv") && File.Exists(path + "csv/ko/Words.csv")) { try { List <string[]> oCsvEnList = new List <string[]>(); List <string[]> oCsvKoList = new List <string[]>(); using (StreamReader oStreamReader = new StreamReader(File.OpenRead(path + "csv/en/BaseItemTypes.csv"))) { string sEnContents = oStreamReader.ReadToEnd(); string[] sEnLines = sEnContents.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); foreach (string sLine in sEnLines) { //oCsvEnList.Add(sLine.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)); oCsvEnList.Add(Regex.Split(sLine, ",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)")); } } using (StreamReader oStreamReader = new StreamReader(File.OpenRead(path + "csv/ko/BaseItemTypes.csv"))) { string sKoContents = oStreamReader.ReadToEnd(); string[] sKoLines = sKoContents.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); foreach (string sLine in sKoLines) { //oCsvKoList.Add(sLine.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)); oCsvKoList.Add(Regex.Split(sLine, ",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)")); } } List <BaseResultData> datas = new List <BaseResultData>(); for (int i = 1; i < oCsvEnList.Count; i++) { if ( oCsvEnList[i][6] == "Metadata/Items/Currency/AbstractMicrotransaction" || oCsvEnList[i][6] == "Metadata/Items/HideoutDoodads/AbstractHideoutDoodad" ) { continue; } BaseResultData baseResultData = new BaseResultData(); baseResultData.ID = oCsvEnList[i][1].Replace("Metadata/Items/", ""); baseResultData.InheritsFrom = oCsvEnList[i][6].Replace("Metadata/Items/", ""); baseResultData.NameEn = Regex.Replace(oCsvEnList[i][5], "^\"(.+)\"$", "$1"); baseResultData.NameKo = Regex.Replace(oCsvKoList[i][5], "^\"(.+)\"$", "$1"); baseResultData.Detail = ""; if (datas.Find(x => x.NameEn == baseResultData.NameEn) == null) { datas.Add(baseResultData); } } BaseData rootClass = Json.Deserialize <BaseData>("{\"result\":[{\"data\":[]}]}"); rootClass.Result[0].Data = datas.ToArray(); using (StreamWriter writer = new StreamWriter(path + "Bases.txt", false, Encoding.UTF8)) { writer.Write(Json.Serialize <BaseData>(rootClass)); } //----------------------------- oCsvEnList = new List <string[]>(); oCsvKoList = new List <string[]>(); using (StreamReader oStreamReader = new StreamReader(File.OpenRead(path + "csv/en/Words.csv"))) { string sEnContents = oStreamReader.ReadToEnd(); string[] sEnLines = sEnContents.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); foreach (string sLine in sEnLines) { oCsvEnList.Add(Regex.Split(sLine, ",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)")); } } using (StreamReader oStreamReader = new StreamReader(File.OpenRead(path + "csv/ko/Words.csv"))) { string sKoContents = oStreamReader.ReadToEnd(); string[] sKoLines = sKoContents.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); foreach (string sLine in sKoLines) { oCsvKoList.Add(Regex.Split(sLine, ",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)")); } } List <WordeResultData> wdatas = new List <WordeResultData>(); for (int i = 1; i < oCsvEnList.Count; i++) { WordeResultData wordeResultData = new WordeResultData(); wordeResultData.Key = oCsvEnList[i][1]; wordeResultData.NameEn = Regex.Replace(oCsvEnList[i][6], "^\"(.+)\"$", "$1"); wordeResultData.NameKo = Regex.Replace(oCsvKoList[i][6], "^\"(.+)\"$", "$1"); wdatas.Add(wordeResultData); } WordData wordClass = Json.Deserialize <WordData>("{\"result\":[{\"data\":[]}]}"); wordClass.Result[0].Data = wdatas.ToArray(); using (StreamWriter writer = new StreamWriter(path + "Words.txt", false, Encoding.UTF8)) { writer.Write(Json.Serialize <WordData>(wordClass)); } //----------------------------- oCsvEnList = new List <string[]>(); oCsvKoList = new List <string[]>(); using (StreamReader oStreamReader = new StreamReader(File.OpenRead(path + "csv/en/Prophecies.csv"))) { string sEnContents = oStreamReader.ReadToEnd(); string[] sEnLines = sEnContents.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); foreach (string sLine in sEnLines) { oCsvEnList.Add(Regex.Split(sLine, ",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)")); } } using (StreamReader oStreamReader = new StreamReader(File.OpenRead(path + "csv/ko/Prophecies.csv"))) { string sKoContents = oStreamReader.ReadToEnd(); string[] sKoLines = sKoContents.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); foreach (string sLine in sKoLines) { oCsvKoList.Add(Regex.Split(sLine, ",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)")); } } datas = new List <BaseResultData>(); for (int i = 1; i < oCsvEnList.Count; i++) { BaseResultData baseResultData = new BaseResultData(); baseResultData.ID = "Prophecies/" + oCsvEnList[i][1]; baseResultData.InheritsFrom = "Prophecies/Prophecy"; baseResultData.NameEn = Regex.Replace(oCsvEnList[i][4], "^\"(.+)\"$", "$1"); baseResultData.NameKo = Regex.Replace(oCsvKoList[i][4], "^\"(.+)\"$", "$1"); baseResultData.Detail = ""; datas.Add(baseResultData); } rootClass = Json.Deserialize <BaseData>("{\"result\":[{\"data\":[]}]}"); rootClass.Result[0].Data = datas.ToArray(); using (StreamWriter writer = new StreamWriter(path + "Prophecies.txt", false, Encoding.UTF8)) { writer.Write(Json.Serialize <BaseData>(rootClass)); } //----------------------------- oCsvEnList = new List <string[]>(); oCsvKoList = new List <string[]>(); using (StreamReader oStreamReader = new StreamReader(File.OpenRead(path + "csv/en/MonsterVarieties.csv"))) { string sEnContents = oStreamReader.ReadToEnd(); string[] sEnLines = sEnContents.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); foreach (string sLine in sEnLines) { oCsvEnList.Add(Regex.Split(sLine, ",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)")); } } using (StreamReader oStreamReader = new StreamReader(File.OpenRead(path + "csv/ko/MonsterVarieties.csv"))) { string sKoContents = oStreamReader.ReadToEnd(); string[] sKoLines = sKoContents.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); foreach (string sLine in sKoLines) { oCsvKoList.Add(Regex.Split(sLine, ",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)")); } } datas = new List <BaseResultData>(); for (int i = 1; i < oCsvEnList.Count; i++) { BaseResultData baseResultData = new BaseResultData(); baseResultData.ID = oCsvEnList[i][1].Replace("Metadata/Monsters/", ""); baseResultData.InheritsFrom = oCsvEnList[i][11].Replace("Metadata/Monsters/", ""); baseResultData.NameEn = Regex.Replace(oCsvEnList[i][35], "^\"(.+)\"$", "$1"); baseResultData.NameKo = Regex.Replace(oCsvKoList[i][35], "^\"(.+)\"$", "$1"); baseResultData.Detail = ""; if (datas.Find(x => x.NameEn == baseResultData.NameEn) == null) { datas.Add(baseResultData); } } rootClass = Json.Deserialize <BaseData>("{\"result\":[{\"data\":[]}]}"); rootClass.Result[0].Data = datas.ToArray(); using (StreamWriter writer = new StreamWriter(path + "Monsters.txt", false, Encoding.UTF8)) { writer.Write(Json.Serialize <BaseData>(rootClass)); } success = true; } catch { } } return(success); }