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 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 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 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 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 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 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 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 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 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 async void StatusStrip_AppVerLabel_Click(object sender, EventArgs e) { var label = sender as ToolStripStatusLabel; if (label.DisplayStyle == ToolStripItemDisplayStyle.ImageAndText) { if (MessageBox.Show("프로그램 업데이트가 확인되었습니다. 계속 진행할까요?", "프로그램 업데이트 확인", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { UpdateCheckTimer.Stop(); GFDStatusLabel.Visible = true; if (!await ETC.UpdateProgram(GFDStatusLabel)) { GFDStatusLabel.Visible = false; } } } }
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(); } } }
internal Fairy(DataRow dr, bool basic_info = false) { Name = (string)dr["Name"]; DicNumber = (int)dr["DicNumber"]; Type = (string)dr["Type"]; ProductTime = (int)dr["ProductTime"]; Note = ETC.IsDBNullOrBlank(dr, "Note") ? "" : (string)dr["Note"]; ProductDialog = ETC.IsDBNullOrBlank(dr, "ProductDialog") ? "" : (string)dr["ProductDialog"]; SkillName = (string)dr["SkillName"]; SkillExplain = (string)dr["SkillExplain"]; SkillEffect = ((string)dr["SkillEffect"]).Split(';'); SkillRate = ((string)dr["SkillRate"]).Split(';'); OrderConsume = (int)dr["OrderConsume"]; CoolDown = (int)dr["CoolDown"]; SetAbility(ref dr); }
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); } }
internal Equip(DataRow dr, bool basic_info = false) { Name = (string)dr["Name"]; Id = (int)dr["Id"]; Grade = (int)dr["Grade"]; ProductTime = (int)dr["ProductTime"]; Category = (string)dr["Category"]; Icon = (string)dr["Icon"]; Note = ETC.IsDBNullOrBlank(dr, "Note") ? "" : (string)dr["Note"]; Type = (string)dr["Type"]; ProductDialog = ETC.IsDBNullOrBlank(dr, "ProductDialog") ? "" : (string)dr["ProductDialog"]; ImagePath = Path.Combine(ETC.cachePath, "Equip", "Normal", string.Format("{0}.gfdcache", Icon)); OnlyUse = ETC.IsDBNullOrBlank(dr, "OnlyUse") ? null : ((string)dr["OnlyUse"]).Split(';'); DollType = ETC.IsDBNullOrBlank(dr, "DollType") ? null : ((string)dr["DollType"]).Split(';'); SpecialDoll = ETC.IsDBNullOrBlank(dr, "SpecialDoll") ? null : ((string)dr["SpecialDoll"]).Split(';'); SetAbility(ref dr); }
private async void UpdateCheckTimer_Tick(object sender, EventArgs e) { try { if (await ETC.CheckAppVersion()) { StatusStrip_AppVerLabel.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText; } else { StatusStrip_AppVerLabel.DisplayStyle = ToolStripItemDisplayStyle.Text; } if (await ETC.CheckDBVersion()) { StatusStrip_DBVerLabel.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText; } else { StatusStrip_DBVerLabel.DisplayStyle = ToolStripItemDisplayStyle.Text; } if (await ETC.CheckOldGFDVersion()) { StatusStrip_OldGFDVerLabel.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText; } else { StatusStrip_OldGFDVerLabel.DisplayStyle = ToolStripItemDisplayStyle.Text; } StatusStrip_DBVerLabel.Text = $"DB Ver : {ETC.dbVer}"; StatusStrip_OldGFDVerLabel.Text = $"GFDv1 Ver : {ETC.oldGFDVer}"; } catch (Exception ex) { ETC.LogError(ex); } }
private async Task ListFairy(string searchName) { await Task.Delay(10); try { FairyDic_FairyListView.Items.Clear(); CheckApplyFairyFilter(); foreach (Fairy fairy in fairyRootList) { if ((searchName != null) && !fairy.Name.ToUpper().Contains(searchName.ToUpper())) { continue; } if (!CheckFilter(fairy)) { continue; } FairyDic_FairyListView.Items.Add(new ListViewItem(new string[] { fairy.DicNumber.ToString(), fairy.Type, fairy.Name })); } } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("리스트 오류", "요정 리스트를 생성하는 중 오류가 발생했습니다."); } }
private async Task LoadEquipInfo(bool isRefresh = false) { await Task.Delay(10); isEquipLoad = true; try { EquipDic_SplitContainer.Panel1.Show(); EquipDic_EquipInfo_DicNumber.Text = $"No. {equip.Id}"; EquipDic_EquipInfo_Name.Text = equip.Name; EquipDic_EquipInfo_TypeCategory.Text = $"{equip.Category} - {equip.Type}"; await LoadEquipImage(isRefresh); Bitmap gBitmap; switch (equip.Grade) { default: case 2: gBitmap = Resources.EquipBG_2; break; case 3: gBitmap = Resources.EquipBG_3; break; case 4: gBitmap = Resources.EquipBG_4; break; case 0: case 5: gBitmap = Resources.EquipBG_5; break; } EquipDic_EquipInfo_FullImageView.BackgroundImage = gBitmap; EquipDic_EquipInfo_ProductTimeLabel.Text = equip.GetProductTimeToString; if (equip.OnlyUse == null) { EquipDic_EquipInfo_OnlyUseDollPanel.Visible = false; EquipDic_EquipInfo_DollTypePanel.Visible = true; LoadEquipDollType(); } else { EquipDic_EquipInfo_DollTypePanel.Visible = false; EquipDic_EquipInfo_OnlyUseDollPanel.Visible = true; LoadEquipOnlyUseDoll(); } LoadAbilityEquip(); EquipDic_EquipInfo_GainTooltip.SetToolTip(EquipDic_EquipInfo_FullImageView, equip.ProductDialog); } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("장비 불러오기 오류", "장비 정보를 불러오는 중 오류가 발생했습니다."); } finally { isEquipLoad = false; } }
internal Doll(DataRow dr, bool basic_info = false) { Name = (string)dr["Name"]; ProductDialog = ETC.IsDBNullOrBlank(dr, "ProductDialog") ? "" : (string)dr["ProductDialog"]; krName = (string)dr["Name"]; NickName = (string)dr["NickName"]; CodeName = (string)dr["CodeName"]; DicNumber = (int)dr["DicNumber"]; RealModel = (string)dr["Model"]; Country = SetCountry(ref dr); Grade = (int)dr["Grade"]; ProductTime = (int)dr["ProductTime"]; Type = (string)dr["Type"]; DropEvent = ((string)dr["DropEvent"]).Split(','); HasMod = (bool)dr["HasMod"]; HasVoice = (bool)dr["HasVoice"]; Illustrator = ETC.IsDBNullOrBlank(dr, "Illustrator") ? "" : (string)dr["Illustrator"]; HasCensored = (bool)dr["HasCensor"]; CensorType = HasCensored ? ((string)dr["CensorType"]).Split(';') : null; Costumes = ETC.IsDBNullOrBlank(dr, "Costume") == true ? null : ((string)dr["Costume"]).Split(';'); string[] BuffFormation_Data = ((string)dr["EffectFormation"]).Split(','); BuffFormation = new int[9]; for (int i = 0; i < BuffFormation_Data.Length; ++i) { BuffFormation[i] = int.Parse(BuffFormation_Data[i]); } BuffInfo = ((string)dr["Effect"]).Split(';'); BuffType = ((string)dr["EffectType"]).Split(','); SkillName = (string)dr["Skill"]; SkillExplain = (string)dr["SkillExplain"]; SkillEffect = ((string)dr["SkillEffect"]).Split(';'); SkillMag = ((string)dr["SkillMag"]).Split(','); if (HasMod == true) { ModGrade = (int)dr["ModGrade"]; string[] ModBuffFormation_Data = ((string)dr["ModEffectFormation"]).Split(','); ModBuffFormation = new int[9]; for (int i = 0; i < ModBuffFormation_Data.Length; ++i) { ModBuffFormation[i] = int.Parse(ModBuffFormation_Data[i]); } ModBuffInfo = ((string)dr["ModEffect"]).Split(';'); ModSkillName = (string)dr["ModSkill"]; ModSkillExplain = (string)dr["ModSkillExplain"]; ModSkillEffect = ((string)dr["ModSkillEffect"]).Split(';'); ModSkillMag = ((string)dr["ModSkillMag"]).Split(','); SkillMagAfterMod = ((string)dr["SkillMagAfterMod"]).Split(','); } if (basic_info == false) { if (HasVoice == true) { Voices = ((string)dr["Voices"]).Split(';'); VoiceActor = ETC.IsDBNullOrBlank(dr, "VoiceActor") ? "" : (string)dr["VoiceActor"]; if (ETC.IsDBNullOrBlank(dr, "CostumeVoices") == false) { string[] temp = ((string)dr["CostumeVoices"]).Split('/'); CostumeVoices = new string[temp.Length, 2]; for (int i = 0; i < temp.Length; ++i) { CostumeVoices[i, 0] = temp[i].Split(':')[0]; CostumeVoices[i, 1] = temp[i].Split(':')[1]; } } } else { Voices = null; CostumeVoices = null; } SetAbility(ref dr); } }
internal int CalcAbility(string ability, int ability_value, int grow_ratio, int level, int favor, bool IsMod = false) { double favor_ratio = 0; double result = 0; try { if (favor < 10) { favor_ratio = -0.05; } else if (favor < 90) { favor_ratio = 0; } else if (favor < 140) { favor_ratio = 0.05; } else if (favor < 190) { favor_ratio = 0.1; } else if (favor < 200) { favor_ratio = 0.15; } else { favor_ratio = 0; } double[] basic = null; double[] grow = null; double type_ratio = Attributes[ability]; switch (IsMod) { case false: basic = NormalGrow_Basic[ability]; if ((ability != "HP") && (ability != "Armor")) { grow = NormalGrow_Grow[ability]; } break; case true: basic = ModGrow_Basic[ability]; if ((ability != "HP") && (ability != "Armor")) { grow = ModGrow_Grow[ability]; } break; } result = Math.Ceiling((basic[0] + (level - 1) * basic[1]) * type_ratio * ability_value / 100); if ((ability != "HP") && (ability != "Armor")) { result += Math.Ceiling((grow[1] + (level - 1) * grow[0]) * type_ratio * ability_value * grow_ratio / 100 / 100); } if ((ability == "FireRate") || (ability == "Accuracy") || (ability == "Evasion")) { result += Math.Sign(favor_ratio) * Math.Ceiling(Math.Abs(result * favor_ratio)); } } catch (Exception ex) { ETC.LogError(ex); } return(Convert.ToInt32(result)); }
private async Task LoadTDollInfo(bool isRefresh = false) { await Task.Delay(10); isDollLoad = true; try { TDollDic_SplitContainer.Panel1.Show(); TDollDic_TDollInfo_FullImageLoadProcessBar.Visible = true; TDollDic_TDollInfo_FullImageLoadProcessBar.Style = ProgressBarStyle.Marquee; if (doll.HasMod) { TDollDic_TDollInfo_ModStoryButton.Enabled = true; TDollDic_TDollInfo_ModSkillButton.Enabled = true; } else { TDollDic_TDollInfo_ModStoryButton.Enabled = false; TDollDic_TDollInfo_ModSkillButton.Enabled = false; } das = new DollAbilitySet(doll.Type); if (doll.HasMod) { TDollDic_TDollInfo_ModSelector1.Enabled = true; TDollDic_TDollInfo_ModSelector2.Enabled = true; TDollDic_TDollInfo_ModSelector3.Enabled = true; } else { TDollDic_TDollInfo_ModSelector1.Enabled = false; TDollDic_TDollInfo_ModSelector2.Enabled = false; TDollDic_TDollInfo_ModSelector3.Enabled = false; } TDollDic_TDollInfo_ModSelector0.Checked = true; TDollDic_TDollInfo_DicNumber.Text = $"No. {doll.DicNumber}"; TDollDic_TDollInfo_Name.Text = doll.Name; TDollDic_TDollInfo_CodeName.Text = doll.CodeName; TDollDic_TDollInfo_ProductTimeLabel.Text = $"{(doll.GetProductTimeToString == "None" ? "제조 불가" : doll.GetProductTimeToString)}"; TDollDic_TDollInfo_IllustratorInfo.Text = doll.Illustrator; TDollDic_TDollInfo_NickNameInfo.Text = doll.NickName; await LoadDollImages(isRefresh); Bitmap gBitmap; switch (doll.Grade) { default: case 0: gBitmap = Resources.PSGrade_0; break; case 2: gBitmap = Resources.PSGrade_2; break; case 3: gBitmap = Resources.PSGrade_3; break; case 4: gBitmap = Resources.PSGrade_4; break; case 5: gBitmap = Resources.PSGrade_5; break; } TDollDic_TDollInfo_FullImageView.BackgroundImage = gBitmap; switch (doll.Type) { default: case "HG": TDollDic_TDollInfo_TypeIconImage.Image = Resources.HG; break; case "SMG": TDollDic_TDollInfo_TypeIconImage.Image = Resources.SMG; break; case "AR": TDollDic_TDollInfo_TypeIconImage.Image = Resources.AR; break; case "RF": TDollDic_TDollInfo_TypeIconImage.Image = Resources.RF; break; case "MG": TDollDic_TDollInfo_TypeIconImage.Image = Resources.MG; break; case "SG": TDollDic_TDollInfo_TypeIconImage.Image = Resources.SG; break; } LoadFormationBuff(); // 능력치 정보 불러오기도 동시 실행됨 abilityLv = 1; if (TDollDic_TDollInfo_AbilityFavorSelector.SelectedIndex != 1) { TDollDic_TDollInfo_AbilityFavorSelector.SelectedIndex = 1; } else { _ = LoadAbility(); } if (doll.HasVoice) { TDollDic_TDollInfo_VoiceGroup.Visible = true; LoadCostumeVoiceList(); } else { TDollDic_TDollInfo_VoiceGroup.Visible = false; } TDollDic_TDollInfo_GainTooltip.SetToolTip(TDollDic_TDollInfo_FullImageView, doll.ProductDialog); } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("인형 불러오기 오류", "인형 정보를 불러오는 중 오류가 발생했습니다."); } finally { isDollLoad = false; } }
private void LoadFormationBuff() { int[] formation; string[] type; string[] mag; TableLayoutControlCollection collection; StringBuilder sb; try { if (modIndex == 0) { formation = doll.BuffFormation; type = doll.BuffType; mag = doll.BuffInfo; } else { formation = doll.ModBuffFormation; type = doll.BuffType; mag = doll.ModBuffInfo; } // 버프 진형 채우기 collection = TDollDic_TDollInfo_FormationBuffTable.Controls; for (int i = 0; i < formation.Length; ++i) { Color c; switch (formation[i]) { default: case 0: c = Color.LightGray; break; case 1: c = Color.Green; break; case 2: c = Color.Black; break; } collection[i].BackColor = c; } // 버프 타입 sb = new StringBuilder(); for (int i = 0; i < type.Length; ++i) { sb.Append(type[i]); sb.Append(" "); } TDollDic_TDollInfo_FormationBuffType.Text = $"{sb.ToString()} 적용"; // 버프 효과 및 효과치 PictureBox[] buffTypeIcons = { TDollDic_TDollInfo_FormationBuffIcon1, TDollDic_TDollInfo_FormationBuffIcon2 }; Label[] buffMags = { TDollDic_TDollInfo_FormationBuffMag1, TDollDic_TDollInfo_FormationBuffMag2 }; string[] buffType = mag[0].Split(','); for (int i = 0; i < buffTypeIcons.Length; ++i) { buffTypeIcons[i].Image = null; buffMags[i].Text = ""; } for (int i = 0; i < buffType.Length; ++i) { Bitmap btBitmap; switch (buffType[i]) { case "AC": btBitmap = Resources.AC_Icon; break; case "AM": btBitmap = Resources.AM_Icon; break; case "AS": btBitmap = Resources.AS_Icon; break; case "CR": btBitmap = Resources.CR_Icon; break; case "EV": btBitmap = Resources.EV_Icon; break; case "FR": btBitmap = Resources.FR_Icon; break; case "CL": btBitmap = Resources.CL_Icon; break; default: btBitmap = null; break; } buffTypeIcons[i].Image = btBitmap; sb.Clear(); for (int k = 1; k < mag.Length; ++k) { string[] m = mag[k].Split(','); sb.Append(m[i]); sb.Append("%"); if (k < mag.Length - 1) { sb.Append("/"); } } buffMags[i].Text = sb.ToString(); } } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("인형 불러오기 오류", "진형 버프를 불러오는 동안 오류가 발생했습니다."); } }
private async Task LoadAbility() { await Task.Delay(10); Label[] abilityMags = { TDollDic_TDollInfo_AbilityHPMag, TDollDic_TDollInfo_AbilityFRMag, TDollDic_TDollInfo_AbilityEVMag, TDollDic_TDollInfo_AbilityACMag, TDollDic_TDollInfo_AbilityASMag }; try { string[] abilities = { "HP", "FireRate", "Evasion", "Accuracy", "AttackSpeed" }; string[] grow_ratio = doll.Abilities["Grow"].Split(';'); for (int i = 0; i < abilityMags.Length; ++i) { string[] basic_ratio = doll.Abilities[abilities[i]].Split(';'); int value = 0; switch (modIndex) { case 0: value = das.CalcAbility(abilities[i], int.Parse(basic_ratio[0]), int.Parse(grow_ratio[0]), abilityLv, abilityFavor, false); break; case 1: case 2: case 3: value = das.CalcAbility(abilities[i], int.Parse(basic_ratio[1]), int.Parse(grow_ratio[1]), abilityLv, abilityFavor, true); break; } abilityValues[i] = value; abilityMags[i].Text = $"{value} ({doll.AbilityGrade[i]})"; } if ((doll.Type == "MG") || (doll.Type == "SG")) { TDollDic_TDollInfo_AbilityBulletPanel.Visible = true; TDollDic_TDollInfo_AbilityReloadPanel.Visible = true; double ReloadTime = CalcReloadTime(doll, doll.Type, abilityValues[4]); int Bullet = 0; if (doll.HasMod == false) { Bullet = int.Parse(doll.Abilities["Bullet"]); } else { Bullet = int.Parse(doll.Abilities["Bullet"].Split(';')[modIndex]); } TDollDic_TDollInfo_AbilityBulletMag.Text = Bullet.ToString(); TDollDic_TDollInfo_AbilityReloadMag.Text = $"{ReloadTime} 초"; } else { TDollDic_TDollInfo_AbilityBulletPanel.Visible = false; TDollDic_TDollInfo_AbilityReloadPanel.Visible = false; } if (doll.Type == "SG") { TDollDic_TDollInfo_AbilityAMPanel.Visible = true; string[] basic_ratio = doll.Abilities["Armor"].Split(';'); int value = 0; switch (modIndex) { case 0: value = das.CalcAbility("Armor", int.Parse(basic_ratio[0]), int.Parse(grow_ratio[0]), abilityLv, abilityFavor, false); break; case 1: case 2: case 3: value = das.CalcAbility("Armor", int.Parse(basic_ratio[1]), int.Parse(grow_ratio[1]), abilityLv, abilityFavor, true); break; } abilityValues[5] = value; TDollDic_TDollInfo_AbilityAMMag.Text = $"{value} ({doll.AbilityGrade[6]})"; } else { abilityValues[5] = 0; TDollDic_TDollInfo_AbilityAMPanel.Visible = false; } } catch (Exception ex) { ETC.LogError(ex); ETC.ShowErrorMessage("인형 불러오기 오류", "능력치 정보를 불러오는 동안 오류가 발생했습니다."); } }