OSDN Git Service

基地航空隊の出撃コストを表示する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Wed, 21 Mar 2018 15:10:34 +0000 (00:10 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Fri, 23 Mar 2018 13:43:26 +0000 (22:43 +0900)
KancolleSniffer.Test/SnifferTest.cs
KancolleSniffer/BaseAirCoprs.cs
KancolleSniffer/FleetPanel.cs

index 15282c8..5210680 100644 (file)
@@ -306,6 +306,17 @@ namespace KancolleSniffer.Test
         }\r
 \r
         /// <summary>\r
+        /// 基地航空隊の出撃コストを計算する\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void CostForSortieOfBaseAirCorps()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "baseaircorps_003");\r
+            PAssert.That(() => sniffer.BaseAirCorps[1].AirCorps[0].CostForSortie.SequenceEqual(new[] {99, 47}));\r
+        }\r
+\r
+        /// <summary>\r
         /// 陸上戦闘機の改修レベルを制空値に反映させる。\r
         /// </summary>\r
         [TestMethod]\r
index 0e867ff..253248f 100644 (file)
@@ -89,6 +89,24 @@ namespace KancolleSniffer
                     return new[] {prev[0] + cur[0], prev[1] + cur[1]};\r
                 }).Select(fp => (int)(fp * reconPlaneBonus)).ToArray();\r
             }\r
+\r
+            public int[] CostForSortie => Planes.Aggregate(new[] {0, 0}, (prev, plane) =>\r
+            {\r
+                if (plane.State != 1)\r
+                    return prev;\r
+                int fuel, bull;\r
+                if (plane.Slot.Spec.Type == 47)\r
+                {\r
+                    fuel = (int)Math.Ceiling(plane.Count * 1.5);\r
+                    bull = (int)(plane.Count * 0.7);\r
+                }\r
+                else\r
+                {\r
+                    fuel = plane.Count;\r
+                    bull = (int)Math.Ceiling(plane.Count * 0.6);\r
+                }\r
+                return new[] {prev[0] + fuel, prev[1] + bull};\r
+            });\r
         }\r
 \r
         public class PlaneInfo\r
index 06b9302..a9838b5 100644 (file)
@@ -35,6 +35,7 @@ namespace KancolleSniffer
             public string Fleet { get; set; }\r
             public string Fleet2 { get; set; }\r
             public string Ship { get; set; }\r
+            public string Ship2 { get; set; }\r
             public int Id { get; set; }\r
             public string Equip { get; set; }\r
             public Color Color { get; set; }\r
@@ -124,6 +125,7 @@ namespace KancolleSniffer
                     var ship = new Record\r
                     {\r
                         Ship = (s.Escaped ? "[避]" : "") + s.Name + " Lv" + s.Level,\r
+                        Ship2 = "",\r
                         Id = s.Id,\r
                         // ReSharper disable CompareOfFloatsByEqualityOperator\r
                         Spec = (fire == 0 ? "" : $"砲{fire:f1}") + (subm == 0 ? "" : $" 潜{subm:f1}{oasa}"),\r
@@ -178,9 +180,11 @@ namespace KancolleSniffer
                             spec = "制空:" + RangeString(corpsFp.AirCombat);\r
                             spec2 = corpsFp.IsInterceptor ? "制空(防空):" + RangeString(corpsFp.Interception) : "";\r
                         }\r
+                        var cost = airCorps.CostForSortie;\r
                         list.Add(new Record\r
                         {\r
                             Ship = name[i++] + " " + airCorps.ActionName,\r
+                            Ship2 = $"出撃コスト:燃{cost[0]}弾{cost[1]}",\r
                             Spec = spec + " 距離:" + airCorps.Distance,\r
                             Spec2 = spec2\r
                         });\r
@@ -296,6 +300,8 @@ namespace KancolleSniffer
             var labels = _labelList[i];\r
             labels.Fleet.Text = e.Fleet;\r
             labels.Name.SetName(e.Ship);\r
+            if (e.Ship2 != "")\r
+                _toolTip.SetToolTip(labels.Name, e.Ship2);\r
             labels.Equip.Text = e.Equip;\r
             labels.EquipColor.Visible = e.Equip != "";\r
             labels.EquipColor.BackColor = e.Color;\r