OSDN Git Service

大破進軍しても平気なマスでは大破警告を出さない
[kancollesniffer/KancolleSniffer.git] / KancolleSniffer / Model / BattleInfo.cs
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