local Attr = require("role.Proto").Attr
local BuyItem = require("topup.Proto").BuyItem

-- 碎片
SuiPian = {
	{"star",       1,       "byte"},     -- 星级
	{"camp",       1,       "byte"},     -- 阵营
 	{"fullcnt",    1,       "short"},    -- 碎片满的数量
    {"grade",      1,       "byte"},     -- 评分
    {"get",        1,       "byte"},     -- 条件
}

-- 套装信息
SuitNet = {
	{"id",       1,       "int"},           -- 套装号
	{"name",     1,       "string"},        -- 套装名
	{"num",      1,       "short"},         -- 第几件套
	{"attr",     4,        Attr},           -- 套装性能
	{"gemAttr",  4,     	Attr},          -- 宝石套装加成
}


EQUIP_WASH_ATTR_DATA = {
	{"attr",       1,       Attr},  --属性
	{"color",      1,       "byte"}, --品质, 1~5 绿, 蓝, 紫, 橙, 红
	{"lock",       1,       "byte"}, -- 是否锁定，0-未锁定，1锁定
}


EQUIP_EFFCECT_DATA = {
	{"attr",       1,       Attr},  	--属性
	{"name",       1,       "string"},  -- 特效名字
	{"color",      1,       "byte"}, 	--品质, 1~5 绿, 蓝, 紫, 橙, 红
}

EQUIP_EXCLUSIVE_DATA = {
	{"attr",       1,       Attr},  	--属性
	{"name",       1,       "string"},  -- 专属英雄名字
}


Equip = {
    {"uuid",       		1,       "string"},   		-- 唯一标识
    {"putUuid",    		1,   	"string"},   		-- 穿戴者uuid
    {"index",      		1,       "short"},    		-- 位置索引
	{"level",      		1,   	"byte"},     		-- 等级:星级
	{"exp",        		1,       "int"},   	 		-- 神器的经验值
    {"star",       		1,   	"byte"},     		-- 穿戴星级
	{"baseAttr",   		4,       Attr},    	 		-- 基础性能
    {"tzAttr",     		5,       EQUIP_WASH_ATTR_DATA}, -- 拓展属性
	{"suit",       		2,       SuitNet},    		-- 套装信息
	{"job",        		1,       "byte"},     		-- 职业专属
	{"jobAttr",    		10,      Attr},    	 		-- 职业专属属性
	{"camp",       		1,       "byte"},     		-- 阵营专属
	{"campAttr",   		2,       Attr},       		-- 阵营专属属性
	{"args",	   		2,		"int"},		 		-- 额外参数 如果是水晶的话，第一个位表示是否满级
	{"gemBaseAttr",		4,		Attr},		 		-- 宝石基础加成
	{"effects",	   		3,		EQUIP_EFFCECT_DATA},-- 特效(戒指、护符专属)
	{"heroExclusive",	1,		"string"},			-- 英雄专属(戒指、护符专属)
	{"suitID",       	1,   	"int"},     		-- 套装编号
	-- {"baseAttrMin",   	4,       Attr},    	 		-- 基础性能最小值
	-- {"baseAttrMax",   	4,       Attr},    	 		-- 基础性能最大值
}

FuwenSkillInfo = {
    {"skillID",     1,       "int"},     -- 符文技能id
    {"skillIcon",   1,       "int"},     -- 符文技能icon
    {"skillName",   1,       "string"},  -- 符文技能名字
    {"skillDesc",   1,       "string"},  -- 符文技能描述
    {"isRare",      1,       "int"},     -- 符文技能是否珍惜
    {"lv",          1,       "byte"},    -- 符文技能等级  1 初 2 中 3 高
    {"isOnlyBinshu",1,       "byte"},    -- 兵书专属
	{"isLock",     	1,       "byte"},    -- 是否锁定, 0-没有, 1- 锁定
}

FuwenAttrInfo = {
	{"attrArray",     	1,       Attr},
	{"isLock",       	1,       "byte"},     		-- 是否锁定, 0-没有, 1- 锁定
}


-- 符文
FuWen = {
	{"id",			1,		 "int"},	  --id
	{"index",    	1,       "int"},     -- 背包中索引
    {"fenjieGet",   1,       "int"},     -- 分解可获得的符文精华
    {"refine",      1,       "int"},     -- 精炼次数
    {"attrs",       3,       FuwenAttrInfo},      -- 符文属性
    {"skills",      2,       FuwenSkillInfo},     -- 符文技能
    {"zhandouli",	1,		"double"},	 -- 符文战力
}

-- 发送数据包
ItemData = {
	{"id",			1,		 "int"},	  --id
	{"cnt",         1,   	 "double"},   --数量
	{"mainType",    1,   	 "byte"},     --主类型 1英雄2道具3装备4-秘宝5-秘宝碎片
	{"subType",     1,   	 "byte"},     --子类型
	{"order",       1,   	 "int"},      --排序id
	{"icon",        1,       "int"},  	  --图标
	{"name",        1,       "string"},   --名字
	{"rare",        1,       "byte"},     --品质
	{"desc1",       1,       "string"},   --描述1：类别
	{"desc2",       1,       "string"},   --描述2：作用
	{"panelID",     1,       "short"},    --面板ID
	{"getway",      5,       "short"},    --获得途径
    {"priceIcon",   1,       "int"},      --出售道具类型icon
	{"price",       1,       "int"},      --出售价格 不一定是金币，可能是其它道具
	{"opflag",		1,		 "short"},	  --操作码
    {"score",       1,       "int"},      --评分
	{"equip",       2,       Equip},      --装备
    {"suipian",     2,       SuiPian},    --碎片
	{"fuwen",		2,       FuWen},      --符文
	{"isShow",      1,       "byte"},     --是否在背包中显示  1 不显示
    {"effects",     1,       "int"},      --特效id
	{"sourceType",  1,       "short"},    --来源, 默认为0， 月光宝盒为1
}

-- 下发背包道具（注意这里会分包）
GC_BAG_LIST = {
	{"list",      30,   ItemData}, 
}

-- 道具背包改变
GC_ITEM_BAG_CHANGE = {
	{"itemID",     1,	"int"},
	{"itemCnt",    1,	"double"},
	{"itemData",   2,   ItemData},  -- 只有新增的时候长度为1 其他情况长度为0
}

-- 批量同步道具背包改变
GC_ITEM_BAG_LIST_CHANGE = {
	{"bStart",	 1,		"byte"},	-- 1开始 0
	{"bEnd",	 1,		"byte"},	-- 1结束 0
	{"tList",	  30,	ItemData},
}

-- 背包道具出售
CG_BAG_ITEM_SELL = {
	{"id",                1,      "int"},
	{"cnt",               1,      "int"},
}

-- 背包道具出售成功
GC_BAG_ITEM_SELL = {
	{"id",                1,      "int"},
	{"cnt",               1,      "int"},
}

-- 装备道具出售
CG_BAG_EQUIP_SELL = {
	{"bagIndex",          1,      "int"},
}

-- 根据品质出售装备
CG_BAG_EQUIP_SELL_QUALITY = {
    {"quality",          1,      "string"},
}

-- 根据品质出售装备
GC_BAG_EQUIP_SELL_QUALITY = {

}

-- 请求碎片英雄信息预览
CG_SUIPIAN_HERO_QUERY = { 
	{"id",			  1,      "int"},
}

GC_SUIPIAN_HERO_QUERY = {
	{"id",            1,      "int"},
	{"heroSimple",    1,      require("hero.Proto").HeroSimple},
}

-- 碎片合成
CG_SUIPIAN_SUMMON = {
	{"itemID",        1,      "int"},
	{"itemCnt",       1,      "int"},
}

-- 碎片召唤成功
GC_SUIPIAN_SUMMON = {
	{"isHero",		  1,		"byte"}, --1是英雄 0不是英雄
	{"heroList",	  100,		require("hero.Proto").HeroSimple},	
	{"list",		  100,		ItemData},
	{"fenJieList",	  50,		ItemData},	-- 自动分解获得
}

CG_ITEM_USE = {
	{"id",                1,      "int"},
	{"cnt",               1,      "int"},   --选择物品数量
}

GC_ITEM_USE = {
	{"id",                1,      "int"},	
}

-- 宝箱信息返回
GC_BOX_QUERY = {
    {"item", 50, ItemData},
}

-- 获取宝箱物品
CG_BOX_GET_ITEM = {
    {"itemID", 1, "int"},
	{"index",  1, "int"},
    {"cnt",    1, "int"},
}

-- 道具购买查询(买1/10个)
CG_ITEM_BUY_QUERY = {
	{"id",     	  1, "int"},
}

GC_ITEM_BUY_QUERY = {
	{"id",        1, "int"},
	{"item",      2, ItemData},
	{"canBuy",    2, "int"},
	{"need",      2, ItemData},
	{"needTwo",   2, ItemData}
}

-- 道具购买
CG_ITEM_BUY  = {
	{"id",         1, "int"},
	{"buyType",    1, "int"},	-- 购买1	/10个
	{"cnt",        1, "int"},	-- 购买x组
}
GC_ITEM_BUY = {
	{"id",         1, "int"},	
}

-- 碎片英雄召唤预览
CG_SUIPIAN_HERO_SUMMON_QUERY = { 
	{"id",   1,   "int"},  --道具id
}

GC_SUIPIAN_HERO_SUMMON_QUERY = {
    {"heroSimple",   50,  require("hero.Proto").HeroSimple}
}

GC_SUIPIAN_ITEM_SUMMON_QUERY = {
	{"items", 50, ItemData},
}

-- 通用道具获得
GC_ITEM_GET_LIST = {
	{"popupType",  1,   "byte"},  -- 弹窗类型  0 通用弹窗    1 飘窗
	{"list",  50, ItemData}
}

-- 钻石不足弹出充值面板通用协议
GC_BAG_NORMB = {}



CG_ITEM_SUIPIAN_GETWAR_BY_HERO_ID = {
    {"id",   1, "int"},
    {"camp", 1, "byte"},
    {"star", 1, "byte"},
}

GC_ITEM_SUIPIAN_GETWAR_BY_HERO_ID = {
    {"net",  1, ItemData},
}

-- 根据id获取ItemData
CG_ITEM_GET_BY_ID = {
    {"type",1,"byte"},              -- 类型 1 符文背包 2 普通背包
    {"index",1,"int"},              -- 背包位置
    {"id",1,"int"},                 -- 道具ID
    {"uuid",1,"string"},            -- 玩家uuid
}

GC_ITEM_GET_BY_ID = {
    {"item",1,ItemData},
}

CG_ITEM_GET_BY_ITEM_ID = {
    {"id",1,"int"},                 -- 道具ID
}

GC_ITEM_GET_BY_ITEM_ID = {
    {"item",1,ItemData},
}


-- 通用道具购买
CG_ITEM_BUY_QUERY = {
    {"itemID",1,"int"},         -- 要购买的道具 id
}

GC_ITEM_BUY_QUERY = {
    {"need",1,ItemData},         -- 花费的道具
    {"get",1,ItemData},          -- 获得的道具
}

CG_ITEM_BUY_DO = {
    {"itemID",1,"int"},         -- 购买的道具id
    {"itemCnt",1,"int"},        -- 购买的道具数量
}

GC_ITEM_BUY_DO = {
    {"ret",1,"byte"},           -- 0 购买成功  1 购买失败
}

--碎片一键合成
CG_SUIPIAN_SYNTHESIS = {
	{"type",	1,	"byte"},           -- 1-英雄， 2-装备, 3-皮肤, 4-秘宝
}

--碎片一键合成结果通知
GC_SUIPIAN_SYNTHESIS = {
	{"status",1,"int"}, --碎片一键合成结果通知刷新 0:合成成功 1：合成失败
}


Skin_Info = {
	{"Id", 				1,		"int"},
	{"attrs", 			5,		Attr},
}

Skin_Show_Info = {
	{"id", 				1,		"int"},
	{"desc", 			1,		"string"},
	{"keepTime", 		1,		"int"},
	{"name", 			1,		"string"},
	{"camp", 			1,		"int"},
	{"attrs", 			5,		Attr},
}

SkinBuyData = {
	{"id", 				1,		"int"},
	{"buyItem", 		1,		BuyItem},
	{"skinData", 		1,		Skin_Info},
	{"Iconframe", 		1,		Skin_Show_Info},
}


-- 发送合成道具对应的皮肤信息
GC_ITEM_SKIN_INFO = {
	{"nItemID", 1,	"int"},
	-- {"data",	1,	"string"}
	{"data",	10,	SkinBuyData},
	{"isEnd",	1,	"byte"},      -- 0-否，1-是
	{"isStart",	1,	"byte"},      -- 0-否，1-是
}

-- 选择对应的皮肤
CG_ITEM_CHOSE_SKIN = {
	{"nSkinID",	1,		"int"},		-- 选择的皮肤ID
	{"nItemID",	1,		"int"},		-- 物品ID
}

CG_DUIHUANG_QUERY = {
	{"nID",		1,		"int"},		-- 物品ID
}

GC_DUIHUANG_QUERY = {
	{"nUseNum",		1,		"int"},		-- 消耗物品数量
	{"ItemData",	1,		ItemData},
}

CG_DUIHUANG_DO = {
	{"nID",		1,		"int"},		-- 物品ID
	{"nNum",	1,		"int"},		-- 兑换数量
}


-------------------------收纳箱---------------------------------

RECYCLE_ITEM = {
	{"id",			1,		"int"},		-- 物品ID
	{"recycleVal",	1,		"short"},	-- 回收值
}
--查询
CG_RECYCLE_QUERY = {}

GC_RECYCLE_QUERY = {
	{"currentLevel",	1,		"short"},		-- 当前等级
	{"maxLevel",		1,		"short"},		-- 最高等级
	{"currentExp",		1,		"int"},			-- 当前经验值
	{"nextLvExp",		1,		"int"},			-- 升到下一级所需经验
	{"currentLvAttrs",	6,		Attr},			-- 当前等级加成属性
	{"nextLvAttrs",		6,		Attr},			-- 下一级加成属性
}

CG_RECYCLE_GET_RECYCLE_LIST = {}
GC_RECYCLE_GET_RECYCLE_LIST = {
	{"recycleList",		50,		RECYCLE_ITEM},	-- 可回收道具列表
	{"isStart",			1,		"byte"},      	-- 0-否，1-是
	{"isEnd",			1,		"byte"},      	-- 0-否，1-是
}


--回收道具
CG_RECYCLE_RECYCLEITEM = {
	{"recycleItemStr",		1,		"string"},	-- 回收道具信息, 格式:"道具Id-数量|道具Id-数量"
}