OSDN Git Service

兵站線確保!海上警備を強化実施せよ!のカウンタを実装する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Thu, 11 Apr 2019 13:32:39 +0000 (22:32 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 13 Apr 2019 12:35:27 +0000 (21:35 +0900)
KancolleSniffer.Test/QuestInfoTest.cs
KancolleSniffer/Model/QuestCountList.cs
KancolleSniffer/Model/QuestInfo.cs

index 51ddaaa..e069bcb 100644 (file)
@@ -690,6 +690,56 @@ namespace KancolleSniffer.Test
         }\r
 \r
         /// <summary>\r
+        /// 280: 兵站線確保!海上警備を強化実施せよ!\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void BattleResult_280()\r
+        {\r
+            var questInfo = new QuestInfo(null, null, () => new DateTime(2015, 1, 1));\r
+            questInfo.InspectQuestList(CreateQuestList(new[] {280}));\r
+\r
+            questInfo.InspectMapNext(Js(new\r
+            {\r
+                api_maparea_id = 1,\r
+                api_mapinfo_no = 2,\r
+                api_event_id = 4\r
+            }));\r
+            questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
+            questInfo.InspectMapNext(Js(new\r
+            {\r
+                api_maparea_id = 1,\r
+                api_mapinfo_no = 2,\r
+                api_event_id = 5\r
+            }));\r
+            questInfo.InspectBattleResult(Js(new {api_win_rank = "A"}));\r
+            PAssert.That(() => questInfo.Quests[0].Count.NowArray.SequenceEqual(new[] {0, 0, 0, 0}));\r
+\r
+            questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
+            questInfo.InspectMapNext(Js(new\r
+            {\r
+                api_maparea_id = 1,\r
+                api_mapinfo_no = 3,\r
+                api_event_id = 5\r
+            }));\r
+            questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
+            questInfo.InspectMapNext(Js(new\r
+            {\r
+                api_maparea_id = 1,\r
+                api_mapinfo_no = 4,\r
+                api_event_id = 5\r
+            }));\r
+            questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
+            questInfo.InspectMapNext(Js(new\r
+            {\r
+                api_maparea_id = 2,\r
+                api_mapinfo_no = 1,\r
+                api_event_id = 5\r
+            }));\r
+            questInfo.InspectBattleResult(Js(new {api_win_rank = "S"}));\r
+            PAssert.That(() => questInfo.Quests[0].Count.NowArray.SequenceEqual(new[] {1, 1, 1, 1}));\r
+        }\r
+\r
+        /// <summary>\r
         /// 822: 沖ノ島海域迎撃戦\r
         /// 854: 戦果拡張任務!「Z作戦」前段作戦\r
         /// </summary>\r
@@ -1469,7 +1519,8 @@ namespace KancolleSniffer.Test
                     new QuestCount {Id = 888, NowArray = new[] {1, 1, 1}},\r
                     new QuestCount {Id = 688, NowArray = new[] {2, 1, 2, 1}},\r
                     new QuestCount {Id = 893, NowArray = new[] {1, 1, 1, 1}},\r
-                    new QuestCount {Id = 894, NowArray = new[] {1, 1, 1, 1, 1}}\r
+                    new QuestCount {Id = 894, NowArray = new[] {1, 1, 1, 1, 1}},\r
+                    new QuestCount {Id = 280, NowArray = new[] {1, 1, 1, 1}}\r
                 }\r
             };\r
             questInfo.LoadState(status);\r
@@ -1500,6 +1551,9 @@ namespace KancolleSniffer.Test
             var q894 = status.QuestCountList[9];\r
             PAssert.That(() => q894.ToString() == "5/5");\r
             PAssert.That(() => q894.ToToolTip() == "1-3 1-4 2-1 2-2 2-3");\r
+            var q280 = status.QuestCountList[10];\r
+            PAssert.That(() => q280.ToString() == "4/4");\r
+            PAssert.That(() => q280.ToToolTip() == "1-2 1-3 1-4 2-1");\r
         }\r
 \r
         /// <summary>\r
index 7f066d5..22ff7eb 100644 (file)
@@ -56,7 +56,8 @@ namespace KancolleSniffer.Model
             {261, new QuestSortie {Interval = Weekly, Max = 3, Rank = "A", Maps = new[] {15}, Material = new[] {0, 0, 0, 3}}}, // 261: 海上輸送路の安全確保に努めよ!\r
             {264, new QuestSpec {Interval = Monthly, Max = 1, Material = new[] {0, 0, 0, 2}}}, // 264: 「空母機動部隊」西へ!\r
             {265, new QuestSortie {Interval = Monthly, Max = 10, Rank = "A", Maps = new[] {15}, Material = new[] {0, 0, 5, 3}}}, // 265: 海上護衛強化月間\r
-            {266, new QuestSpec {Interval = Monthly, Max = 1, Material = new[] {0, 0, 4, 2}}}, // 266: 「水上反撃部隊」突入せよ!\r
+            {266, new QuestSpec {Interval = Monthly, Max = 1, Material = new[] {4, 4, 0, 2}}}, // 266: 「水上反撃部隊」突入せよ!\r
+            {280, new QuestSpec {Interval = Monthly, MaxArray = new[] {1, 1, 1, 1}, Material = new[] {0, 4, 4, 2}}}, // 280: 兵站線確保!海上警備を強化実施せよ!\r
 \r
             {822, new QuestSortie {Interval = Quarterly, Max = 2, Rank = "S", Maps = new[] {24}, Material = new[] {0, 0, 0, 5}}}, // 822: 沖ノ島海域迎撃戦\r
             {854, new QuestSpec {Interval = Quarterly, MaxArray = new[] {1, 1, 1, 1}, Material = new[] {0, 0, 0, 4}}}, // 854: 戦果拡張任務!「Z作戦」前段作戦\r
index 644024a..a2cb27b 100644 (file)
@@ -196,7 +196,7 @@ namespace KancolleSniffer.Model
 \r
         public override string ToString()\r
         {\r
-            if (Id == 426 || Id == 854 || Id == 873 || Id == 888 || Id == 894)\r
+            if (Id == 280 || Id == 426 || Id == 854 || Id == 873 || Id == 888 || Id == 894)\r
                 return $"{NowArray.Count(n => n >= 1)}/{Spec.MaxArray.Length}";\r
             return NowArray != null\r
                 ? string.Join(" ", NowArray.Zip(Spec.MaxArray, (n, m) => $"{n}/{m}"))\r
@@ -207,6 +207,10 @@ namespace KancolleSniffer.Model
         {\r
             switch (Id)\r
             {\r
+                case 280:\r
+                    return string.Join(" ",\r
+                        new[] {"1-2", "1-3", "1-4", "2-1"}.Zip(NowArray, (map, n) => n >= 1 ? map : "")\r
+                            .Where(s => !string.IsNullOrEmpty(s)));\r
                 case 426:\r
                     return string.Join(" ",\r
                         new[] {"警備任務", "対潜警戒任務", "海上護衛任務", "強硬偵察任務"}\r
@@ -554,6 +558,27 @@ namespace KancolleSniffer.Model
                         IncrementCount(q266.Count);\r
                 }\r
             }\r
+            if (_quests.TryGetValue(280, out var q280))\r
+            {\r
+                if (!(_boss && QuestSortie.CompareRank(rank, "S") == 0))\r
+                    return;\r
+                var count = q280.Count;\r
+                switch (_map)\r
+                {\r
+                    case 12:\r
+                        IncrementNowArray(count, 0);\r
+                        break;\r
+                    case 13:\r
+                        IncrementNowArray(count, 1);\r
+                        break;\r
+                    case 14:\r
+                        IncrementNowArray(count, 2);\r
+                        break;\r
+                    case 21:\r
+                        IncrementNowArray(count, 3);\r
+                        break;\r
+                }\r
+            }\r
             if (_quests.TryGetValue(854, out var opz) && _boss)\r
             {\r
                 var count = opz.Count;\r