
local ItemData = require("bag.Proto").ItemData
local Attr = require("role.Proto").Attr


AB_CITY_INFO = {
    {"cityId",          1,      "int"},     -- 城池Id
    {"cityName",        1,      "string"},  -- 城池名字
    {"cityLv",          1,      "byte"},    -- 城池等级
    {"occupyPointNum",  1,      "byte"},    -- 我方占领该城池的据点数量
    {"occupyUnionName", 1,      "string"},  -- 占领城池的公会名字, 没有则为 ""
    {"adJoinCityArr",   4,      "int"},     -- 与当前城池相邻的城池Id列表
    {"cityState",       1,      "byte"},    -- 城池被占领状态, 0-全是npc, 1-被同一个公会占领 2-被不同公会占领
}


AB_POINT_BASE_INFO = {
    {"occupyUnionName",  1,      "string"},  -- 占领据点的玩家的公会名字, 没有则为 ""
    {"occupyPlayerName", 1,      "string"},  -- 占领据点的玩家名字
    {"power",            1,      "double"},  -- 防守者战力
    {"state",            1,      "byte"},    -- 0为不能挑战，1为可以挑战，2为可以防守布阵
}


AB_HERO_BASE_INFO = {
    {"heroBody",        1,     "int"},      -- 英雄Body
    {"heroStar",        1,      "byte"},    -- 英雄星级
    {"heroLv",          1,      "int"},     -- 英雄等级
    {"heroCamp",        1,      "int"},     -- 英雄种族
    {"heroIcon",        1,      "int"},     -- 英雄头像
    {"heroId",          1,      "int"},     -- 英雄Id
    {"heroQuality",     1,      "byte"},    -- 英雄品质
}


-- 玩家占领的据点数据
AB_PLAYER_OCCUPY_POINT_INFO = {
    {"cityIconId",      1,      "int"},     -- 城池造型 Id
    {"cityName",        1,      "string"},  -- 城池名字
    {"cityLv",          1,      "byte"},    -- 城池等级
    {"pointIdx",        1,      "byte"},    -- 据点索引
    {"power",           1,      "double"},  -- 防守战力
    {"heroArr",         6,      AB_HERO_BASE_INFO},   -- 防守者英雄阵容数据
    {"cityId",          1,      "int"},    -- 城池Id
}


AB_UNION_RANK_INFO = {
    {"name",            1,      "string"},  -- 名字
    {"power",           1,      "double"},  -- 战力
    {"cityNum",         1,      "short"},   -- 城池数量
    {"pointNum",        1,      "short"},   -- 据点数量
    {"rankAward",       2,      ItemData},  -- 排行奖励
}

AB_PLAYER_RANK_INFO = {
    {"name",            1,      "string"},  -- 名字
    {"power",           1,      "double"},  -- 战力
    {"pointNum",        1,      "short"},   -- 据点数量
    {"pointWeight",     1,      "short"},   -- 据点权重
    {"rankAward",       2,      ItemData},  -- 排行奖励
}



-- 获取状态
CG_AB_GetState = {}
GC_AB_GetState = {
    {"joinState",         1,      "byte"},   -- 报名状态, 0-可报名 1-已经报名, 2-不可报名
    {"systemState",       1,      "byte"},   -- 活动状态, 0-第一次开始前阶段 1-报名阶段, 2-战斗阶段, 3-结束阶段
}


-- 报名
CG_AB_JOIN = {}
GC_AB_JOIN = {
    {"Joinstate",       1,      "byte"},     -- 报名状态, 0-可报名 1-已经报名, 2-不可报名, 3-不可进入, 4- 活动即将开始, 5-不在报名时间
}




-- 查询所有城池信息
CG_AB_ALLCITY_QUERY = {}
GC_AB_ALLCITY_QUERY = {
    {"cityArr",            50,      AB_CITY_INFO}, -- 所有城池数据数组
    {"myBaseCityId",       1,      "short"},     -- 自己公会的出生点, 没有则为0
    {"myOccupyCityArr",    41,     "short"},     -- 自己公会占领的城池列表
    {"hasPointNum",        1,      "byte"},      -- 玩家当前占领的据点数量
    {"challengeTimes",     1,      "byte"},      -- 玩家当前挑战次数
    {"leftTime",           1,      "int"},       -- 距离下一次增加挑战次数的秒数, 挑战次数达到最大/玩家公会没有参加时, 该值为0
    {"myUnionAward",       1,      ItemData},    -- 累计产出道具
}


-- 查询某个城池详细信息
CG_AB_CITY_DETAILED_QUERY = {
    {"cityId",          1,      "int"},     -- 城池Id
}
GC_AB_CITY_DETAILED_QUERY = {
    {"cityId",          1,      "int"},     -- 城池Id
    {"cityLv",          1,      "byte"},    -- 城池等级
    {"cityIconId",      1,      "int"},     -- 城池造型 Id
    {"cityAward",       1,      ItemData},  -- 城池普通情况下每分钟产出道具信息
    {"myUnionAward",    1,      ItemData},  -- 我方占领所有据点累计每分钟产出道具信息, 没有占领城池则数量为0
    {"pointArr",        5,      AB_POINT_BASE_INFO}, -- 城池据点信息
    {"gatherState",     1,      "byte"},    -- 0-不能集结, 1-可集结, 2-已集结
    {"gatherLeftTime",  1,      "int"},     -- 集结冷却时间, 不显示时值为-1, 冷却完则为0
}



-- 查询某个据点守卫的详细信息
CG_AB_POINT_DETAILEDINFO_QUERY = {
    {"cityId",          1,      "int"},     -- 城池Id
    {"pointIdx",        1,      "byte"},    -- 据点索引
}
GC_AB_POINT_DETAILEDINFO_QUERY = {
    {"name",            1,      "string"},  -- 防守者名字
    {"power",           1,      "double"},  -- 防守者战力
    {"head",            1,      "int"},     -- 防守者头像
    {"headFrame",       1,      "int"},     -- 防守者头像框
    {"defLv",           1,      "int"},     -- 防守者等级
    {"heroArr",         6,      AB_HERO_BASE_INFO},     -- 防守者英雄阵容数据
    {"state",           1,      "byte"},    -- 0为不能挑战，1为可以挑战，2为可以防守布阵
}



-- 查询本公会出生城池信息
CG_AB_BASECITY_QUERY = {}
GC_AB_BASECITY_QUERY = {
    {"cityIconId",      1,      "int"},     -- 城池造型 Id
    {"cityAward",       1,      ItemData},  -- 当前城池每分钟产出道具信息
    {"myUnionAward",    1,      ItemData},  -- 本公会每分钟产出道具信息
    {"occupyPointNum",  1,      "short"},   -- 占领据点数量
    {"occupyCityLv2Num",1,      "byte"},    -- 占领2级城池数量
    {"occupyCityLv3Num",1,      "byte"},    -- 占领3级城池数量
    {"occupyCityLv4Num",1,      "byte"},    -- 占领4级城池数量
    {"occupyCityLv5Num",1,      "byte"},    -- 占领5级城池数量
}




-- 查询玩家占领的据点
CG_AB_MY_OCCUPY_POINT_QUERY = {}
GC_AB_MY_OCCUPY_POINT_QUERY = {
    {"myPointArr",      15,     AB_PLAYER_OCCUPY_POINT_INFO},     -- 玩家占领的据点数据
}




-- 玩家所有防守英雄的uuid
GC_AB_DEF_HERO_QUERY = {
    {"heroUuidArr",            60,      "string"},  -- 所有防守英雄uuid
}




-- 查询公会排行榜
CG_AB_UNION_RANK_QUERY = {}
GC_AB_UNION_RANK_QUERY = {
    {"unionRankArr",           8,      AB_UNION_RANK_INFO},  -- 所有排行榜数据
    {"myUnionRank",            1,      "byte"},             -- 我的公会排名
    {"myData",                 1,      AB_UNION_RANK_INFO},  -- 我的公会排名
}



-- 查询玩家排行榜
CG_AB_PLAYER_RANK_QUERY = {}
GC_AB_PLAYER_RANK_QUERY = {
    {"playerRankArr",           50,      AB_PLAYER_RANK_INFO},  -- 所有排行榜数据
    {"myRank",                  1,      "byte"},             -- 我的排名
    {"myData",                  1,      AB_PLAYER_RANK_INFO},  -- 我的排名
}

-- 发起/取消集结
CG_AB_GARHER = {
    {"cityId",          1,      "int"},     -- 目标城池Id
    {"opType",          1,      "byte"},    -- 操作类型, 1-集结, 2-取消集结
}
GC_AB_GARHER = {
    {"cityId",          1,      "int"},     -- 目标城池Id
    {"cityName",        1,      "string"},  -- 城池名字
    {"opType",          1,      "byte"},    -- 操作类型, 1-集结, 2-取消集结
}


-- 进攻某个城池的某个据点
CG_AB_POINT_CHAllENGE = {
    {"cityId",          1,      "int"},     -- 城池Id
    {"pointIdx",        1,      "byte"},    -- 据点索引
}


-- 更换某个据点的防守阵容
CG_AB_UPDATE_LINEUP = {
    {"type",	    1,		"byte"},--阵容类型
	{"formation",	1,	    "short"},--阵法
	{"heroList"	,	1,		"string"},--上阵英雄
	{"helpList"	,	1,		"string"},--辅助对象
    {"cityId",      1,      "int"},     -- 城池Id
    {"pointIdx",    1,      "byte"},    -- 据点索引
}

-- 放弃据点
CG_AB_LEAVE_POINT = {
    {"cityId",          1,      "int"},     -- 城池Id
    {"pointIdx",        1,      "byte"},    -- 据点索引
}

-- 获取据点的防守阵容数据
CG_AB_GET_POINT_LINEUP = {
    {"cityId",          1,      "int"},     -- 城池Id
    {"pointIdx",        1,      "byte"},    -- 据点索引
    {"type",	        1,		"byte"},    --阵容类型
	{"groupID",	        1,		"byte"},    --0 查询某个战斗类型，type为阵容类型 ，不等于0，查询某个组
    {"param",	        1,		"string"},  --0 查询参数
}


-- 获取士气数据
CG_AB_GET_MORALE_INFO = {}
GC_AB_GET_MORALE_INFO = {
    {"moraleState",        1,      "byte"},      -- 士气状态, 0-不可加, 1-可加, 2-已加
    {"moraleCost",         1,      ItemData},    -- 加士气消耗
    {"leftTime",           1,      "int"},       -- 士气剩余时间, 没有士气和士气结束时值为0
    {"moraleAttrs",        2,      Attr},        -- 士气属性加成
}

-- 加士气
CG_AB_MORALE_DO = {}


-- 据点羁绊查询
CG_AB_JIBAN_QUERY = {
    {"cityId",          1,      "int"},     -- 城池Id
    {"pointIdx",        1,      "byte"},    -- 据点索引
    {"combatType",      1,      "byte"},    -- 阵容类型
    {"heroID",		    1,		"int"},
}

-- 据点羁绊更新
CG_AB_JIBAN_UPDATE = {
    {"combatType",      1,      "byte"},    -- 阵容类型
    {"jibanList",	    1,		"string"},  -- 羁绊英雄uuid
    {"cityId",          1,      "int"},     -- 城池Id
    {"pointIdx",        1,      "byte"},    -- 据点索引
    {"heroIdArr",	    1,		"string"},  --羁绊英雄Id数组
}

-- 据点防守精灵查询
CG_AB_ELF_QUERY = {
    {"cityId",          1,      "int"},     -- 城池Id
    {"pointIdx",        1,      "byte"},    -- 据点索引
    {"combatType",      1,      "byte"},    -- 阵容类型
}
-- 据点精灵更新
CG_AB_ELF_UPDATE = {
	{"combatType",	    1,		"byte"},	-- 战斗类型
	{"elfPosArr",		4,		"int"},		-- 数组, key对应位置, value为精灵Id,如果当前位置没有精灵上阵,value为0
    {"cityId",          1,      "int"},     -- 城池Id
    {"pointIdx",        1,      "byte"},    -- 据点索引
}


-- 玩家登录时, 如果活动处于开启时间范围, 弹出提示
GC_AB_TIPS = {}



-- 异界寻宝查询
CG_AB_TREASURE_QUERY = {}
GC_AB_TREASURE_QUERY = {
    {"treasureLv",          1,      "int"},     -- 当前寻宝等级
    {"lotteryTimes",        1,      "int"},     -- 当前寻宝次数
    {"nextLvCondTimes",     1,      "int"},     -- 寻宝下一级需要的寻宝次数
    {"awardPool",           5,      ItemData},  -- 奖池道具
    {"lottery1Cost",        1,      ItemData},  -- 单抽消耗
    {"lottery2Cost",        2,      ItemData},  -- 双抽消耗
    {"lottery10Cost",       1,      ItemData},  -- 十连抽消耗
    {"lottery20Cost",       2,      ItemData},  -- 二十连抽消耗
    {"nextLvProArr",        18,     "int"},    -- 下一级道具概率变化值列表
    {"isMaxLv",             1,      "byte"},   -- 是否已经满级, 0-没有, 1-满级
}


-- 抽奖
CG_AB_TREASURE_LOTTERY = {
    {"lotteryNum",        1,      "byte"},     -- 寻宝次数, 1-单抽, 2-双抽, 10-十连, 20-二十连
}
GC_AB_TREASURE_LOTTERY = {
    {"lotteryTimes",        1,      "int"},     -- 当前寻宝次数
}