public void ChangeSelect(PlayerSelectCommand command)
        {
            if (_items.Count < 2)
            {
                return;
            }

            InventoryData item = null;

            if (command.down)
            {
                item = _items
                       .Values
                       .Where(e => e.ID > _selectedItem.ID)
                       .FirstOrDefault();
            }
            else if (command.up)
            {
                item = _items
                       .Values
                       .Where(e => e.ID < _selectedItem.ID)
                       .LastOrDefault();
            }

            if (item != null)
            {
                _selectedItem.IsSelected = false;
                item.IsSelected          = true;

                _selectedItem = item;
                _changeItem.Invoke(new InventoryEventArgs(_selectedItem.Type));
            }
        }
        public void Add(InventoryType type, int count)
        {
            if (_items.ContainsKey(type))
            {
                _items[type].Count += count;
            }
            else
            {
                var data = new InventoryData(type, count);
                _items.Add(type, data);
                UpdateSelected();
            }

            _changeItem.Invoke(new InventoryEventArgs(type));
        }
        private void UpdateSelected()
        {
            if (_items.Count == 0)
            {
                _selectedItem = null;
                return;
            }

            if (_selectedItem == null || _selectedItem.Count == 0)
            {
                _selectedItem            = _items.First().Value;
                _selectedItem.IsSelected = true;

                _changeItem.Invoke(new InventoryEventArgs(_selectedItem.Type));
                return;
            }
        }