private readonly MainWindow.TimeOutChecker _suppressActivate;\r
private readonly CheckBox[] _shipTypeCheckBoxes;\r
private bool _isMaster;\r
- private Settings _settings;\r
+ private ShipListConfig _listConfig;\r
private FormWindowState _windowState = FormWindowState.Minimized;\r
public const int PanelWidth = 215;\r
\r
- public class Settings\r
- {\r
- public string Mode { get; set; }\r
- public ShipCategory ShipCategories { get; set; }\r
- public bool ShipType { get; set; }\r
- public bool ShowHpInPercent { get; set; }\r
- public SortOrder SortOrder { get; set; }\r
-\r
- public static Settings FromShipListConfig(ShipListConfig config)\r
- {\r
- return new Settings\r
- {\r
- Mode = config.Mode ?? "全艦",\r
- ShipCategories = config.ShipCategories,\r
- ShipType = config.ShipType,\r
- ShowHpInPercent = config.ShowHpInPercent,\r
- SortOrder = config.SortOrder\r
- };\r
- }\r
-\r
- public void SetToShipListConfig(ShipListConfig config)\r
- {\r
- config.Mode = Mode;\r
- config.ShipCategories = ShipCategories;\r
- config.ShipType = ShipType;\r
- config.ShowHpInPercent = ShowHpInPercent;\r
- config.SortOrder = SortOrder;\r
- }\r
- }\r
-\r
private object[] PanelNames => new object[] {"全艦", "A", "B", "C", "D", "分類", "修復", "装備", "艦隊", "対空", "戦況", "情報"}\r
.Where(n => IsMaster || (string)n != "分類").ToArray();\r
\r
private char[] PanelKeys => new[] {'Z', 'A', 'B', 'C', 'D', 'G', 'R', 'W', 'X', 'Y', 'S', 'I'}\r
.Where(key => IsMaster || key != 'G').ToArray();\r
\r
- public bool IsMaster\r
+ private bool IsMaster\r
{\r
get => _isMaster;\r
set\r
Repair\r
}\r
\r
- public ListForm(MainWindow main)\r
+ public ListForm(MainWindow main, bool isMaster = false)\r
{\r
InitializeComponent();\r
- IsMaster = false;\r
+ IsMaster = isMaster;\r
_form = main.Form;\r
_sniffer = main.Sniffer;\r
_config = main.Config;\r
swipe.AddShipListPanel(shipListPanel);\r
swipe.AddTreeView(itemTreeView);\r
swipe.AddPanel(fleetPanel);\r
+ SetupSettings();\r
+ }\r
+\r
+ private void SetupSettings()\r
+ {\r
+ _listConfig = GetConfig();\r
+ if (_listConfig.ShowHpInPercent)\r
+ {\r
+ shipListPanel.ToggleHpPercent();\r
+ battleResultPanel.ToggleHpPercent();\r
+ }\r
+ LoadShipGroupFromConfig();\r
}\r
\r
public void UpdateList()\r
else if (InShipStatus || InGroupConfig || InRepairList)\r
{\r
SetHeaderSortOrder();\r
- shipListPanel.Update(_sniffer, comboBoxGroup.Text, _settings);\r
+ shipListPanel.Update(_sniffer, comboBoxGroup.Text, _listConfig);\r
}\r
if (shipListPanel.GroupUpdated)\r
{\r
\r
private void SetHeaderSortOrder()\r
{\r
- switch (_settings.SortOrder)\r
+ switch (_listConfig.SortOrder)\r
{\r
case SortOrder.None:\r
labelHeaderCond.Text = "cond";\r
}\r
}\r
\r
- private bool InShipStatus => Array.Exists(new[] {"全艦", "A", "B", "C", "D"}, x => _settings.Mode == x);\r
+ private bool InShipStatus => Array.Exists(new[] {"全艦", "A", "B", "C", "D"}, x => _listConfig.Mode == x);\r
\r
- private bool InGroupConfig => _settings.Mode == "分類";\r
+ private bool InGroupConfig => _listConfig.Mode == "分類";\r
\r
- private bool InRepairList => _settings.Mode == "修復";\r
+ private bool InRepairList => _listConfig.Mode == "修復";\r
\r
- private bool InItemList => _settings.Mode == "装備";\r
+ private bool InItemList => _listConfig.Mode == "装備";\r
\r
- private bool InFleetInfo => _settings.Mode == "艦隊";\r
+ private bool InFleetInfo => _listConfig.Mode == "艦隊";\r
\r
- private bool InAntiAir => _settings.Mode == "対空";\r
+ private bool InAntiAir => _listConfig.Mode == "対空";\r
\r
- private bool InBattleResult => _settings.Mode == "戦況";\r
+ private bool InBattleResult => _listConfig.Mode == "戦況";\r
\r
- private bool InMiscText => _settings.Mode == "情報";\r
+ private bool InMiscText => _listConfig.Mode == "情報";\r
\r
private void ListForm_Load(object sender, EventArgs e)\r
{\r
AdjustHeader();\r
SetMinimumSize();\r
- var config = GetConfig();\r
- _settings = Settings.FromShipListConfig(config);\r
- if (_settings.ShowHpInPercent)\r
- {\r
- shipListPanel.ToggleHpPercent();\r
- battleResultPanel.ToggleHpPercent();\r
- }\r
- LoadShipGroupFromConfig();\r
- comboBoxGroup.SelectedItem = _settings.Mode;\r
+ comboBoxGroup.SelectedItem = _listConfig.Mode;\r
SetCheckBoxSTypeState();\r
- if (config.Location.X == int.MinValue)\r
+ if (_listConfig.Location.X == int.MinValue)\r
return;\r
- var bounds = new Rectangle(config.Location, config.Size);\r
+ var bounds = new Rectangle(_listConfig.Location, _listConfig.Size);\r
if (MainWindow.IsTitleBarOnAnyScreen(bounds.Location))\r
Location = bounds.Location;\r
Size = bounds.Size;\r
\r
private ShipListConfig GetConfig()\r
{\r
- if (_isMaster || _config.ListFormGroup.Count == 0)\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
- if (config.Mode == "分類")\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
private void SetCheckBoxSTypeState()\r
{\r
for (var type = 0; type < _shipTypeCheckBoxes.Length; type++)\r
- _shipTypeCheckBoxes[type].Checked = ((int)_settings.ShipCategories & (1 << type)) != 0;\r
- checkBoxSTypeAll.Checked = _settings.ShipCategories == ShipCategory.All;\r
- checkBoxSTypeDetails.Checked = _settings.ShipType;\r
+ _shipTypeCheckBoxes[type].Checked = ((int)_listConfig.ShipCategories & (1 << type)) != 0;\r
+ checkBoxSTypeAll.Checked = _listConfig.ShipCategories == ShipCategory.All;\r
+ checkBoxSTypeDetails.Checked = _listConfig.ShipType;\r
}\r
\r
private void ListForm_FormClosing(object sender, FormClosingEventArgs e)\r
\r
public void SaveConfig()\r
{\r
- if (_settings == null)\r
- return;\r
if (_isMaster)\r
{\r
SaveMasterState();\r
private void SaveMasterState()\r
{\r
StoreShipGroupToConfig();\r
- var config = _config.ShipList;\r
- config.Visible = Visible && WindowState == FormWindowState.Normal;\r
- _settings.SetToShipListConfig(config);\r
- SaveBounds(config); // 最小化時は以前のサイズを記録する\r
+ _listConfig.Visible = Visible && WindowState == FormWindowState.Normal;\r
+ SaveBounds(_listConfig); // 最小化時は以前のサイズを記録する\r
}\r
\r
private void SaveSlaveState()\r
return;\r
if (WindowState != FormWindowState.Normal) // 最小化時は次回復旧しない\r
return;\r
- var config = new ShipListConfig {Visible = true};\r
- _settings.SetToShipListConfig(config);\r
- _config.ListFormGroup.Add(config);\r
- SaveBounds(config);\r
+ _listConfig.Visible = true;\r
+ _config.ListFormGroup.Add(_listConfig);\r
+ SaveBounds(_listConfig);\r
}\r
\r
private void SaveBounds(ShipListConfig config)\r
\r
private void comboBoxGroup_SelectedIndexChanged(object sender, EventArgs e)\r
{\r
- if (_settings == null)\r
- return;\r
- _settings.Mode = comboBoxGroup.Text;\r
+ _listConfig.Mode = comboBoxGroup.Text;\r
UpdateList();\r
SetActiveControl();\r
if (!(InShipStatus || InGroupConfig || InRepairList))\r
\r
private void labelHeaderCond_Click(object sender, EventArgs e)\r
{\r
- switch (_settings.SortOrder)\r
+ switch (_listConfig.SortOrder)\r
{\r
case SortOrder.CondAscend:\r
- _settings.SortOrder = SortOrder.CondDescend;\r
+ _listConfig.SortOrder = SortOrder.CondDescend;\r
break;\r
case SortOrder.CondDescend:\r
- _settings.SortOrder = SortOrder.None;\r
+ _listConfig.SortOrder = SortOrder.None;\r
break;\r
default:\r
- _settings.SortOrder = SortOrder.CondAscend;\r
+ _listConfig.SortOrder = SortOrder.CondAscend;\r
break;\r
}\r
UpdateList();\r
\r
private void labelHeaderExp_Click(object sender, EventArgs e)\r
{\r
- switch (_settings.SortOrder)\r
+ switch (_listConfig.SortOrder)\r
{\r
case SortOrder.ExpToNextAscend:\r
- _settings.SortOrder = SortOrder.ExpToNextDescend;\r
+ _listConfig.SortOrder = SortOrder.ExpToNextDescend;\r
break;\r
case SortOrder.ExpToNextDescend:\r
- _settings.SortOrder = SortOrder.None;\r
+ _listConfig.SortOrder = SortOrder.None;\r
break;\r
default:\r
- _settings.SortOrder = SortOrder.ExpToNextAscend;\r
+ _listConfig.SortOrder = SortOrder.ExpToNextAscend;\r
break;\r
}\r
UpdateList();\r
\r
private void ToggleHpPercent()\r
{\r
- _settings.ShowHpInPercent = !_settings.ShowHpInPercent;\r
+ _listConfig.ShowHpInPercent = !_listConfig.ShowHpInPercent;\r
shipListPanel.ToggleHpPercent();\r
battleResultPanel.ToggleHpPercent();\r
}\r
\r
private void checkBoxSType_Click(object sender, EventArgs e)\r
{\r
- _settings.ShipCategories = SelectedShipTypes;\r
+ _listConfig.ShipCategories = SelectedShipTypes;\r
UpdateList();\r
SetActiveControl();\r
}\r
\r
private void checkBoxSTypeDetails_Click(object sender, EventArgs e)\r
{\r
- _settings.ShipType = checkBoxSTypeDetails.Checked;\r
+ _listConfig.ShipType = checkBoxSTypeDetails.Checked;\r
UpdateList();\r
SetActiveControl();\r
}\r