OSDN Git Service

練習航海及び警備任務を実施せよ!のカウンターを実装する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 9 May 2020 10:59:35 +0000 (19:59 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 9 May 2020 10:59:35 +0000 (19:59 +0900)
KancolleSniffer.Test/QuestCounterTest.cs
KancolleSniffer/Model/QuestCountList.cs
KancolleSniffer/Model/QuestCounter.cs
KancolleSniffer/Model/QuestInfo.cs

index ced3501..8ed94f2 100644 (file)
@@ -165,7 +165,8 @@ namespace KancolleSniffer.Test
                     new QuestCount {Id = 280, NowArray = new[] {1, 1, 1, 1}},\r
                     new QuestCount {Id = 872, NowArray = new[] {1, 1, 1, 1}},\r
                     new QuestCount {Id = 284, NowArray = new[] {1, 1, 1, 1}},\r
-                    new QuestCount {Id = 226, Now = 2}\r
+                    new QuestCount {Id = 226, Now = 2},\r
+                    new QuestCount {Id = 436, NowArray = new[] {1, 0, 1, 1, 1}},\r
                 }\r
             };\r
             new QuestInfo().LoadState(status);\r
@@ -208,6 +209,9 @@ namespace KancolleSniffer.Test
             var q226 = status.QuestCountList.First(q => q.Id == 226);\r
             Assert.AreEqual("2/5", q226.ToString());\r
             Assert.AreEqual("", q226.ToToolTip());\r
+            var q436 = status.QuestCountList.First(q => q.Id == 436);\r
+            Assert.AreEqual("1\u200a0\u200a1\u200a1\u200a1", q436.ToString());\r
+            Assert.AreEqual("練習航海1 長距離練習航海0 警備任務1 対潜警戒任務1 強行偵察任務1", q436.ToToolTip());\r
         }\r
     }\r
 \r
@@ -1464,6 +1468,37 @@ namespace KancolleSniffer.Test
         }\r
 \r
         /// <summary>\r
+        /// 436: 練習航海及び警備任務を実施せよ!\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void MissionResult_436()\r
+        {\r
+            var count = InjectQuest(436);\r
+\r
+            _questCounter.InspectDeck(Js(\r
+                new[]\r
+                {\r
+                    new {api_id = 2, api_mission = new[] {2, 1}},\r
+                    new {api_id = 3, api_mission = new[] {2, 2}},\r
+                    new {api_id = 4, api_mission = new[] {2, 3}}\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, 0}));\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, 10}}\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
+            PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1, 1, 1}));\r
+        }\r
+\r
+        /// <summary>\r
         /// 503: 艦隊大整備!\r
         /// 504: 艦隊酒保祭り!\r
         /// </summary>\r
index 3366523..69bf737 100644 (file)
@@ -23,7 +23,8 @@ namespace KancolleSniffer.Model
         private const QuestInterval Weekly = QuestInterval.Weekly;\r
         private const QuestInterval Monthly = QuestInterval.Monthly;\r
         private const QuestInterval Quarterly = QuestInterval.Quarterly;\r
-        private const QuestInterval Yearly = QuestInterval.Yearly;\r
+        private const QuestInterval Yearly2 = QuestInterval.Yearly2;\r
+        private const QuestInterval Yearly3 = QuestInterval.Yearly3;\r
 \r
         /// <summary>\r
         /// このテーブルは七四式電子観測儀を参考に作成した。\r
@@ -73,8 +74,8 @@ namespace KancolleSniffer.Model
             {893, new QuestSortie {Interval = Quarterly, MaxArray = new[] {3, 3, 3, 3}, Rank = "S", Maps = new[] {15, 71, 721, 722}, Material = new[] {0, 0, 0, 0}}}, // 893: 泊地周辺海域の安全確保を徹底せよ!\r
             {894, new QuestSortie {Interval = Quarterly, MaxArray = new[] {1, 1, 1, 1, 1}, Rank = "S", Maps = new[] {13, 14, 21, 22, 23}, Material = new[] {0, 0, 0, 0}}}, // 894: 空母戦力の投入による兵站線戦闘哨戒\r
             {903, new QuestSortie {Interval = Quarterly, MaxArray = new[] {1, 1, 1, 1}, Rank = "S", Maps = new[] {51, 54, 64, 65}, Material = new[] {0, 10, 0, 0}}}, // 903: 拡張「六水戦」、最前線へ!\r
-            {904, new QuestSortie {Interval = Yearly, MaxArray = new[] {1, 1, 1, 1}, Rank = "S", Maps = new[] {25, 34, 45, 53}, Material = new[] {0, 8, 10, 4}}}, // 904: 精鋭「十九駆」、躍り出る!\r
-            {905, new QuestSortie {Interval = Yearly, MaxArray = new[] {1, 1, 1, 1, 1}, Rank = "A", Maps = new[] {11, 12, 13, 15, 16}, Material = new[] {0, 6, 8, 0}}}, // 905: 「海防艦」、海を護る!\r
+            {904, new QuestSortie {Interval = Yearly2, MaxArray = new[] {1, 1, 1, 1}, Rank = "S", Maps = new[] {25, 34, 45, 53}, Material = new[] {0, 8, 10, 4}}}, // 904: 精鋭「十九駆」、躍り出る!\r
+            {905, new QuestSortie {Interval = Yearly2, MaxArray = new[] {1, 1, 1, 1, 1}, Rank = "A", Maps = new[] {11, 12, 13, 15, 16}, Material = new[] {0, 6, 8, 0}}}, // 905: 「海防艦」、海を護る!\r
 \r
             {303, new QuestPractice {Interval = Daily, Max = 3, Rank = "E", Material = new[] {1, 0, 0, 0}}}, // 303: 「演習」で練度向上!\r
             {304, new QuestPractice {Interval = Daily, Max = 5, Rank = "B", Material = new[] {0, 0, 1, 0}}}, // 304: 「演習」で他提督を圧倒せよ!\r
@@ -94,6 +95,7 @@ namespace KancolleSniffer.Model
             {424, new QuestMission {Interval = Monthly, Max = 4, Shift = 1, Ids = new[] {5}, Material = new[] {0, 0, 0, 0}}}, // 424: 輸送船団護衛を強化せよ!\r
             {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
 \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 ac71696..2f1ac3a 100644 (file)
@@ -123,6 +123,7 @@ namespace KancolleSniffer.Model
             {\r
                 426 => new[] {"警備任務", "対潜警戒任務", "海上護衛任務", "強硬偵察任務"},\r
                 428 => new[] {"対潜警戒任務", "海峡警備行動", "長時間対潜警戒"},\r
+                436 => new[] {"練習航海", "長距離練習航海", "警備任務", "対潜警戒任務", "強行偵察任務"},\r
                 688 => new[] {"艦戦", "艦爆", "艦攻", "水偵"},\r
                 _ => new string[0]\r
             }).Zip(NowArray, (entry, n) => $"{entry}{n}"));\r
index e7dbbce..5016522 100644 (file)
@@ -63,7 +63,8 @@ namespace KancolleSniffer.Model
         Weekly,\r
         Monthly,\r
         Quarterly,\r
-        Yearly\r
+        Yearly2,\r
+        Yearly3\r
     }\r
 \r
     public class QuestInfo : IHaveState\r
@@ -118,7 +119,7 @@ namespace KancolleSniffer.Model
         private readonly QuestInterval[] _intervals =\r
         {\r
             QuestInterval.Daily, QuestInterval.Weekly, QuestInterval.Monthly,\r
-            QuestInterval.Other, QuestInterval.Quarterly, QuestInterval.Yearly\r
+            QuestInterval.Other, QuestInterval.Quarterly, QuestInterval.Yearly2\r
         };\r
 \r
         private readonly int[] _progress = {0, 50, 80};\r
@@ -219,7 +220,7 @@ namespace KancolleSniffer.Model
                 QuestInterval.Weekly => CrossBoundary(LastMonday.AddHours(5)),\r
                 QuestInterval.Monthly => CrossBoundary(new DateTime(_now.Year, _now.Month, 1, 5, 0, 0)),\r
                 QuestInterval.Quarterly => CrossBoundary(QuarterlyBoundary.AddHours(5)),\r
-                QuestInterval.Yearly => CrossBoundary(new DateTime(_now.Year, 2, 1, 5, 0, 0)),\r
+                QuestInterval.Yearly2 => CrossBoundary(new DateTime(_now.Year, 2, 1, 5, 0, 0)),\r
                 _ => false\r
             };\r
         }\r