syntax = "proto2";

package VoiceTeamFightResult;

option java_package = "com.miaole.live.protocol.response";
option java_outer_classname = "VoiceTeamFightResult";


//分组信息
message GroupInfo {
  repeated UserInfo leftTeamUserInfo = 1;
  repeated UserInfo rightTeamUserInfo = 2;
}

message UserInfo {
  optional string userId = 1;// 用户ID
  optional string headUrl = 2; // 头像URL
  optional string nickName = 3; // 用户昵称
}

// 团队PK信息汇总
message TeamFightInfo {
  optional string roomId = 1;// 房间Id;
  optional int32 duration = 2;// 对战时长，单位秒
  optional int32 type = 3;// 消息类型，0-邀战；5-对战中；6-惩罚中
  optional bool isRandom = 4;// 是否随机
  optional string title = 5;// 邀战标题
  optional string content = 6;// 邀战内容
  optional int32 pkKillMomentEnd = 7; // 斩杀结束 0 否 1是
  repeated TeamFightRankData list = 8; //左右队伍团战PK信息
  optional StartFightUserInfo startFightUserInfo = 9; //开启对战用户信息
  optional string pkId = 10;// 房间pk流水Id;
}

// 一方对战排行信息（广播通用）
message TeamFightRankData {
  optional int32 teamId = 1; // 队伍ID 左边 1 右边 2
  optional int32 killMomentStatus = 2; // -1 没开启斩杀 0 未开始 1 激活中 2 未激活 3 已退出
  optional int32 remainSecondToEnterKillMoment = 3; // 进入斩杀时刻的剩余秒数，大于0时显示
  optional int32 pkLeadValue = 4;   // 激活斩杀状态所需的PK差值
  optional int32 remainSecondToSuccessKill = 5; // 斩杀成功剩余秒数
  optional int64 total = 6;// 对战分数
  optional int64 targetPkValue = 7;// 对方对战分数
  optional bool isChange = 8;// 沙发位用户是否变化
  optional string propName = 9;  // 道具名称 小血瓶/大血瓶
  optional int32 propCountDown = 10; // 道具剩余时间,秒
  optional string bufferText = 11; // 道具增益比率:20%,30%
  optional TeamPkUserInfo teamPkUserInfo = 12;
}

// 开启对战用户信息
message StartFightUserInfo {
  optional string userId = 1;// 用户ID
  optional bool online = 2; // 是否在线
  optional string userUrl = 3;// 用户头像
  optional string userName = 4;// 用户昵称
  optional string headFrameId = 5;// 头像框ID
  optional int32 sex = 6; // 性别
  optional string  haloAnimationFile = 7; //头像光圈动画
  optional string micShadowFile = 8; //麦位光影动画文件
}

// 团队对战用户信息
message TeamPkUserInfo {
  repeated TeamPkRankUserInfo userInfos = 1;// 对战排行用户列表
  repeated TeamMemberInfo memberInfos = 2;//团队成员信息
}

// 团队对战成员信息（获取对战信息全量返回 后续对战广播只返回部分数据（userId和score），没有返回部分前端不用更新信息）
// 语音房上麦/下麦/开麦/关麦操作 通过广播将团战成员信息全量返回
message TeamMemberInfo {
  optional string userId = 1;// 用户ID
  optional int64 score = 2;// 分数
  optional bool online = 3; // 是否在线
  optional int32 position = 4; //mic的位置
  optional bool openMic = 5; // 是否开麦
  optional string userUrl = 6;// 用户头像
  optional string userName = 7;// 用户昵称
  optional string headFrameId = 8;// 头像框ID
  optional string headStampId = 9; //头像贴，头像表情id
  optional int32 sex = 10; // 性别
  optional string haloAnimationFile = 11; //头像光圈动画
  optional string micShadowFile = 12; //麦位光影动画文件
}

// 参与pk送礼用户top
message TeamPkRankUserInfo {
  optional string userId = 1;// 用户id
  optional string userUrl = 2;// 用户头像
  optional string userName = 3;// 用户昵称(传参选择返回)
  optional int32 funLevel = 4;//娱乐等级(待定)
  optional int64 score = 5;// 分数
  optional string headStampId = 6; //头像贴，头像表情id(待定)
  optional bool isWarriorCloak = 7;// 是否开启勇者斗篷
}

// pk结果广播
message TeamPkResultBroadcast {
  optional int64 leftTeamTotal = 1;// 左边总分数
  optional int64 rightTeamTotal = 2;// 对战方总分数
  optional int32 type = 3;// 消息类型 ，6-惩罚中（对战结束通知），7-退出对战通知，8-对方逃跑通知
  optional int32 countDown = 4;// 惩罚倒计时，只有消息类型为6，才有值
  optional int32 pkKillMomentEnd = 5; // 斩杀结束 0 否 1是
  optional TeamPkUserInfo leftTeamPkUserInfo = 6;
  optional TeamPkUserInfo rightTeamPkUserInfo = 7;
}

// pk对战开始广播 参与人与非参与人收到广播内容不一样
message StartTeamFightBroadcast {
  optional string anchorId = 1; // 主播ID
  optional string nickName = 2; // 主播昵称
  optional int32 type = 3; // 收到广播人员类型 1 参与PK人员 2 非参与PK人员
  optional string broadcastContent = 4; // 广播内容
}

// 使用PK道具广播
message UsePkPropBroadcast {
  optional int32 teamId = 1;   // 加成团队ID 1 左边 2 右边
  optional string propId = 2;   // 道具id
  optional string propName = 3; // 道具名称
}

// pk结果战报广播
message TeamPkReportBroadcast {
  repeated UserInfo winTeamUserInfo = 1; // 胜利方昵称列表
  repeated UserInfo lostTeamUserInfo = 2; // 失败方昵称列表（只在当前房间公屏展示）
  optional bool highLight = 3; // 本场PK总值超过500元（配表）房间内显示高光时刻按钮/其它房间显示凑热闹
  optional string roomId = 4; // 跳转房间id
  optional string pkId = 5; // pk场次id
  optional bool pkKillMomentEnd = 6; //斩杀结束 0 否 1是
}

// 高光时刻
message TeamPkHighLightInfo {
  optional string date = 1; // 日期
  optional int64 score = 2; // 总分数
  optional bool pkKillMomentEnd = 3; //斩杀结束 0 否 1是
  repeated TeamMemberInfo memberInfos = 4; // 团队成员
}

// 团队成员进房/退房触发 （作废）
message TeamMemberOnlineBroadcast {
  optional string userId = 1; // 成员ID
  optional bool online = 2; // 是否在线
}