OSDN Git Service

艦隊情報で火力等の合計をツールチップではなく直接表示する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Wed, 25 Dec 2019 10:59:27 +0000 (19:59 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Wed, 25 Dec 2019 11:08:04 +0000 (20:08 +0900)
KancolleSniffer.Test/FleetSpecTest.cs
KancolleSniffer/View/FleetSpec.cs

index 5e10ab9..25030ab 100644 (file)
@@ -77,7 +77,8 @@ namespace KancolleSniffer.Test
             var sniffer = new Sniffer();\r
             SnifferTest.SniffLogFile(sniffer, "speed_001");\r
             var table = FleetSpec.Create(sniffer);\r
-            PAssert.That(() => table[0].Fleet == "第一 高速+" && table[37].Fleet == "第二 高速");\r
+            PAssert.That(() => table[0].Fleet == "第一 高速+   火525 空600 潜39 索724" &&\r
+                               table[37].Fleet == "第二 高速   火185 空215 潜242 索166");\r
         }\r
 \r
         [TestMethod]\r
index 2069b72..58c4df5 100644 (file)
@@ -158,8 +158,8 @@ namespace KancolleSniffer.View
                 public FleetRecord(IReadOnlyList<Fleet> fleets, int number)\r
                 {\r
                     var fleet = fleets[number];\r
-                    Fleet = new[] {"第一", "第二", "第三", "第四"}[number] + " " + SpeedName(fleet);\r
-                    Fleet2 = GetSpec(fleet) + GetTp(fleets, number);\r
+                    Fleet = new[] {"第一", "第二", "第三", "第四"}[number] + " " + SpeedName(fleet) + "   " + SpecTotal(fleet);\r
+                    Fleet2 = FleetParams(fleet) + GetTp(fleets, number);\r
                 }\r
 \r
                 private static string SpeedName(Fleet fleet)\r
@@ -181,19 +181,29 @@ namespace KancolleSniffer.View
                     return $"\r\nTP:S{(int)tp} A{(int)(tp * 0.7)}";\r
                 }\r
 \r
-                private static string GetSpec(Fleet fleet)\r
+                private static string SpecTotal(Fleet fleet)\r
                 {\r
-                    var total = fleet.Ships.Aggregate(new Total(), (sum, next) => sum.Add(next));\r
+                    var total = CalcTotal(fleet);\r
+                    return "火" + CutOverFlow(total.FirePower) +\r
+                           " 空" + CutOverFlow(total.AntiAir) +\r
+                           " 潜" + CutOverFlow(total.AntiSubmarine) +\r
+                           " 索" + CutOverFlow(total.LoS);\r
+                }\r
+\r
+                private static string FleetParams(Fleet fleet)\r
+                {\r
+                    var total = CalcTotal(fleet);\r
                     return "計:" + HideIfZero(" Lv", total.Level) +\r
                            HideIfZero(" ド", total.Drum) + HideIfZero("(", total.DrumShips, "隻)") +\r
                            HideIfZero(" 大", fleet.DaihatsuBonus * 100, "%") + "\r\n" +\r
-                           "  火" + CutOverFlow(total.FirePower) +\r
-                           " 空" + CutOverFlow(total.AntiAir) +\r
-                           " 潜" + CutOverFlow(total.AntiSubmarine) +\r
-                           " 索" + CutOverFlow(total.LoS) + "\r\n" +\r
                            $"戦闘:燃{total.Fuel / 5}弾{total.Bull / 5} 支援:燃{total.Fuel / 2}弾{(int)(total.Bull * 0.8)}";\r
                 }\r
 \r
+                private static Total CalcTotal(Fleet fleet)\r
+                {\r
+                    return fleet.Ships.Aggregate(new Total(), (sum, next) => sum.Add(next));\r
+                }\r
+\r
                 private static int CutOverFlow(int value) => value > 999 ? 999 : value;\r
 \r
                 private class Total\r