}\r
\r
[TestMethod]\r
+ public void InspectCreateItemMulti()\r
+ {\r
+ var sniffer = new Sniffer();\r
+ var result = "";\r
+ sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2019, 1, 1));\r
+ sniffer.EnableLog(LogType.CreateItem);\r
+ SnifferTest.SniffLogFile(sniffer, "createitem_002");\r
+ Assert.AreEqual("2019-01-01 00:00:00,失敗,,10,10,30,10,大淀改(167),120|" +\r
+ "2019-01-01 00:00:00,,,10,10,30,10,大淀改(167),120|" +\r
+ "2019-01-01 00:00:00,失敗,,10,10,30,10,大淀改(167),120|",\r
+ result);\r
+ }\r
+\r
+ [TestMethod]\r
public void InspectGetShip()\r
{\r
var sniffer = new Sniffer();\r
{\r
_questInfo.InspectQuestList(CreateQuestList(new[] {605, 606, 607, 608, 609, 619}));\r
\r
- _questCounter.CountCreateItem();\r
+ _questCounter.InspectCreateItem("api_verno=1&api_item1=10&api_item2=10&api_item3=30&api_item4=10&api_multiple_flag=0");\r
+ _questCounter.InspectCreateItem("api_verno=1&api_item1=10&api_item2=10&api_item3=30&api_item4=10&api_multiple_flag=1");\r
_questCounter.CountCreateShip();\r
_questCounter.InspectDestroyShip("api%5Fship%5Fid=98159%2C98166%2C98168&api%5Fverno=1");\r
_questCounter.CountRemodelSlot();\r
_questInfo.Quests.Select(q => new {q.Id, q.Count.Now})\r
.SequenceEqual(new[]\r
{\r
- new {Id = 605, Now = 1}, new {Id = 606, Now = 1}, new {Id = 607, Now = 1},\r
+ new {Id = 605, Now = 4}, new {Id = 606, Now = 1}, new {Id = 607, Now = 4},\r
new {Id = 608, Now = 1}, new {Id = 609, Now = 3}, new {Id = 619, Now = 1}\r
}));\r
}\r
[TestMethod]\r
public void CountItem()\r
{\r
- var sniffer1 = new Sniffer();\r
- SniffLogFile(sniffer1, "createitem_001");\r
- PAssert.That(() => sniffer1.ItemCounter.Now == 900);\r
- var sniffer2 = new Sniffer();\r
- SniffLogFile(sniffer2, "createship_001");\r
- PAssert.That(() => sniffer2.ItemCounter.Now == 904);\r
+ var createItems = new Sniffer();\r
+ SniffLogFile(createItems, "createitem_001");\r
+ Assert.AreEqual(900, createItems.ItemCounter.Now);\r
+ PAssert.That(() => createItems.ItemCounter.Now == 900);\r
+ var createShips = new Sniffer();\r
+ SniffLogFile(createShips, "createship_001");\r
+ Assert.AreEqual(904, createShips.ItemCounter.Now);\r
+ var multiItems = new Sniffer();\r
+ SniffLogFile(multiItems, "createitem_002");\r
+ Assert.AreEqual(1307, multiItems.ItemCounter.Now);\r
}\r
\r
/// <summary>\r
-Subproject commit 90ec01acb709b2bef390d427b765aa0b08c48c10
+Subproject commit 2975685eb2dffae8f81255ca2375bfe880ded6fd
// limitations under the License.\r
\r
using System;\r
+using System.Collections.Generic;\r
using System.Globalization;\r
using System.IO;\r
using System.Linq;\r
public enum LogType\r
{\r
None = 0,\r
- Mission = 1 << 0,\r
+ Mission = 1,\r
Battle = 1 << 1,\r
Material = 1 << 2,\r
CreateItem = 1 << 3,\r
if ((_logType & LogType.CreateItem) == 0)\r
return;\r
var values = HttpUtility.ParseQueryString(request);\r
- var name = "失敗";\r
- var type = "";\r
- if (json.api_slot_item())\r
+ foreach (var spec in CreateSpecList(json))\r
{\r
- var spec = _itemInfo.GetSpecByItemId((int)json.api_slot_item.api_slotitem_id);\r
- name = spec.Name;\r
- type = spec.TypeName;\r
+ WriteNow("開発報告書",\r
+ string.Join(",", spec.Name, spec.TypeName,\r
+ values["api_item1"], values["api_item2"], values["api_item3"], values["api_item4"],\r
+ Secretary(), _basic.api_level),\r
+ "日付,開発装備,種別,燃料,弾薬,鋼材,ボーキ,秘書艦,司令部Lv");\r
}\r
- WriteNow("開発報告書",\r
- string.Join(",", name, type,\r
- values["api_item1"], values["api_item2"], values["api_item3"], values["api_item4"],\r
- Secretary(), _basic.api_level),\r
- "日付,開発装備,種別,燃料,弾薬,鋼材,ボーキ,秘書艦,司令部Lv");\r
+ }\r
+\r
+ private IEnumerable<ItemSpec> CreateSpecList(dynamic json)\r
+ {\r
+ var fail = new ItemSpec\r
+ {\r
+ Name = "失敗",\r
+ TypeName = ""\r
+ };\r
+ if (json.api_get_items())\r
+ {\r
+ return ((dynamic[])json.api_get_items).Select(entry =>\r
+ entry.api_id != -1 ? _itemInfo.GetSpecByItemId((int)entry.api_id) : fail);\r
+ }\r
+ return new[]\r
+ {\r
+ json.api_slot_item()\r
+ ? _itemInfo.GetSpecByItemId((int)json.api_slot_item.api_slotitem_id)\r
+ : fail\r
+ };\r
}\r
\r
public void InspectCreateShip(string request)\r
foreach (var entry in json)\r
{\r
var id = (int)entry.api_id;\r
+ if (id == -1)\r
+ continue;\r
_itemInventory[id] = new ItemStatus(id)\r
{\r
Spec = _itemMaster[(int)entry.api_slotitem_id],\r
\r
public void InspectCreateItem(dynamic json)\r
{\r
- if (!json.IsDefined("api_slot_item"))\r
- return;\r
- InspectSlotItem(json.api_slot_item);\r
+\r
+ if (json.api_slot_item())\r
+ {\r
+ InspectSlotItem(json.api_slot_item);\r
+ }\r
+ else if (json.api_get_items())\r
+ {\r
+ InspectSlotItem(json.api_get_items);\r
+ }\r
}\r
\r
public void InspectGetShip(dynamic json)\r
\r
public void CountCharge() => Increment(504);\r
\r
- public void CountCreateItem()\r
+ public void InspectCreateItem(string request)\r
{\r
- Increment(605);\r
- Increment(607);\r
+ var values = HttpUtility.ParseQueryString(request);\r
+ var count = values["api_multiple_flag"] == "1" ? 3 : 1;\r
+ Add(605, count);\r
+ Add(607, count);\r
}\r
\r
public void CountCreateShip()\r
_itemInfo.InspectCreateItem(data);\r
_materialInfo.InspectCreateIem(data);\r
_logger.InspectCreateItem(request, data);\r
- _questCounter.CountCreateItem();\r
+ _questCounter.InspectCreateItem(request);\r
return Update.Item | Update.QuestList;\r
}\r
if (url.EndsWith("api_req_kousyou/getship"))\r