shipListPanel.ToggleHpPercent();\r
battleResultPanel.ToggleHpPercent();\r
}\r
- LoadShipGroupFromConfig();\r
+ }\r
+\r
+ private ShipListConfig GetConfig()\r
+ {\r
+ if (_isMaster)\r
+ {\r
+ SetGroup();\r
+ return _config.ShipList;\r
+ }\r
+ if (_config.ListFormGroup.Count == 0)\r
+ return CreateSecondaryConfig();\r
+ var config = _config.ListFormGroup[0];\r
+ _config.ListFormGroup.RemoveAt(0);\r
+ config.ShipGroup = _config.ShipList.ShipGroup;\r
+ return config;\r
+ }\r
+\r
+ private ShipListConfig CreateSecondaryConfig()\r
+ {\r
+ var src = _config.ShipList;\r
+ var config = new ShipListConfig\r
+ {\r
+ Mode = src.Mode,\r
+ ShipCategories = src.ShipCategories,\r
+ ShipType = src.ShipType,\r
+ ShowHpInPercent = src.ShowHpInPercent,\r
+ SortOrder = src.SortOrder,\r
+ Location = src.Location,\r
+ Size = src.Size,\r
+ ShipGroup = src.ShipGroup\r
+ };\r
+ if (config.Mode == "分類" || string.IsNullOrEmpty(config.Mode))\r
+ config.Mode = "全艦";\r
+ return config;\r
+ }\r
+\r
+ private void SetGroup()\r
+ {\r
+ var groups = _config.ShipList.ShipGroup;\r
+ for (var i = groups.Count; i < GroupConfigLabels.GroupCount; i++)\r
+ groups.Add(new List<int>());\r
+ shipListPanel.GroupSettings = groups;\r
}\r
\r
public void UpdateList()\r
}\r
if (shipListPanel.GroupUpdated)\r
{\r
- StoreShipGroupToConfig();\r
+ PurifyShipGroup();\r
_config.Save();\r
shipListPanel.GroupUpdated = false;\r
}\r
}\r
\r
+ private void PurifyShipGroup()\r
+ {\r
+ var all = _sniffer.ShipList.Select(s => s.Id).ToArray();\r
+ if (all.Length == 0)\r
+ return;\r
+ foreach (var g in _config.ShipList.ShipGroup)\r
+ {\r
+ var filtered = g.Intersect(all).ToArray();\r
+ g.Clear();\r
+ g.AddRange(filtered);\r
+ }\r
+ }\r
+\r
private void SetHeaderVisibility()\r
{\r
static void Set(Control header, bool visible)\r
Set(panelGroupHeader, InGroupConfig);\r
Set(panelRepairHeader, InRepairList);\r
Set(panelFleetHeader, InFleetInfo);\r
- SetSTypeDropDownVisible(InShipStatus || InRepairList);\r
+ SetSTypeDropDownVisible(InShipStatus || InGroupConfig || InRepairList);\r
}\r
\r
private void SetPanelVisibility()\r
\r
private void SetMinimumSize()\r
{\r
- MinimumSize = new Size(Width - Scaler.ScaleWidth(24) - SystemInformation.VerticalScrollBarWidth * (_config.Zoom - 100) / 100, 0);\r
- }\r
-\r
- private ShipListConfig GetConfig()\r
- {\r
- if (_isMaster)\r
- return _config.ShipList;\r
- if (_config.ListFormGroup.Count == 0)\r
- return CreateSecondaryConfig();\r
- var config = _config.ListFormGroup[0];\r
- _config.ListFormGroup.RemoveAt(0);\r
- return config;\r
- }\r
-\r
- private ShipListConfig CreateSecondaryConfig()\r
- {\r
- var src = _config.ShipList;\r
- var config = new ShipListConfig\r
- {\r
- Mode = src.Mode,\r
- ShipCategories = src.ShipCategories,\r
- ShipType = src.ShipType,\r
- ShowHpInPercent = src.ShowHpInPercent,\r
- SortOrder = src.SortOrder,\r
- Location = src.Location,\r
- Size = src.Size\r
- };\r
- if (config.Mode == "分類" || string.IsNullOrEmpty(config.Mode))\r
- config.Mode = "全艦";\r
- return config;\r
- }\r
-\r
- private void LoadShipGroupFromConfig()\r
- {\r
- var group = _config.ShipList.ShipGroup;\r
- for (var i = 0; i < GroupConfigLabels.GroupCount; i++)\r
- shipListPanel.GroupSettings[i] = i < group.Count ? new HashSet<int>(group[i]) : new HashSet<int>();\r
+ MinimumSize = new Size(Width - Scaler.ScaleWidth(24) -\r
+ SystemInformation.VerticalScrollBarWidth * (_config.Zoom - 100) / 100, 0);\r
}\r
\r
private void SetCheckBoxSTypeState()\r
\r
private void SaveMasterState()\r
{\r
- StoreShipGroupToConfig();\r
+ PurifyShipGroup();\r
_listConfig.Visible = Visible && WindowState == FormWindowState.Normal;\r
SaveBounds(_listConfig); // 最小化時は以前のサイズを記録する\r
}\r
if (WindowState != FormWindowState.Normal) // 最小化時は次回復旧しない\r
return;\r
_listConfig.Visible = true;\r
+ _listConfig.ShipGroup = null;\r
_config.ListFormGroup.Add(_listConfig);\r
SaveBounds(_listConfig);\r
}\r
Owner = null;\r
}\r
\r
- private void StoreShipGroupToConfig()\r
- {\r
- var all = _sniffer.ShipList.Select(s => s.Id).ToArray();\r
- var group = _config.ShipList.ShipGroup;\r
- group.Clear();\r
- for (var i = 0; i < GroupConfigLabels.GroupCount; i++)\r
- {\r
- if (all.Length > 0)\r
- shipListPanel.GroupSettings[i].IntersectWith(all);\r
- group.Add(shipListPanel.GroupSettings[i].ToList());\r
- }\r
- }\r
-\r
public void ShowShip(int id)\r
{\r
if (!Visible)\r
\r
private void ListForm_ResizeEnd(object sender, EventArgs e)\r
{\r
- foreach (var panel in new IPanelResize[] {shipListPanel, antiAirPanel, airBattleResultPanel, battleResultPanel, fleetPanel})\r
+ foreach (var panel in new IPanelResize[]\r
+ {shipListPanel, antiAirPanel, airBattleResultPanel, battleResultPanel, fleetPanel})\r
{\r
if (panel.Visible)\r
panel.ApplyResize();\r