OSDN Git Service

最終セルで大破警告を出さない
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Wed, 12 Apr 2017 15:50:34 +0000 (00:50 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Thu, 13 Apr 2017 12:17:57 +0000 (21:17 +0900)
KancolleSniffer.Test/SnifferTest.cs
KancolleSniffer.Test/logs
KancolleSniffer/BattleInfo.cs
KancolleSniffer/Sniffer.cs

index feb587f..da0cc0d 100644 (file)
@@ -91,7 +91,6 @@ namespace KancolleSniffer.Test
             var sniffer = new Sniffer();\r
             SniffLogFile(sniffer, "battle_002");\r
             AssertEqualBattleResult(sniffer, new[] {28, 1, 13});\r
-            PAssert.That(() => sniffer.BadlyDamagedShips.Any());\r
         }\r
 \r
         private void AssertEqualBattleResult(Sniffer sniffer, IEnumerable<int> expected, string msg = null)\r
@@ -109,11 +108,9 @@ namespace KancolleSniffer.Test
             var sniffer = new Sniffer();\r
             SniffLogFile(sniffer, "combined_surface_001");\r
             AssertEauqlCombinedResult(sniffer, new[] {40, 77, 77, 33, 51, 47}, new[] {39, 35, 11, 39, 37, 40});\r
-            PAssert.That(() => !sniffer.BadlyDamagedShips.Any());\r
 \r
             SniffLogFile(sniffer, "combined_surface_002");\r
             AssertEauqlCombinedResult(sniffer, new[] {40, 77, 77, 33, 15, 6}, new[] {39, 35, 4, 3, 14, 40});\r
-            PAssert.That(() => sniffer.BadlyDamagedShips.Any());\r
         }\r
 \r
         private void AssertEauqlCombinedResult(Sniffer sniffer, IEnumerable<int> expected0, IEnumerable<int> expected1,\r
@@ -315,7 +312,8 @@ namespace KancolleSniffer.Test
         {\r
             var sniffer = new Sniffer();\r
             SniffLogFile(sniffer, "sunk_001");\r
-            PAssert.That(() => sniffer.BadlyDamagedShips.SequenceEqual(new[] {"磯波"}));\r
+            AssertEqualBattleResult(sniffer, new[]{26, 0, 1, 3});\r
+            PAssert.That(() => sniffer.BadlyDamagedShips.SequenceEqual(new[] {"菊月", "雪風"}));\r
         }\r
 \r
         /// <summary>\r
@@ -431,6 +429,30 @@ namespace KancolleSniffer.Test
         }\r
 \r
         /// <summary>\r
+        /// 最終セルで大破警告を出さない\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void NotWarnDamagedShipInLastCell()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "taiha_001");\r
+            PAssert.That(() => sniffer.GetShipStatuses(0)[2].NowHp == 2);\r
+            PAssert.That(() => !sniffer.BadlyDamagedShips.Any());\r
+        }\r
+\r
+        /// <summary>\r
+        /// 道中で大破警告を出す\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void WarnDamagedShip()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "taiha_002");\r
+            PAssert.That(() => sniffer.GetShipStatuses(0)[2].NowHp == 1);\r
+            PAssert.That(() => sniffer.BadlyDamagedShips.Any());\r
+        }\r
+\r
+        /// <summary>\r
         /// 熟練度込みの制空値を正しく計算する\r
         /// </summary>\r
         [TestMethod]\r
index 74e61d9..192e1f1 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 74e61d96c60a6f927d57dd41584f0c298ed9b8ca
+Subproject commit 192e1f168c2952a9ea4e435e48449090c7adb9bc
index 61c21ab..e38d630 100644 (file)
@@ -50,6 +50,7 @@ namespace KancolleSniffer
         private int[] _enemyGuardStartHp;\r
         private readonly List<int> _escapingShips = new List<int>();\r
         private int _flagshipRecoveryType;\r
+        private bool _lastCell;\r
 \r
         public BattleState BattleState { get; set; }\r
         public string Formation { get; private set; }\r
@@ -59,7 +60,6 @@ namespace KancolleSniffer
         public ShipStatus[] EnemyResultStatus { get; private set; }\r
         public List<AirBattleResult> AirBattleResults { get; } = new List<AirBattleResult>();\r
 \r
-\r
         public BattleInfo(ShipInfo shipInfo, ItemInfo itemInfo)\r
         {\r
             _shipInfo = shipInfo;\r
@@ -206,6 +206,7 @@ namespace KancolleSniffer
         public void CleanupResult()\r
         {\r
             _friend = null;\r
+            _lastCell = false;\r
         }\r
 \r
         private int CheckAirControlLevel(dynamic json)\r
@@ -510,10 +511,20 @@ namespace KancolleSniffer
             }\r
         }\r
 \r
+        public void InspectMapStart(dynamic json)\r
+        {\r
+            InspectMapNext(json);\r
+        }\r
+\r
+        public void InspectMapNext(dynamic json)\r
+        {\r
+            _lastCell = (int)json.api_next == 0;\r
+        }\r
+\r
         public void InspectBattleResult(dynamic json)\r
         {\r
             BattleState = BattleState.Result;\r
-            ShowResult();\r
+            ShowResult(!_lastCell);\r
             CleanupResult();\r
             SetEscapeShips(json);\r
         }\r
index ddf23ff..23165e7 100644 (file)
@@ -432,6 +432,7 @@ namespace KancolleSniffer
                 _shipInfo.InspectMapStart(request); // 出撃中判定が必要なので_conditionTimerより前\r
                 _conditionTimer.InvalidateCond();\r
                 _exMapInfo.InspectMapStart(data);\r
+                _battleInfo.InspectMapStart(data);\r
                 _logger.InspectMapStart(data);\r
                 _miscTextInfo.ClearFlag = true;\r
                 return Update.Timer | Update.Ship;\r
@@ -440,6 +441,7 @@ namespace KancolleSniffer
             {\r
                 _battleInfo.InspectMapNext(request);\r
                 _exMapInfo.InspectMapNext(data);\r
+                _battleInfo.InspectMapNext(data);\r
                 _logger.InspectMapNext(data);\r
                 return Update.None;\r
             }\r