syntax = "proto2"; message RoomCommand { enum RoomCommandType { LEAVE_ROOM = 1000; ROOM_SAY = 1001; CREATE_GAME = 1002; JOIN_GAME = 1003; } extensions 100 to max; } message Command_LeaveRoom { extend RoomCommand { optional Command_LeaveRoom ext = 1000; } } message Command_RoomSay { extend RoomCommand { optional Command_RoomSay ext = 1001; } optional string message = 1; } // Create a new game in the room message Command_CreateGame { extend RoomCommand { optional Command_CreateGame ext = 1002; } // game description shown in game list optional string description = 1; // password users will have to provide to join the game optional string password = 2; // amount of players needed to play optional uint32 max_players = 3; // limits the game to only allowing users on the creator's buddy list to join optional bool only_buddies = 4; // limits the game to only allowing registered users optional bool only_registered = 5; // allows non players to view the game as spectator optional bool spectators_allowed = 6; // allows spectators to join without password if false optional bool spectators_need_password = 7; // allows spectators to use game say commands optional bool spectators_can_talk = 8; // allows spectators to see hands and hidden information optional bool spectators_see_everything = 9; // selection of game types as presented in the server's room configuration repeated uint32 game_type_ids = 10; // the creator of the game will join it as a judge optional bool join_as_judge = 11; // the creator of the game will join it as a spectator optional bool join_as_spectator = 12; // set the starting life total optional uint32 starting_life_total = 13; // share decklists with all players when selected optional bool share_decklists_on_load = 14; } message Command_JoinGame { extend RoomCommand { optional Command_JoinGame ext = 1003; } optional sint32 game_id = 1 [default = -1]; optional string password = 2; optional bool spectator = 3; optional bool override_restrictions = 4; optional bool join_as_judge = 5; }