/// <summary> /// 一覧ビューを更新します。 /// </summary> private void UpdateView() { var ships = KCDatabase.Instance.Ships.Values; var equipments = KCDatabase.Instance.Equipments.Values; var masterEquipments = KCDatabase.Instance.MasterEquipments; int masterCount = masterEquipments.Values.Count(eq => !eq.IsAbyssalEquipment); var allCount = equipments.GroupBy(eq => eq.EquipmentID).ToDictionary(group => group.Key, group => group.Count()); var remainCount = new Dictionary <int, int>(allCount); //剰余数計算 foreach (var eq in ships .SelectMany(s => s.AllSlotInstanceMaster) .Where(eq => eq != null)) { remainCount[eq.EquipmentID]--; } foreach (var eq in KCDatabase.Instance.BaseAirCorps.Values .SelectMany(corps => corps.Squadrons.Values.Select(sq => sq.EquipmentInstance)) .Where(eq => eq != null)) { remainCount[eq.EquipmentID]--; } foreach (var eq in KCDatabase.Instance.RelocatedEquipments.Values .Where(eq => eq.EquipmentInstance != null)) { remainCount[eq.EquipmentInstance.EquipmentID]--; } //表示処理 EquipmentView.SuspendLayout(); EquipmentView.Enabled = false; EquipmentView.Rows.Clear(); var rows = new List <DataGridViewRow>(allCount.Count); var ids = allCount.Keys; foreach (int id in ids) { var row = new DataGridViewRow(); row.CreateCells(EquipmentView); row.SetValues( id, masterEquipments[id].IconType, masterEquipments[id].Name, allCount[id], remainCount[id] ); rows.Add(row); } for (int i = 0; i < rows.Count; i++) { rows[i].Tag = i; } EquipmentView.Rows.AddRange(rows.ToArray()); EquipmentView.Sort(EquipmentView_Name, ListSortDirection.Ascending); EquipmentView.Enabled = true; EquipmentView.ResumeLayout(); if (EquipmentView.Rows.Count > 0) { EquipmentView.CurrentCell = EquipmentView[0, 0]; } }
/// <summary> /// 一覧ビューを更新します。 /// </summary> private void UpdateView() { var ships = KCDatabase.Instance.Ships.Values; var equipments = KCDatabase.Instance.Equipments.Values; var masterEquipments = KCDatabase.Instance.MasterEquipments; int masterCount = masterEquipments.Values.Count(eq => !eq.IsAbyssalEquipment); var allCount = new Dictionary <int, int>(masterCount); //全個数計算 foreach (var e in equipments) { if (!allCount.ContainsKey(e.EquipmentID)) { allCount.Add(e.EquipmentID, 1); } else { allCount[e.EquipmentID]++; } } var remainCount = new Dictionary <int, int>(allCount); //剰余数計算 foreach (var ship in ships) { int[] eqids = ship.SlotInstance.Select(i => i != null ? i.EquipmentID : -1).ToArray(); for (int i = 0; i < eqids.Length; i++) { if (eqids[i] == -1) { continue; } remainCount[eqids[i]]--; } } //表示処理 EquipmentView.SuspendLayout(); EquipmentView.Enabled = false; EquipmentView.Rows.Clear(); var rows = new List <DataGridViewRow>(allCount.Count); var ids = allCount.Keys; foreach (int id in ids) { var row = new DataGridViewRow(); row.CreateCells(EquipmentView); row.SetValues( id, masterEquipments[id].IconType, masterEquipments[id].Name, allCount[id], remainCount[id] ); rows.Add(row); } for (int i = 0; i < rows.Count; i++) { rows[i].Tag = i; } EquipmentView.Rows.AddRange(rows.ToArray()); EquipmentView.Sort(EquipmentView_Name, ListSortDirection.Ascending); EquipmentView.Enabled = true; EquipmentView.ResumeLayout(); if (EquipmentView.Rows.Count > 0) { EquipmentView.CurrentCell = EquipmentView[0, 0]; } }
public DialogAlbumMasterEquipment() { InitializeComponent(); TitleFirepower.ImageList = TitleTorpedo.ImageList = TitleAA.ImageList = TitleArmor.ImageList = TitleASW.ImageList = TitleEvasion.ImageList = TitleLOS.ImageList = TitleAccuracy.ImageList = TitleBomber.ImageList = TitleSpeed.ImageList = TitleRange.ImageList = TitleAircraftCost.ImageList = TitleAircraftDistance.ImageList = Rarity.ImageList = MaterialFuel.ImageList = MaterialAmmo.ImageList = MaterialSteel.ImageList = MaterialBauxite.ImageList = ResourceManager.Instance.Icons; EquipmentType.ImageList = ResourceManager.Instance.Equipments; TitleFirepower.ImageIndex = (int)ResourceManager.IconContent.ParameterFirepower; TitleTorpedo.ImageIndex = (int)ResourceManager.IconContent.ParameterTorpedo; TitleAA.ImageIndex = (int)ResourceManager.IconContent.ParameterAA; TitleArmor.ImageIndex = (int)ResourceManager.IconContent.ParameterArmor; TitleASW.ImageIndex = (int)ResourceManager.IconContent.ParameterASW; TitleEvasion.ImageIndex = (int)ResourceManager.IconContent.ParameterEvasion; TitleLOS.ImageIndex = (int)ResourceManager.IconContent.ParameterLOS; TitleAccuracy.ImageIndex = (int)ResourceManager.IconContent.ParameterAccuracy; TitleBomber.ImageIndex = (int)ResourceManager.IconContent.ParameterBomber; TitleSpeed.ImageIndex = (int)ResourceManager.IconContent.ParameterSpeed; TitleRange.ImageIndex = (int)ResourceManager.IconContent.ParameterRange; TitleAircraftCost.ImageIndex = (int)ResourceManager.IconContent.ParameterAircraftCost; TitleAircraftDistance.ImageIndex = (int)ResourceManager.IconContent.ParameterAircraftDistance; MaterialFuel.ImageIndex = (int)ResourceManager.IconContent.ResourceFuel; MaterialAmmo.ImageIndex = (int)ResourceManager.IconContent.ResourceAmmo; MaterialSteel.ImageIndex = (int)ResourceManager.IconContent.ResourceSteel; MaterialBauxite.ImageIndex = (int)ResourceManager.IconContent.ResourceBauxite; BasePanelEquipment.Visible = false; ControlHelper.SetDoubleBuffered(TableEquipmentName); ControlHelper.SetDoubleBuffered(TableParameterMain); ControlHelper.SetDoubleBuffered(TableParameterSub); ControlHelper.SetDoubleBuffered(TableArsenal); ControlHelper.SetDoubleBuffered(EquipmentView); //Initialize EquipmentView EquipmentView.SuspendLayout(); EquipmentView_ID.AutoSizeMode = DataGridViewAutoSizeColumnMode.None; EquipmentView_Icon.AutoSizeMode = DataGridViewAutoSizeColumnMode.None; //EquipmentView_Type.AutoSizeMode = DataGridViewAutoSizeColumnMode.None; EquipmentView.Rows.Clear(); List <DataGridViewRow> rows = new List <DataGridViewRow>(KCDatabase.Instance.MasterEquipments.Values.Count(s => s.Name != "なし")); foreach (var eq in KCDatabase.Instance.MasterEquipments.Values) { if (eq.Name == "なし") { continue; } DataGridViewRow row = new DataGridViewRow(); row.CreateCells(EquipmentView); row.SetValues(eq.EquipmentID, eq.IconType, eq.CategoryTypeInstance.Name, eq.Name); rows.Add(row); } EquipmentView.Rows.AddRange(rows.ToArray()); EquipmentView_ID.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCellsExceptHeader; EquipmentView_Icon.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCellsExceptHeader; //EquipmentView_Type.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCellsExceptHeader; EquipmentView.Sort(EquipmentView_ID, ListSortDirection.Ascending); EquipmentView.ResumeLayout(); }
/// <summary> /// 一覧ビューを更新します。 /// </summary> private void UpdateView() { var ships = KCDatabase.Instance.Ships.Values; var equipments = KCDatabase.Instance.Equipments.Values; var masterEquipments = KCDatabase.Instance.MasterEquipments; int masterCount = masterEquipments.Values.Count(eq => !eq.IsAbyssalEquipment); var allCount = equipments.GroupBy(eq => eq.EquipmentID).ToDictionary(group => group.Key, group => group.Count()); var remainCount = new Dictionary <int, int>(allCount); //剰余数計算 foreach (var eq in ships .SelectMany(s => s.AllSlotInstanceMaster) .Where(eq => eq != null)) { remainCount[eq.EquipmentID]--; } foreach (var eq in KCDatabase.Instance.BaseAirCorps.Values .SelectMany(corps => corps.Squadrons.Values.Select(sq => sq.EquipmentInstance)) .Where(eq => eq != null)) { remainCount[eq.EquipmentID]--; } foreach (var eq in KCDatabase.Instance.RelocatedEquipments.Values .Where(eq => eq.EquipmentInstance != null)) { remainCount[eq.EquipmentInstance.EquipmentID]--; } //表示処理 EquipmentView.SuspendLayout(); EquipmentView.Enabled = false; EquipmentView.Rows.Clear(); var rows = new List <DataGridViewRow>(allCount.Count); var ids = allCount.Keys; foreach (int id in ids) { var row = new DataGridViewRow(); row.CreateCells(EquipmentView); row.SetValues( id, masterEquipments[id].IconType, masterEquipments[id].Name, allCount[id], remainCount[id] ); { StringBuilder sb = new StringBuilder(); var eq = masterEquipments[id]; sb.AppendFormat("{0} {1}\r\n", eq.CategoryTypeInstance.Name, eq.Name, eq.EquipmentID); if (eq.Firepower != 0) { sb.AppendFormat("火力 {0:+0;-0}\r\n", eq.Firepower); } if (eq.Torpedo != 0) { sb.AppendFormat("雷装 {0:+0;-0}\r\n", eq.Torpedo); } if (eq.AA != 0) { sb.AppendFormat("対空 {0:+0;-0}\r\n", eq.AA); } if (eq.Armor != 0) { sb.AppendFormat("装甲 {0:+0;-0}\r\n", eq.Armor); } if (eq.ASW != 0) { sb.AppendFormat("対潜 {0:+0;-0}\r\n", eq.ASW); } if (eq.Evasion != 0) { sb.AppendFormat("{0} {1:+0;-0}\r\n", eq.CategoryType == EquipmentTypes.Interceptor ? "迎撃" : "回避", eq.Evasion); } if (eq.LOS != 0) { sb.AppendFormat("索敵 {0:+0;-0}\r\n", eq.LOS); } if (eq.Accuracy != 0) { sb.AppendFormat("{0} {1:+0;-0}\r\n", eq.CategoryType == EquipmentTypes.Interceptor ? "対爆" : "命中", eq.Accuracy); } if (eq.Bomber != 0) { sb.AppendFormat("爆装 {0:+0;-0}\r\n", eq.Bomber); } sb.AppendLine("(右クリックで図鑑)"); row.Cells[2].ToolTipText = sb.ToString(); } rows.Add(row); } for (int i = 0; i < rows.Count; i++) { rows[i].Tag = i; } EquipmentView.Rows.AddRange(rows.ToArray()); EquipmentView.Sort(EquipmentView_Name, ListSortDirection.Ascending); EquipmentView.Enabled = true; EquipmentView.ResumeLayout(); if (EquipmentView.Rows.Count > 0) { EquipmentView.CurrentCell = EquipmentView[0, 0]; } }