syntax = "proto3"; /*********** PARTIAL MESSAGES **************/ message PositionMessage { int32 x = 1; int32 y = 2; enum Direction { UP = 0; RIGHT = 1; DOWN = 2; LEFT = 3; } Direction direction = 3; bool moving = 4; } message PointMessage { int32 x = 1; int32 y = 2; } message ViewportMessage { int32 left = 1; int32 top = 2; int32 right = 3; int32 bottom = 4; } message SilentMessage { bool silent = 1; } message CharacterLayerMessage { string url = 1; string name = 2; } /*********** CLIENT TO SERVER MESSAGES *************/ message PingMessage { } message SetPlayerDetailsMessage { string name = 1; repeated string characterLayers = 2; } message UserMovesMessage { PositionMessage position = 1; ViewportMessage viewport = 2; } message WebRtcSignalToServerMessage { int32 receiverId = 1; string signal = 2; } message ReportPlayerMessage { int32 reportedUserId = 1; string reportComment = 2; } message QueryJitsiJwtMessage { string jitsiRoom = 1; string tag = 2; // FIXME: rather than reading the tag from the query, we should read it from the current map! } message ClientToServerMessage { oneof message { UserMovesMessage userMovesMessage = 2; SilentMessage silentMessage = 3; ViewportMessage viewportMessage = 4; ItemEventMessage itemEventMessage = 5; SetPlayerDetailsMessage setPlayerDetailsMessage = 6; WebRtcSignalToServerMessage webRtcSignalToServerMessage = 7; WebRtcSignalToServerMessage webRtcScreenSharingSignalToServerMessage = 8; PlayGlobalMessage playGlobalMessage = 9; StopGlobalMessage stopGlobalMessage = 10; ReportPlayerMessage reportPlayerMessage = 11; QueryJitsiJwtMessage queryJitsiJwtMessage = 12; } } /************ BI-DIRECTIONAL MESSAGES **************/ message ItemEventMessage { int32 itemId = 1; string event = 2; string stateJson = 3; string parametersJson = 4; } message PlayGlobalMessage { string id = 1; string type = 2; string message = 3; } message StopGlobalMessage { string id = 1; } /*********** SERVER TO CLIENT MESSAGES *************/ message UserMovedMessage { int32 userId = 1; PositionMessage position = 2; } message SubMessage { oneof message { UserMovedMessage userMovedMessage = 1; GroupUpdateMessage groupUpdateMessage = 2; GroupDeleteMessage groupDeleteMessage = 3; UserJoinedMessage userJoinedMessage = 4; UserLeftMessage userLeftMessage = 5; ItemEventMessage itemEventMessage = 6; } } message BatchMessage { string event = 1; repeated SubMessage payload = 2; } message GroupUpdateMessage { int32 groupId = 1; PointMessage position = 2; int32 groupSize = 3; } message GroupDeleteMessage { int32 groupId = 1; } message UserJoinedMessage { int32 userId = 1; string name = 2; repeated CharacterLayerMessage characterLayers = 3; PositionMessage position = 4; } message UserLeftMessage { int32 userId = 1; } message ErrorMessage { string message = 1; } message ItemStateMessage { int32 itemId = 1; string stateJson = 2; } message RoomJoinedMessage { repeated UserJoinedMessage user = 1; repeated GroupUpdateMessage group = 2; repeated ItemStateMessage item = 3; int32 currentUserId = 4; repeated string tag = 5; } message WebRtcStartMessage { int32 userId = 1; string name = 2; bool initiator = 3; } message WebRtcDisconnectMessage { int32 userId = 1; } message WebRtcSignalToClientMessage { int32 userId = 1; string signal = 2; } message TeleportMessageMessage{ string map = 1; } message SendJitsiJwtMessage { string jitsiRoom = 1; string jwt = 2; } message SendUserMessage{ string type = 1; string message = 2; } message ServerToClientMessage { oneof message { BatchMessage batchMessage = 1; ErrorMessage errorMessage = 2; RoomJoinedMessage roomJoinedMessage = 3; WebRtcStartMessage webRtcStartMessage = 4; WebRtcSignalToClientMessage webRtcSignalToClientMessage = 5; WebRtcSignalToClientMessage webRtcScreenSharingSignalToClientMessage = 6; WebRtcDisconnectMessage webRtcDisconnectMessage = 7; PlayGlobalMessage playGlobalMessage = 8; StopGlobalMessage stopGlobalMessage = 9; TeleportMessageMessage teleportMessageMessage = 10; SendJitsiJwtMessage sendJitsiJwtMessage = 11; SendUserMessage sendUserMessage = 12; } }