syntax = "proto3"; package api; option go_package = "./api;api"; /* * v1.0.0 * protocol */ message ProtoWrap { int32 ver = 1; // version int32 op = 2; // option/action int32 seq = 3; // sequence bool success = 4; // 请求是否成功 bytes body = 7; // proto bytes } message Ping { uint64 timeMs = 1; // 毫秒时间戳 } message Pong { uint64 timeMs = 1; // 毫秒时间戳 } // 成功消息 message ResSuccess { } // 失败响应 message ResFail { string msg = 3; // 失败消息 } message ReqIdentity { string token = 1; } message ResIdentity { int32 status = 1; string msg = 2; } // 大厅消息 ============= begin message ReqLobbyView { } message ResLobbyView { repeated LobbyTable tables = 3; } message LobbyTable { int32 tableNo = 1; // 游戏编号 int32 playerNum = 2; // 限定玩家数量 int32 robotNum = 3; // 限定机器人数量 repeated LobbyPlayer players = 4; // 当前玩家机器人列表 } message LobbyPlayer { bool robot = 1; // 是否机器人 int64 id = 2; string username = 3; string avatar = 4; } // 大厅消息 ============= end // 创建桌面 ============= begin message ReqCreateTable { int32 players = 1; int32 robots = 2; } message ResCreateTable { int32 tableNo = 1; } // 创建桌面 ============= end // 加入游戏 ============= begin message ReqJoinTable { int32 tableNo = 1; } // 离开房间 message ReqLeaveTable { } // 玩家准备开始 message ReqReadyStart { } // 房主踢人 message ReqKickOutTable { int32 playerId = 1; } message ReqGameAction { int32 action = 1; // 4下大盲注,5下小盲注,6跟注,7弃牌 int32 chip = 2; // 押注金额 } message ResGameAction { } // 查询玩家当前游戏状态 message ReqGameStatus { } message ResGameStatus { // 玩家当前游戏状态: 断线,重新登录.... bool inGame = 1; // 是否在游戏中 int32 tableNo = 2; // 所在桌面编号 int32 gameStage = 3; // 游戏阶段? repeated TablePlayer players = 10; } message TablePlayer { bool robot = 1; // 是否机器人 int64 id = 2; string username = 3; string avatar = 4; int32 chip = 5; // 筹码 int32 status = 6; // 玩家状态: 1待准备开始,2已准备开始,已开始(3等待其他玩家动作,4待大盲注,5待小盲注,6待跟注,7已弃) bool master = 7; // 是否房主` repeated Card handCard = 8; // 手牌 repeated Card publicCard = 9; // 公共牌 } message Card { int32 dot = 1; // 点数 int32 suit = 2; // 花色 } // 加入游戏 ============= end