OSDN Git Service

泊地周辺海域の安全確保を徹底せよ!のカウンタを実装する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Thu, 6 Dec 2018 13:03:40 +0000 (22:03 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 9 Dec 2018 10:24:37 +0000 (19:24 +0900)
KancolleSniffer.Test/QuestInfoTest.cs
KancolleSniffer/Model/QuestInfo.cs

index c685337..32a229a 100644 (file)
@@ -944,6 +944,56 @@ namespace KancolleSniffer.Test
             PAssert.That(() => count.NowArray.SequenceEqual(new[] {1, 1, 1}));\r
         }\r
 \r
+        /// <summary>\r
+        /// 893: 泊地周辺海域の安全確保を徹底せよ!\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void BattleResult_893()\r
+        {\r
+            var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
+            questInfo.InspectQuestList(CreateQuestList(new[] {893}));\r
+            var count = questInfo.Quests[0].Count;\r
+\r
+            questInfo.InspectMapNext(Js(new\r
+            {\r
+                api_maparea_id = 1,\r
+                api_mapinfo_no = 5,\r
+                api_event_id = 5\r
+            }));\r
+            questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
+            PAssert.That(() => count.NowArray[0] == 0, "A勝利はカウントしない");\r
+            questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
+            PAssert.That(() => count.NowArray[0] == 1, "1-5");\r
+\r
+            questInfo.InspectMapNext(Js(new\r
+            {\r
+                api_maparea_id = 7,\r
+                api_mapinfo_no = 1,\r
+                api_event_id = 5\r
+            }));\r
+            questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
+            PAssert.That(() => count.NowArray[1] == 1, "7-1");\r
+\r
+            questInfo.InspectMapNext(Js(new\r
+            {\r
+                api_maparea_id = 7,\r
+                api_mapinfo_no = 2,\r
+                api_no = 9,\r
+                api_event_id = 4\r
+            }));\r
+            questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
+            PAssert.That(() => count.NowArray[2] == 1, "7-2G");\r
+\r
+            questInfo.InspectMapNext(Js(new\r
+            {\r
+                api_maparea_id = 7,\r
+                api_mapinfo_no = 2,\r
+                api_no = 15,\r
+                api_event_id = 5\r
+            }));\r
+            questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
+            PAssert.That(() => count.NowArray[3] == 1, "7-2M");\r
+        }\r
 \r
         /// <summary>\r
         /// 302: 大規模演習\r
@@ -1245,7 +1295,8 @@ namespace KancolleSniffer.Test
                     new QuestCount {Id = 428, NowArray = new[] {1, 1, 1}},\r
                     new QuestCount {Id = 873, NowArray = new[] {1, 1, 1}},\r
                     new QuestCount {Id= 888, NowArray = new []{1, 1, 1}},\r
-                    new QuestCount {Id = 688, NowArray = new[] {2, 1, 2, 1}}\r
+                    new QuestCount {Id = 688, NowArray = new[] {2, 1, 2, 1}},\r
+                    new QuestCount {Id = 893, NowArray = new[] {1, 1, 1, 1}}\r
                 }\r
             };\r
             questInfo.LoadState(status);\r
@@ -1271,6 +1322,8 @@ namespace KancolleSniffer.Test
             PAssert.That(() => q888.ToToolTip() == "5-1 5-3 5-4");\r
             var q688 = status.QuestCountList[7];\r
             PAssert.That(() => q688.ToToolTip() == "艦戦2 艦爆1 艦攻2 水偵1");\r
+            var q893 = status.QuestCountList[8];\r
+            PAssert.That(() => q893.ToToolTip() == "1-5:1 7-1:1 7-2G:1 7-2M:1");\r
         }\r
 \r
         /// <summary>\r
index d9e7675..64fdd6a 100644 (file)
@@ -231,6 +231,10 @@ namespace KancolleSniffer.Model
                     return string.Join(" ",\r
                         new[] {"艦戦", "艦爆", "艦攻", "水偵"}.Zip(NowArray, (type, n) => n >= 1 ? type + n : "")\r
                             .Where(s => !string.IsNullOrEmpty(s)));\r
+                case 893:\r
+                    return string.Join(" ",\r
+                        new[] {"1-5", "7-1", "7-2G", "7-2M"}.Zip(NowArray, (map, n) => n >= 1 ? $"{map}:{n}" : "")\r
+                            .Where(s => !string.IsNullOrEmpty(s)));\r
             }\r
             return "";\r
         }\r
@@ -286,6 +290,7 @@ namespace KancolleSniffer.Model
             {873, new QuestSpec {Interval = Quarterly, MaxArray = new[] {1, 1, 1}, Material = new[] {0, 0, 0, 0}}}, // 873: 北方海域警備を実施せよ!\r
             {875, new QuestSpec {Interval = Quarterly, Max = 2, Material = new[] {0, 0, 0, 0}}}, // 875: 精鋭「三一駆」、鉄底海域に突入せよ!\r
             {888, new QuestSpec {Interval = Quarterly, MaxArray = new[] {1, 1, 1}, Material = new[] {0, 0, 0, 0}}}, // 888: 新編成「三川艦隊」、鉄底海峡に突入せよ!\r
+            {893, new QuestSpec {Interval = Quarterly, MaxArray = new[] {3, 3, 3, 3}, Material = new[] {0, 0, 0, 0}}}, // 893: 泊地周辺海域の安全確保を徹底せよ!\r
 \r
             {303, new QuestPractice {Interval = Daily, Max = 3, Win = false, Material = new[] {1, 0, 0, 0}}}, // 303: 「演習」で練度向上!\r
             {304, new QuestPractice {Interval = Daily, Max = 5, Win = true, Material = new[] {0, 0, 1, 0}}}, // 304: 「演習」で他提督を圧倒せよ!\r
@@ -553,6 +558,7 @@ namespace KancolleSniffer.Model
         }\r
 \r
         private int _map;\r
+        private int _cell;\r
         private bool _boss;\r
 \r
         public void InspectMapStart(dynamic json)\r
@@ -565,6 +571,7 @@ namespace KancolleSniffer.Model
         public void InspectMapNext(dynamic json)\r
         {\r
             _map = (int)json.api_maparea_id * 10 + (int)json.api_mapinfo_no;\r
+            _cell = json.api_no() ? (int)json.api_no : 0;\r
             _boss = (int)json.api_event_id == 5;\r
 \r
             if (_quests.TryGetValue(861, out var q861))\r
@@ -775,6 +782,36 @@ namespace KancolleSniffer.Model
                         break;\r
                 }\r
             }\r
+            if (_quests.TryGetValue(893, out var q893))\r
+            {\r
+                if (QuestSortie.CompareRank(rank, "S") != 0)\r
+                    return;\r
+                var array = q893.Count.NowArray;\r
+                if (!_boss)\r
+                {\r
+                    if (_map == 72 && _cell == 9)\r
+                    {\r
+                        array[2]++;\r
+                        NeedSave = true;\r
+                    }\r
+                    return;\r
+                }\r
+                switch (_map)\r
+                {\r
+                    case 15:\r
+                        array[0]++;\r
+                        NeedSave = true;\r
+                        break;\r
+                    case 71:\r
+                        array[1]++;\r
+                        NeedSave = true;\r
+                        break;\r
+                    case 72:\r
+                        array[3]++;\r
+                        NeedSave = true;\r
+                        break;\r
+                }\r
+            }\r
         }\r
 \r
         private int _questFleet;\r