OSDN Git Service

メインの艦隊番号のダブルクリックで艦隊情報をコピーする
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Mon, 21 May 2018 10:10:00 +0000 (19:10 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Mon, 21 May 2018 10:10:00 +0000 (19:10 +0900)
KancolleSniffer/MainForm.cs
KancolleSniffer/TextGenerator.cs

index ec4df4c..e8d3a1f 100644 (file)
@@ -1107,6 +1107,7 @@ namespace KancolleSniffer
                 {\r
                     a[fleet].Tag = fleet;\r
                     a[fleet].Click += labelFleet_Click;\r
+                    a[fleet].DoubleClick += labelFleet_DoubleClick;\r
                 }\r
             }\r
         }\r
@@ -1139,6 +1140,24 @@ namespace KancolleSniffer
             labelFleet1.Text = _combinedFleet ? "連合" : "第一";\r
         }\r
 \r
+        private void labelFleet_DoubleClick(object sender, EventArgs e)\r
+        {\r
+            if (!_started)\r
+                return;\r
+            var fleet = (int)((Label)sender).Tag;\r
+            var text = TextGenerator.GenerateFleetData(_sniffer, fleet);\r
+            if (string.IsNullOrEmpty(text))\r
+                return;\r
+            Clipboard.SetText(text);\r
+            _tooltipCopy.Active = true;\r
+            _tooltipCopy.Show("コピーしました。", (Label)sender);\r
+            Task.Run(async () =>\r
+            {\r
+                await Task.Delay(1000);\r
+                _tooltipCopy.Active = false;\r
+            });\r
+        }\r
+\r
         private readonly Color _activeButtonColor = Color.FromArgb(152, 179, 208);\r
 \r
         private void labelBucketHistoryButton_Click(object sender, EventArgs e)\r
index 45f227c..86f1268 100644 (file)
@@ -59,40 +59,56 @@ namespace KancolleSniffer
         {\r
             var dict = new ItemName();\r
             var sb = new StringBuilder();\r
+            for (var f = 0; f < ShipInfo.FleetCount; f++)\r
+                sb.Append(GenerateFleetData(sniffer, f, dict));\r
+            sb.Append(GenerateBaseAirCorps(sniffer, dict));\r
+            return sb.ToString();\r
+        }\r
+\r
+        public static string GenerateFleetData(Sniffer sniffer, int fleet)\r
+        {\r
+            return GenerateFleetData(sniffer, fleet, new ItemName()).ToString();\r
+        }\r
+\r
+        private static StringBuilder GenerateFleetData(Sniffer sniffer, int fleet, ItemName dict)\r
+        {\r
+            var sb = new StringBuilder();\r
             var fn = new[] {"第一艦隊", "第二艦隊", "第三艦隊", "第四艦隊"};\r
-            for (var f = 0; f < fn.Length; f++)\r
-            {\r
-                sb.Append(fn[f] + "\r\n");\r
-                sb.Append(string.Concat(from s in sniffer.GetShipStatuses(f)\r
-                    select ($"{s.Name} Lv{s.Level} " +\r
-                            string.Join(",",\r
-                                from item in s.AllSlot\r
-                                where item.Id != -1\r
-                                select dict[item.Spec.Name] + ItemStatusString(item))).TrimEnd(' ') + "\r\n"));\r
-                var fp = sniffer.GetFighterPower(f);\r
-                sb.Append($"制空: {(fp[0] == fp[1] ? fp[0].ToString() : fp[0] + "~" + fp[1])} " +\r
-                          $"索敵: {sniffer.GetFleetLineOfSights(f, 1):F1}\r\n");\r
-            }\r
-            if (sniffer.BaseAirCorps != null)\r
+            sb.Append(fn[fleet] + "\r\n");\r
+            sb.Append(string.Concat(from s in sniffer.GetShipStatuses(fleet)\r
+                select ($"{s.Name} Lv{s.Level} " +\r
+                        string.Join(",",\r
+                            from item in s.AllSlot\r
+                            where item.Id != -1\r
+                            select dict[item.Spec.Name] + ItemStatusString(item))).TrimEnd(' ') + "\r\n"));\r
+            var fp = sniffer.GetFighterPower(fleet);\r
+            sb.Append($"制空: {(fp[0] == fp[1] ? fp[0].ToString() : fp[0] + "~" + fp[1])} " +\r
+                      $"索敵: {sniffer.GetFleetLineOfSights(fleet, 1):F1}\r\n");\r
+            return sb;\r
+        }\r
+\r
+        private static StringBuilder GenerateBaseAirCorps(Sniffer sniffer, ItemName dict)\r
+        {\r
+            var sb = new StringBuilder();\r
+            if (sniffer.BaseAirCorps == null)\r
+                return sb;\r
+            foreach (var baseInfo in sniffer.BaseAirCorps)\r
             {\r
-                foreach (var baseInfo in sniffer.BaseAirCorps)\r
+                sb.Append(baseInfo.AreaName + " 基地航空隊\r\n");\r
+                var i = 0;\r
+                var name = new[] {"第一 ", "第二 ", "第三 "};\r
+                foreach (var airCorps in baseInfo.AirCorps)\r
                 {\r
-                    sb.Append(baseInfo.AreaName + " 基地航空隊\r\n");\r
-                    var i = 0;\r
-                    var name = new[] {"第一 ", "第二 ", "第三 "};\r
-                    foreach (var airCorps in baseInfo.AirCorps)\r
-                    {\r
-                        sb.Append(name[i++]);\r
-                        sb.Append(\r
-                            string.Join(",",\r
-                                from plane in airCorps.Planes\r
-                                select plane.State == 1\r
-                                    ? dict[plane.Slot.Spec.Name] + ItemStatusString(plane.Slot)\r
-                                    : plane.StateName) + "\r\n");\r
-                    }\r
+                    sb.Append(name[i++]);\r
+                    sb.Append(\r
+                        string.Join(",",\r
+                            from plane in airCorps.Planes\r
+                            select plane.State == 1\r
+                                ? dict[plane.Slot.Spec.Name] + ItemStatusString(plane.Slot)\r
+                                : plane.StateName) + "\r\n");\r
                 }\r
             }\r
-            return sb.ToString();\r
+            return sb;\r
         }\r
 \r
         private static string ItemStatusString(ItemStatus item)\r