OSDN Git Service

小笠原沖哨戒線の強化を実施せよ!のカウンターを実装する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 23 May 2020 13:00:50 +0000 (22:00 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 23 May 2020 13:00:50 +0000 (22:00 +0900)
KancolleSniffer.Test/QuestCounterTest.cs
KancolleSniffer.Test/QuestInfoTest.cs
KancolleSniffer/Model/QuestCountList.cs
KancolleSniffer/Model/QuestInfo.cs

index 0f3dbca..5d9755e 100644 (file)
@@ -1637,6 +1637,35 @@ namespace KancolleSniffer.Test
         }\r
 \r
         /// <summary>\r
+        /// 437: 小笠原沖哨戒線の強化を実施せよ!\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void MissionResult_437()\r
+        {\r
+            var count = InjectQuest(437);\r
+\r
+            _questCounter.InspectDeck(Js(\r
+                new[]\r
+                {\r
+                    new {api_id = 2, api_mission = new[] {2, 4}},\r
+                    new {api_id = 3, api_mission = new[] {2, 104}},\r
+                    new {api_id = 4, api_mission = new[] {2, 105}}\r
+                }));\r
+            _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
+            _questCounter.InspectMissionResult("api%5Fdeck%5Fid=3", Js(new {api_clear_result = 1}));\r
+            _questCounter.InspectMissionResult("api%5Fdeck%5Fid=4", Js(new {api_clear_result = 1}));\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 0}));\r
+\r
+            _questCounter.InspectDeck(Js(\r
+                new[]\r
+                {\r
+                    new {api_id = 2, api_mission = new[] {2, 110}}\r
+                }));\r
+            _questCounter.InspectMissionResult("api%5Fdeck%5Fid=2", Js(new {api_clear_result = 1}));\r
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));\r
+        }\r
+\r
+        /// <summary>\r
         /// 503: 艦隊大整備!\r
         /// 504: 艦隊酒保祭り!\r
         /// </summary>\r
index 8e9a1f0..abc5fb0 100644 (file)
@@ -32,7 +32,7 @@ namespace KancolleSniffer.Test
             {\r
                 new DateTime(2017, 11, 1, 5, 0, 0), new DateTime(2017, 11, 6, 5, 0, 0),\r
                 new DateTime(2017, 12, 1, 5, 0, 0), new DateTime(2018, 2, 1, 5, 0, 0),\r
-                new DateTime(2018, 3, 1, 5, 0, 0),\r
+                new DateTime(2018, 3, 1, 5, 0, 0), new DateTime(2018, 5, 1, 5, 0, 0)\r
             });\r
             var questInfo = new QuestInfo(() => queue.Dequeue());\r
             var status = new Status\r
@@ -42,28 +42,26 @@ namespace KancolleSniffer.Test
                     new QuestCount {Id = 201, Now = 1}, new QuestCount {Id = 213, Now = 1},\r
                     new QuestCount {Id = 265, Now = 1},\r
                     new QuestCount {Id = 436, NowArray = new[] {1, 1, 1, 1, 0}},\r
+                    new QuestCount {Id = 437, NowArray = new[] {1, 1, 1, 1}},\r
                     new QuestCount {Id = 822, Now = 1},\r
-                    new QuestCount {Id = 904, NowArray = new[] {1, 1, 1, 1}}},\r
+                    new QuestCount {Id = 904, NowArray = new[] {1, 1, 1, 1}}\r
+                },\r
                 QuestLastReset = new DateTime(2017, 10, 31, 5, 0, 0)\r
             };\r
             questInfo.LoadState(status);\r
+            CheckQuestCountList(questInfo, status, new[] {213, 436, 437, 822, 904}); // デイリーとマンスリーが消える\r
+            CheckQuestCountList(questInfo, status, new[] {436, 437, 822, 904}); // ウィークリーが消える\r
+            CheckQuestCountList(questInfo, status, new[] {436, 437, 904}); // クォータリーが消える\r
+            CheckQuestCountList(questInfo, status, new[] {436, 437}); // イヤーリー2月が消える\r
+            CheckQuestCountList(questInfo, status, new[] {437}); // イヤーリー3月が消える\r
+            CheckQuestCountList(questInfo, status, new int[0]); // イヤーリー5月が消える\r
+        }\r
+\r
+        private void CheckQuestCountList(QuestInfo questInfo, Status status, int[] quests)\r
+        {\r
             questInfo.InspectQuestList(CreateQuestList(new[] {201}));\r
             questInfo.SaveState(status);\r
-            PAssert.That(() =>\r
-                status.QuestCountList.Select(qc => qc.Id).SequenceEqual(new[] {213, 436, 822, 904})); // デイリーとマンスリーが消える\r
-            questInfo.InspectQuestList(CreateQuestList(new[] {201}));\r
-            questInfo.SaveState(status);\r
-            PAssert.That(() =>\r
-                status.QuestCountList.Select(qc => qc.Id).SequenceEqual(new[] {436, 822, 904})); // ウィークリーが消える\r
-            questInfo.InspectQuestList(CreateQuestList(new[] {201}));\r
-            questInfo.SaveState(status);\r
-            PAssert.That(() => status.QuestCountList.Select(qc => qc.Id).SequenceEqual(new[] {436, 904})); // クォータリーが消える\r
-            questInfo.InspectQuestList(CreateQuestList(new[] {201}));\r
-            questInfo.SaveState(status);\r
-            PAssert.That(() => status.QuestCountList.Select(qc => qc.Id).SequenceEqual(new[] {436})); // イヤーリー2月が消える\r
-            questInfo.InspectQuestList(CreateQuestList(new[] {201}));\r
-            questInfo.SaveState(status);\r
-            PAssert.That(() => status.QuestCountList.Length == 0); // イヤーリー3月が消える\r
+            PAssert.That(() =>  status.QuestCountList.Select(qc => qc.Id).SequenceEqual(quests));\r
         }\r
 \r
         [TestMethod]\r
index d0d2c0e..53183f4 100644 (file)
@@ -25,6 +25,7 @@ namespace KancolleSniffer.Model
         private const QuestInterval Quarterly = QuestInterval.Quarterly;\r
         private const QuestInterval Yearly2 = QuestInterval.Yearly2;\r
         private const QuestInterval Yearly3 = QuestInterval.Yearly3;\r
+        private const QuestInterval Yearly5 = QuestInterval.Yearly5;\r
 \r
         /// <summary>\r
         /// このテーブルは七四式電子観測儀を参考に作成した。\r
@@ -99,6 +100,7 @@ namespace KancolleSniffer.Model
             {426, new QuestMission {Interval = Quarterly, MaxArray = new[] {1, 1, 1, 1}, Ids = new[] {3, 4, 5, 10}, Material = new[] {0, 0, 4, 0}}}, // 426: 海上通商航路の警戒を厳とせよ!\r
             {428, new QuestMission {Interval = Quarterly, MaxArray = new[] {2, 2, 2}, Ids = new[] {4, 101, 102}, Material = new[] {0, 0, 0, 3}}}, // 428: 近海に侵入する敵潜を制圧せよ!\r
             {436, new QuestMission {Interval = Yearly3, MaxArray = new[] {1, 1, 1, 1, 1}, Ids = new[] {1, 2, 3, 4, 10}, Material = new [] {0, 4, 0, 0}}}, // 436: 練習航海及び警備任務を実施せよ!\r
+            {437, new QuestMission {Interval = Yearly5, MaxArray = new[] {1, 1, 1, 1}, Ids = new[] {4, 104, 105, 110}, Material = new [] {0, 0, 7, 3}, Shift = 1}}, // 437: 小笠原沖哨戒線の強化を実施せよ!\r
 \r
             {503, new QuestSpec {Interval = Daily, Max = 5, Material = new[] {0, 2, 0, 0}}}, // 503: 艦隊大整備!\r
             {504, new QuestSpec {Interval = Daily, Max = 15, Material = new[] {1, 0, 1, 0}}}, // 504: 艦隊酒保祭り!\r
index 21c43f3..acb0490 100644 (file)
@@ -64,7 +64,8 @@ namespace KancolleSniffer.Model
         Monthly,\r
         Quarterly,\r
         Yearly2,\r
-        Yearly3\r
+        Yearly3,\r
+        Yearly5\r
     }\r
 \r
     public class QuestInfo : IHaveState\r
@@ -222,6 +223,7 @@ namespace KancolleSniffer.Model
                 QuestInterval.Quarterly => CrossBoundary(QuarterlyBoundary.AddHours(5)),\r
                 QuestInterval.Yearly2 => CrossBoundary(new DateTime(_now.Year, 2, 1, 5, 0, 0)),\r
                 QuestInterval.Yearly3 => CrossBoundary(new DateTime(_now.Year, 3, 1, 5, 0, 0)),\r
+                QuestInterval.Yearly5 => CrossBoundary(new DateTime(_now.Year, 5, 1, 5, 0, 0)),\r
                 _ => false\r
             };\r
         }\r