OSDN Git Service

HPの数字のクリックでパーセント表示を切り替えられるようにする
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 25 Mar 2018 09:08:30 +0000 (18:08 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 25 Mar 2018 11:22:16 +0000 (20:22 +0900)
KancolleSniffer/BattleResultPanel.cs
KancolleSniffer/ListForm.cs
KancolleSniffer/MainFormLabels.cs
KancolleSniffer/ShipListPanel.cs

index 81cb58b..4dcb344 100644 (file)
@@ -28,7 +28,6 @@ namespace KancolleSniffer
         private readonly List<ShipLabel[]> _friendLabels = new List<ShipLabel[]>();\r
         private readonly List<ShipLabel[]> _enemyLabels = new List<ShipLabel[]>();\r
         private readonly List<Panel> _panelList = new List<Panel>();\r
-        private bool _hpPercent;\r
         private readonly List<ShipLabel> _hpLabels = new List<ShipLabel>();\r
         private readonly ResizableToolTip _toolTip = new ResizableToolTip {ShowAlways = true};\r
         private readonly BattleInfo.BattleResult[] _result = new BattleInfo.BattleResult[2];\r
@@ -48,13 +47,17 @@ namespace KancolleSniffer
             ResumeLayout();\r
         }\r
 \r
-        public void SetShowHpPercent(bool hpPercent)\r
+        public event Action HpLabelClick;\r
+\r
+        private void HpLabelClickHandler(object sender, EventArgs ev)\r
+        {\r
+            HpLabelClick?.Invoke();\r
+        }\r
+\r
+        public void ToggleHpPercent()\r
         {\r
-            if (hpPercent == _hpPercent)\r
-                return;\r
             foreach (var label in _hpLabels)\r
                 label.ToggleHpPercent();\r
-            _hpPercent = hpPercent;\r
         }\r
 \r
         public void Update(Sniffer sniffer)\r
@@ -250,7 +253,7 @@ namespace KancolleSniffer
                 _panelList[i].Width = panelWidth;\r
             _infomationPanel.Location = new Point(\r
                 (int)Round(0 * ShipLabel.ScaleFactor.Width) + AutoScrollPosition.X,\r
-                (int)Round(20 * ShipLabel.ScaleFactor.Height) +AutoScrollPosition.Y);\r
+                (int)Round(20 * ShipLabel.ScaleFactor.Height) + AutoScrollPosition.Y);\r
             _infomationPanel.Visible = true;\r
         }\r
 \r
@@ -318,6 +321,7 @@ namespace KancolleSniffer
                 };\r
                 _friendLabels.Add(friend);\r
                 _hpLabels.Add(friend[0]);\r
+                friend[0].Click += HpLabelClickHandler;\r
                 var enemy = new[]\r
                 {\r
                     new ShipLabel {Location = new Point(119, 2), AutoSize = true},\r
index 3103b0b..5b1be31 100644 (file)
@@ -44,6 +44,8 @@ namespace KancolleSniffer
             InitializeComponent();\r
             _sniffer = sniffer;\r
             _config = config;\r
+            battleResultPanel.HpLabelClick += ToggleHpPercent;\r
+            shipListPanel.HpLabelClick += ToggleHpPercent;\r
             var swipe = new SwipeScrollify();\r
             swipe.AddShipListPanel(shipListPanel);\r
             swipe.AddTreeView(itemTreeView);\r
@@ -115,7 +117,6 @@ namespace KancolleSniffer
 \r
         public void UpdateBattleResult()\r
         {\r
-            battleResultPanel.SetShowHpPercent(shipListPanel.ShowHpInPercent);\r
             battleResultPanel.Spoiler = (_config.Spoilers & Spoiler.BattleResult) != 0;\r
             battleResultPanel.Update(_sniffer);\r
         }\r
@@ -174,7 +175,10 @@ namespace KancolleSniffer
             var config = _config.ShipList;\r
             checkBoxShipType.Checked = config.ShipType;\r
             if (config.ShowHpInPercent)\r
+            {\r
                 shipListPanel.ToggleHpPercent();\r
+                battleResultPanel.ToggleHpPercent();\r
+            }\r
             LoadShipGroupFromConfig();\r
             comboBoxGroup.SelectedItem = config.Mode ?? "全員";\r
             if (config.Location.X == int.MinValue)\r
@@ -198,7 +202,6 @@ namespace KancolleSniffer
             if (!Visible)\r
                 return;\r
             var config = _config.ShipList;\r
-            config.ShowHpInPercent = shipListPanel.ShowHpInPercent;\r
             StoreShipGroupToConfig();\r
             var bounds = WindowState == FormWindowState.Normal ? Bounds : RestoreBounds;\r
             config.Location = bounds.Location;\r
@@ -358,7 +361,14 @@ namespace KancolleSniffer
 \r
         private void labelHeaderHp_Click(object sender, EventArgs e)\r
         {\r
+            ToggleHpPercent();\r
+        }\r
+\r
+        private void ToggleHpPercent()\r
+        {\r
+            _config.ShipList.ShowHpInPercent = !_config.ShipList.ShowHpInPercent;\r
             shipListPanel.ToggleHpPercent();\r
+            battleResultPanel.ToggleHpPercent();\r
         }\r
     }\r
 }
\ No newline at end of file
index ba057fb..b7d7603 100644 (file)
@@ -15,7 +15,6 @@
 using System;\r
 using System.Collections.Generic;\r
 using System.Drawing;\r
-using System.Linq;\r
 using System.Windows.Forms;\r
 using static System.Math;\r
 \r
@@ -109,13 +108,20 @@ namespace KancolleSniffer
                     label.Tag = i;\r
                     label.Click += onClick;\r
                 }\r
+                var hpLabel = shipLabels[i][0];\r
+                _hpLables.Add(hpLabel);\r
+                hpLabel.Click += HpLabelClickHander;\r
             }\r
-            _hpLables.AddRange(shipLabels.Select(labels => labels[0]));\r
             headings[0].Cursor = Cursors.Hand;\r
-            headings[0].Click += (sender, ev) => ToggleHpPercent();\r
+            headings[0].Click += HpLabelClickHander;\r
             parent.ResumeLayout();\r
         }\r
 \r
+        private void HpLabelClickHander(object sender, EventArgs ev)\r
+        {\r
+            ToggleHpPercent();\r
+        }\r
+\r
         public void ToggleHpPercent()\r
         {\r
             ShowHpInPercent = !ShowHpInPercent;\r
@@ -184,16 +190,13 @@ namespace KancolleSniffer
                     label.Tag = i;\r
                     label.Click += onClick;\r
                 }\r
+                var hpLavel = _combinedLabels[i][0];\r
+                _hpLables.Add(hpLavel);\r
+                hpLavel.Click += HpLabelClickHander;\r
             }\r
-            _hpLables.AddRange(_combinedLabels.Select(record => record[0]).ToArray());\r
             headings[0].Cursor = headings[2].Cursor = Cursors.Hand;\r
-            void HpToggle(object sender, EventArgs ev)\r
-            {\r
-                foreach (var label in _hpLables)\r
-                    label.ToggleHpPercent();\r
-            }\r
-            headings[0].Click += HpToggle;\r
-            headings[2].Click += HpToggle;\r
+            headings[0].Click += HpLabelClickHander;\r
+            headings[2].Click += HpLabelClickHander;\r
             parent.ResumeLayout();\r
         }\r
 \r
index 33e7be8..e2fc1b4 100644 (file)
@@ -36,7 +36,7 @@ namespace KancolleSniffer
         private readonly List<Panel> _repairPanelList = new List<Panel>();\r
         private readonly List<ShipLabel> _hpLabels = new List<ShipLabel>();\r
         private string _mode;\r
-        public bool ShowHpInPercent { get; private set; }\r
+        private bool _hpPercent;\r
 \r
         public const int GroupCount = 4;\r
         public HashSet<int>[] GroupSettings { get; } = new HashSet<int>[GroupCount];\r
@@ -334,9 +334,10 @@ namespace KancolleSniffer
                 label.PresetColor =\r
                     label.BackColor = ShipLabel.ColumnColors[(i + 1) % 2];\r
             }\r
-            if (ShowHpInPercent)\r
+            if (_hpPercent)\r
                 rpl[0].ToggleHpPercent();\r
             _hpLabels.Add(rpl[0]);\r
+            rpl[0].Click += HpLabelClickHandler;\r
         }\r
 \r
         private void CreateShipLabels(int i)\r
@@ -385,9 +386,10 @@ namespace KancolleSniffer
                 label.PresetColor =\r
                     label.BackColor = ShipLabel.ColumnColors[(i + 1) % 2];\r
             }\r
-            if (ShowHpInPercent)\r
+            if (_hpPercent)\r
                 labels[0].ToggleHpPercent();\r
             _hpLabels.Add(labels[0]);\r
+            labels[0].Click += HpLabelClickHandler;\r
         }\r
 \r
         private void SetShipLabels()\r
@@ -495,9 +497,16 @@ namespace KancolleSniffer
             panel.Visible = true;\r
         }\r
 \r
+        public event Action HpLabelClick;\r
+\r
+        private void HpLabelClickHandler(object sender, EventArgs ev)\r
+        {\r
+            HpLabelClick?.Invoke();\r
+        }\r
+\r
         public void ToggleHpPercent()\r
         {\r
-            ShowHpInPercent = !ShowHpInPercent;\r
+            _hpPercent = !_hpPercent;\r
             foreach (var label in _hpLabels)\r
                 label.ToggleHpPercent();\r
         }\r