syntax = "proto2";

package VoiceRoomPkResult;

option java_package = "com.miaole.live.protocol.response";
option java_outer_classname = "VoiceRoomPkResult";


message OpenFightResult{
  optional bool openFlag = 1; // true 开
  optional int32 duration = 2; //对战时长，单位秒
  optional int32 pkMode = 3; // pk模式 1：单人pk 2：团队pk
}

// 邀战动作广播
message VoicePkActionBroadcast {
  optional VoicePkRoomInfo inviterRoomInfo = 1;// 邀请房间信息
  optional VoicePkAnchorInfo inviterAnchorInfo = 2;// 邀请主播信息
  optional VoicePkRoomInfo inviteeRoomInfo = 3;// 被邀请房间信息
  optional VoicePkAnchorInfo inviteeAnchorInfo = 4;// 被邀请主播信息
  optional int32 type = 5; // 消息类型，0-邀战；1-取消；2-同意；3-拒绝；4-准备中；5-对战中；9-网络问题，断开；10-邀战超时
  optional int32 duration = 6;// 对战时长，单位秒
  optional bool isRandom = 7;// 是否随机
  optional string title = 8;// 邀战标题
  optional string content = 9;// 邀战内容
  optional int32 waitFightDuration = 10;// 等待应答时长，单位秒
  optional int32 partyPKType = 11;// 音视频pk类型（兼容音视频pk），0-非音视频（默认），1-音视频vs语音，2-音视频vs音视频
}

message VoicePkRoomInfo{
  optional string roomId = 1;  // 房间id
  optional string roomName = 2;// 房间名称
  optional string roomUrl = 3; // 房间url
  optional string roomCuteNumber = 4;// 房间靓号
}

message VoicePkAnchorInfo{
  optional string anchorId = 1;     // 主播id
  optional string anchorName = 2;   // 主播昵称
  optional string anchorAvatar = 3; // 主播头像
  optional string headFrameId = 4; // 当前使用的头像框id
  optional int32 sex = 5; // 性别
  optional string headStampId = 6; //头像贴，头像表情id
  optional string  haloAnimationFile = 7; //头像光圈动画
  optional string micShadowFile = 8; //麦位光影动画文件
  optional string geoLocation = 9; // 地理位置
}


// 对战胜负信息广播
message VoicePkWinInfoBroadcast {
  optional string roomId = 1;// 我方Id
  optional int64 total = 2;// 我方总分数
  optional string fightRoomId = 3;// 对战方Id
  optional int64 fightTotal = 4;// 对战方总分数
  optional int32 type = 5;// 消息类型 ，6-惩罚中（对战结束通知），7-退出对战通知，8-对方逃跑通知
  optional int32 countDown = 6;// 惩罚倒计时，只有消息类型为6，才有值
  repeated VoicePkRankUserInfo userInfos = 7;// 对战排行用户列表
  optional int32 pkKillMomentEnd = 8; // 斩杀结束 0 否 1是
  optional string anchorId = 9;  // 我方主播ID
  optional string fightAnchorId = 10; // 对方主播ID
  
  repeated VoicePkRankUserInfo anchorInfos = 11;// 对战排行主播列表
  optional string roomName = 12;// 房间名称
  optional string fightRoomName = 13;// 对方房间名称
}


// 对战排行用户信息
message VoicePkRankUserInfo {
  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
}


// 对战直播间数据
message VoiceRoomPkDataInfo {
  optional string roomId = 1;// 房间Id;
  optional VoicePkRoomInfo inviterRoomInfo = 2;// 邀请者房间信息
  optional VoicePkAnchorInfo inviterAnchorInfo = 3;// 邀请者主播信息
  optional VoicePkRoomInfo inviteeRoomInfo = 4;// 被邀请者Id
  optional VoicePkAnchorInfo inviteeAnchorInfo = 5;// 被邀请者昵称
  optional int32 type = 6;// 消息类型，0-邀战；5-对战中；6-惩罚中
  optional int32 duration = 7;// 对战时长，单位秒
  optional bool isRandom = 8;// 是否随机
  optional string title = 9;// 邀战标题
  optional string content = 10;// 邀战内容
  optional string inquireGift = 11;// 盘TA礼物Id
  repeated VoicePkRankInfo list = 12;// 对战排行用户列表
  optional int32 inviterStreakCount = 13;// 邀请者连胜次数，大于1或小于-1，才需要显示
  optional int32 inviteeStreakCount = 14;// 被邀请者连胜次数，大于1或小于-1，才需要显示
  optional int32 pkKillMomentEnd = 15; // 斩杀结束 0 否 1是
  repeated PkMicInfo micInfos = 16; // 对方的麦位信息，已停用
  optional int32 invitePkAddTimeNoticeMoment = 17;// 约战pk加时距结束通知时刻,单位分
  optional int32 addTimeCount = 18;// 加时次数
  optional int64 occupyRemainTime = 19;// 攻占玩法，有效剩余时间(秒)
  repeated PKClosedAdverseVoiceInfo flags = 20;// 房间是否屏蔽对方声音状态列表
}


// 对战排行信息（广播通用）
message VoicePkRankInfo {
  optional string roomId = 1;// 房间Id
  optional int64 total = 2;// 对战分数
  optional bool isChange = 3;// 头三名是否变化
  repeated VoicePkRankUserInfo userInfos = 4;// 对战排行用户列表

  // 斩杀相关数据
  optional int32 killMomentStatus = 5; // -1 没开启斩杀 0 未开始 1 激活中 2 未激活 3 已退出
  optional int32 remainSecondToEnterKillMoment = 6; // 进入斩杀时刻的剩余秒数，大于0时显示
  optional int32 pkLeadValue = 7;   // 激活斩杀状态所需的PK差值
  optional int32 remainSecondToSuccessKill = 8; // 斩杀成功剩余秒数
  optional int64 targetPkValue = 9; // 对方的PK分数
  optional int32 boxValue = 10; // 下个触发宝箱的值
  optional int32 boxLevel = 11; // 宝箱等级

  optional string propName = 12;  // 道具名称 小血瓶/大血瓶
  optional int32 propCountDown = 13; // 道具剩余时间,秒
  optional string bufferText = 14; // 道具增益比率:20%,30%
    
  repeated PkRoomMicInfo pkRoomMicInfos = 15;// 麦位信息
}

// 可选择好友列表
message SelectedVoicePkFriendList {
  repeated SelectedVoicePkFriendVo list = 1;
}

// 对战好友信息
message SelectedVoicePkFriendVo {
  optional VoicePkRoomInfo roomInfo = 1; // 房间信息
  optional VoicePkAnchorInfo anchorInfo = 2; // 好友信息
}

// pk状态心跳广播
message VoicePkHeartBeatBroadcast {
  optional int32 type = 1;// 消息类型，5-对战中；6-惩罚中
  optional int32 duration = 2;// 对战倒计时，单位秒
  optional int32 pkMode = 3; // pk模式 1：单人pk 2：团队pk
  repeated PKClosedAdverseVoiceInfo flags = 4;// 房间是否屏蔽对方声音状态列表
}

// 对战逃跑广播
message VoicePkFleeBroadcast {
  optional string userId = 1;// 发起人Id
  optional string fightId = 2;// 对战方Id
  optional string roomId = 3; // 发起房间ID
  optional string fightRoomId = 4; // 对战房间ID
}

// 宝箱
message VoicePkBoxInfo{
  repeated VoicePkBoxDetail box = 1;
}

message VoicePkBoxDetail{
  optional string pkId = 1; // PK场次ID
  optional string boxLogId = 2; // 宝箱ID
  optional string roomId = 3; // 房间ID
  optional int32 countDown = 4; // 剩余倒计时
  optional int32 boxLevel = 5; // 宝箱等级
}

// 开启宝箱的响应
message OpenPkBoxResult{
  optional int32 boxLevel = 1;// 宝箱等级
  optional string boxName = 2;// 宝箱名称
  optional string giftId = 3; // 礼物ID
  optional string giftName = 4; // 礼物名称
  optional string nickname = 5; // 用户昵称
}

// 道具使用广播
message PkPropUseBroadcast{
  optional string roomId = 1;   // 房间id
  optional string propId = 2;   // 道具id
  optional string propName = 3; // 道具名称
}

// pk中的麦位信息
message PkMicInfos{
  repeated PkMicInfo micInfos = 1;
}

message PkMicInfo{
  optional string userId = 1;//用户(空为没有人)
  optional int32 position = 2;//麦位1-4
  optional string headFrameId = 3;//头象框ID
  optional string avatar = 4; // 用户头像
}

// 对战开关变化通知
message VoiceRoomPkFlagBroadcast{
  optional bool  openFight = 1; // 是否开启PK对战
  optional int32 duration = 2; //对战时长，单位秒
  optional int32 pkMode = 3; // pk模式 1：单人pk 2：团队pk
}

// pk道具广播
message PkPropMessageBroadcast{
  repeated PkPropMessage message = 1; // 消息列表
}

message PkPropMessage{
  optional string giftId = 1; // 道具id
  optional string message = 2; // 消息：：神秘人携带xxx
}

message VoiceRoomPkAuthInfo{
  optional bool can1v1PK = 1; // 是否允许1v1
  optional bool can4V4PK = 2; // 是否允许4v4
}

// 指定对战房间列表
message SelectedVoicePkRooms{
  repeated VoicePkRoomInfo list = 1;// 房间列表
}

// pk加时信息，广播通用
message PkAddTimeInfo{
  optional int32 invitePkAddTimeDuration = 1;// 约战pk每次加时时长,单位分
  optional int32 invitePkAddTimeRetry = 2;// 约战pk加时重试间隔,单位分
  optional int32 status = 3;// 状态，0-不展示；1-展示；2-冻结
}

// pk房间麦位信息
message PkRoomMicInfo{
  optional string userId = 1;// 用户(空为没有人)
  optional int32 position = 2;// 麦位0-9，0是大头麦
  optional int64 score = 3;// 用户分数
}

// 加时动作广播
message VoicePkAddTimeBroadcast {
  optional VoicePkRoomInfo inviterRoomInfo = 1;// 邀请房间信息
  optional VoicePkAnchorInfo inviterAnchorInfo = 2;// 邀请主播信息
  optional VoicePkRoomInfo inviteeRoomInfo = 3;// 被邀请房间信息
  optional VoicePkAnchorInfo inviteeAnchorInfo = 4;// 被邀请主播信息
  optional int32 type = 5; // 消息类型，0-请求加时；1-同意；2-拒绝
  optional int32 duration = 6;// 时长，单位秒，type=0/1返回加时时长，type=2返回冻结时长
  optional int32 waitFightDuration = 10;// 等待应答时长，单位秒
}

// 设置pk中屏蔽对方声音开关广播
message PKClosedAdverseVoiceBroadcast {
  repeated PKClosedAdverseVoiceInfo flags = 1;// 房间是否屏蔽对方声音状态列表
}

// 房间是否屏蔽对方声音状态信息
message PKClosedAdverseVoiceInfo {
  optional string roomId = 1;// 房间id
  optional bool flag = 2;// 是否屏蔽，true为屏蔽，false为开放
}

// 对战直播间榜单信息，广播通用
message VoiceRoomPKRankData {
  optional string roomId = 1;// 房间id
  optional int32 level = 2;// pk段位
  optional int32 dayCount = 3;// 本日场次
  optional int32 dayWinCount = 4;// 本日胜利场次
  optional int64 fightWeekScore = 5;// pk周积分
  optional int32 fightWeekRank = 6;// pk周排名
  optional int32 weekCount = 7;// 本周场次
  optional int32 weekWinCount = 8;// 本周胜利场次
  optional string roomName = 9;// 房间名称
  optional string roomUrl = 10;// 房间url
}