syntax = "proto2";

package VideoPkResult;

option java_package = "com.miaole.live.protocol.response";
option java_outer_classname = "VideoPkResult";

// 可选对战列表
message RoomFightList {
  repeated RoomFightVO list = 1;
}

// 对战信息
message RoomFightVO {
  optional FightRoomVO roomInfo = 1; // 房间信息
  optional FightUserVO managerInfo = 2; // 主持人信息
  optional int32 anchorCount = 3;// 房间排麦人数（非必传）
}

// 对战房间信息
message FightRoomVO {
  optional string roomId = 1;  // 房间id
  optional string roomName = 2;// 房间名称	
  optional string roomUrl = 3; // 房间url
  optional string roomCuteNumber = 4;// 房间靓号
}

// 对战用户信息（主持人/主播等等）
message FightUserVO{
  optional string userId = 1;     // 用户id
  optional string userName = 2;   // 用户昵称
  optional string userAvatar = 3; // 用户头像
}

// 邀战动作广播
message FightActionBroadcast {
  optional RoomFightVO inviterRoomInfo = 1;// 邀请房间信息
  optional RoomFightVO inviteeRoomInfo = 2;// 被邀房间信息
  optional int32 type = 3; // 消息类型，0-邀战；1-取消；2-同意；3-拒绝；4-准备中；5-对战中；9-网络问题，断开；10-邀战超时
  optional int32 duration = 4;// 约定对战时长，单位分钟
  optional bool isRandom = 5;// 是否随机
  optional string title = 6;// 邀战标题
  optional string content = 7;// 邀战内容
  optional int32 waitFightDuration = 8;// 等待应答时长，单位秒
}

// 对战直播间数据（进房|pk组成，推送广播）
message RoomPkDataInfo {
  optional string roomId = 1;// 房间Id;
  optional RoomFightVO inviterRoomInfo = 2;// 邀请房间信息
  repeated FightUserVO inviterAnchorMicList = 3;// 邀请房间排麦列表
  optional FightRankInfo inviterFightRankInfo = 4;// 邀请房间贡献榜信息
  optional RoomFightVO inviteeRoomInfo = 5;// 被邀房间信息
  repeated FightUserVO inviteeAnchorMicList = 6;// 被邀房间排麦列表
  optional FightRankInfo inviteeFightRankInfo = 7;// 被邀房间贡献榜信息
  optional int32 type = 8;// 消息类型，0-邀战；5-对战中；6-惩罚中；7-结束
  optional int32 remainSecond = 9;// 当前阶段剩余时间，单位秒
  optional int32 duration = 10;// 约定对战时长，单位分钟
  optional bool isRandom = 11;// 是否随机
  optional string title = 12;// 邀战标题
  optional string content = 13;// 邀战内容
  optional int32 pkKillMomentEnd = 14; // 是否斩杀结束，0-否;1-是，当上面的type = 6有效
  optional string inquireGift = 15;// 盘TA礼物Id
  optional int32 voiceStatus = 16; // 对方声音源状态，0-关闭声音源 1-开启声音源
  optional int64 occupyRemainTime = 17;// 攻占玩法，有效剩余时间(秒)
}

// 对战排行信息（广播通用）
message FightRankInfo {
  optional string roomId = 1;// 房间Id
  optional int32 total = 2;// 对战分数
  optional bool isChange = 3;// 头三名是否变化
  repeated FightRankUserInfo 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 int32 targetPkValue = 9; // 对方的PK分数

  // 道具buffer相关数据
  optional string propName = 10;  // 道具名称 小血瓶/大血瓶
  optional int32 propCountDown = 11; // 道具剩余时间,秒
  optional string bufferText = 12; // 道具增益比率:20%,30%
}

// 对战排行用户信息
message FightRankUserInfo {
  optional string userId = 1;// 用户id
  optional string userUrl = 2;// 用户头像
  optional string userName = 3;// 用户昵称
  optional int32 funLevel = 4;//娱乐等级
  optional int32 score = 5;// 分数
  optional bool isWarriorCloak = 6;// 是否隐身
}

// 对战胜负信息广播
message FightWinInfoBroadcast {
  optional RoomFightVO inviterRoomInfo = 1;// 邀请房间信息
  optional int32 inviterTotal = 2;// 邀请房间总分数
  repeated FightRankUserInfo inviterRankUsers = 3;// 邀请房间排行用户列表
  optional RoomFightVO inviteeRoomInfo = 4;// 被邀房间信息
  optional int32 inviteeTotal = 5;// 被邀房间总分数
  repeated FightRankUserInfo inviteeRankUsers = 6;// 被邀房间排行用户列表
  
  optional int32 type = 7;// 消息类型 ，6-惩罚中（对战结束通知），7-结束通知，8-逃跑
  optional int32 countDown = 8;// 惩罚倒计时，只有消息类型为6，才有值
  optional int32 pkKillMomentEnd = 9; // 斩杀结束，0-否;1-是，当上面的type = 7/8时，有效
  optional string winRoomId = 10;// 胜利房间Id，没有值代表平局
  optional string fleeRoomId = 11;// 逃跑房间Id，没有值代表非逃跑
}

// 对战中房间切换主播广播（推到双方房间）
message FightRoomCuteAnchorBroadcast{
  optional string inviterRoomId = 1;// 邀请房间id
  optional string inviterAnchorId = 2;// 邀请主播id
  optional bool isInterflow= 3;// 是否合流
  
  optional string inviteeRoomId = 4;// 被邀房间id
  optional string inviteeAnchorId = 5;// 被邀主播id
}

// 对战中房间排麦变化广播
message FightRoomChangeMicBroadcast {
  optional string roomId = 1;// 房间id
  repeated FightUserVO anchorMicList = 2;// 房间排麦列表
}

// 复仇通知广播
message PkRankRevengeBroadcast {
  optional string userId = 1; // 助力用户ID
  optional string userName = 2; // 助力用户昵称
  optional string revengeTargetId = 3; // 复仇主播ID
  optional string revengeTargetName = 4; // 复仇主播名称
  optional string revengePkId = 5; // 复仇场次pkId
}