----------------------------------------------------------
-- 宝箱
----------------------------------------------------------

local Msg = require("core.Msg")
local Util = require("common.Util")
local Lang = require("common.Lang")
local Grid = require("bag.Grid")
local BagLogic = require("bag.BagLogic")
local ItemLogic = require("bag.ItemLogic")
local ItemDefine = require("bag.ItemDefine")
local Broadcast = require("broadcast.Broadcast")

-- 发送自选宝箱列表
function sendBoxList(human, list)	
	local msgRet = Msg.gc.GC_BOX_QUERY
	msgRet.item[0] = list and #list or 0
    for i = 1, msgRet.item[0] do
    	local itemID = list[i][1]
    	local itemCnt = list[i][2]
        local quality = list[i][3]
        Grid.makeItem(msgRet.item[i], itemID, itemCnt, nil, nil, nil, nil, quality)
    end 
    --Msg.trace(msgRet)
	Msg.send(msgRet, human.fd)
end

-- 自选宝箱-选择道具
function getBoxItem(human, itemID, sIndex, cnt)
	local itemConfig = ItemDefine.getConfig(itemID)
	if not itemConfig then
		return Broadcast.sendErr(human, Lang.ITEM_USE_ERR_CONFIG)
	end

	local cmdstr = itemConfig.cmd and itemConfig.cmd[1]
	if cmdstr ~= "box" then return end

    -- 检测数量
    local haveCnt = BagLogic.getItemCnt(human, itemID)
    if haveCnt <= 0 or haveCnt < cnt or cnt <= 0 then
       return Broadcast.sendErr(human, Lang.ITEM_USE_ERR_CONFIG)
    end

	local itemList = itemConfig.cmd[2]
    if not itemList[sIndex] then return end

	local sItemID = itemList[sIndex][1]
	local sItemCnt = itemList[sIndex][2]
    local quality = itemList[sIndex][3]
	if ItemDefine.getConfig(sItemID) == nil then
		return Broadcast.sendErr(human, Lang.ITEM_USE_ERR_CONFIG)
	end

	BagLogic.delItem(human, itemID, cnt, "item_use")
    
    local itemList = {}
	itemList[1] = {sItemID, sItemCnt * cnt, quality}
	BagLogic.addItemList(human, itemList, "useBox")


	ItemLogic.sendItemUse(human, itemID)	
end
