content: package emu.grasscutter.game.props.ItemUseAction;
  
  import emu.grasscutter.data.GameData;
  import emu.grasscutter.game.inventory.GameItem;
  import emu.grasscutter.game.props.ActionReason;
  
  public abstract class ItemUseSelectItems extends ItemUseAction {
      protected static final int INVALID = -1;
      protected int[] optionItemIds;
  
      protected int getItemId(int index) {
          if ((optionItemIds == null) || (index < 0) || (index > optionItemIds.length)) return INVALID;
          return this.optionItemIds[index];
      }
  
      protected int getItemCount(int index) {
          return 1;
      }
  
      protected GameItem getItemStack(int index, int useCount) {
          int id = this.getItemId(index);
          int count = this.getItemCount(index);
          if (id == INVALID || count == INVALID) return null;
  
          var item = GameData.getItemDataMap().get(id);
          if (item == null) return null;
  
          return new GameItem(item, count * useCount);
      }
  
      @Override
      public boolean useItem(UseItemParams params) {
          var itemStack = this.getItemStack(params.optionId - 1, params.count);
          if (itemStack == null) return false;
  
          return params.player.getInventory().addItem(itemStack, ActionReason.Shop);
      }
  }
  