OSDN Git Service

戦況にツールチップで味方の装備を表示する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Wed, 24 Jan 2018 14:18:46 +0000 (23:18 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 27 Jan 2018 08:34:04 +0000 (17:34 +0900)
KancolleSniffer/BattleResultPanel.cs

index 1ddb848..60740dc 100644 (file)
@@ -168,8 +168,11 @@ namespace KancolleSniffer
             _friendLabels[0][1].Text = fleet[friend.Main[0].Fleet];\r
             for (var i = 0; i < friend.Main.Length; i++)\r
             {\r
-                _friendLabels[i + 1][0].SetHp(friend.Main[i]);\r
-                _friendLabels[i + 1][1].SetName(friend.Main[i], ShipNameWidth.BattleResult);\r
+                var labels = _friendLabels[i + 1];\r
+                var ship = friend.Main[i];\r
+                labels[0].SetHp(ship);\r
+                labels[1].SetName(ship, ShipNameWidth.BattleResult);\r
+                _toolTip.SetToolTip(labels[1], GetEqipString(ship));\r
             }\r
             if (friend.Guard.Length > 0)\r
             {\r
@@ -178,8 +181,10 @@ namespace KancolleSniffer
                 for (var i = 0; i < friend.Guard.Length; i++)\r
                 {\r
                     var labels = _friendLabels[friend.Main.Length + 2 + i];\r
-                    labels[0].SetHp(friend.Guard[i]);\r
-                    labels[1].SetName(friend.Guard[i], ShipNameWidth.BattleResult);\r
+                    var ship = friend.Guard[i];\r
+                    labels[0].SetHp(ship);\r
+                    labels[1].SetName(ship, ShipNameWidth.BattleResult);\r
+                    _toolTip.SetToolTip(labels[1], GetEqipString(ship));\r
                 }\r
             }\r
             var friendLines = 1 + friend.Main.Length + (friend.Guard.Length > 0 ? friend.Guard.Length + 1 : 0);\r
@@ -192,9 +197,10 @@ namespace KancolleSniffer
             for (var i = 0; i < enemy.Main.Length; i++)\r
             {\r
                 var labels = _enemyLabels[i + 1];\r
-                labels[0].SetHp(enemy.Main[i]);\r
-                labels[1].SetName(ShortenName(enemy.Main[i].Name));\r
-                _toolTip.SetToolTip(labels[1], string.Join("\r\n", enemy.Main[i].Slot.Select(item => item.Spec.Name)));\r
+                var ship = enemy.Main[i];\r
+                labels[0].SetHp(ship);\r
+                labels[1].SetName(ShortenName(ship.Name));\r
+                _toolTip.SetToolTip(labels[1], string.Join("\r\n", ship.Slot.Select(item => item.Spec.Name)));\r
             }\r
             if (enemy.Guard.Length > 0)\r
             {\r
@@ -203,10 +209,11 @@ namespace KancolleSniffer
                 for (var i = 0; i < enemy.Guard.Length; i++)\r
                 {\r
                     var labels = _enemyLabels[enemy.Main.Length + 2 + i];\r
-                    labels[0].SetHp(enemy.Guard[i]);\r
-                    labels[1].SetName(ShortenName(enemy.Guard[i].Name));\r
+                    var ship = enemy.Guard[i];\r
+                    labels[0].SetHp(ship);\r
+                    labels[1].SetName(ShortenName(ship.Name));\r
                     _toolTip.SetToolTip(labels[1],\r
-                        string.Join("\r\n", enemy.Guard[i].Slot.Select(item => item.Spec.Name)));\r
+                        string.Join("\r\n", ship.Slot.Select(item => item.Spec.Name)));\r
                 }\r
             }\r
             var enemyLines = 1 + enemy.Main.Length + (enemy.Guard.Length > 0 ? enemy.Guard.Length + 1 : 0);\r
@@ -236,6 +243,21 @@ namespace KancolleSniffer
             _infomationPanel.Visible = true;\r
         }\r
 \r
+        private string GetEqipString(ShipStatus ship)\r
+        {\r
+            var result = new List<string>();\r
+            for (var i = 0; i < ship.Slot.Length; i++)\r
+            {\r
+                var item = ship.Slot[i];\r
+                var onslot = ship.OnSlot[i];\r
+                var max = ship.Spec.MaxEq[i];\r
+                if (item.Id == -1)\r
+                    continue;\r
+                result.Add(item.Spec.Name + (item.Spec.IsAircraft ? $" {onslot}/{max}" : ""));\r
+            }\r
+            return string.Join("\r\n", result);\r
+        }\r
+\r
         private string ShortenName(string name)\r
         {\r
             return new Regex(@"\(elite\)|\(flagship\)").Replace(name,\r