OSDN Git Service

第1艦隊以外でも「伊良湖」の支援がカウントされるのを直す
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 14 Jul 2018 05:18:28 +0000 (14:18 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 14 Jul 2018 05:18:28 +0000 (14:18 +0900)
KancolleSniffer.Test/QuestInfoTest.cs
KancolleSniffer/QuestInfo.cs
KancolleSniffer/Sniffer.cs

index 2907000..b98bd25 100644 (file)
@@ -887,11 +887,11 @@ namespace KancolleSniffer.Test
         /// 318: 給糧艦「伊良湖」の支援\r
         /// </summary>\r
         [TestMethod]\r
-        public void PracticeResult_303_304_302_311_315_318()\r
+        public void PracticeResult_303_304_302_311_315()\r
         {\r
             var battleInfo = new BattleInfo(null, null);\r
-            var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1)) {AcceptMax = 6};\r
-            questInfo.InspectQuestList(CreateQuestList(new[] {302, 303, 304, 311, 315, 318}));\r
+            var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
+            questInfo.InspectQuestList(CreateQuestList(new[] {302, 303, 304, 311, 315,}));\r
 \r
             battleInfo.InjectResultStatus(new[]\r
             {\r
@@ -904,16 +904,38 @@ namespace KancolleSniffer.Test
                     .SequenceEqual(new[]\r
                     {\r
                         new {Id = 302, Now = 1}, new {Id = 303, Now = 2}, new {Id = 304, Now = 1},\r
-                        new {Id = 311, Now = 1}, new {Id = 315, Now = 1}, new {Id = 318, Now = 0}\r
+                        new {Id = 311, Now = 1}, new {Id = 315, Now = 1}\r
                     }));\r
-            // 318\r
+        }\r
+\r
+        [TestMethod]\r
+        public void PracticeResult_318()\r
+        {\r
+            var battleInfo = new BattleInfo(null, null);\r
+            var questInfo = new QuestInfo(null, battleInfo, () => new DateTime(2015, 1, 1));\r
+            questInfo.InspectQuestList(CreateQuestList(new[] {318}));\r
+            var q318 = questInfo.Quests[0];\r
+\r
+            battleInfo.InjectResultStatus(new[]\r
+            {\r
+                ShipStatus(2, 543), ShipStatus(3, 488)\r
+            }, new ShipStatus[0], new ShipStatus[0], new ShipStatus[0]);\r
+\r
+            questInfo.InspectPracticeResult(Js(new {api_win_rank = "B"}));\r
+            PAssert.That(() => q318.Count.Now == 0, "軽巡1隻");\r
             battleInfo.Result.Friend.Main[0] = ShipStatus(3, 200);\r
-            questInfo.InspectPracticeResult(Js(new {api_win_rank = "A"}));\r
-            var q318 = questInfo.Quests[5];\r
+            questInfo.StartPractice("api%5Fdeck%5Fid=2");\r
+            questInfo.InspectPracticeResult(Js(new {api_win_rank = "B"}));\r
+            PAssert.That(() => q318.Count.Now == 0, "第2艦隊");\r
+            questInfo.StartPractice("api%5Fdeck%5Fid=1"); // 第一艦隊\r
+            questInfo.InspectPracticeResult(Js(new {api_win_rank = "C"}));\r
+            PAssert.That(() => q318.Count.Now == 0, "敗北");\r
+            questInfo.InspectPracticeResult(Js(new {api_win_rank = "B"}));\r
             PAssert.That(() => q318.Count.Now == 1);\r
-            q318.Count.Now = 3;\r
+\r
+            q318.Count.Now = 2;\r
             questInfo.InspectQuestList(CreateQuestList(new[] {318}));\r
-            PAssert.That(() => q318.Count.Now == 3, "進捗調節しない");\r
+            PAssert.That(() => q318.Count.Now == 2, "進捗調節しない");\r
         }\r
 \r
         /// <summary>\r
index 9efe6d8..48af995 100644 (file)
@@ -706,6 +706,14 @@ namespace KancolleSniffer
             }\r
         }\r
 \r
+        private int _questFleet = 0;\r
+\r
+        public void StartPractice(string request)\r
+        {\r
+            var values = HttpUtility.ParseQueryString(request);\r
+            _questFleet = int.Parse(values["api_deck_id"]) - 1;\r
+        }\r
+\r
         public void InspectPracticeResult(dynamic json)\r
         {\r
             foreach (var quest in _quests.Values)\r
@@ -718,7 +726,7 @@ namespace KancolleSniffer
             }\r
             if (_quests.TryGetValue(318, out var q318))\r
             {\r
-                if (QuestSortie.CompareRank(json.api_win_rank, "B") <= 0 &&\r
+                if (_questFleet == 0 && QuestSortie.CompareRank(json.api_win_rank, "B") <= 0 &&\r
                     _battleInfo.Result.Friend.Main.Count(s => s.Spec.ShipType == 3) >= 2)\r
                 {\r
                     IncrementCount(q318.Count);\r
index 63c3970..070059c 100644 (file)
@@ -344,6 +344,7 @@ namespace KancolleSniffer
                 if (url.EndsWith("/battle"))\r
                 {\r
                     _shipInfo.StartPractice(request);\r
+                    _questInfo.StartPractice(request);\r
                     _conditionTimer.InvalidateCond();\r
                     RepeatingTimerController?.Suspend();\r
                 }\r