OSDN Git Service

カウンタの実装を変更してShipInfoからItemInfoへの依存をなくす
[kancollesniffer/KancolleSniffer.git] / KancolleSniffer / Model / ItemInfo.cs
index 5e05d47..e62905c 100644 (file)
@@ -20,63 +20,20 @@ namespace KancolleSniffer.Model
 {\r
     public class ItemInfo\r
     {\r
-        private int _nowShips, _nowEquips;\r
         private readonly ItemMaster _itemMaster;\r
         private readonly ItemInventry _itemInventry;\r
-        public int MaxShips { get; private set; }\r
-        public int MarginShips { get; set; }\r
-        public bool AlarmShips { get; set; }\r
-        public int MaxEquips { get; private set; }\r
-        public int MarginEquips { get; set; }\r
-        public bool AlarmEquips { get; set; }\r
-\r
-        public int NowShips\r
-        {\r
-            get => _nowShips;\r
-            set\r
-            {\r
-                if (MaxShips != 0)\r
-                {\r
-                    var limit = MaxShips - MarginShips;\r
-                    AlarmShips = AlarmShips || _nowShips < limit && value >= limit;\r
-                }\r
-                _nowShips = value;\r
-            }\r
-        }\r
-\r
-        public bool TooManyShips => MaxShips != 0 && NowShips >= MaxShips - MarginShips;\r
-\r
-        public int NowEquips\r
-        {\r
-            get => _nowEquips;\r
-            set\r
-            {\r
-                if (MaxEquips != 0)\r
-                {\r
-                    var limit = MaxEquips - MarginEquips;\r
-                    AlarmEquips = AlarmEquips || _nowEquips < limit && value >= limit;\r
-                }\r
-                _nowEquips = value;\r
-            }\r
-        }\r
-\r
-        public bool TooManyEquips => MaxEquips != 0 && NowEquips >= MaxEquips - MarginEquips;\r
+        public AlarmCounter Counter { get; }\r
 \r
         public ItemInfo(ItemMaster itemMaster, ItemInventry itemInventry)\r
         {\r
             _itemMaster = itemMaster;\r
             _itemInventry = itemInventry;\r
-            MarginShips = 4;\r
-            MarginEquips = 10;\r
+            Counter = new AlarmCounter(() => _itemInventry.Count) {Margin = 10};\r
         }\r
 \r
         public void InspectBasic(dynamic json)\r
         {\r
-            MaxShips = (int)json.api_max_chara;\r
-            var check = MaxEquips == 0;\r
-            MaxEquips = (int)json.api_max_slotitem;\r
-            if (check)\r
-                AlarmEquips = NowEquips >= MaxEquips - MarginEquips;\r
+            Counter.Max = (int)json.api_max_slotitem;\r
         }\r
 \r
         public void InspectMaster(dynamic json)\r
@@ -100,7 +57,6 @@ namespace KancolleSniffer.Model
                     Alv = entry.api_alv() ? (int)entry.api_alv : 0\r
                 };\r
             }\r
-            NowEquips = _itemInventry.Count;\r
         }\r
 \r
         public void InspectCreateItem(dynamic json)\r
@@ -112,7 +68,6 @@ namespace KancolleSniffer.Model
 \r
         public void InspectGetShip(dynamic json)\r
         {\r
-            NowShips += 1;\r
             if (json.api_slotitem == null) // まるゆにはスロットがない\r
                 return;\r
             InspectSlotItem(json.api_slotitem);\r
@@ -141,7 +96,6 @@ namespace KancolleSniffer.Model
         private void DeleteItems(IEnumerable<int> ids)\r
         {\r
             _itemInventry.Remove(ids);\r
-            NowEquips = _itemInventry.Count;\r
         }\r
 \r
         public ItemSpec GetSpecByItemId(int id) => _itemMaster[id];\r