/**
* 玩家尝试上架某商品
*
* @param material 验证用。建议在获取槽位物品后用此校验,避免错误。
* @param slot 玩家PlayerInventory的槽位
*/
abstract void tryPutOnSale(String material, int slot, int amount, int price);
/*
* 玩家尝试将某物品下架
* 当前暂不会被调用。
*
* @param uuid 商品的UUID
* */
abstract void tryPutOffShelves(UUID uuid);
/*
* 玩家尝试购买某商品
* 若玩家购买成功,请使用operateGoods方法隐藏已购买物品,以保证用户体验。
*
* @param uuid 商品的UUID
* */
abstract void tryPurchase(UUID uuid, int amount);
/**
* 列表请求物品(流式)
* 客户端拥有一个容器存储缓存,每当玩家浏览到底,将会触发该请求获得更多物品。
*
* @param sortType 排序类型,每个类型对应一个客户端缓存容器。
* 注意,BY_SEARCH_PRICE_ASC将会被分流至 requestSearchGoodsProperty,无需在此开发。
* @param index 需求的索引位置,通常为容器已缓存数量
* @param step 需求的数量,非必要回执数量请勿超出step。
* @return 若无更新,结果可以为NULL。
*/
abstract List<GoodsProperty> requestGoodsProperty(SortTypeEnum sortType, int index, int step);
/**
* 搜索列表请求物品(流式)
* 玩家在客户端搜索栏输入搜索关键词,并回车后,将会触发该请求获取更多物品。
*
* @param keyword 搜索栏填写的关键词
* @param index 需求的索引位置,通常为容器已缓存数量
* @param step 需求的数量,非必要回执数量请勿超出step。
* @return 若无更新,结果可以为NULL。
*/
abstract List<GoodsProperty> requestSearchGoodsProperty(String keyword, int index, int step);