OSDN Git Service

大破進軍しても平気なマスでは大破警告を出さない
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Thu, 30 Jan 2020 15:12:25 +0000 (00:12 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Fri, 31 Jan 2020 13:30:28 +0000 (22:30 +0900)
KancolleSniffer.Test/BattleTest.cs
KancolleSniffer.Test/logs
KancolleSniffer/Model/BattleInfo.cs

index d8e6f36..c190925 100644 (file)
@@ -404,5 +404,16 @@ namespace KancolleSniffer.Test
             SniffLogFile(sniffer, "anchorage_repair_001");\r
             PAssert.That(() => !sniffer.IsBattleResultError);\r
         }\r
+\r
+        /// <summary>\r
+        /// 大破進撃しても平気なマスでの大破警告抑制\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void IgnoreDamagedShips()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "endpoint_001");\r
+            PAssert.That(() => sniffer.BadlyDamagedShips.Length == 0);\r
+        }\r
     }\r
 }
\ No newline at end of file
index 261484e..277cebc 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 261484e649bab67a15dd529e098b73b3a2efa66c
+Subproject commit 277cebc9ccabcb716943cb0f3a67ad8b7f84e84a
index ed8c285..b5fd518 100644 (file)
@@ -61,7 +61,7 @@ namespace KancolleSniffer.Model
         private Record[] _enemy;\r
         private Record[] _enemyGuard;\r
         private readonly List<int> _escapingShips = new List<int>();\r
-        private bool _lastCell;\r
+        private bool _safeCell;\r
 \r
         public BattleState BattleState { get; set; }\r
         public int[] Formation { get; private set; }\r
@@ -115,7 +115,7 @@ namespace KancolleSniffer.Model
         public void Port()\r
         {\r
             CleanupResult();\r
-            _lastCell = false;\r
+            _safeCell = false;\r
             BattleState = BattleState.None;\r
         }\r
 \r
@@ -300,13 +300,32 @@ namespace KancolleSniffer.Model
 \r
         public void InspectMapNext(dynamic json)\r
         {\r
-            _lastCell = (int)json.api_next == 0;\r
+            SetSafeCell(json);\r
             BattleState = BattleState.None;\r
             if (!json.api_destruction_battle())\r
                 return;\r
             InspectAirRaidBattle((int)json.api_maparea_id, json.api_destruction_battle);\r
         }\r
 \r
+        private void SetSafeCell(dynamic json)\r
+        {\r
+            var map = (int)json.api_maparea_id * 1000 + (int)json.api_mapinfo_no * 100 + (int)json.api_no;\r
+            _safeCell =\r
+                (int)json.api_next == 0 || // last cell\r
+                map switch\r
+                {\r
+                    1613 => true, // 1-6-B\r
+                    1611 => true, // 1-6-D\r
+                    1616 => true, // 1-6-D\r
+                    2202 => true, // 2-2-B\r
+                    3102 => true, // 3-1-B\r
+                    3201 => true, // 3-2-A\r
+                    4206 => true, // 4-2-F\r
+                    5302 => true, // 5-3-B\r
+                    _ => false\r
+                };\r
+        }\r
+\r
         public void InspectAirRaidBattle(int areaId, dynamic json)\r
         {\r
             SetFormation(json);\r
@@ -593,8 +612,7 @@ namespace KancolleSniffer.Model
             if (_friend == null)\r
                 return;\r
             ShowResult();\r
-            if (!_lastCell)\r
-                SetDamagedShipWarning();\r
+            SetDamagedShipWarning();\r
             _shipInfo.SaveBattleResult();\r
             _shipInfo.DropShipId = json.api_get_ship() ? (int)json.api_get_ship.api_ship_id : -1;\r
             VerifyResultRank(json);\r
@@ -626,6 +644,8 @@ namespace KancolleSniffer.Model
 \r
         private void SetDamagedShipWarning()\r
         {\r
+            if (_safeCell)\r
+                return;\r
             _shipInfo.SetBadlyDamagedShips();\r
         }\r
 \r