OSDN Git Service

艦娘の装備が任務で消滅したときに例外が発生するのを直す
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 31 Jul 2016 11:52:32 +0000 (20:52 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Mon, 1 Aug 2016 13:41:06 +0000 (22:41 +0900)
KancolleSniffer.Test/SnifferTest.cs
KancolleSniffer/ItemInfo.cs
KancolleSniffer/ShipInfo.cs

index 8895f8f..faaf9ba 100644 (file)
@@ -570,9 +570,12 @@ namespace KancolleSniffer.Test
         [TestMethod]\r
         public void CountItem()\r
         {\r
-            var sniffer = new Sniffer();\r
-            SniffLogFile(sniffer, "createitem_001");\r
-            PAssert.That(() => sniffer.Item.NowEquips == 900);\r
+            var sniffer1 = new Sniffer();\r
+            SniffLogFile(sniffer1, "createitem_001");\r
+            PAssert.That(() => sniffer1.Item.NowEquips == 900);\r
+            var sniffer2 = new Sniffer();\r
+            SniffLogFile(sniffer2, "createship_001");\r
+            PAssert.That(() => sniffer2.Item.NowEquips == 904);\r
         }\r
 \r
         /// <summary>\r
index 9e03712..c8c1828 100644 (file)
@@ -533,7 +533,7 @@ namespace KancolleSniffer
                 InspectSlotItem(json.api_after_slot);\r
             if (!json.api_use_slot_id())\r
                 return;\r
-            DeleteItems(((int[])json.api_use_slot_id));\r
+            DeleteItems((int[])json.api_use_slot_id);\r
         }\r
 \r
         public void DeleteItems(ItemStatus[] items)\r
@@ -550,22 +550,15 @@ namespace KancolleSniffer
             }\r
         }\r
 \r
-        public void CountNewItems(int[] ids)\r
-        {\r
-            foreach (var id in ids.Where(id => id != -1 && !_itemInfo.ContainsKey(id)))\r
-            {\r
-                _itemInfo[id] = new ItemStatus(id);\r
-                NowEquips++;\r
-            }\r
-        }\r
-\r
-        public string GetName(int id) => _itemInfo[id].Spec.Name;\r
-\r
-        public int GetItemId(int id) => _itemInfo[id].Spec.Id;\r
-\r
         public ItemSpec GetSpecByItemId(int id) => _itemSpecs[id];\r
 \r
-        public ItemStatus GetStatus(int id) => _itemInfo[id];\r
+        public string GetName(int id) => GetStatus(id).Spec.Name;\r
+\r
+        public ItemStatus GetStatus(int id)\r
+        {\r
+            ItemStatus item;\r
+            return _itemInfo.TryGetValue(id, out item) ? item : new ItemStatus(id);\r
+        }\r
 \r
         public ItemStatus[] GetItemListWithOwner(ShipStatus[] shipList)\r
         {\r
index a7e622c..b7f90e0 100644 (file)
@@ -347,7 +347,6 @@ namespace KancolleSniffer
                     Lucky = (int)entry.api_lucky[0],\r
                     Locked = entry.api_locked() && entry.api_locked == 1\r
                 };\r
-                _itemInfo.CountNewItems((int[])entry.api_slot);\r
             }\r
         }\r
 \r