local FuncId = {
    FUNC_XUAN_BAO_FUSE = 1,     -- 神器融合功能开启
    FUNC_NINJA_SKILL = 2,       -- 忍法卷开启
    FUNC_TRAINING_VITALITY = 3, -- 练气
    FUNC_SUB_PROFESSION = 4,    -- 副职业
    FUNC_OWN_KONG_FU = 5,       -- 自创武功
    FUNC_RUNE = 6,              -- 神纹
    FUNC_EQUIP_UPGRADE = 7,     -- 锻造-装备提升
    FUNC_EQUIP_APPEND = 8,      -- 锻造-装备追加
    FUNC_EMBED = 9,             -- 锻造-开洞镶嵌
    FUNC_EMBED_QL = 10,         -- 锻造-龙魂
    FUNC_GEM_COMPOSE = 11,      -- 锻造-宝石合成
    FUNC_SOLIDIFY = 12,         -- 锻造-神魂/淬炼
    FUNC_REDUCEDMG = 13,        -- 锻造-神佑/加持
    FUNC_EQUIP_FEFINE = 14,     -- 锻造-神品精炼
    FUNC_MELTING_FURNACE = 15,  -- 锻造-熔炼
    FUNC_NEI_GONG = 16,         -- 内功
    FUNC_FACTION = 17,          -- 帮派
    FUNC_PEERAGE = 18,          -- 爵位
    FUNC_EQUIP_EFF = 24,        -- 装备铸灵

}

-- 新功能开启提示框配置
local BoxInfo = {
-- 1:神器融合功能
    [1] = {
        -- 提示框背景
        bg = "",
        -- 提示框光效
        dlgeffect = "artifacts_bg3",
        -- 功能对应图片
        img = "",
        -- 提示框和功能图片隐藏时间(需要比提示框关闭时间小)
        hidetime = 1000,
        -- 提示框关闭时间
        closetime = 3000,
        -- 提示框关闭后的光球(如不需要则下面变量都不需要)
        balleffect = "artifacts_guangqiu",
        -- 飞行时间(毫秒)
        flytime = 1000,
        -- 飞行类型:1为飞向对应控件
        flytype = 1,
        -- 控件id
        destination = "130-5228",
    },
-- 2:忍法卷功能
    [2] = {
        -- 提示框背景
        bg = "",
        -- 提示框光效
        dlgeffect = "artifacts_bg3",
        -- 功能对应图片
        img = "",
        -- 提示框和功能图片隐藏时间(需要比提示框关闭时间小)
        hidetime = 1000,
        -- 提示框关闭时间
        closetime = 3000,
        -- 提示框关闭后的光球(如不需要则下面变量都不需要)
        balleffect = "artifacts_guangqiu",
        -- 飞行时间(毫秒)
        flytime = 1000,
        -- 飞行类型:1为飞向对应控件
        flytype = 1,
        -- 控件id
        destination = "",
        -- 飞向的位置
        destinationX = 360,
        destinationY = 165,
    },
    [3] = {
        -- 提示框背景
        bg = "",
        -- 提示框光效
        dlgeffect = "artifacts_bg3",
        -- 功能对应图片
        img = "",
        -- 提示框和功能图片隐藏时间(需要比提示框关闭时间小)
        hidetime = 1000,
        -- 提示框关闭时间
        closetime = 3000,
        -- 提示框关闭后的光球(如不需要则下面变量都不需要)
        balleffect = "artifacts_guangqiu",
        -- 飞行时间(毫秒)
        flytime = 1000,
        -- 飞行类型:1为飞向对应控件
        flytype = 1,
        -- 控件id
        destination = "130-1503",
    },
    [4] = {
        -- 提示框背景
        bg = "",
        -- 提示框光效
        dlgeffect = "artifacts_bg3",
        -- 功能对应图片
        img = "",
        -- 提示框和功能图片隐藏时间(需要比提示框关闭时间小)
        hidetime = 1000,
        -- 提示框关闭时间
        closetime = 3000,
        -- 提示框关闭后的光球(如不需要则下面变量都不需要)
        balleffect = "artifacts_guangqiu",
        -- 飞行时间(毫秒)
        flytime = 1000,
        -- 飞行类型:1为飞向对应控件
        flytype = 1,
        -- 控件id
        destination = "130-5228",
    },
    [5] = {
        -- 提示框背景
        bg = "",
        -- 提示框光效
        dlgeffect = "artifacts_bg3",
        -- 功能对应图片
        img = "",
        -- 提示框和功能图片隐藏时间(需要比提示框关闭时间小)
        hidetime = 1000,
        -- 提示框关闭时间
        closetime = 3000,
        -- 提示框关闭后的光球(如不需要则下面变量都不需要)
        balleffect = "artifacts_guangqiu",
        -- 飞行时间(毫秒)
        flytime = 1000,
        -- 飞行类型:1为飞向对应控件
        flytype = 1,
        -- 控件id
        destination = "130-5228",
    },
    [6] = {
        -- 提示框背景
        bg = "",
        -- 提示框光效
        dlgeffect = "artifacts_bg3",
        -- 功能对应图片
        img = "",
        -- 提示框和功能图片隐藏时间(需要比提示框关闭时间小)
        hidetime = 1000,
        -- 提示框关闭时间
        closetime = 3000,
        -- 提示框关闭后的光球(如不需要则下面变量都不需要)
        balleffect = "artifacts_guangqiu",
        -- 飞行时间(毫秒)
        flytime = 1000,
        -- 飞行类型:1为飞向对应控件
        flytype = 1,
        -- 控件id
        destination = "130-5228",
    },
    [7] = {
        -- 提示框背景
        bg = "",
        -- 提示框光效
        dlgeffect = "artifacts_bg3",
        -- 功能对应图片
        img = "",
        -- 提示框和功能图片隐藏时间(需要比提示框关闭时间小)
        hidetime = 1000,
        -- 提示框关闭时间
        closetime = 3000,
        -- 提示框关闭后的光球(如不需要则下面变量都不需要)
        balleffect = "artifacts_guangqiu",
        -- 飞行时间(毫秒)
        flytime = 1000,
        -- 飞行类型:1为飞向对应控件
        flytype = 1,
        -- 控件id
        destination = "130-5228",
    },
    [8] = {
        -- 提示框背景
        bg = "",
        -- 提示框光效
        dlgeffect = "artifacts_bg3",
        -- 功能对应图片
        img = "",
        -- 提示框和功能图片隐藏时间(需要比提示框关闭时间小)
        hidetime = 1000,
        -- 提示框关闭时间
        closetime = 3000,
        -- 提示框关闭后的光球(如不需要则下面变量都不需要)
        balleffect = "artifacts_guangqiu",
        -- 飞行时间(毫秒)
        flytime = 1000,
        -- 飞行类型:1为飞向对应控件
        flytype = 1,
        -- 控件id
        destination = "130-5228",
    },
    [18] = {
        -- 提示框背景
        bg = "",
        -- 提示框光效
        dlgeffect = "artifacts_bg3",
        -- 功能对应图片
        img = "",
        -- 提示框和功能图片隐藏时间(需要比提示框关闭时间小)
        hidetime = 1000,
        -- 提示框关闭时间
        closetime = 3000,
        -- 提示框关闭后的光球(如不需要则下面变量都不需要)
        balleffect = "artifacts_guangqiu",
        -- 飞行时间(毫秒)
        flytime = 1000,
        -- 飞行类型:1为飞向对应控件
        flytype = 1,
        -- 控件id
        destination = "",
        -- 飞向的位置
        destinationX = 100,
        destinationY = 30,
    },
	
	-- 五行道脉开启
    [21] = {
        -- 提示框背景
        bg = "",
        -- 提示框光效
        dlgeffect = "artifacts_bg3",
        -- 功能对应图片
        img = "",
        -- 提示框和功能图片隐藏时间(需要比提示框关闭时间小)
        hidetime = 1000,
        -- 提示框关闭时间
        closetime = 3000,
        -- 提示框关闭后的光球(如不需要则下面变量都不需要)
        balleffect = "",
        -- 飞行时间(毫秒)
        flytime = 1000,
        -- 飞行类型:1为飞向对应控件
        flytype = 1,
        -- 控件id
        destination = "304-1541",--"1232-2025",
    },
	-- 海盗开启
    [22] = {
        -- 提示框背景
        bg = "",
        -- 提示框光效
        dlgeffect = "PirateJX_ui45",
        -- 功能对应图片
        img = "",
        -- 提示框和功能图片隐藏时间(需要比提示框关闭时间小)
        hidetime = 1000,
        -- 提示框关闭时间
        closetime = 3000,
        -- 提示框关闭后的光球(如不需要则下面变量都不需要)
        balleffect = "artifacts_guangqiu",
        -- 飞行时间(毫秒)
        flytime = 1000,
        -- 飞行类型:1为飞向对应控件
        flytype = 1,
        -- 控件id
        destination = "",
        -- 飞向的位置
        destinationX = 860,
        destinationY = 185,
		base=3,
    },
	
		-- 诸侯战争开启
    [23] = {
        -- 提示框背景
        bg = "",
        -- 提示框光效
        dlgeffect = "ZHWar6",
        -- 功能对应图片
        img = "",
        -- 提示框和功能图片隐藏时间(需要比提示框关闭时间小)
        hidetime = 1000,
        -- 提示框关闭时间
        closetime = 3000,
        -- 提示框关闭后的光球(如不需要则下面变量都不需要)
        balleffect = "artifacts_guangqiu",
        -- 飞行时间(毫秒)
        flytime = 1000,
        -- 飞行类型:1为飞向对应控件
        flytype = 1,
        -- 控件id
        destination = "579-40",
        -- 飞向的位置
        destinationX = 0,
        destinationY = 0,
		base=3,
    },
}


-- 功能开启条件
local Condition = {

}

-- 检查功能是否开启，功能未找到也返回true
-- 客户端根据该函数判定功能是否开启，如不符合预期，请检查该函数是否出错
-- 功能id，等级，转世次数，职业
local function TestCondition(id, lv, mete, pro, servertype)
	if (14 == id and (servertype >> 7) % 2 == 1) then
		--激情新服隐藏神品精炼标签按钮，这个按钮是指锻造界面上面那排按钮
		return false
	end

    -- 老兵新服隐藏神器融合功能
    if (((servertype >> 8) % 2 == 1 and (servertype >> 3) % 2 == 1)) or (((servertype >> 9) % 2 == 1 and (servertype >> 3) % 2 == 1)) then
        if FuncId.FUNC_XUAN_BAO_FUSE == id then
            return false
        end
    end

    -- 老兵服隐藏熔炼功能
    if ((servertype >> 8) % 2 == 1) then
        if FuncId.FUNC_MELTING_FURNACE == id or FuncId.FUNC_EQUIP_FEFINE == id or FuncId.FUNC_EQUIP_EFF == id then
            return false
        end
    end

    if (not Condition[id]) then
        return true
    elseif (Condition[id].pro and Condition[id].pro ~= pro / 1000) then
        return false
    -- 转世1次等级1级也满足转世0次等级2级的判定
    elseif (mete > Condition[id].mete) then
        return true
    elseif (lv < Condition[id].lv or mete < Condition[id].mete) then
        return false
    end
    return true
end

local function GetBoxInfo(param1, param2, default)
    local t = BoxInfo[param1]
    if (t == nil) then
        return default
    end
    
    if (t[param2] == nil) then
        return default
    end
    
    return t[param2]
end

local function Unload()
    GetBoxInfo = nil
    Condition = nil
end

local NewFuncOpenBox = {
    GetBoxInfo = GetBoxInfo,
    TestCondition = TestCondition,
    Unload = Unload,
}


-- global
NewFuncOpenBox_GetBoxInfo = NewFuncOpenBox.GetBoxInfo
NewFuncOpenBox_TestCondition = NewFuncOpenBox.TestCondition
NewFuncOpenBox_Unload = NewFuncOpenBox.Unload

return NewFuncOpenBox