private void ItemButtonsOnButtonClicked(int buttonIndex)
        {
            if (_editingItem == buttonIndex)
            {
                return;
            }

            Refresh();

            var clickedItem = _currentItems[buttonIndex];
            var baseItem    = Item.Items.First(item => item.ID == clickedItem.ID);

            var itemIndex = Item.Items.ToList().IndexOf(baseItem);

            ComboItemList.SelectedIndex = itemIndex;
            ComboItemList.KeyDown      += ItemEditor_KeyDown;

            TextItemCount.Text = clickedItem.Count.ToString();

            _itemButtons.SetContent(buttonIndex, PanelEditItem);
            _editingItem = buttonIndex;

            TextItemCount.SelectionStart  = 0;
            TextItemCount.SelectionLength = TextItemCount.Text.Length;

            TextItemCount.Focus();
        }
        public void Refresh()
        {
            _refreshing   = true;
            _editingItem  = -1;
            _currentItems = Item.ReadItems();

            // Refresh inventory items
            for (int i = 0; i < _currentItems.Length; i++)
            {
                if (_currentItems[i].ID == 0xFF)
                {
                    // Empty slot
                    _itemButtons.SetContent(i, "< EMPTY >");
                }
                else
                {
                    // Show item name and count
                    _itemButtons.SetContent(i, _currentItems[i].Name + " x" + _currentItems[i].Count);
                }
            }

            // Refresh key items and al bhed dictionaries
            var keyItemData = GameMemory.Read <byte>(_offsetKeyItem, 8, false);
            var alBhedData  = GameMemory.Read <byte>(_offsetAlBhed, 4, false);

            _keyItemState = BitHelper.GetBitArray(keyItemData, 58);
            _alBhedState  = BitHelper.GetBitArray(alBhedData, 26);

            // Key Items
            for (int i = 0; i < KeyItem.KeyItems.Length - 1; i++)
            {
                if (_keyItemState[KeyItem.KeyItems[i].BitIndex])
                {
                    // Key item owned
                    _keyItemButtons.Buttons[i].Foreground = _trueKeyItemBrush;
                    _keyItemButtons.SetContent(i, $"{KeyItem.KeyItems[i].Name}");
                }
                else
                {
                    // Key item not owned
                    _keyItemButtons.Buttons[i].Foreground = _falseKeyItemBrush;
                    _keyItemButtons.SetContent(i, $"{KeyItem.KeyItems[i].Name}");
                }
            }

            // Al Bhed Dictionaries
            for (int i = 0; i < 26; i++)
            {
                (PanelAlBhed.Children[i] as CheckBox).IsChecked = _alBhedState[i];
            }
            _refreshing = false;
        }
        public BlitzballPlayerEditor()
        {
            InitializeComponent();

            foreach (var player in BlitzballValues.Players)
            {
                TreeBlitzPlayers.Items.Add(new TreeViewItem()
                {
                    Header = player.Name
                });
            }

            KnownTechs.Content = _buttons;
            for (int i = 0; i < BlitzballValues.Techs.Length; i++)
            {
                _buttons.SetContent(i, BlitzballValues.Techs[i].Name);
            }

            _buttons.ButtonClicked += ButtonsOnButtonClicked;
        }