OSDN Git Service

出撃中の獲得アイテムに航空偵察の成否を反映させる
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Wed, 7 Mar 2018 12:53:01 +0000 (21:53 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 11 Mar 2018 14:51:02 +0000 (23:51 +0900)
KancolleSniffer.Test/SnifferTest.cs
KancolleSniffer.Test/logs
KancolleSniffer/MiscTextInfo.cs

index 8d80fa4..5f0eefe 100644 (file)
@@ -727,5 +727,28 @@ namespace KancolleSniffer.Test
                                "潜水空母な桐箪笥: 1\r\n" +\r
                                "Gambier Bay: 1");\r
         }\r
+\r
+        /// <summary>\r
+        /// 航空偵察でアイテムを取得する\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void ItemGetInAirRecon()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            SniffLogFile(sniffer, "airrecon_001");\r
+            PAssert.That(() =>\r
+                sniffer.MiscText ==\r
+                "[海域ゲージ情報]\r\n 海域選択画面に進むと表示します。\r\n" +\r
+                "[演習情報]\r\n 演習相手を選ぶと表示します。\r\n" +\r
+                "[獲得アイテム]\r\n 帰投したときに表示します。", "失敗の場合");\r
+\r
+            SniffLogFile(sniffer, "airrecon_002");\r
+            PAssert.That(() =>\r
+                sniffer.MiscText == "[獲得アイテム]\r\n弾薬: 150\r\n開発資材: 1", "成功");\r
+\r
+            SniffLogFile(sniffer, "airrecon_003");\r
+            PAssert.That(() =>\r
+                sniffer.MiscText == "[獲得アイテム]\r\n弾薬: 150\r\n開発資材: 1", "途中でリロードして再出撃");\r
+        }\r
     }\r
 }
\ No newline at end of file
index 72d069b..850fabc 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 72d069b78e32039f40e69fdaeb008a58612d9971
+Subproject commit 850fabcfe72ce403b78988d60f512734a313628e
index 810d78b..7233d30 100644 (file)
@@ -43,6 +43,7 @@ namespace KancolleSniffer
                 var text = GenerateItemGetText();\r
                 Text = text == "" ? GuideText : "[獲得アイテム]\r\n" + text;\r
             }\r
+            _items.Clear();\r
         }\r
 \r
         private readonly Dictionary<int, int> _required = new Dictionary<int, int>\r
@@ -117,10 +118,15 @@ namespace KancolleSniffer
 \r
         public void InspectMapNext(dynamic json)\r
         {\r
+            if (json.api_airsearch() && (int)json.api_airsearch.api_result != 0)\r
+            {\r
+                var item = json.api_itemget;\r
+                AddItemCount((int)item.api_usemst + 100, (int)item.api_id, (int)item.api_getcount);\r
+                return;\r
+            }\r
             if (json.api_itemget())\r
             {\r
-                var items = json.api_itemget.IsArray ? json.api_itemget : new[] {json.api_itemget};\r
-                foreach (var item in items)\r
+                foreach (var item in json.api_itemget)\r
                     AddItemCount((int)item.api_usemst, (int)item.api_id, (int)item.api_getcount);\r
             }\r
             if (json.api_itemget_eo_result())\r
@@ -163,6 +169,14 @@ namespace KancolleSniffer
                     AddItemCount(type, id, (int)item.api_value);\r
                 }\r
             }\r
+            if (json.api_mapcell_incentive() && (int)json.api_mapcell_incentive == 1)\r
+            {\r
+                foreach (var type in _items.Keys.Where(type => type > 100).ToArray())\r
+                {\r
+                    foreach (var id in _items[type])\r
+                        AddItemCount(type - 100, id.Key, id.Value);\r
+                }\r
+            }\r
         }\r
 \r
         private readonly Dictionary<int, SortedDictionary<int, int>> _items =\r
@@ -210,8 +224,8 @@ namespace KancolleSniffer
         private string GenerateItemGetText()\r
         {\r
             return string.Join("\r\n",\r
-                       new[] {4, 5, 3, 6, 2}.Where(_items.ContainsKey).SelectMany(type =>\r
-                           _items[type].Select(pair => GetName(type, pair.Key) + ": " + pair.Value)));\r
+                new[] {4, 5, 3, 6, 2}.Where(_items.ContainsKey).SelectMany(type =>\r
+                    _items[type].Select(pair => GetName(type, pair.Key) + ": " + pair.Value)));\r
         }\r
     }\r
 }
\ No newline at end of file