OSDN Git Service

近代化改修が二重に行われるとエラーになるのを直す
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Fri, 21 Apr 2017 10:47:15 +0000 (19:47 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 22 Apr 2017 06:43:03 +0000 (15:43 +0900)
KancolleSniffer.Test/SnifferTest.cs
KancolleSniffer/ShipInfo.cs

index da0cc0d..04e74da 100644 (file)
@@ -797,6 +797,17 @@ namespace KancolleSniffer.Test
         }\r
 \r
         /// <summary>\r
+        /// 近代化改修が二重に行われた場合に対応する\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void DuplicatedPowerup()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "powerup_002");\r
+            PAssert.That(() => sniffer.Item.NowShips == 218);\r
+        }\r
+\r
+        /// <summary>\r
         /// 改修による資材の減少をすぐに反映する\r
         /// </summary>\r
         [TestMethod]\r
index fe13041..2c7a8cc 100644 (file)
@@ -448,11 +448,13 @@ namespace KancolleSniffer
         public void InspectPowerup(string request, dynamic json)\r
         {\r
             var values = HttpUtility.ParseQueryString(request);\r
-            var ships = values["api_id_items"].Split(',');\r
+            var ships = values["api_id_items"].Split(',').Select(int.Parse).ToArray();\r
+            if (!_shipInfo.ContainsKey(ships[0])) // 二重に実行された場合\r
+                return;\r
             _itemInfo.NowShips -= ships.Length;\r
-            _itemInfo.DeleteItems(ships.SelectMany(s => _shipInfo[int.Parse(s)].Slot).ToArray());\r
-            foreach (var ship in ships)\r
-                _shipInfo.Remove(int.Parse(ship));\r
+            _itemInfo.DeleteItems(ships.SelectMany(id => _shipInfo[id].Slot).ToArray());\r
+            foreach (var id in ships)\r
+                _shipInfo.Remove(id);\r
             InspectDeck(json.api_deck);\r
             InspectShip(json);\r
         }\r