-// Copyright (C) 2013 Kazuhiro Fujieda <fujieda@users.sourceforge.jp>\r
+// Copyright (C) 2013, 2015 Kazuhiro Fujieda <fujieda@users.sourceforge.jp>\r
// \r
// This program is part of KancolleSniffer.\r
//\r
{\r
private DateTime _lastCreared;\r
private readonly SortedDictionary<int, NameAndProgress> _quests = new SortedDictionary<int, NameAndProgress>();\r
+ private const int QuestCount = 5;\r
\r
public void Inspect(dynamic json)\r
{\r
}\r
if (json.api_list == null)\r
return;\r
- foreach (var entry in json.api_list)\r
+ for (var i = 0; i < 2; i++)\r
{\r
- if (entry is double) // -1の場合がある。\r
- continue;\r
-\r
- var id = (int)entry.api_no;\r
- var state = (int)entry.api_state;\r
- var progress = (int)entry.api_progress_flag;\r
- var name = (string)entry.api_title;\r
-\r
- switch (progress)\r
- {\r
- case 0:\r
- break;\r
- case 1:\r
- progress = 50;\r
- break;\r
- case 2:\r
- progress = 80;\r
- break;\r
- }\r
- switch (state)\r
+ foreach (var entry in json.api_list)\r
{\r
- case 2:\r
- _quests[id] = new NameAndProgress {Name = name, Progress = progress};\r
- break;\r
- case 1:\r
- case 3:\r
- _quests.Remove(id);\r
+ if (entry is double) // -1の場合がある。\r
continue;\r
+\r
+ var id = (int)entry.api_no;\r
+ var state = (int)entry.api_state;\r
+ var progress = (int)entry.api_progress_flag;\r
+ var name = (string)entry.api_title;\r
+\r
+ switch (progress)\r
+ {\r
+ case 0:\r
+ break;\r
+ case 1:\r
+ progress = 50;\r
+ break;\r
+ case 2:\r
+ progress = 80;\r
+ break;\r
+ }\r
+ switch (state)\r
+ {\r
+ case 2:\r
+ _quests[id] = new NameAndProgress {Name = name, Progress = progress};\r
+ break;\r
+ case 1:\r
+ case 3:\r
+ _quests.Remove(id);\r
+ continue;\r
+ }\r
}\r
+ if (_quests.Count <= QuestCount)\r
+ break;\r
+ /*\r
+ * ほかのPCで任務を達成した場合、任務が消えずに受領した任務の数が_questCountを超えることがある。\r
+ * その場合はいったん任務をクリアして、現在のページの任務だけを登録し直す。\r
+ */\r
+ _quests.Clear();\r
}\r
}\r
\r