OSDN Git Service

すべてのウィンドウで艦娘名のツールチップに装備を表示する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Fri, 30 Apr 2021 12:00:48 +0000 (21:00 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Fri, 30 Apr 2021 12:02:47 +0000 (21:02 +0900)
KancolleSniffer/Model/ShipStatus.cs
KancolleSniffer/View/ListWindow/BattleResultPanel.cs
KancolleSniffer/View/MainWindow/RepairListPanel.cs
KancolleSniffer/View/MainWindow/ShipListPanels.cs
KancolleSniffer/View/ShipLabels.cs
KancolleSniffer/View/ShipListPanel/GroupConfigLabels.cs
KancolleSniffer/View/ShipListPanel/RepairListLabels.cs
KancolleSniffer/View/ShipListPanel/ShipListLabels.cs
KancolleSniffer/View/ShipListPanel/ShipListPanel.cs

index 57ce901..e053577 100644 (file)
@@ -420,6 +420,21 @@ namespace KancolleSniffer.Model
         public int RawLoS =>\r
             LoS - AllSlot.Sum(item => item.Spec.LoS + (Spec.HaveSgRadarBonus ? item.Spec.LoSSgRadarBonus : 0));\r
 \r
+        public string GetEquipString()\r
+        {\r
+            var result =\r
+                (from i in Enumerable.Range(0, Slot.Count)\r
+                    let item = Slot[i]\r
+                    where !item.Empty\r
+                    select item.Spec.Name +\r
+                           (item.Spec.IsAircraft && OnSlot.Length > 0 && Spec.MaxEq.Length > 0\r
+                               ? $"{OnSlot[i]}/{Spec.MaxEq[i]}"\r
+                               : ""));\r
+            if (SlotEx.Id > 0)\r
+                result = result.Concat(new[] {SlotEx.Spec.Name});\r
+            return string.Join("\r\n", result);\r
+        }\r
+\r
         public object Clone()\r
         {\r
             var r = (ShipStatus)MemberwiseClone();\r
index fd172d9..4e2f663 100644 (file)
@@ -264,11 +264,10 @@ namespace KancolleSniffer.View.ListWindow
                 }\r
                 else\r
                 {\r
-                    labels.Set(ship);\r
+                    labels.Set(ship, ToolTip);\r
                     if (ship.Name.StartsWith("基地航空隊"))\r
                         labels.Name.SetName(ship.Name.Substring(2));\r
                 }\r
-                ToolTip.SetToolTip(labels.Name, GetEquipString(ship));\r
             }\r
             for (var i = ships.Length; i < labelsList.Count; i++)\r
                 labelsList[i].Reset();\r
@@ -281,21 +280,6 @@ namespace KancolleSniffer.View.ListWindow
             return fleet.Main.Concat(new[] {new ShipStatus()}.Concat(fleet.Guard)).ToArray();\r
         }\r
 \r
-        private static string GetEquipString(ShipStatus ship)\r
-        {\r
-            var result =\r
-                (from i in Enumerable.Range(0, ship.Slot.Count)\r
-                    let item = ship.Slot[i]\r
-                    where !item.Empty\r
-                    select item.Spec.Name +\r
-                           (item.Spec.IsAircraft && ship.OnSlot.Length > 0 && ship.Spec.MaxEq.Length > 0\r
-                               ? $"{ship.OnSlot[i]}/{ship.Spec.MaxEq[i]}"\r
-                               : ""));\r
-            if (ship.SlotEx.Id > 0)\r
-                result = result.Concat(new[] {ship.SlotEx.Spec.Name});\r
-            return string.Join("\r\n", result);\r
-        }\r
-\r
         private static string ShortenName(string name)\r
         {\r
             return new Regex(@"\(elite\)|\(flagship\)").Replace(name,\r
index f544754..d2e4bb9 100644 (file)
@@ -23,7 +23,7 @@ using static System.Math;
 \r
 namespace KancolleSniffer.View.MainWindow\r
 {\r
-    public class RepairListPanel : Panel\r
+    public class RepairListPanel : PanelWithToolTip\r
     {\r
         private const int PanelPadding = 5;\r
         private const int LineHeight = 15;\r
@@ -38,9 +38,9 @@ namespace KancolleSniffer.View.MainWindow
 \r
             protected override Control[] AddedControls => new Control[] {Time, Damage};\r
 \r
-            public override void Set(ShipStatus status)\r
+            public override void Set(ShipStatus status, ToolTip toolTip)\r
             {\r
-                base.Set(status);\r
+                base.Set(status, toolTip);\r
                 Time.Set(status);\r
             }\r
 \r
@@ -129,7 +129,7 @@ namespace KancolleSniffer.View.MainWindow
             {\r
                 var s = _repairList[i + _listScroller.Position];\r
                 var labels = _repairLabels[i];\r
-                labels.Set(s);\r
+                labels.Set(s, ToolTip);\r
                 labels.Damage.SetColor(s);\r
             }\r
             if (_repairList.Length < _repairLabels.Length)\r
index 51df835..d288c22 100644 (file)
@@ -42,17 +42,21 @@ namespace KancolleSniffer.View.MainWindow
         private readonly ShipLabelLines _shipLines7;\r
         private readonly CombinedShipLines _combinedLines = new CombinedShipLines();\r
         private readonly HpToggle _hpToggle = new HpToggle();\r
+        private readonly ToolTip _toolTip;\r
+        private readonly EventHandler _onClick;\r
 \r
         public bool ShowHpInPercent => _hpToggle.InPercent;\r
 \r
-        public ShipListPanels(Control parent, EventHandler onClick)\r
+        public ShipListPanels(ShipInfoPanel parent, EventHandler onClick)\r
         {\r
+            _onClick = onClick;\r
+            _toolTip = parent.ToolTip;\r
             _shipLines = new ShipLabelLines(ShipInfo.MemberCount, 16);\r
             _shipLines7 = new ShipLabelLines(7, 14);\r
             parent.Controls.AddRange(new Control[] {_combined, _7Ships});\r
-            _shipLines.Create(parent, _hpToggle, onClick);\r
-            _shipLines7.Create(_7Ships, _hpToggle, onClick);\r
-            _combinedLines.Create(_combined, _hpToggle, onClick);\r
+            _shipLines.Create(parent, this);\r
+            _shipLines7.Create(_7Ships, this);\r
+            _combinedLines.Create(_combined, this);\r
         }\r
 \r
         public void ToggleHpPercent()\r
@@ -120,6 +124,7 @@ namespace KancolleSniffer.View.MainWindow
             private readonly int _lineHeight;\r
             private readonly ShipLabels[] _shipLines;\r
             private readonly AkashiTimerLabels _akashiTimerLabels;\r
+            private ToolTip _toolTip;\r
 \r
             private const int Top = 1;\r
             private const int LabelHeight = 12;\r
@@ -131,11 +136,12 @@ namespace KancolleSniffer.View.MainWindow
                 _lineHeight = lineHeight;\r
             }\r
 \r
-            public void Create(Control parent, HpToggle hpToggle, EventHandler onClick)\r
+            public void Create(Control parent, ShipListPanels panels)\r
             {\r
+                _toolTip = panels._toolTip;\r
                 parent.SuspendLayout();\r
                 _akashiTimerLabels.Create(parent);\r
-                CreateHeader(parent, hpToggle);\r
+                CreateHeader(parent, panels._hpToggle);\r
                 for (var i = 0; i < _shipLines.Length; i++)\r
                 {\r
                     var y = Top + _lineHeight * (i + 1);\r
@@ -149,9 +155,9 @@ namespace KancolleSniffer.View.MainWindow
                         BackGround = new Label {Location = new Point(0, y), Size = new Size(PanelWidth, _lineHeight)}\r
                     };\r
                     labels.Arrange(parent, CustomColors.ColumnColors.DarkFirst(i));\r
-                    labels.SetClickHandler(onClick);\r
+                    labels.SetClickHandler(panels._onClick);\r
                     labels.SetTag(i);\r
-                    hpToggle.AddHpLabel(labels.Hp);\r
+                    panels._hpToggle.AddHpLabel(labels.Hp);\r
                 }\r
                 parent.ResumeLayout();\r
             }\r
@@ -183,7 +189,7 @@ namespace KancolleSniffer.View.MainWindow
                         labels.Reset();\r
                         continue;\r
                     }\r
-                    labels.Set(ships[i]);\r
+                    labels.Set(ships[i], _toolTip);\r
                 }\r
             }\r
 \r
@@ -286,11 +292,13 @@ namespace KancolleSniffer.View.MainWindow
 \r
             private const int Top = 1;\r
             private const int LineHeight = 16;\r
+            private ToolTip _toolTip;\r
 \r
-            public void Create(Control parent, HpToggle hpToggle, EventHandler onClick)\r
+            public void Create(Control parent, ShipListPanels panels)\r
             {\r
+                _toolTip = panels._toolTip;\r
                 parent.SuspendLayout();\r
-                CreateHeader(parent, hpToggle);\r
+                CreateHeader(parent, panels._hpToggle);\r
                 for (var i = 0; i < _combinedLines.Length; i++)\r
                 {\r
                     var x = PanelWidth / 2 * (i / ShipInfo.MemberCount);\r
@@ -303,10 +311,10 @@ namespace KancolleSniffer.View.MainWindow
                         BackGround = new Label {Location = new Point(x, y), Size = new Size(PanelWidth / 2, LineHeight)}\r
                     };\r
                     labels.Arrange(parent, CustomColors.ColumnColors.DarkFirst(i));\r
-                    labels.SetClickHandler(onClick);\r
+                    labels.SetClickHandler(panels._onClick);\r
                     labels.SetTag(i);\r
                     var hpLabel = _combinedLines[i].Hp;\r
-                    hpToggle.AddHpLabel(hpLabel);\r
+                    panels._hpToggle.AddHpLabel(hpLabel);\r
                 }\r
                 parent.ResumeLayout();\r
             }\r
@@ -341,7 +349,7 @@ namespace KancolleSniffer.View.MainWindow
                         labels.Reset();\r
                         continue;\r
                     }\r
-                    labels.Set(ships[idx]);\r
+                    labels.Set(ships[idx], _toolTip);\r
                 }\r
             }\r
         }\r
index a828423..b969cf3 100644 (file)
@@ -36,10 +36,11 @@ namespace KancolleSniffer.View
 \r
         protected virtual Control[] AddedControls => new Control[0];\r
 \r
-        public virtual void Set(ShipStatus status)\r
+        public virtual void Set(ShipStatus status, ToolTip toolTip)\r
         {\r
             foreach (var label in new ShipLabel[] {Fleet, Name, Hp, Cond, Level, Exp})\r
                 label?.Set(status);\r
+            toolTip.SetToolTip(Name, status.GetEquipString());\r
         }\r
 \r
         public virtual void Reset()\r
index 3601db8..161d00f 100644 (file)
@@ -106,7 +106,7 @@ namespace KancolleSniffer.View.ShipListPanel
                 _shipListPanel.SetShipType(i);\r
                 return;\r
             }\r
-            labels.Set(s);\r
+            labels.Set(s, _shipListPanel.ToolTip);\r
             var cb = _checkBoxesList[i];\r
             for (var j = 0; j < cb.Length; j++)\r
                 cb[j].Checked = GroupSettings[j].Contains(s.Id);\r
index 92ef4fc..af2a57c 100644 (file)
@@ -32,9 +32,9 @@ namespace KancolleSniffer.View.ShipListPanel
 \r
             protected override Control[] AddedControls => new Control[] {Time, PerHp};\r
 \r
-            public override void Set(ShipStatus status)\r
+            public override void Set(ShipStatus status, ToolTip toolTip)\r
             {\r
-                base.Set(status);\r
+                base.Set(status, toolTip);\r
                 Time.Set(status);\r
             }\r
         }\r
@@ -93,7 +93,8 @@ namespace KancolleSniffer.View.ShipListPanel
                 return;\r
             }\r
             var labels = _labelList[i];\r
-            labels.Set(s);\r
+            labels.Set(s, _shipListPanel.ToolTip);\r
+            _shipListPanel.ToolTip.SetToolTip(labels.Name, s.GetEquipString());\r
             labels.PerHp.Text = s.RepairTimePerHp.ToString(@"mm\:ss");\r
             labels.BackPanel.Visible = true;\r
         }\r
index 8f1aa9b..dbbad36 100644 (file)
@@ -78,7 +78,7 @@ namespace KancolleSniffer.View.ShipListPanel
                 SetShipType(i);\r
                 return;\r
             }\r
-            labels.Set(s);\r
+            labels.Set(s, _shipListPanel.ToolTip);\r
             labels.BackPanel.Visible = true;\r
         }\r
 \r
index 867c87e..b3522fe 100644 (file)
@@ -24,7 +24,7 @@ using static System.Math;
 \r
 namespace KancolleSniffer.View.ShipListPanel\r
 {\r
-    public class ShipListPanel : Panel, IPanelResize\r
+    public class ShipListPanel : PanelWithToolTip, IPanelResize\r
     {\r
         public const int LabelHeight = 12;\r
         public const int LineHeight = 16;\r