private async Task InitializeTDollDic() { await Task.Delay(1); try { TDollDic_SplitContainer.Panel1.Hide(); for (int i = 0; i < TDollDic_TDollInfo_FormationBuffTable.RowCount; ++i) { for (int k = 0; k < TDollDic_TDollInfo_FormationBuffTable.ColumnCount; ++k) { PictureBox pb = new PictureBox(); pb.Dock = DockStyle.Fill; TDollDic_TDollInfo_FormationBuffTable.Controls.Add(pb); } } _ = ListDoll(null); } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("도감 초기화 오류", "인형 도감 초기화 중 오류가 발생했습니다."); } }
private async Task LoadEquipImage(bool isRefresh) { try { string fileName = equip.Icon; try { string url = Path.Combine(ETC.server, "Data", "Images", "Equipments", $"{fileName}.png"); string target = Path.Combine(ETC.cachePath, "Equip", "Normal", $"{fileName}.gfdcache"); if (!File.Exists(target) || isRefresh) { using (WebClient wc = new WebClient()) await wc.DownloadFileTaskAsync(url, target); } EquipDic_EquipInfo_FullImageView.ImageLocation = target; } catch (Exception ex) { ETC.LogError(ex); } } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("장비 불러오기 오류", "이미지를 불러오는 동안 오류가 발생했습니다."); } }
private async Task DownloadStory(string category, string fileName) { try { string server = ""; string target = ""; if (category == "ModStory") { server = Path.Combine(ETC.server, "Data", "Text", "Story", "ko", "Sub", category, $"{fileName}.txt"); target = Path.Combine(ETC.cachePath, "Story", category, $"{fileName}.gfdcache"); } else { server = Path.Combine(ETC.server, "Data", "Text", "Story", "ko", "Main", category, $"{fileName}.txt"); target = Path.Combine(ETC.cachePath, "Story", category, $"{fileName}.gfdcache"); } DirectoryInfo di = new DirectoryInfo(Path.Combine(ETC.cachePath, "Story", category)); if (di.Exists == false) { di.Create(); } using (WebClient wc = new WebClient()) await wc.DownloadFileTaskAsync(server, target); } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("텍스트 뷰어 오류", "스토리 데이터를 다운로드 하는 중 오류가 발생했습니다."); } }
private async Task LoadStory(string fileName = "", bool isRefresh = false) { try { string file; if (category == "ModStory") { file = Path.Combine(ETC.cachePath, "Story", category, $"{fileName}_{index}.gfdcache"); TextViewer_NowStatus.Text = $"개조 이야기 - {doll.Name} {index}화"; } else { file = Path.Combine(ETC.cachePath, "Story", category, $"{index}.gfdcache"); TextViewer_NowStatus.Text = $"{category} - {storyName}"; } if ((File.Exists(file) == false) || (isRefresh == true)) { await DownloadStory(category, Path.GetFileNameWithoutExtension(file)); } using (StreamReader sr = new StreamReader(new FileStream(file, FileMode.Open, FileAccess.Read))) TextViewer_TextField.Text = await sr.ReadToEndAsync(); } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("텍스트 뷰어 오류", "스토리 데이터를 불러오는 중 오류가 발생했습니다."); } }
private void LoadAbilityFairy() { Label[] abilityMags = { FairyDic_FairyInfo_AbilityFRMag, FairyDic_FairyInfo_AbilityACMag, FairyDic_FairyInfo_AbilityEVMag, FairyDic_FairyInfo_AbilityAMMag, FairyDic_FairyInfo_AbilityCRMag }; try { string[] abilities = { "FireRate", "Accuracy", "Evasion", "Armor", "Critical" }; for (int i = 0; i < abilities.Length; ++i) { abilityMags[i].Text = fairy.Abilities[abilities[i]]; } } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("요정 불러오기 오류", "능력치 정보를 불러오는 동안 오류가 발생했습니다."); } }
private async Task LoadFairyImage(bool isRefresh) { try { string fileName = fairy.DicNumber.ToString(); try { string url = Path.Combine(ETC.server, "Data", "Images", "Fairy", "Normal_Crop", $"{fileName}.png"); string target = Path.Combine(ETC.cachePath, "Fairy", "Normal", $"{fileName}.gfdcache"); if (!File.Exists(target) || isRefresh) { using (WebClient wc = new WebClient()) await wc.DownloadFileTaskAsync(url, target); } FairyDic_FairyInfo_FullImageView.ImageLocation = target; } catch (Exception ex) { ETC.LogError(ex); } } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("요정 불러오기 오류", "이미지를 불러오는 동안 오류가 발생했습니다."); } }
private async Task LoadFairyInfo(bool isRefresh = false) { await Task.Delay(10); isFairyLoad = true; try { FairyDic_SplitContainer.Panel1.Show(); FairyDic_FairyInfo_DicNumber.Text = $"No. {fairy.DicNumber}"; FairyDic_FairyInfo_Name.Text = fairy.Name; FairyDic_FairyInfo_Type.Text = fairy.Type; await LoadFairyImage(isRefresh); FairyDic_FairyInfo_ProductTimeLabel.Text = fairy.GetProductTimeToString; LoadAbilityFairy(); FairyDic_FairyInfo_GainToolTip.SetToolTip(FairyDic_FairyInfo_FullImageView, fairy.ProductDialog); } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("요정 불러오기 오류", "요정 정보를 불러오는 중 오류가 발생했습니다."); } finally { isFairyLoad = false; } }
private async Task InitializeMain() { try { StatusStrip_AppVerLabel.Text = $"App Ver : {ETC.appVer}"; StatusStrip_AppVerLabel.Text += ETC.isReleaseMode ? "R" : "D"; StatusStrip_DBVerLabel.Text = $"DB Ver : {ETC.dbVer}"; StatusStrip_OldGFDVerLabel.Text = $"GFDv1 Ver : {ETC.oldGFDVer}"; UpdateCheckTimer.Start(); UpdateCheckTimer_Tick(UpdateCheckTimer, new EventArgs()); await LoadNotification(); await CreateObject(); await InitializeTDollDic(); await InitializeEquipDic(); await InitializeFairyDic(); } catch (Exception ex) { ETC.LogError(ex); } }
private async Task CreateObject() { await Task.Delay(10); try { dollRootList.Clear(); equipRootList.Clear(); fairyRootList.Clear(); foreach (DataRow dr in ETC.dollList.Rows) { dollRootList.Add(new Doll(dr)); } foreach (DataRow dr in ETC.equipmentList.Rows) { equipRootList.Add(new Equip(dr)); } foreach (DataRow dr in ETC.fairyList.Rows) { fairyRootList.Add(new Fairy(dr)); } dollRootList.TrimExcess(); equipRootList.TrimExcess(); fairyRootList.TrimExcess(); } catch (Exception ex) { ETC.LogError(ex); } }
private async Task LoadDollImages(bool isRefresh) { try { string fileName = $"{doll.DicNumber}{(modIndex == 3 ? "_M" : "")}"; try { string url = Path.Combine(ETC.server, "Data", "Images", "Guns", "Normal", $"{fileName}.png"); string target = Path.Combine(ETC.cachePath, "Doll", "Normal", $"{fileName}.gfdcache"); if (!File.Exists(target) || isRefresh) { using (WebClient wc = new WebClient()) await wc.DownloadFileTaskAsync(url, target); } TDollDic_TDollInfo_FullImageView.ImageLocation = target; } catch (Exception ex) { ETC.LogError(ex); } } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("인형 불러오기 오류", "이미지를 불러오는 동안 오류가 발생했습니다."); } }
private async Task LoadTDollSkill(bool isRefresh, bool isMod) { try { string skillName = isMod ? doll.ModSkillName : doll.SkillName; string url = Path.Combine(ETC.server, "Data", "Images", "SkillIcons", $"{skillName}.png"); string target = Path.Combine(ETC.cachePath, "Doll", "Skill", $"{skillName}.gfdcache"); try { if ((File.Exists(target) == false) || (isRefresh == true)) { using (WebClient wc = new WebClient()) await wc.DownloadFileTaskAsync(url, target); } SkillViewer_SkillIconBox.ImageLocation = target; } catch (Exception ex) { ETC.LogError(ex); } SkillViewer_SkillName.Text = skillName; SkillViewer_SkillExplain.Text = isMod ? doll.ModSkillExplain : doll.SkillExplain; LoadSkillEffect(isMod); } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("스킬 정보 불러오기 오류", "인형 스킬 정보를 불러오는 동안 오류가 발생했습니다."); } }
private void LoadCostumeVoiceList() { try { TDollDic_TDollInfo_CostumeVoiceSelector.Items.Clear(); List <string> vcList = new List <string>() { "기본" }; if (doll.CostumeVoices != null) { for (int i = 0; i < (doll.CostumeVoices.Length / doll.CostumeVoices.Rank); ++i) { vcList.Add(doll.Costumes[int.Parse(doll.CostumeVoices[i, 0])]); } } vcList.TrimExcess(); TDollDic_TDollInfo_CostumeVoiceSelector.Items.AddRange(vcList.ToArray()); TDollDic_TDollInfo_CostumeVoiceSelector.SelectedIndex = 0; } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("인형 불러오기 오류", "코스튬 보이스 목록을 불러오는 동안 오류가 발생했습니다."); } }
private void TDollDic_TDollInfo_CostumeVoiceSelector_SelectedIndexChanged(object sender, EventArgs e) { try { vCostumeIndex = (sender as ComboBox).SelectedIndex; dollVoiceList.Clear(); TDollDic_TDollInfo_VoiceSelector.Items.Clear(); switch (vCostumeIndex) { case 0: dollVoiceList.AddRange(doll.Voices); break; default: dollVoiceList.AddRange(doll.CostumeVoices[vCostumeIndex - 1, 1].Split(';')); break; } dollVoiceList.TrimExcess(); TDollDic_TDollInfo_VoiceSelector.Items.AddRange(dollVoiceList.ToArray()); TDollDic_TDollInfo_VoiceSelector.SelectedIndex = 0; } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("인형 불러오기 오류", "보이스 목록을 불러오는 중 오류가 발생했습니다."); } }
private void InitializeList() { try { costumeList = new List <string>() { "기본" }; if (doll.Costumes != null) { costumeList.AddRange(doll.Costumes); } costumeList.TrimExcess(); TDollDic_ImageViewer_CostumeSelector.DataSource = costumeList; _ = LoadImage(); } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("이미지 뷰어 초기화 오류", "이미지 뷰어를 초기화 하는 중 오류가 발생했습니다."); } }
private void TDollDic_TDollListView_ColumnClick(object sender, ColumnClickEventArgs e) { try { ListView lv = sender as ListView; switch (lv.Sorting) { case SortOrder.None: case SortOrder.Descending: default: lv.Sorting = SortOrder.Ascending; break; case SortOrder.Ascending: lv.Sorting = SortOrder.Descending; break; } lv.ListViewItemSorter = new ETC.Sorter { Order = lv.Sorting, ColumnIndex = e.Column }; lv.Sort(); } catch (Exception ex) { ETC.LogError(ex); } }
private async Task LoadImage(bool IsRefresh = false) { try { string ImageName = doll.DicNumber.ToString(); if (costumeIndex >= 1) { ImageName += $"_{costumeIndex + 1}"; } else if ((costumeIndex == 0) && (modIndex == 3)) { ImageName += "_M"; } if (isDamage == true) { ImageName += "_D"; } if ((doll.HasCensored == true) && (enableCensored == true) && (modIndex != 3)) { if (CheckCensorType() == true) { ImageName += "_C"; } } string ImagePath = Path.Combine(ETC.cachePath, "Doll", "Normal", $"{ImageName}.gfdcache"); string URL = Path.Combine(ETC.server, "Data", "Images", "Guns", "Normal", $"{ImageName}.png"); if ((File.Exists(ImagePath) == false) || (IsRefresh == true)) { using (WebClient wc = new WebClient()) await Task.Run(async() => { await wc.DownloadFileTaskAsync(URL, ImagePath); }); } await Task.Delay(100); TDollDic_ImageViewer_ImageView.ImageLocation = ImagePath; string damageText = isDamage ? "중상" : "정상"; TDollDic_ImageViewer_DamageToggle.Text = damageText; TDollDic_ImageViewer_ImageStatus.Text = $"{doll.Name} - {costumeList[costumeIndex]} - {damageText}"; } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("이미지 로드 오류", "이미지를 로드하는 중 오류가 발생했습니다."); } }
private void LoadSkillEffect(bool isMod) { int hSize = 30; try { string[] skillEffect = isMod ? doll.ModSkillEffect : doll.SkillEffect; string[] skillMags = isMod ? doll.ModSkillMag : doll.SkillMag; SkillViewer_InitialCoolTime.Text = skillMags[0]; SkillViewer_CoolTime.Text = skillMags[1]; if (SkillViewer_SkillEffectTable.RowCount < skillEffect.Length - 2) { SkillViewer_SkillEffectTable.Height += hSize * (skillEffect.Length - 4); Height += hSize * (skillEffect.Length - 4); SkillViewer_SkillEffectTable.RowCount = skillEffect.Length - 2; } for (int i = 2; i < skillEffect.Length; ++i) { Label effect = new Label(); effect.Dock = DockStyle.Fill; effect.TextAlign = ContentAlignment.MiddleCenter; effect.Text = skillEffect[i]; effect.Font = new Font(effect.Font.FontFamily, effect.Font.Size, FontStyle.Bold); Label mag = new Label(); mag.Dock = DockStyle.Fill; mag.TextAlign = ContentAlignment.MiddleCenter; mag.Text = skillMags[i]; SkillViewer_SkillEffectTable.Controls.Add(effect, 0, i - 2); SkillViewer_SkillEffectTable.Controls.Add(mag, 1, i - 2); if (i >= 4) { SkillViewer_SkillEffectTable.RowStyles.Add(new RowStyle(SizeType.Absolute)); } } for (int i = 0; i < SkillViewer_SkillEffectTable.RowCount; ++i) { SkillViewer_SkillEffectTable.RowStyles[i].SizeType = SizeType.Absolute; SkillViewer_SkillEffectTable.RowStyles[i].Height = 30; } } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("스킬 정보 불러오기 오류", "인형 스킬 세부 효과 정보를 불러오는 동안 오류가 발생했습니다."); } }
private async Task PlayVoice(string voiceName) { try { string server = ""; string target = ""; switch (vCostumeIndex) { case 0: server = Path.Combine(ETC.server, "Data", "Voice", "Doll", doll.krName, $"{doll.krName}_{voiceName}_JP.wav"); target = Path.Combine(ETC.cachePath, "Voices", "Doll", $"{doll.DicNumber}_{voiceName}_JP.gfdcache"); break; default: server = Path.Combine(ETC.server, "Data", "Voice", "Doll", $"{doll.krName}_{vCostumeIndex - 1}", $"{doll.krName}_{vCostumeIndex - 1}_{voiceName}_JP.wav"); target = Path.Combine(ETC.cachePath, "Voices", "Doll", $"{doll.DicNumber}_{vCostumeIndex - 1}_{voiceName}_JP.gfdcache"); break; } await Task.Delay(100); if (!File.Exists(target)) { try { using (WebClient wc = new WebClient()) { wc.DownloadProgressChanged += (object s, DownloadProgressChangedEventArgs args) => { }; await wc.DownloadFileTaskAsync(server, target); } } catch (Exception ex) { ETC.LogError(ex); } } soundPlayer.SoundLocation = target; soundPlayer.Play(); } catch (WebException ex) { ETC.LogError(ex); } catch (Exception ex) { ETC.LogError(ex); } }
private async Task LoadNotification() { try { using (WebClient wc = new WebClient()) MainNotification.Text = await wc.DownloadStringTaskAsync(Path.Combine(ETC.server, "Android_Notification.txt")); } catch (Exception ex) { ETC.LogError(ex); MainNotification.Text = "Server Network Bad :("; } }
private async Task ListDoll(string searchName) { await Task.Delay(10); try { TDollDic_TDollListView.Items.Clear(); CheckApplyDollFilter(); foreach (Doll doll in dollRootList) { if ((searchName != null) && !doll.Name.ToUpper().Contains(searchName.ToUpper())) { continue; } if (!CheckFilter(doll)) { continue; } string grade = ""; if (doll.Grade == 0) { grade = "★"; } else { grade = $"☆{doll.Grade}"; } TDollDic_TDollListView.Items.Add(new ListViewItem(new string[] { doll.DicNumber.ToString(), doll.Type, grade, doll.Name, doll.HasMod ? "O" : "X" })); } } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("리스트 오류", "인형 리스트를 생성하는 중 오류가 발생했습니다."); } }
private async Task ListEquip(string searchName) { await Task.Delay(10); try { EquipDic_EquipListView.Items.Clear(); CheckApplyEquipFilter(); foreach (Equip equip in equipRootList) { if ((searchName != null) && !equip.Name.ToUpper().Contains(searchName.ToUpper())) { continue; } if (!CheckFilter(equip)) { continue; } string grade = ""; if (equip.Grade == 0) { grade = "★"; } else { grade = $"☆{equip.Grade}"; } EquipDic_EquipListView.Items.Add(new ListViewItem(new string[] { equip.Id.ToString(), grade, equip.Name, equip.Category, equip.Type })); } } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("리스트 오류", "장비 리스트를 생성하는 중 오류가 발생했습니다."); } }
private void TextViewer_ControlButton_Click(object sender, EventArgs e) { try { switch ((string)(sender as Button).Tag) { case "P": if (index > 1) { index -= 1; } break; default: case "N": if (index < count) { index += 1; } break; } TextViewer_PreviousButton.Enabled = true; TextViewer_NextButton.Enabled = true; if (index <= 1) { TextViewer_PreviousButton.Enabled = false; } if (index >= count) { TextViewer_NextButton.Enabled = false; } if (category == "ModStory") { _ = LoadStory(doll.DicNumber.ToString()); } else { _ = LoadStory(); } } catch (Exception ex) { ETC.LogError(ex); } }
private async Task InitializeFairyDic() { await Task.Delay(1); try { FairyDic_SplitContainer.Panel1.Hide(); _ = ListFairy(null); } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("도감 초기화 오류", "요정 도감 초기화 중 오류가 발생했습니다."); } }
private async Task LoadText(string url) { string text; try { using (WebClient wc = new WebClient()) text = await wc.DownloadStringTaskAsync(url); TextViewer_TextField.Text = text; } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("텍스트 뷰어 오류", "네트워크에서 텍스트를 불러오는 중 오류가 발생했습니다."); } }
private void FairyDic_FairyListView_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) { try { if (e.IsSelected) { fairy = new Fairy(ETC.FindDataRow(ETC.fairyList, "DicNumber", int.Parse(e.Item.Text))); _ = LoadFairyInfo(); } } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("요정 불러오기 오류", "요정 정보를 불러오는 동안 오류가 발생했습니다."); } }
private void LoadAbilityEquip() { Label[] abilityControls = { EquipDic_EquipInfo_Ability1, EquipDic_EquipInfo_Ability2, EquipDic_EquipInfo_Ability3, EquipDic_EquipInfo_Ability4 }; Label[] initMagControls = { EquipDic_EquipInfo_InitMag1, EquipDic_EquipInfo_InitMag2, EquipDic_EquipInfo_InitMag3, EquipDic_EquipInfo_InitMag4 }; Label[] maxMagControls = { EquipDic_EquipInfo_MaxMag1, EquipDic_EquipInfo_MaxMag2, EquipDic_EquipInfo_MaxMag3, EquipDic_EquipInfo_MaxMag4 }; try { for (int i = 0; i < equip.Abilities.Length; ++i) { abilityControls[i].Text = equip.Abilities[i]; initMagControls[i].Text = equip.InitMags[i]; maxMagControls[i].Text = equip.MaxMags[i]; } for (int i = equip.Abilities.Length; i < abilityControls.Length; ++i) { abilityControls[i].Text = ""; initMagControls[i].Text = ""; maxMagControls[i].Text = ""; } } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("장비 능력치 오류", "장비 능력치를 불러오는 중 오류가 발생했습니다."); } }
private void EquipDic_EquipListView_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) { try { if (e.IsSelected) { equip = new Equip(ETC.FindDataRow(ETC.equipmentList, "Id", int.Parse(e.Item.Text))); _ = LoadEquipInfo(); } } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("장비 불러오기 오류", "장비 정보를 불러오는 동안 오류가 발생했습니다."); } }
private void TDollDic_TDollListView_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) { try { if (e.IsSelected) { doll = new Doll(ETC.FindDataRow(ETC.dollList, "DicNumber", int.Parse(e.Item.Text))); vCostumeIndex = 0; _ = LoadTDollInfo(); } } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("인형 불러오기 오류", "인형 정보를 불러오는 동안 오류가 발생했습니다."); } }
private void ListTable(ref DataTable dt) { int[] time = new int[2]; try { foreach (DataRow dr in dt.Rows) { int t = (int)dr["ProductTime"]; if (t == 0) { continue; } time[0] = t / 60; time[1] = t - time[0] * 60; ProductTimeTable_ListView.Items.Add(new ListViewItem(new string[] { "", $"{time[0]} : {time[1]}", (string)dr["Name"] })); } ProductTimeTable_ListView.ListViewItemSorter = new ETC.Sorter { Order = ProductTimeTable_ListView.Sorting, ColumnIndex = 1 }; ProductTimeTable_ListView.Sort(); } catch (Exception ex) { ETC.LogError(ex); if (MessageBox.Show("데이터 구성 중 오류가 발생했습니다.", "데이터 구성 오류", MessageBoxButtons.OK, MessageBoxIcon.Error) == DialogResult.OK) { Close(); } } }
private void BasicInitialize() { try { #if DEBUG ETC.isReleaseMode = false; #endif CheckInitFolder(); if (ETC.isReleaseMode == true) { AppCenter.Start("62727ad7-8a10-4667-902b-5414f5abd730", typeof(Analytics), typeof(Crashes)); } } catch (Exception ex) { ETC.LogError(ex); } }