OSDN Git Service

連合艦隊の第二旗艦の大破警告が出るのを直す
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Tue, 7 Aug 2018 11:55:02 +0000 (20:55 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Tue, 7 Aug 2018 11:55:02 +0000 (20:55 +0900)
KancolleSniffer.Test/SnifferTest.cs
KancolleSniffer.Test/logs
KancolleSniffer/Model/Fleet.cs
KancolleSniffer/Model/ShipInfo.cs

index 8f5e929..ac6b809 100644 (file)
@@ -271,6 +271,17 @@ namespace KancolleSniffer.Test
         }\r
 \r
         /// <summary>\r
+        /// 連合艦隊の第二旗艦の大破を警告しない\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void NotWarnDamaged1StShipInGuardFleet()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "combined_battle_004");\r
+            PAssert.That(() => !sniffer.BadlyDamagedShips.Any());\r
+        }\r
+\r
+        /// <summary>\r
         /// 熟練度込みの制空値を正しく計算する\r
         /// </summary>\r
         [TestMethod]\r
index 37eb669..58854d8 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 37eb669f909a9aa27105af1ff3c956de0f62ae8c
+Subproject commit 58854d8f5962f024c081fb2dc655570e18880d74
index 5236020..dffb8f1 100644 (file)
@@ -104,12 +104,12 @@ namespace KancolleSniffer.Model
                 ship.Fleet = null;\r
                 ship.DeckIndex = -1;\r
             }\r
-            Ships = _deck.Select((id, idx) =>\r
+            Ships = _deck.Select((id, num) =>\r
             {\r
                 var ship = _shipInventry[id];\r
                 if (ship.Empty)\r
                     return ship;\r
-                ship.DeckIndex = id;\r
+                ship.DeckIndex = num;\r
                 ship.Fleet = this;\r
                 return ship;\r
             }).ToArray();\r
index 4780e78..441440f 100644 (file)
@@ -340,9 +340,10 @@ namespace KancolleSniffer.Model
         {\r
             BadlyDamagedShips =\r
             (from s in _fleets.Where(fleet => fleet.State == FleetState.Sortie)\r
-                    .SelectMany(fleet => fleet.ActualShips)\r
-                where !s.Escaped && s.DamageLevel == ShipStatus.Damage.Badly &&\r
-                      !(s.Fleet.CombinedType != 0 && s.Fleet.Number == 1 && s.DeckIndex == 0) // 第二艦隊の旗艦を除く\r
+                    .SelectMany(fleet => fleet.CombinedType != 0 && fleet.Number == 1\r
+                        ? fleet.ActualShips.Skip(1) // 第二艦隊の旗艦を除く\r
+                        : fleet.ActualShips)\r
+                where !s.Escaped && s.DamageLevel == ShipStatus.Damage.Badly\r
                 select s.Name).ToArray();\r
         }\r
 \r