// 如果使用此注释，则使用proto3; 否则使用proto2
syntax = "proto3";

// 生成包名（服务器用）
option java_package = "com.game.arena.proto";
// 生成类名（服务器用）
option java_outer_classname = "ArenaProto";
// 引用apublicBean.proto
import "apublicBean.proto";
// 引用bus.proto
import "bus.proto";

// -------------------------------------Bean-------------------------------------

// 竞技场对手Bean
message ArenaFighterInfo{
	fixed64 playerId = 1;// 角色id
	string playerName = 2;// 角色名
	int32 force = 3;// 战力
	int32 lv = 4;// 等级
	int32 rank = 5;// 排名
	int32 fashionBody = 6;// 身体时装
	int32 fashionHand = 7;// 手部时装
	int32 fashionBorder = 8;// 头像框
}

// 竞技场防守日志
message ArenaDefLogInfo{
	fixed64 logId = 1;// 日志录像id
	string atkName = 2;// 攻击者名字
	int32 atkLv = 3;// 攻击者等级
	int32 lastRank = 4;// 我方之前排名
	int32 rank = 5;// 我方最终本次排名 
	bool isWin = 6;// 我方是否防守胜利
	fixed32 time = 7;// 防守时间（时间戳，秒）
}

// 跨服竞技场前三名玩家数据
message ArenaPublicWinInfo{
	string playerName = 1;// 角色名
	int32 rank = 2;// 参赛玩家获得排名
	string serverName = 3;// 服务器名字前缀
	int32 force = 4;// 战力
	int32 fashionBody = 5;// 身体时装
}

// 跨服竞技场战报信息
message ArenaPublicFightInfo{
	string playerName = 1;// 挑战者玩家名字
	string toPlayerName = 2;// 被挑战者玩家名字
	bool win = 3;// 挑战者是否胜利 true=胜利
	fixed64 fightLogId = 4;// 战斗日志id
	int32 round = 5;// 轮数
}

// -------------------------------------请求消息-------------------------------------

// 请求竞技场信息 msgId=114101		-----返回消息  msgId=114201
message ReqArenaInfo{
	
}

// 请求竞技场匹配刷新 msgId=114102		-----返回消息  msgId=114202
message ReqArenaMatch{
	
}

// 请求竞技场购买挑战次数 msgId=114103		-----返回消息  msgId=114203
message ReqArenaBuyNum{
	
}

// 请求竞技场战斗 msgId=114104		-----返回消息 msgId=108201
message ReqArenaFight{
	fixed64 toPlayerId = 1;// 对手角色id
	int32 toRank = 2;// 对手排名
	int32 rank = 3;// 我的排名
}

// 请求竞技场防守日志 msgId=114105		-----返回消息 msgId=114205
message ReqArenaDefLog{
	
}

// 请求竞技场排行 msgId=114106		-----返回消息 msgId=114206
message ReqArenaRank{
	
}

// 请求跨服竞技场报名 msgId=114111		-----返回消息 msgId=114211
message ReqArenaPublicSignUp{
	
}

// 请求跨服竞技场竞猜 msgId=114112		-----返回消息 msgId=114212
message ReqArenaPublicGuess{
	int64 toPlayerId = 1;// 被竞猜的玩家id
	int32 ys = 2;// 竞猜原石数量
}

// 请求跨服竞技场信息 msgId=114113		-----返回消息 msgId=114213
message ReqArenaPublicInfo{
	
}

// 请求跨服竞技场膜拜 msgId=114114		-----返回消息 msgId=114214
message ReqArenaPublicWorship{
	
}

// 请求跨服竞技场排行 msgId=114115		-----返回消息 msgId=114215
message ReqArenaPublicRank{
	int32 type = 1;// 排行榜类型 1=战力，2=热门
}

// 请求跨服竞技场战斗信息 msgId=114116		-----返回消息 msgId=114216
message ReqArenaPublicFightInfo{
	
}

// -------------------------------------返回消息-------------------------------------

// 返回竞技场信息 msgId=114201
message ResArenaInfo{
	int32 rank = 1;// 排名
	int32 num = 2;// 今日挑战剩余次数
	int32 buyNum = 3;// 今日购买挑战次数
	repeated ArenaFighterInfo fighterList = 4;// 对手列表
}

// 返回竞技场匹配刷新 msgId=114202
message ResArenaMatch{
	repeated ArenaFighterInfo fighterList = 1;// 对手列表
}

// 返回竞技场购买挑战次数 msgId=114203
message ResArenaBuyNum{
	int32 num = 1;// 今日挑战剩余次数
	int32 buyNum = 2;// 今日购买挑战次数
}

// 返回竞技场战斗结算 msgId=114204
message ResArenaResult{
	bool isWin = 1;// 是否胜利 true=胜利
	int32 rank = 2;// 当前排名
	int32 upRank = 3;// 上升排名
	int32 gems = 4;// 奖励钻石
	int32 gold = 5;// 奖励金币
}

// 返回竞技场防守日志 msgId=114205
message ResArenaDefLog{
	repeated ArenaDefLogInfo logList = 1;// 防守日志
}

// 返回竞技场排行榜 msgId=114206
message ResArenaRank{
	int32 selfRank = 1;// 自己的排名
	repeated RankPlayerInfo rankList = 2;// 排行榜列表
}

// 返回跨服竞技场报名 msgId=114211
message ResArenaPublicSignUp{
	
}

// 返回跨服竞技场竞猜 msgId=114212
message ResArenaPublicGuess{
	int64 toPlayerId = 1;// 被竞猜的玩家id
	int32 ys = 2;// 玩家竞猜的原石，注意：显示的时候需要客户端用此值加上本地的值更新显示
}

// 返回跨服竞技场信息 msgId=114213
message ResArenaPublicInfo{
	int32 time = 1;// 开始倒计时（秒）负数表示已开始
	bool isSignup = 2;// 是否已报名竞技场 true=已报名
	bool isWorship = 3;// 是否已膜拜 true=已膜拜
	repeated ArenaPublicWinInfo winList = 4;// 上一轮前三名列表
	repeated ArenaPublicSignupInfo signupList = 5;// 热门竞猜前三名列表
}

// 返回跨服竞技场膜拜 msgId=114214
message ResArenaPublicWorship{
	
}

// 返回跨服竞技场排行 msgId=114215
message ResArenaPublicRank{
	int32 type = 1;// 排行榜类型 1=战力，2=热门
	repeated ArenaPublicSignupInfo rankList = 2;// 返回跨服竞技场排行榜
	int32 toRank = 3;// 被竞猜的玩家排名(只有当竞猜了玩家，返回才有值)
	ArenaPublicSignupInfo toPlayerInfo = 4;// 被竞猜的玩家信息(只有当竞猜了玩家，返回才有值)
	int32 toYs = 5;// 我当前投注的原石(只有当竞猜了玩家，返回才有值)
}

// 返回跨服竞技场战斗信息 msgId=114216
message ResArenaPublicFightInfo{
	int64 guessPlayerId = 1;// 我竞猜的玩家唯一id，0表示没有竞猜，用于把自己或者竞猜放放在左边展示
	repeated ArenaPublicFightInfo fightInfoList = 2;// 我的战斗信息
	repeated ArenaPublicFightInfo guessInfoList = 3;// 竞猜战斗信息
}
