OSDN Git Service

緊急修理資材の数を装備一覧に表示する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Thu, 16 Jan 2020 10:51:04 +0000 (19:51 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Thu, 16 Jan 2020 10:51:04 +0000 (19:51 +0900)
KancolleSniffer/Model/ItemInfo.cs
KancolleSniffer/Model/ItemMaster.cs
KancolleSniffer/Sniffer.cs

index dd3d488..7694521 100644 (file)
@@ -22,6 +22,8 @@ namespace KancolleSniffer.Model
     {\r
         private readonly ItemMaster _itemMaster;\r
         private readonly ItemInventory _itemInventory;\r
+        private readonly Dictionary<int, int> _useItem = new Dictionary<int, int>();\r
+\r
         public AlarmCounter Counter { get; }\r
 \r
         public ItemInfo(ItemMaster itemMaster, ItemInventory itemInventory)\r
@@ -62,6 +64,14 @@ namespace KancolleSniffer.Model
             }\r
         }\r
 \r
+        public void InspectUseItem(dynamic json)\r
+        {\r
+            foreach (var entry in json)\r
+            {\r
+                _useItem[(int)entry.api_id] = (int)entry.api_count;\r
+            }\r
+        }\r
+\r
         public void InspectCreateItem(dynamic json)\r
         {\r
 \r
@@ -117,10 +127,24 @@ namespace KancolleSniffer.Model
                 item.Holder = new ShipStatus();\r
         }\r
 \r
-        public ItemStatus[] ItemList => _itemInventory.AllItems.ToArray();\r
+        public ItemStatus[] ItemList => _itemInventory.AllItems.Concat(UseItemList).ToArray();\r
 \r
         public string GetUseItemName(int id) => _itemMaster.GetUseItemName(id);\r
 \r
+        private const int EmergencyRepairId = 91;\r
+\r
+        private IEnumerable<ItemStatus> UseItemList =>\r
+            Enumerable.Repeat(new ItemStatus\r
+            {\r
+                Spec = new ItemSpec\r
+                {\r
+                    Type = 31,\r
+                    Id = 10000 + EmergencyRepairId,\r
+                    Name = _itemMaster.GetUseItemName(EmergencyRepairId)\r
+                },\r
+                Holder = new ShipStatus()\r
+            }, _useItem.TryGetValue(EmergencyRepairId, out var count) ? count : 0);\r
+\r
         public void InjectItemSpec(IEnumerable<ItemSpec> specs)\r
         {\r
             foreach (var spec in specs)\r
index eafb037..69fe6d6 100644 (file)
@@ -63,6 +63,6 @@ namespace KancolleSniffer.Model
             set => _itemSpecs[id] = value;\r
         }\r
 \r
-        public string GetUseItemName(int id) => _useItemName[id];\r
+        public string GetUseItemName(int id) => _useItemName.TryGetValue(id, out var name) ? name : "";\r
     }\r
 }
\ No newline at end of file
index 7679e43..8c1a147 100644 (file)
@@ -234,6 +234,7 @@ namespace KancolleSniffer
             if (url.EndsWith("api_get_member/require_info"))\r
             {\r
                 _itemInfo.InspectSlotItem(data.api_slot_item, true);\r
+                _itemInfo.InspectUseItem(data.api_useitem);\r
                 _dockInfo.InspectKDock(data.api_kdock);\r
                 return Update.None;\r
             }\r
@@ -248,6 +249,11 @@ namespace KancolleSniffer
                 _itemInfo.InspectSlotItem(data, true);\r
                 return Update.Item;\r
             }\r
+            if (url.EndsWith("api_get_member/useitem"))\r
+            {\r
+                _itemInfo.InspectUseItem(data);\r
+                return Update.Item;\r
+            }\r
             if (url.EndsWith("api_get_member/kdock"))\r
             {\r
                 _dockInfo.InspectKDock(data);\r