{\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
Alv = entry.api_alv() ? (int)entry.api_alv : 0\r
};\r
}\r
- NowEquips = _itemInventry.Count;\r
}\r
\r
public void InspectCreateItem(dynamic json)\r
\r
public void InspectGetShip(dynamic json)\r
{\r
- NowShips += 1;\r
if (json.api_slotitem == null) // まるゆにはスロットがない\r
return;\r
InspectSlotItem(json.api_slotitem);\r
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