diff --git a/api/main.proto b/api/main.proto index 06d814e..c91f4bf 100644 --- a/api/main.proto +++ b/api/main.proto @@ -277,6 +277,62 @@ service EveningDetectiveServer { }; } + rpc GetPlaylists(GetPlaylistsReq) returns (GetPlaylistsRsp) { + option (google.api.http) = { get: "/api/playlists" }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags : "Музыка"; + summary: "Получить плейлисты"; + }; + } + + rpc CreatePlaylist(CreatePlaylistReq) returns (CreatePlaylistRsp) { + option (google.api.http) = { post: "/api/playlists" body: "*" }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags : "Музыка"; + summary: "Создать плейлист"; + }; + } + + rpc UpdatePlaylist(UpdatePlaylistReq) returns (UpdatePlaylistRsp) { + option (google.api.http) = { put: "/api/playlists/{ID}" body: "*" }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags : "Музыка"; + summary: "Изменить плейлист"; + }; + } + + rpc DeletePlaylist(DeletePlaylistReq) returns (DeletePlaylistRsp) { + option (google.api.http) = { delete: "/api/playlists/{ID}" }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags : "Музыка"; + summary: "Удалить плейлист"; + }; + } + + rpc UploadPlaylistTrack(UploadPlaylistTrackReq) returns (UploadPlaylistTrackRsp) { + option (google.api.http) = { post: "/api/playlists/{playlistID}/tracks" body: "*" }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags : "Музыка"; + summary: "Загрузить MP3 в плейлист"; + }; + } + + rpc DeletePlaylistTrack(DeletePlaylistTrackReq) returns (DeletePlaylistTrackRsp) { + option (google.api.http) = { delete: "/api/playlists/{playlistID}/tracks/{trackID}" }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags : "Музыка"; + summary: "Удалить MP3 из плейлиста"; + }; + } + + rpc SetScenarioPlaylist(SetScenarioPlaylistReq) returns (SetScenarioPlaylistRsp) { + option (google.api.http) = { put: "/api/scenarios/{ID}/playlist" body: "*" }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags : "Музыка"; + summary: "Назначить плейлист сценарию"; + }; + } + rpc AddScenario(AddScenarioReq) returns (AddScenarioRsp) { option (google.api.http) = { post: "/api/scenario" @@ -596,6 +652,31 @@ service EveningDetectiveServer { }; } + rpc GetGameMusic(GetGameMusicReq) returns (GetGameMusicRsp) { + option (google.api.http) = { get: "/api/games/{gameID}/music" }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags : "Музыка"; + summary: "Получить музыку игры"; + }; + } + + rpc SetGameMusic(SetGameMusicReq) returns (SetGameMusicRsp) { + option (google.api.http) = { post: "/api/games/{gameID}/music" body: "*" }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags : "Музыка"; + summary: "Изменить музыку игры"; + }; + } + + rpc AdvanceScreenMusic(AdvanceScreenMusicReq) returns (AdvanceScreenMusicRsp) { + option (google.api.http) = { post: "/api/screens/music/advance" body: "*" }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + security: { security_requirement: {} } + tags : "Музыка"; + summary : "Перейти к следующему треку экрана"; + }; + } + // Привязать экран к игре. Требует авторизацию организатора, автора или администратора. rpc BindScreen(BindScreenReq) returns (BindScreenRsp) { option (google.api.http) = { @@ -1164,6 +1245,73 @@ message DownloadFileReq { string filename = 1; } +message PlaylistTrack { + int32 ID = 1; + string name = 2; + string filename = 3; + int32 position = 4; +} + +message Playlist { + int32 ID = 1; + string name = 2; + repeated PlaylistTrack tracks = 3; +} + +message GetPlaylistsReq {} + +message GetPlaylistsRsp { + repeated Playlist playlists = 1; +} + +message CreatePlaylistReq { + string name = 1; +} + +message CreatePlaylistRsp { + Playlist playlist = 1; +} + +message UpdatePlaylistReq { + int32 ID = 1; + string name = 2; +} + +message UpdatePlaylistRsp { + Playlist playlist = 1; +} + +message DeletePlaylistReq { + int32 ID = 1; +} + +message DeletePlaylistRsp {} + +message UploadPlaylistTrackReq { + int32 playlistID = 1; + string name = 2; + string filename = 3; + bytes data = 4; +} + +message UploadPlaylistTrackRsp { + Playlist playlist = 1; +} + +message DeletePlaylistTrackReq { + int32 playlistID = 1; + int32 trackID = 2; +} + +message DeletePlaylistTrackRsp {} + +message SetScenarioPlaylistReq { + int32 ID = 1; + int32 playlistID = 2; +} + +message SetScenarioPlaylistRsp {} + message AddScenarioReq { string name = 1; } @@ -1193,19 +1341,20 @@ message GetScenarioRsp { } message Scenario { - int32 ID = 1; - string name = 2; - optional string description = 3; - optional string image = 4; - Story story = 5; - string status = 6; - User author = 7; - google.protobuf.Timestamp updated_at = 8; - google.protobuf.Timestamp created_at = 9; - google.protobuf.Timestamp published_at = 10; - double average_rating = 11; - int32 reviews_count = 12; - string difficulty = 13; + int32 ID = 1; + string name = 2; + optional string description = 3; + optional string image = 4; + Story story = 5; + string status = 6; + User author = 7; + google.protobuf.Timestamp updated_at = 8; + google.protobuf.Timestamp created_at = 9; + google.protobuf.Timestamp published_at = 10; + double average_rating = 11; + int32 reviews_count = 12; + string difficulty = 13; + optional int32 music_playlist_id = 14 [json_name = "music_playlist_id"]; } message Story { @@ -1487,6 +1636,7 @@ message ScreenState { int64 timer_remaining_seconds = 18; ScreenTimerState timer_state = 19; string text = 20; + MusicState music = 21; } message CreateScreenSessionReq {} @@ -1513,6 +1663,57 @@ message GetGameScreensRsp { repeated ScreenState screens = 1; } +enum MusicPlaybackState { + MUSIC_PLAYBACK_UNSPECIFIED = 0; + MUSIC_PLAYBACK_STOPPED = 1; + MUSIC_PLAYBACK_PLAYING = 2; + MUSIC_PLAYBACK_PAUSED = 3; +} + +message MusicState { + Playlist playlist = 1; + int32 track_index = 2; + int64 position_ms = 3; + int32 volume = 4; + bool loop = 5; + MusicPlaybackState playback = 6; + int64 state_version = 7; +} + +message GetGameMusicReq { + int32 gameID = 1; +} + +message GetGameMusicRsp { + repeated Playlist playlists = 1; + MusicState state = 2; + int32 scenario_playlist_id = 3; + int32 game_playlist_id = 4; +} + +message SetGameMusicReq { + int32 gameID = 1; + int32 playlistID = 2; + int32 track_index = 3; + int64 position_ms = 4; + int32 volume = 5; + bool loop = 6; + MusicPlaybackState playback = 7; +} + +message SetGameMusicRsp { + MusicState state = 1; +} + +message AdvanceScreenMusicReq { + string screenID = 1; + string accessToken = 2; +} + +message AdvanceScreenMusicRsp { + MusicState state = 1; +} + message BindScreenReq { string screenID = 1; string accessToken = 2; diff --git a/bin/evening_detective_server b/bin/evening_detective_server index 760b10c..43c62b3 100755 Binary files a/bin/evening_detective_server and b/bin/evening_detective_server differ diff --git a/cmd/evening_detective_server/main.go b/cmd/evening_detective_server/main.go index 040675e..c9d319c 100644 --- a/cmd/evening_detective_server/main.go +++ b/cmd/evening_detective_server/main.go @@ -21,6 +21,7 @@ import ( "evening_detective_server/internal/repos/game_screen_plans_repo" "evening_detective_server/internal/repos/games_repo" "evening_detective_server/internal/repos/health_repo" + "evening_detective_server/internal/repos/playlists_repo" "evening_detective_server/internal/repos/refresh_tokens_repo" "evening_detective_server/internal/repos/scenarios_repo" "evening_detective_server/internal/repos/screen_sessions_repo" @@ -36,6 +37,7 @@ import ( "evening_detective_server/internal/services/map_service" "evening_detective_server/internal/services/mcp_service" "evening_detective_server/internal/services/participation_service" + "evening_detective_server/internal/services/playlist_service" "evening_detective_server/internal/services/scenarios_service" "evening_detective_server/internal/services/screen_plan_service" "evening_detective_server/internal/services/screen_service" @@ -136,6 +138,7 @@ func main() { answersRepo := team_answers_repo.NewTeamAnswersRepo(dbpool) screenRepo := screen_sessions_repo.NewScreenSessionsRepo(dbpool) screenService := screen_service.NewScreenService(screenRepo) + playlistService := playlist_service.New(playlists_repo.New(dbpool), fileService) screenPlanService := screen_plan_service.NewScreenPlanService( game_screen_plans_repo.NewGameScreenPlansRepo(dbpool), screenService, @@ -196,6 +199,7 @@ func main() { "/crabs.evening_detective_server.EveningDetectiveServer/GetConsent": true, "/crabs.evening_detective_server.EveningDetectiveServer/CreateScreenSession": true, "/crabs.evening_detective_server.EveningDetectiveServer/GetScreenState": true, + "/crabs.evening_detective_server.EveningDetectiveServer/AdvanceScreenMusic": true, "/crabs.evening_detective_server.EveningDetectiveServer/GetScreenResults": true, "/crabs.evening_detective_server.EveningDetectiveServer/CreateGameReview": true, "/crabs.evening_detective_server.EveningDetectiveServer/GetGameReviews": true, @@ -219,6 +223,7 @@ func main() { ticketService, participationService, screenService, + playlistService, screenPlanService, mapService, ), diff --git a/cmd/evening_detective_server/main.swagger.json b/cmd/evening_detective_server/main.swagger.json index 8b37a3f..d5165b3 100644 --- a/cmd/evening_detective_server/main.swagger.json +++ b/cmd/evening_detective_server/main.swagger.json @@ -900,6 +900,76 @@ ] } }, + "/api/games/{gameID}/music": { + "get": { + "summary": "Получить музыку игры", + "operationId": "EveningDetectiveServer_GetGameMusic", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/evening_detective_serverGetGameMusicRsp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "gameID", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Музыка" + ] + }, + "post": { + "summary": "Изменить музыку игры", + "operationId": "EveningDetectiveServer_SetGameMusic", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/evening_detective_serverSetGameMusicRsp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "gameID", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/EveningDetectiveServerSetGameMusicBody" + } + } + ], + "tags": [ + "Музыка" + ] + } + }, "/api/games/{gameID}/results": { "get": { "summary": "Получить итоговую таблицу игры (после завершения)", @@ -1412,6 +1482,209 @@ "security": [] } }, + "/api/playlists": { + "get": { + "summary": "Получить плейлисты", + "operationId": "EveningDetectiveServer_GetPlaylists", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/evening_detective_serverGetPlaylistsRsp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "Музыка" + ] + }, + "post": { + "summary": "Создать плейлист", + "operationId": "EveningDetectiveServer_CreatePlaylist", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/evening_detective_serverCreatePlaylistRsp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/evening_detective_serverCreatePlaylistReq" + } + } + ], + "tags": [ + "Музыка" + ] + } + }, + "/api/playlists/{ID}": { + "delete": { + "summary": "Удалить плейлист", + "operationId": "EveningDetectiveServer_DeletePlaylist", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/evening_detective_serverDeletePlaylistRsp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "ID", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Музыка" + ] + }, + "put": { + "summary": "Изменить плейлист", + "operationId": "EveningDetectiveServer_UpdatePlaylist", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/evening_detective_serverUpdatePlaylistRsp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "ID", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/EveningDetectiveServerUpdatePlaylistBody" + } + } + ], + "tags": [ + "Музыка" + ] + } + }, + "/api/playlists/{playlistID}/tracks": { + "post": { + "summary": "Загрузить MP3 в плейлист", + "operationId": "EveningDetectiveServer_UploadPlaylistTrack", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/evening_detective_serverUploadPlaylistTrackRsp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "playlistID", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/EveningDetectiveServerUploadPlaylistTrackBody" + } + } + ], + "tags": [ + "Музыка" + ] + } + }, + "/api/playlists/{playlistID}/tracks/{trackID}": { + "delete": { + "summary": "Удалить MP3 из плейлиста", + "operationId": "EveningDetectiveServer_DeletePlaylistTrack", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/evening_detective_serverDeletePlaylistTrackRsp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "playlistID", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "trackID", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "Музыка" + ] + } + }, "/api/privacy": { "get": { "summary": "Получить текст Политики конфиденциальности", @@ -1948,6 +2221,46 @@ ] } }, + "/api/scenarios/{ID}/playlist": { + "put": { + "summary": "Назначить плейлист сценарию", + "operationId": "EveningDetectiveServer_SetScenarioPlaylist", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/evening_detective_serverSetScenarioPlaylistRsp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "ID", + "in": "path", + "required": true, + "type": "integer", + "format": "int32" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/EveningDetectiveServerSetScenarioPlaylistBody" + } + } + ], + "tags": [ + "Музыка" + ] + } + }, "/api/scenarios/{ID}/public": { "put": { "summary": "Опубликовать сценарий", @@ -2185,6 +2498,44 @@ ] } }, + "/api/screens/music/advance": { + "post": { + "summary": "Перейти к следующему треку экрана", + "operationId": "EveningDetectiveServer_AdvanceScreenMusic", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/evening_detective_serverAdvanceScreenMusicRsp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/evening_detective_serverAdvanceScreenMusicReq" + } + } + ], + "tags": [ + "Музыка" + ], + "security": [ + { + "": [] + } + ] + } + }, "/api/screens/results": { "post": { "summary": "Получить результаты для экрана", @@ -3318,6 +3669,42 @@ } } }, + "EveningDetectiveServerSetGameMusicBody": { + "type": "object", + "properties": { + "playlistID": { + "type": "integer", + "format": "int32" + }, + "trackIndex": { + "type": "integer", + "format": "int32" + }, + "positionMs": { + "type": "string", + "format": "int64" + }, + "volume": { + "type": "integer", + "format": "int32" + }, + "loop": { + "type": "boolean" + }, + "playback": { + "$ref": "#/definitions/evening_detective_serverMusicPlaybackState" + } + } + }, + "EveningDetectiveServerSetScenarioPlaylistBody": { + "type": "object", + "properties": { + "playlistID": { + "type": "integer", + "format": "int32" + } + } + }, "EveningDetectiveServerSetScreenModeBody": { "type": "object", "properties": { @@ -3427,6 +3814,14 @@ } } }, + "EveningDetectiveServerUpdatePlaylistBody": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + }, "EveningDetectiveServerUpdateScenarioBackgroundBody": { "type": "object", "properties": { @@ -3489,6 +3884,21 @@ } } }, + "EveningDetectiveServerUploadPlaylistTrackBody": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "data": { + "type": "string", + "format": "byte" + } + } + }, "apiHttpBody": { "type": "object", "properties": { @@ -3614,6 +4024,25 @@ "evening_detective_serverAddUserRoleRsp": { "type": "object" }, + "evening_detective_serverAdvanceScreenMusicReq": { + "type": "object", + "properties": { + "screenID": { + "type": "string" + }, + "accessToken": { + "type": "string" + } + } + }, + "evening_detective_serverAdvanceScreenMusicRsp": { + "type": "object", + "properties": { + "state": { + "$ref": "#/definitions/evening_detective_serverMusicState" + } + } + }, "evening_detective_serverAnswer": { "type": "object", "properties": { @@ -3703,6 +4132,22 @@ } } }, + "evening_detective_serverCreatePlaylistReq": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + }, + "evening_detective_serverCreatePlaylistRsp": { + "type": "object", + "properties": { + "playlist": { + "$ref": "#/definitions/evening_detective_serverPlaylist" + } + } + }, "evening_detective_serverCreateScreenSessionReq": { "type": "object" }, @@ -3726,6 +4171,12 @@ "evening_detective_serverDeleteLastTeamActionRsp": { "type": "object" }, + "evening_detective_serverDeletePlaylistRsp": { + "type": "object" + }, + "evening_detective_serverDeletePlaylistTrackRsp": { + "type": "object" + }, "evening_detective_serverDeleteScenarioPlaceRsp": { "type": "object" }, @@ -3899,6 +4350,29 @@ } } }, + "evening_detective_serverGetGameMusicRsp": { + "type": "object", + "properties": { + "playlists": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/evening_detective_serverPlaylist" + } + }, + "state": { + "$ref": "#/definitions/evening_detective_serverMusicState" + }, + "scenarioPlaylistId": { + "type": "integer", + "format": "int32" + }, + "gamePlaylistId": { + "type": "integer", + "format": "int32" + } + } + }, "evening_detective_serverGetGameResultsRsp": { "type": "object", "properties": { @@ -4010,6 +4484,18 @@ } } }, + "evening_detective_serverGetPlaylistsRsp": { + "type": "object", + "properties": { + "playlists": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/evening_detective_serverPlaylist" + } + } + } + }, "evening_detective_serverGetPrivacyRsp": { "type": "object", "properties": { @@ -4257,6 +4743,46 @@ } } }, + "evening_detective_serverMusicPlaybackState": { + "type": "string", + "enum": [ + "MUSIC_PLAYBACK_UNSPECIFIED", + "MUSIC_PLAYBACK_STOPPED", + "MUSIC_PLAYBACK_PLAYING", + "MUSIC_PLAYBACK_PAUSED" + ], + "default": "MUSIC_PLAYBACK_UNSPECIFIED" + }, + "evening_detective_serverMusicState": { + "type": "object", + "properties": { + "playlist": { + "$ref": "#/definitions/evening_detective_serverPlaylist" + }, + "trackIndex": { + "type": "integer", + "format": "int32" + }, + "positionMs": { + "type": "string", + "format": "int64" + }, + "volume": { + "type": "integer", + "format": "int32" + }, + "loop": { + "type": "boolean" + }, + "playback": { + "$ref": "#/definitions/evening_detective_serverMusicPlaybackState" + }, + "stateVersion": { + "type": "string", + "format": "int64" + } + } + }, "evening_detective_serverParticipationRsp": { "type": "object", "properties": { @@ -4338,6 +4864,44 @@ "evening_detective_serverPlayGameRsp": { "type": "object" }, + "evening_detective_serverPlaylist": { + "type": "object", + "properties": { + "ID": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + }, + "tracks": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/evening_detective_serverPlaylistTrack" + } + } + } + }, + "evening_detective_serverPlaylistTrack": { + "type": "object", + "properties": { + "ID": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "position": { + "type": "integer", + "format": "int32" + } + } + }, "evening_detective_serverPublicScenarioRsp": { "type": "object" }, @@ -4459,6 +5023,10 @@ }, "difficulty": { "type": "string" + }, + "music_playlist_id": { + "type": "integer", + "format": "int32" } } }, @@ -4597,6 +5165,9 @@ }, "text": { "type": "string" + }, + "music": { + "$ref": "#/definitions/evening_detective_serverMusicState" } } }, @@ -4614,6 +5185,17 @@ "evening_detective_serverSendScreenCommandRsp": { "type": "object" }, + "evening_detective_serverSetGameMusicRsp": { + "type": "object", + "properties": { + "state": { + "$ref": "#/definitions/evening_detective_serverMusicState" + } + } + }, + "evening_detective_serverSetScenarioPlaylistRsp": { + "type": "object" + }, "evening_detective_serverSetScreenModeRsp": { "type": "object" }, @@ -4852,6 +5434,14 @@ "evening_detective_serverUpdateGameRsp": { "type": "object" }, + "evening_detective_serverUpdatePlaylistRsp": { + "type": "object", + "properties": { + "playlist": { + "$ref": "#/definitions/evening_detective_serverPlaylist" + } + } + }, "evening_detective_serverUpdateScenarioBackgroundRsp": { "type": "object" }, @@ -4897,6 +5487,14 @@ } } }, + "evening_detective_serverUploadPlaylistTrackRsp": { + "type": "object", + "properties": { + "playlist": { + "$ref": "#/definitions/evening_detective_serverPlaylist" + } + } + }, "evening_detective_serverUploadScenarioArchiveRsp": { "type": "object", "properties": { diff --git a/internal/app/playlist_errors.go b/internal/app/playlist_errors.go new file mode 100644 index 0000000..03fec7c --- /dev/null +++ b/internal/app/playlist_errors.go @@ -0,0 +1,26 @@ +package app + +import ( + "errors" + + "evening_detective_server/internal/services/playlist_service" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +func playlistErrorStatus(err error, fallback string) error { + switch { + case errors.Is(err, playlist_service.ErrInvalidName), + errors.Is(err, playlist_service.ErrInvalidTrack): + return status.Error(codes.InvalidArgument, err.Error()) + case errors.Is(err, playlist_service.ErrPlaylistNotFound), + errors.Is(err, playlist_service.ErrTrackNotFound), + errors.Is(err, playlist_service.ErrGameNotFound), + errors.Is(err, playlist_service.ErrScenarioNotFound): + return status.Error(codes.NotFound, err.Error()) + case errors.Is(err, playlist_service.ErrPlaylistInUse): + return status.Error(codes.FailedPrecondition, err.Error()) + default: + return status.Error(codes.Internal, fallback) + } +} diff --git a/internal/app/playlists.go b/internal/app/playlists.go new file mode 100644 index 0000000..2c82e9b --- /dev/null +++ b/internal/app/playlists.go @@ -0,0 +1,161 @@ +package app + +import ( + "context" + + "evening_detective_server/internal/modules/roles" + proto "evening_detective_server/proto" + + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +func canManagePlaylists(ctx context.Context) bool { + claims, err := claimsFromContext(ctx) + return err == nil && claims != nil && + (roles.HasRole(claims, roles.Author) || roles.HasRole(claims, roles.Organizer)) +} + +func (s *server) GetPlaylists(ctx context.Context, _ *proto.GetPlaylistsReq) (*proto.GetPlaylistsRsp, error) { + if !canManagePlaylists(ctx) { + return nil, status.Error(codes.PermissionDenied, "permission denied") + } + items, err := s.playlistService.List(ctx) + if err != nil { + return nil, playlistErrorStatus(err, "не удалось получить плейлисты") + } + result := &proto.GetPlaylistsRsp{} + for _, item := range items { + result.Playlists = append(result.Playlists, mapPlaylist(item)) + } + return result, nil +} + +func (s *server) CreatePlaylist(ctx context.Context, req *proto.CreatePlaylistReq) (*proto.CreatePlaylistRsp, error) { + if !canManagePlaylists(ctx) { + return nil, status.Error(codes.PermissionDenied, "permission denied") + } + item, err := s.playlistService.Create(ctx, req.GetName()) + if err != nil { + return nil, playlistErrorStatus(err, "не удалось создать плейлист") + } + return &proto.CreatePlaylistRsp{Playlist: mapPlaylist(item)}, nil +} + +func (s *server) UpdatePlaylist(ctx context.Context, req *proto.UpdatePlaylistReq) (*proto.UpdatePlaylistRsp, error) { + if !canManagePlaylists(ctx) { + return nil, status.Error(codes.PermissionDenied, "permission denied") + } + item, err := s.playlistService.Update(ctx, int(req.GetID()), req.GetName()) + if err != nil { + return nil, playlistErrorStatus(err, "не удалось изменить плейлист") + } + return &proto.UpdatePlaylistRsp{Playlist: mapPlaylist(item)}, nil +} + +func (s *server) DeletePlaylist(ctx context.Context, req *proto.DeletePlaylistReq) (*proto.DeletePlaylistRsp, error) { + if !canManagePlaylists(ctx) { + return nil, status.Error(codes.PermissionDenied, "permission denied") + } + if err := s.playlistService.Delete(ctx, int(req.GetID())); err != nil { + return nil, playlistErrorStatus(err, "не удалось удалить плейлист") + } + return &proto.DeletePlaylistRsp{}, nil +} + +func (s *server) UploadPlaylistTrack(ctx context.Context, req *proto.UploadPlaylistTrackReq) (*proto.UploadPlaylistTrackRsp, error) { + if !canManagePlaylists(ctx) { + return nil, status.Error(codes.PermissionDenied, "permission denied") + } + if err := s.playlistService.UploadTrack( + ctx, + int(req.GetPlaylistID()), + req.GetName(), + req.GetFilename(), + req.GetData(), + ); err != nil { + return nil, playlistErrorStatus(err, "не удалось загрузить MP3") + } + item, err := s.playlistService.Get(ctx, int(req.GetPlaylistID())) + if err != nil { + return nil, playlistErrorStatus(err, "не удалось получить плейлист") + } + return &proto.UploadPlaylistTrackRsp{Playlist: mapPlaylist(item)}, nil +} + +func (s *server) DeletePlaylistTrack(ctx context.Context, req *proto.DeletePlaylistTrackReq) (*proto.DeletePlaylistTrackRsp, error) { + if !canManagePlaylists(ctx) { + return nil, status.Error(codes.PermissionDenied, "permission denied") + } + if err := s.playlistService.DeleteTrack( + ctx, + int(req.GetPlaylistID()), + int(req.GetTrackID()), + ); err != nil { + return nil, playlistErrorStatus(err, "не удалось удалить трек") + } + return &proto.DeletePlaylistTrackRsp{}, nil +} + +func (s *server) SetScenarioPlaylist(ctx context.Context, req *proto.SetScenarioPlaylistReq) (*proto.SetScenarioPlaylistRsp, error) { + claims, err := claimsFromContext(ctx) + if err != nil { + return nil, err + } + if !roles.HasRole(claims, roles.Author) { + return nil, status.Error(codes.PermissionDenied, "permission denied") + } + if err := s.playlistService.SetScenario( + ctx, + int(req.GetID()), + int(req.GetPlaylistID()), + ); err != nil { + return nil, playlistErrorStatus(err, "не удалось назначить плейлист сценарию") + } + return &proto.SetScenarioPlaylistRsp{}, nil +} + +func (s *server) GetGameMusic(ctx context.Context, req *proto.GetGameMusicReq) (*proto.GetGameMusicRsp, error) { + if !canManageScreens(ctx) { + return nil, status.Error(codes.PermissionDenied, "permission denied") + } + state, err := s.playlistService.GetGame(ctx, int(req.GetGameID())) + if err != nil { + return nil, playlistErrorStatus(err, "не удалось получить музыку игры") + } + playlists, err := s.playlistService.List(ctx) + if err != nil { + return nil, playlistErrorStatus(err, "не удалось получить плейлисты") + } + result := &proto.GetGameMusicRsp{State: mapMusicState(state)} + for _, item := range playlists { + result.Playlists = append(result.Playlists, mapPlaylist(item)) + } + if state.ScenarioID != nil { + result.ScenarioPlaylistId = int32(*state.ScenarioID) + } + if state.GameID != nil { + result.GamePlaylistId = int32(*state.GameID) + } + return result, nil +} + +func (s *server) SetGameMusic(ctx context.Context, req *proto.SetGameMusicReq) (*proto.SetGameMusicRsp, error) { + if !canManageScreens(ctx) { + return nil, status.Error(codes.PermissionDenied, "permission denied") + } + state, err := s.playlistService.SetGame( + ctx, + int(req.GetGameID()), + int(req.GetPlaylistID()), + int(req.GetTrackIndex()), + req.GetPositionMs(), + req.GetVolume(), + req.GetLoop(), + int32(req.GetPlayback()), + ) + if err != nil { + return nil, playlistErrorStatus(err, "не удалось изменить музыку игры") + } + return &proto.SetGameMusicRsp{State: mapMusicState(state)}, nil +} diff --git a/internal/app/playlists_mapper.go b/internal/app/playlists_mapper.go new file mode 100644 index 0000000..2d8e1c4 --- /dev/null +++ b/internal/app/playlists_mapper.go @@ -0,0 +1,40 @@ +package app + +import ( + "evening_detective_server/internal/services/playlist_service" + proto "evening_detective_server/proto" +) + +func mapPlaylist(value *playlist_service.Playlist) *proto.Playlist { + if value == nil { + return nil + } + result := &proto.Playlist{ + ID: int32(value.ID), + Name: value.Name, + } + for _, track := range value.Tracks { + result.Tracks = append(result.Tracks, &proto.PlaylistTrack{ + ID: int32(track.ID), + Name: track.Name, + Filename: track.Filename, + Position: int32(track.Position), + }) + } + return result +} + +func mapMusicState(value *playlist_service.MusicState) *proto.MusicState { + if value == nil { + return nil + } + return &proto.MusicState{ + Playlist: mapPlaylist(value.Playlist), + TrackIndex: int32(value.TrackIndex), + PositionMs: value.PositionMs, + Volume: value.Volume, + Loop: value.Loop, + Playback: proto.MusicPlaybackState(value.Playback), + StateVersion: value.Version, + } +} diff --git a/internal/app/screens.go b/internal/app/screens.go index 58ebb37..0d66b90 100644 --- a/internal/app/screens.go +++ b/internal/app/screens.go @@ -49,6 +49,42 @@ func (s *server) GetScreenState(ctx context.Context, req *proto.GetScreenStateRe return &proto.GetScreenStateRsp{State: state}, nil } +func (s *server) AdvanceScreenMusic(ctx context.Context, req *proto.AdvanceScreenMusicReq) (*proto.AdvanceScreenMusicRsp, error) { + if req == nil || req.ScreenID == "" || req.AccessToken == "" { + return nil, status.Error(codes.InvalidArgument, "некорректные данные экрана") + } + id, err := strconv.Atoi(req.ScreenID) + if err != nil || id <= 0 { + return nil, status.Error(codes.InvalidArgument, "некорректный идентификатор экрана") + } + session, err := s.screenService.Get(ctx, id, hashScreenToken(req.AccessToken)) + if errors.Is(err, screen_service.ErrScreenNotFound) { + return nil, status.Error(codes.Unauthenticated, "недействительная сессия экрана") + } + if err != nil || session.GameID == nil { + return nil, status.Error(codes.FailedPrecondition, "экран не привязан к игре") + } + state, err := s.playlistService.GetGame(ctx, *session.GameID) + if err != nil || state.Playlist == nil || len(state.Playlist.Tracks) == 0 { + return &proto.AdvanceScreenMusicRsp{State: mapMusicState(state)}, nil + } + next := state.TrackIndex + 1 + playback := state.Playback + if next >= len(state.Playlist.Tracks) { + if state.Loop { + next = 0 + } else { + next = len(state.Playlist.Tracks) - 1 + playback = 1 + } + } + updated, err := s.playlistService.SetGame(ctx, *session.GameID, state.Playlist.ID, next, 0, state.Volume, state.Loop, playback) + if err != nil { + return nil, status.Error(codes.Internal, "не удалось переключить трек") + } + return &proto.AdvanceScreenMusicRsp{State: mapMusicState(updated)}, nil +} + func (s *server) GetGameScreens(ctx context.Context, req *proto.GetGameScreensReq) (*proto.GetGameScreensRsp, error) { if !canManageScreens(ctx) { return nil, status.Error(codes.PermissionDenied, "permission denied") @@ -201,6 +237,11 @@ func (s *server) enrichScreenState(ctx context.Context, session *screen_service. if session.GameID == nil { return } + if s.playlistService != nil { + if music, err := s.playlistService.GetGame(ctx, *session.GameID); err == nil { + state.Music = mapMusicState(music) + } + } game, err := s.gameService.GetGameMedia(ctx, *session.GameID) if err != nil { return diff --git a/internal/app/server.go b/internal/app/server.go index fdec2b9..055a9a2 100644 --- a/internal/app/server.go +++ b/internal/app/server.go @@ -8,6 +8,7 @@ import ( "evening_detective_server/internal/services/gameplay_service" "evening_detective_server/internal/services/map_service" "evening_detective_server/internal/services/participation_service" + "evening_detective_server/internal/services/playlist_service" "evening_detective_server/internal/services/scenarios_service" "evening_detective_server/internal/services/screen_plan_service" "evening_detective_server/internal/services/screen_service" @@ -33,6 +34,7 @@ type server struct { ticketService *ticket_service.TicketService participationService *participation_service.ParticipationService screenService *screen_service.ScreenService + playlistService *playlist_service.Service screenPlanService *screen_plan_service.ScreenPlanService mapService *map_service.MapService } @@ -51,6 +53,7 @@ func NewServer( ticketService *ticket_service.TicketService, participationService *participation_service.ParticipationService, screenService *screen_service.ScreenService, + playlistService *playlist_service.Service, screenPlanService *screen_plan_service.ScreenPlanService, mapService *map_service.MapService, ) proto.EveningDetectiveServerServer { @@ -67,6 +70,7 @@ func NewServer( ticketService: ticketService, participationService: participationService, screenService: screenService, + playlistService: playlistService, screenPlanService: screenPlanService, mapService: mapService, } diff --git a/internal/app/story_mapper.go b/internal/app/story_mapper.go index 3b4683a..5c510e5 100644 --- a/internal/app/story_mapper.go +++ b/internal/app/story_mapper.go @@ -27,20 +27,26 @@ func mapScenario(o *scenarios_service.Scenario) *proto.Scenario { if o.PublishedAt != nil { publishedAt = timestamppb.New(*o.PublishedAt) } + var playlistID *int32 + if o.PlaylistID != nil { + value := int32(*o.PlaylistID) + playlistID = &value + } return &proto.Scenario{ - ID: int32(o.ID), - Name: o.Name, - Description: o.Description, - Image: o.Image, - Story: mapStory(o.Story), - Author: mapUser(o.Author), - Status: o.Status, - UpdatedAt: timestamppb.New(o.UpdatedAt), - CreatedAt: timestamppb.New(o.CreatedAt), - PublishedAt: publishedAt, - AverageRating: o.AverageRating, - ReviewsCount: o.ReviewsCount, - Difficulty: o.Difficulty, + ID: int32(o.ID), + Name: o.Name, + Description: o.Description, + Image: o.Image, + Story: mapStory(o.Story), + Author: mapUser(o.Author), + Status: o.Status, + UpdatedAt: timestamppb.New(o.UpdatedAt), + CreatedAt: timestamppb.New(o.CreatedAt), + PublishedAt: publishedAt, + AverageRating: o.AverageRating, + ReviewsCount: o.ReviewsCount, + Difficulty: o.Difficulty, + MusicPlaylistId: playlistID, } } diff --git a/internal/repos/playlists_repo/repo.go b/internal/repos/playlists_repo/repo.go new file mode 100644 index 0000000..d9eac56 --- /dev/null +++ b/internal/repos/playlists_repo/repo.go @@ -0,0 +1,340 @@ +package playlists_repo + +import ( + "context" + "errors" + "time" + + "github.com/jackc/pgx/v5" + "github.com/jackc/pgx/v5/pgxpool" +) + +var ( + ErrPlaylistNotFound = errors.New("плейлист не найден") + ErrPlaylistInUse = errors.New("плейлист используется") + ErrTrackNotFound = errors.New("трек не найден") + ErrGameNotFound = errors.New("игра не найдена") + ErrScenarioNotFound = errors.New("сценарий не найден") +) + +// Track describes a stored playlist track. +type Track struct { + ID int + Name string + Filename string + Position int +} + +// Playlist describes a stored playlist. +type Playlist struct { + ID int + Name string + Tracks []*Track +} + +// MusicState describes stored game music state. +type MusicState struct { + Playlist *Playlist + TrackIndex int + PositionMs int64 + Volume int32 + Loop bool + Playback int32 + Version int64 + StartedAt *time.Time + ScenarioID *int + GameID *int +} + +// Repo persists playlists and game music state. +type Repo struct{ pool *pgxpool.Pool } + +// New creates a playlist repository. +func New(pool *pgxpool.Pool) *Repo { return &Repo{pool: pool} } + +// List returns all playlists with their tracks. +func (r *Repo) List(ctx context.Context) ([]*Playlist, error) { + rows, err := r.pool.Query(ctx, ` + SELECT p.id, p.name, t.id, t.name, t.filename, t.position + FROM playlists p + LEFT JOIN playlist_tracks t ON t.playlist_id = p.id + ORDER BY p.id, t.position, t.id`) + if err != nil { + return nil, err + } + defer rows.Close() + byID := map[int]*Playlist{} + var result []*Playlist + for rows.Next() { + var p Playlist + var trackID *int + var trackName, filename *string + var position *int + if err := rows.Scan(&p.ID, &p.Name, &trackID, &trackName, &filename, &position); err != nil { + return nil, err + } + item := byID[p.ID] + if item == nil { + item = &Playlist{ID: p.ID, Name: p.Name} + byID[p.ID] = item + result = append(result, item) + } + if trackID != nil { + item.Tracks = append(item.Tracks, &Track{ID: *trackID, Name: *trackName, Filename: *filename, Position: *position}) + } + } + return result, rows.Err() +} + +// Get returns a playlist by ID. +func (r *Repo) Get(ctx context.Context, id int) (*Playlist, error) { + playlists, err := r.List(ctx) + if err != nil { + return nil, err + } + for _, playlist := range playlists { + if playlist.ID == id { + return playlist, nil + } + } + return nil, ErrPlaylistNotFound +} + +// Create creates an empty playlist. +func (r *Repo) Create(ctx context.Context, name string) (*Playlist, error) { + var p Playlist + err := r.pool.QueryRow(ctx, ` + INSERT INTO playlists (name) + VALUES ($1) + RETURNING id, name + `, + name, + ).Scan(&p.ID, &p.Name) + return &p, err +} + +// Update changes a playlist name. +func (r *Repo) Update(ctx context.Context, id int, name string) (*Playlist, error) { + var p Playlist + err := r.pool.QueryRow(ctx, ` + UPDATE playlists + SET name = $1, updated_at = NOW() + WHERE id = $2 + RETURNING id, name + `, + name, + id, + ).Scan(&p.ID, &p.Name) + if errors.Is(err, pgx.ErrNoRows) { + return nil, ErrPlaylistNotFound + } + if err != nil { + return nil, err + } + return &p, nil +} + +// Delete removes a playlist that is not assigned to a scenario or game. +func (r *Repo) Delete(ctx context.Context, id int) error { + var used bool + if err := r.pool.QueryRow(ctx, ` + SELECT EXISTS (SELECT 1 FROM scenarios WHERE playlist_id = $1) + OR EXISTS (SELECT 1 FROM games WHERE playlist_id = $1) + `, id).Scan(&used); err != nil { + return err + } + if used { + return ErrPlaylistInUse + } + result, err := r.pool.Exec(ctx, ` + DELETE FROM playlists + WHERE id = $1 + `, id) + if err != nil { + return err + } + if result.RowsAffected() == 0 { + return ErrPlaylistNotFound + } + return nil +} + +// AddTrack adds a track to a playlist. +func (r *Repo) AddTrack(ctx context.Context, playlistID int, name, filename string) error { + var position int + if err := r.pool.QueryRow(ctx, ` + SELECT COALESCE(MAX(position), -1) + 1 + FROM playlist_tracks + WHERE playlist_id = $1 + `, playlistID).Scan(&position); err != nil { + return err + } + _, err := r.pool.Exec(ctx, ` + INSERT INTO playlist_tracks (playlist_id, name, filename, position) + VALUES ($1, $2, $3, $4) + `, playlistID, name, filename, position) + return err +} + +// DeleteTrack removes a track and returns its stored filename. +func (r *Repo) DeleteTrack(ctx context.Context, playlistID, trackID int) (string, error) { + var filename string + var used bool + if err := r.pool.QueryRow(ctx, ` + SELECT EXISTS (SELECT 1 FROM scenarios WHERE playlist_id = $1) + OR EXISTS (SELECT 1 FROM games WHERE playlist_id = $1) + `, playlistID).Scan(&used); err != nil { + return "", err + } + if used { + return "", ErrPlaylistInUse + } + err := r.pool.QueryRow(ctx, ` + DELETE FROM playlist_tracks + WHERE id = $1 AND playlist_id = $2 + RETURNING filename + `, trackID, playlistID).Scan(&filename) + if errors.Is(err, pgx.ErrNoRows) { + return "", ErrTrackNotFound + } + return filename, err +} + +// SetScenario assigns a playlist to a scenario. +func (r *Repo) SetScenario(ctx context.Context, scenarioID, playlistID int) error { + if playlistID > 0 { + if _, err := r.Get(ctx, playlistID); err != nil { + return err + } + } + result, err := r.pool.Exec(ctx, ` + UPDATE scenarios + SET playlist_id = NULLIF($2, 0), updated_at = NOW() + WHERE id = $1 + `, scenarioID, playlistID) + if err != nil { + return err + } + if result.RowsAffected() == 0 { + return ErrScenarioNotFound + } + return nil +} + +// SetGame assigns a playlist to a game. +func (r *Repo) SetGame(ctx context.Context, gameID, playlistID int) error { + if playlistID > 0 { + if _, err := r.Get(ctx, playlistID); err != nil { + return err + } + } + result, err := r.pool.Exec(ctx, ` + UPDATE games + SET playlist_id = NULLIF($2, 0), updated_at = NOW() + WHERE id = $1 + `, gameID, playlistID) + if err != nil { + return err + } + if result.RowsAffected() == 0 { + return ErrGameNotFound + } + return nil +} + +// GetMusic returns the effective and current music state for a game. +func (r *Repo) GetMusic(ctx context.Context, gameID int) (*MusicState, error) { + var gamePlaylistID, scenarioPlaylistID *int + err := r.pool.QueryRow(ctx, ` + SELECT g.playlist_id, s.playlist_id + FROM games g + JOIN scenarios s ON s.id = g.scenario_id + WHERE g.id = $1 + `, + gameID, + ).Scan(&gamePlaylistID, &scenarioPlaylistID) + if errors.Is(err, pgx.ErrNoRows) { + return nil, ErrGameNotFound + } + if err != nil { + return nil, err + } + playlistID := gamePlaylistID + if playlistID == nil { + playlistID = scenarioPlaylistID + } + state := &MusicState{ScenarioID: scenarioPlaylistID, GameID: gamePlaylistID, Volume: 100, Playback: 1} + if playlistID != nil { + state.Playlist, err = r.Get(ctx, *playlistID) + if err != nil { + return nil, err + } + } + var trackIndex int + var statePlaylistID *int + err = r.pool.QueryRow(ctx, ` + SELECT playlist_id, track_index, position_ms, volume, loop, playback, state_version, started_at + FROM game_music_states + WHERE game_id = $1 + `, gameID). + Scan(&statePlaylistID, &trackIndex, &state.PositionMs, &state.Volume, &state.Loop, &state.Playback, &state.Version, &state.StartedAt) + if errors.Is(err, pgx.ErrNoRows) { + state.Version = 1 + return state, nil + } + if err != nil { + return nil, err + } + state.TrackIndex = trackIndex + if state.Playback == 2 && state.StartedAt != nil { + state.PositionMs += time.Since(*state.StartedAt).Milliseconds() + } + if statePlaylistID != nil && (state.Playlist == nil || state.Playlist.ID != *statePlaylistID) { + state.Playlist, err = r.Get(ctx, *statePlaylistID) + if err != nil { + return nil, err + } + } + return state, nil +} + +// SetMusic stores the current music state for a game. +func (r *Repo) SetMusic(ctx context.Context, gameID, playlistID, trackIndex int, positionMs int64, volume int32, loop bool, playback int32) (*MusicState, error) { + if playlistID > 0 { + if _, err := r.Get(ctx, playlistID); err != nil { + return nil, err + } + } + _, err := r.pool.Exec(ctx, ` + INSERT INTO game_music_states ( + game_id, playlist_id, track_index, position_ms, volume, loop, + playback, state_version, started_at + ) + VALUES ( + $1, NULLIF($2, 0), $3, $4, $5, $6, $7, 1, + CASE WHEN $7 = 2 THEN NOW() ELSE NULL END + ) + ON CONFLICT (game_id) DO UPDATE SET + playlist_id = EXCLUDED.playlist_id, + track_index = EXCLUDED.track_index, + position_ms = EXCLUDED.position_ms, + volume = EXCLUDED.volume, + loop = EXCLUDED.loop, + playback = EXCLUDED.playback, + state_version = game_music_states.state_version + 1, + started_at = EXCLUDED.started_at, + updated_at = NOW() + `, + gameID, + playlistID, + trackIndex, + positionMs, + volume, + loop, + playback, + ) + if err != nil { + return nil, err + } + return r.GetMusic(ctx, gameID) +} diff --git a/internal/repos/scenario.go b/internal/repos/scenario.go index 7211ed0..c9fc043 100644 --- a/internal/repos/scenario.go +++ b/internal/repos/scenario.go @@ -8,6 +8,7 @@ type Scenario struct { Name string Description *string Image *string + PlaylistID *int Scenario string Author *User Status string diff --git a/internal/repos/scenarios_repo/repo.go b/internal/repos/scenarios_repo/repo.go index 1b0260d..245f33d 100644 --- a/internal/repos/scenarios_repo/repo.go +++ b/internal/repos/scenarios_repo/repo.go @@ -59,6 +59,7 @@ func (r *ScenariosRepo) GetScenariosByAuthorID( scenarios.name, scenarios.description, scenarios.image, + scenarios.playlist_id, scenarios.scenario, users.id, users.username, @@ -80,6 +81,7 @@ func (r *ScenariosRepo) GetAllScenarios(ctx context.Context) ([]*repos.Scenario, scenarios.name, scenarios.description, scenarios.image, + scenarios.playlist_id, scenarios.scenario, users.id, users.username, @@ -103,6 +105,7 @@ func (r *ScenariosRepo) GetScenariosByStatus( scenarios.name, scenarios.description, scenarios.image, + scenarios.playlist_id, scenarios.scenario, users.id, users.username, @@ -134,6 +137,7 @@ func (r *ScenariosRepo) getScenarios(ctx context.Context, query string, args ... &scenario.Name, &scenario.Description, &scenario.Image, + &scenario.PlaylistID, &scenario.Scenario, &authorID, &authorUsername, @@ -172,6 +176,7 @@ func (r *ScenariosRepo) GetScenarioByID( scenarios.name, scenarios.description, scenarios.image, + scenarios.playlist_id, scenarios.scenario, users.id, users.username, @@ -190,6 +195,7 @@ func (r *ScenariosRepo) GetScenarioByID( &scenario.Name, &scenario.Description, &scenario.Image, + &scenario.PlaylistID, &scenario.Scenario, &authorID, &authorUsername, diff --git a/internal/services/file_service/service.go b/internal/services/file_service/service.go index 8771a9e..95e3377 100644 --- a/internal/services/file_service/service.go +++ b/internal/services/file_service/service.go @@ -146,3 +146,8 @@ func (s *FileService) DownloadFile( } return file, nil } + +// DeleteFile removes a stored file. +func (s *FileService) DeleteFile(ctx context.Context, filename string) error { + return s.fileStorage.Delete(ctx, filename) +} diff --git a/internal/services/playlist_service/mapper.go b/internal/services/playlist_service/mapper.go new file mode 100644 index 0000000..5e0bd55 --- /dev/null +++ b/internal/services/playlist_service/mapper.go @@ -0,0 +1,37 @@ +package playlist_service + +import "evening_detective_server/internal/repos/playlists_repo" + +func mapPlaylist(value *playlists_repo.Playlist) *Playlist { + if value == nil { + return nil + } + result := &Playlist{ID: value.ID, Name: value.Name} + for _, track := range value.Tracks { + result.Tracks = append(result.Tracks, &Track{ + ID: track.ID, + Name: track.Name, + Filename: track.Filename, + Position: track.Position, + }) + } + return result +} + +func mapMusicState(value *playlists_repo.MusicState) *MusicState { + if value == nil { + return nil + } + return &MusicState{ + Playlist: mapPlaylist(value.Playlist), + TrackIndex: value.TrackIndex, + PositionMs: value.PositionMs, + Volume: value.Volume, + Loop: value.Loop, + Playback: value.Playback, + Version: value.Version, + StartedAt: value.StartedAt, + ScenarioID: value.ScenarioID, + GameID: value.GameID, + } +} diff --git a/internal/services/playlist_service/model.go b/internal/services/playlist_service/model.go new file mode 100644 index 0000000..279ebd4 --- /dev/null +++ b/internal/services/playlist_service/model.go @@ -0,0 +1,32 @@ +package playlist_service + +import "time" + +// Track describes an MP3 track in a playlist. +type Track struct { + ID int + Name string + Filename string + Position int +} + +// Playlist describes a reusable playlist. +type Playlist struct { + ID int + Name string + Tracks []*Track +} + +// MusicState describes the synchronized music state of a game. +type MusicState struct { + Playlist *Playlist + TrackIndex int + PositionMs int64 + Volume int32 + Loop bool + Playback int32 + Version int64 + StartedAt *time.Time + ScenarioID *int + GameID *int +} diff --git a/internal/services/playlist_service/service.go b/internal/services/playlist_service/service.go new file mode 100644 index 0000000..4eaf8d3 --- /dev/null +++ b/internal/services/playlist_service/service.go @@ -0,0 +1,166 @@ +package playlist_service + +import ( + "context" + "errors" + "strings" + + "evening_detective_server/internal/modules/file_storage" + "evening_detective_server/internal/repos/playlists_repo" + "evening_detective_server/internal/services/file_service" +) + +var ( + ErrInvalidName = errors.New("некорректное имя плейлиста") + ErrInvalidTrack = errors.New("некорректный трек") + ErrPlaylistNotFound = errors.New("плейлист не найден") + ErrPlaylistInUse = errors.New("плейлист используется") + ErrTrackNotFound = errors.New("трек не найден") + ErrGameNotFound = errors.New("игра не найдена") + ErrScenarioNotFound = errors.New("сценарий не найден") +) + +// Service implements playlist and game music use cases. +type Service struct { + repo *playlists_repo.Repo + files *file_service.FileService +} + +// New creates a playlist service. +func New(repo *playlists_repo.Repo, files *file_service.FileService) *Service { + return &Service{repo: repo, files: files} +} + +// List returns all playlists. +func (s *Service) List(ctx context.Context) ([]*Playlist, error) { + items, err := s.repo.List(ctx) + if err != nil { + return nil, mapError(err) + } + result := make([]*Playlist, 0, len(items)) + for _, item := range items { + result = append(result, mapPlaylist(item)) + } + return result, nil +} + +// Get returns a playlist by ID. +func (s *Service) Get(ctx context.Context, id int) (*Playlist, error) { + item, err := s.repo.Get(ctx, id) + if err != nil { + return nil, mapError(err) + } + return mapPlaylist(item), nil +} + +// Create validates and creates a playlist. +func (s *Service) Create(ctx context.Context, name string) (*Playlist, error) { + name = strings.TrimSpace(name) + if name == "" || len(name) > 255 { + return nil, ErrInvalidName + } + item, err := s.repo.Create(ctx, name) + if err != nil { + return nil, err + } + return mapPlaylist(item), nil +} + +// Update validates and updates a playlist. +func (s *Service) Update(ctx context.Context, id int, name string) (*Playlist, error) { + name = strings.TrimSpace(name) + if id <= 0 || name == "" || len(name) > 255 { + return nil, ErrInvalidName + } + item, err := s.repo.Update(ctx, id, name) + if err != nil { + return nil, mapError(err) + } + return mapPlaylist(item), nil +} + +// Delete removes a playlist. +func (s *Service) Delete(ctx context.Context, id int) error { + return mapError(s.repo.Delete(ctx, id)) +} + +// UploadTrack stores an MP3 file and adds it to a playlist. +func (s *Service) UploadTrack(ctx context.Context, playlistID int, name, filename string, data []byte) error { + if playlistID <= 0 || strings.TrimSpace(name) == "" || len(data) == 0 || !strings.HasSuffix(strings.ToLower(filename), ".mp3") { + return ErrInvalidTrack + } + if _, err := s.repo.Get(ctx, playlistID); err != nil { + return mapError(err) + } + stored, fileType, err := s.files.UploadFile(ctx, filename, data) + if err != nil || fileType != "audio" || !strings.HasSuffix(strings.ToLower(stored), ".mp3") { + return ErrInvalidTrack + } + if err := s.repo.AddTrack(ctx, playlistID, strings.TrimSpace(name), stored); err != nil { + _ = s.files.DeleteFile(ctx, stored) + return mapError(err) + } + return nil +} + +// DeleteTrack removes a track and its stored file. +func (s *Service) DeleteTrack(ctx context.Context, playlistID, trackID int) error { + filename, err := s.repo.DeleteTrack(ctx, playlistID, trackID) + if err != nil { + return mapError(err) + } + if err := s.files.DeleteFile(ctx, filename); err != nil && !errors.Is(err, file_storage.ErrFileNotFound) { + return err + } + return nil +} + +// SetScenario assigns a playlist to a scenario. +func (s *Service) SetScenario(ctx context.Context, scenarioID, playlistID int) error { + return mapError(s.repo.SetScenario(ctx, scenarioID, playlistID)) +} + +// SetGame updates the music state for a game. +func (s *Service) SetGame( + ctx context.Context, + gameID, playlistID, trackIndex int, + positionMs int64, + volume int32, + loop bool, + playback int32, +) (*MusicState, error) { + if trackIndex < 0 || positionMs < 0 || volume < 0 || volume > 100 || playback < 1 || playback > 3 { + return nil, ErrInvalidTrack + } + state, err := s.repo.SetMusic(ctx, gameID, playlistID, trackIndex, positionMs, volume, loop, playback) + if err != nil { + return nil, mapError(err) + } + return mapMusicState(state), nil +} + +// GetGame returns the music state for a game. +func (s *Service) GetGame(ctx context.Context, gameID int) (*MusicState, error) { + state, err := s.repo.GetMusic(ctx, gameID) + if err != nil { + return nil, mapError(err) + } + return mapMusicState(state), nil +} + +func mapError(err error) error { + switch { + case errors.Is(err, playlists_repo.ErrPlaylistNotFound): + return ErrPlaylistNotFound + case errors.Is(err, playlists_repo.ErrPlaylistInUse): + return ErrPlaylistInUse + case errors.Is(err, playlists_repo.ErrTrackNotFound): + return ErrTrackNotFound + case errors.Is(err, playlists_repo.ErrGameNotFound): + return ErrGameNotFound + case errors.Is(err, playlists_repo.ErrScenarioNotFound): + return ErrScenarioNotFound + default: + return err + } +} diff --git a/internal/services/scenarios_service/scenario.go b/internal/services/scenarios_service/scenario.go index 2882deb..88651ad 100644 --- a/internal/services/scenarios_service/scenario.go +++ b/internal/services/scenarios_service/scenario.go @@ -13,6 +13,7 @@ type Scenario struct { Name string Description *string Image *string + PlaylistID *int Story *storytelling.Story Author *users_service.User Status string diff --git a/internal/services/scenarios_service/scenario_mapper.go b/internal/services/scenarios_service/scenario_mapper.go index 5241a86..7e6b608 100644 --- a/internal/services/scenarios_service/scenario_mapper.go +++ b/internal/services/scenarios_service/scenario_mapper.go @@ -34,6 +34,7 @@ func MapScenarioLight( Name: o.Name, Description: o.Description, Image: mapImage(o.Image, domain), + PlaylistID: o.PlaylistID, Story: nil, Author: mapAuthor(o.Author), Status: o.Status, diff --git a/migrations/20261007120000_create_playlists.sql b/migrations/20261007120000_create_playlists.sql new file mode 100644 index 0000000..c40f545 --- /dev/null +++ b/migrations/20261007120000_create_playlists.sql @@ -0,0 +1,39 @@ +-- +goose Up +CREATE TABLE IF NOT EXISTS playlists ( + id SERIAL PRIMARY KEY, + name VARCHAR(255) NOT NULL, + created_at TIMESTAMP NOT NULL DEFAULT NOW(), + updated_at TIMESTAMP NOT NULL DEFAULT NOW() +); + +CREATE TABLE IF NOT EXISTS playlist_tracks ( + id SERIAL PRIMARY KEY, + playlist_id INTEGER NOT NULL REFERENCES playlists(id) ON DELETE CASCADE, + name VARCHAR(255) NOT NULL, + filename TEXT NOT NULL UNIQUE, + position INTEGER NOT NULL DEFAULT 0, + created_at TIMESTAMP NOT NULL DEFAULT NOW() +); + +ALTER TABLE scenarios ADD COLUMN IF NOT EXISTS playlist_id INTEGER REFERENCES playlists(id) ON DELETE RESTRICT; +ALTER TABLE games ADD COLUMN IF NOT EXISTS playlist_id INTEGER REFERENCES playlists(id) ON DELETE RESTRICT; + +CREATE TABLE IF NOT EXISTS game_music_states ( + game_id INTEGER PRIMARY KEY REFERENCES games(id) ON DELETE CASCADE, + playlist_id INTEGER REFERENCES playlists(id) ON DELETE RESTRICT, + track_index INTEGER NOT NULL DEFAULT 0, + position_ms BIGINT NOT NULL DEFAULT 0, + volume INTEGER NOT NULL DEFAULT 100, + loop BOOLEAN NOT NULL DEFAULT FALSE, + playback INTEGER NOT NULL DEFAULT 1, + state_version BIGINT NOT NULL DEFAULT 1, + started_at TIMESTAMPTZ, + updated_at TIMESTAMP NOT NULL DEFAULT NOW() +); + +-- +goose Down +DROP TABLE IF EXISTS game_music_states; +ALTER TABLE games DROP COLUMN IF EXISTS playlist_id; +ALTER TABLE scenarios DROP COLUMN IF EXISTS playlist_id; +DROP TABLE IF EXISTS playlist_tracks; +DROP TABLE IF EXISTS playlists; diff --git a/proto/main.pb.go b/proto/main.pb.go index e17e033..e3d6e92 100644 --- a/proto/main.pb.go +++ b/proto/main.pb.go @@ -229,6 +229,58 @@ func (ScreenCommand) EnumDescriptor() ([]byte, []int) { return file_main_proto_rawDescGZIP(), []int{2} } +type MusicPlaybackState int32 + +const ( + MusicPlaybackState_MUSIC_PLAYBACK_UNSPECIFIED MusicPlaybackState = 0 + MusicPlaybackState_MUSIC_PLAYBACK_STOPPED MusicPlaybackState = 1 + MusicPlaybackState_MUSIC_PLAYBACK_PLAYING MusicPlaybackState = 2 + MusicPlaybackState_MUSIC_PLAYBACK_PAUSED MusicPlaybackState = 3 +) + +// Enum value maps for MusicPlaybackState. +var ( + MusicPlaybackState_name = map[int32]string{ + 0: "MUSIC_PLAYBACK_UNSPECIFIED", + 1: "MUSIC_PLAYBACK_STOPPED", + 2: "MUSIC_PLAYBACK_PLAYING", + 3: "MUSIC_PLAYBACK_PAUSED", + } + MusicPlaybackState_value = map[string]int32{ + "MUSIC_PLAYBACK_UNSPECIFIED": 0, + "MUSIC_PLAYBACK_STOPPED": 1, + "MUSIC_PLAYBACK_PLAYING": 2, + "MUSIC_PLAYBACK_PAUSED": 3, + } +) + +func (x MusicPlaybackState) Enum() *MusicPlaybackState { + p := new(MusicPlaybackState) + *p = x + return p +} + +func (x MusicPlaybackState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MusicPlaybackState) Descriptor() protoreflect.EnumDescriptor { + return file_main_proto_enumTypes[3].Descriptor() +} + +func (MusicPlaybackState) Type() protoreflect.EnumType { + return &file_main_proto_enumTypes[3] +} + +func (x MusicPlaybackState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MusicPlaybackState.Descriptor instead. +func (MusicPlaybackState) EnumDescriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{3} +} + type PingReq struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -1917,6 +1969,766 @@ func (x *DownloadFileReq) GetFilename() string { return "" } +type PlaylistTrack struct { + state protoimpl.MessageState `protogen:"open.v1"` + ID int32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Filename string `protobuf:"bytes,3,opt,name=filename,proto3" json:"filename,omitempty"` + Position int32 `protobuf:"varint,4,opt,name=position,proto3" json:"position,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PlaylistTrack) Reset() { + *x = PlaylistTrack{} + mi := &file_main_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlaylistTrack) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlaylistTrack) ProtoMessage() {} + +func (x *PlaylistTrack) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[38] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlaylistTrack.ProtoReflect.Descriptor instead. +func (*PlaylistTrack) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{38} +} + +func (x *PlaylistTrack) GetID() int32 { + if x != nil { + return x.ID + } + return 0 +} + +func (x *PlaylistTrack) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PlaylistTrack) GetFilename() string { + if x != nil { + return x.Filename + } + return "" +} + +func (x *PlaylistTrack) GetPosition() int32 { + if x != nil { + return x.Position + } + return 0 +} + +type Playlist struct { + state protoimpl.MessageState `protogen:"open.v1"` + ID int32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Tracks []*PlaylistTrack `protobuf:"bytes,3,rep,name=tracks,proto3" json:"tracks,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Playlist) Reset() { + *x = Playlist{} + mi := &file_main_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Playlist) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Playlist) ProtoMessage() {} + +func (x *Playlist) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[39] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Playlist.ProtoReflect.Descriptor instead. +func (*Playlist) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{39} +} + +func (x *Playlist) GetID() int32 { + if x != nil { + return x.ID + } + return 0 +} + +func (x *Playlist) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Playlist) GetTracks() []*PlaylistTrack { + if x != nil { + return x.Tracks + } + return nil +} + +type GetPlaylistsReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetPlaylistsReq) Reset() { + *x = GetPlaylistsReq{} + mi := &file_main_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetPlaylistsReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPlaylistsReq) ProtoMessage() {} + +func (x *GetPlaylistsReq) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[40] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetPlaylistsReq.ProtoReflect.Descriptor instead. +func (*GetPlaylistsReq) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{40} +} + +type GetPlaylistsRsp struct { + state protoimpl.MessageState `protogen:"open.v1"` + Playlists []*Playlist `protobuf:"bytes,1,rep,name=playlists,proto3" json:"playlists,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetPlaylistsRsp) Reset() { + *x = GetPlaylistsRsp{} + mi := &file_main_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetPlaylistsRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPlaylistsRsp) ProtoMessage() {} + +func (x *GetPlaylistsRsp) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[41] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetPlaylistsRsp.ProtoReflect.Descriptor instead. +func (*GetPlaylistsRsp) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{41} +} + +func (x *GetPlaylistsRsp) GetPlaylists() []*Playlist { + if x != nil { + return x.Playlists + } + return nil +} + +type CreatePlaylistReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreatePlaylistReq) Reset() { + *x = CreatePlaylistReq{} + mi := &file_main_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreatePlaylistReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreatePlaylistReq) ProtoMessage() {} + +func (x *CreatePlaylistReq) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[42] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreatePlaylistReq.ProtoReflect.Descriptor instead. +func (*CreatePlaylistReq) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{42} +} + +func (x *CreatePlaylistReq) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type CreatePlaylistRsp struct { + state protoimpl.MessageState `protogen:"open.v1"` + Playlist *Playlist `protobuf:"bytes,1,opt,name=playlist,proto3" json:"playlist,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreatePlaylistRsp) Reset() { + *x = CreatePlaylistRsp{} + mi := &file_main_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreatePlaylistRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreatePlaylistRsp) ProtoMessage() {} + +func (x *CreatePlaylistRsp) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[43] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreatePlaylistRsp.ProtoReflect.Descriptor instead. +func (*CreatePlaylistRsp) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{43} +} + +func (x *CreatePlaylistRsp) GetPlaylist() *Playlist { + if x != nil { + return x.Playlist + } + return nil +} + +type UpdatePlaylistReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + ID int32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdatePlaylistReq) Reset() { + *x = UpdatePlaylistReq{} + mi := &file_main_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdatePlaylistReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdatePlaylistReq) ProtoMessage() {} + +func (x *UpdatePlaylistReq) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[44] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdatePlaylistReq.ProtoReflect.Descriptor instead. +func (*UpdatePlaylistReq) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{44} +} + +func (x *UpdatePlaylistReq) GetID() int32 { + if x != nil { + return x.ID + } + return 0 +} + +func (x *UpdatePlaylistReq) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +type UpdatePlaylistRsp struct { + state protoimpl.MessageState `protogen:"open.v1"` + Playlist *Playlist `protobuf:"bytes,1,opt,name=playlist,proto3" json:"playlist,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdatePlaylistRsp) Reset() { + *x = UpdatePlaylistRsp{} + mi := &file_main_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdatePlaylistRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdatePlaylistRsp) ProtoMessage() {} + +func (x *UpdatePlaylistRsp) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[45] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdatePlaylistRsp.ProtoReflect.Descriptor instead. +func (*UpdatePlaylistRsp) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{45} +} + +func (x *UpdatePlaylistRsp) GetPlaylist() *Playlist { + if x != nil { + return x.Playlist + } + return nil +} + +type DeletePlaylistReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + ID int32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeletePlaylistReq) Reset() { + *x = DeletePlaylistReq{} + mi := &file_main_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeletePlaylistReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeletePlaylistReq) ProtoMessage() {} + +func (x *DeletePlaylistReq) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[46] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeletePlaylistReq.ProtoReflect.Descriptor instead. +func (*DeletePlaylistReq) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{46} +} + +func (x *DeletePlaylistReq) GetID() int32 { + if x != nil { + return x.ID + } + return 0 +} + +type DeletePlaylistRsp struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeletePlaylistRsp) Reset() { + *x = DeletePlaylistRsp{} + mi := &file_main_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeletePlaylistRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeletePlaylistRsp) ProtoMessage() {} + +func (x *DeletePlaylistRsp) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[47] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeletePlaylistRsp.ProtoReflect.Descriptor instead. +func (*DeletePlaylistRsp) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{47} +} + +type UploadPlaylistTrackReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + PlaylistID int32 `protobuf:"varint,1,opt,name=playlistID,proto3" json:"playlistID,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Filename string `protobuf:"bytes,3,opt,name=filename,proto3" json:"filename,omitempty"` + Data []byte `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UploadPlaylistTrackReq) Reset() { + *x = UploadPlaylistTrackReq{} + mi := &file_main_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UploadPlaylistTrackReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UploadPlaylistTrackReq) ProtoMessage() {} + +func (x *UploadPlaylistTrackReq) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[48] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UploadPlaylistTrackReq.ProtoReflect.Descriptor instead. +func (*UploadPlaylistTrackReq) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{48} +} + +func (x *UploadPlaylistTrackReq) GetPlaylistID() int32 { + if x != nil { + return x.PlaylistID + } + return 0 +} + +func (x *UploadPlaylistTrackReq) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *UploadPlaylistTrackReq) GetFilename() string { + if x != nil { + return x.Filename + } + return "" +} + +func (x *UploadPlaylistTrackReq) GetData() []byte { + if x != nil { + return x.Data + } + return nil +} + +type UploadPlaylistTrackRsp struct { + state protoimpl.MessageState `protogen:"open.v1"` + Playlist *Playlist `protobuf:"bytes,1,opt,name=playlist,proto3" json:"playlist,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UploadPlaylistTrackRsp) Reset() { + *x = UploadPlaylistTrackRsp{} + mi := &file_main_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UploadPlaylistTrackRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UploadPlaylistTrackRsp) ProtoMessage() {} + +func (x *UploadPlaylistTrackRsp) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[49] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UploadPlaylistTrackRsp.ProtoReflect.Descriptor instead. +func (*UploadPlaylistTrackRsp) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{49} +} + +func (x *UploadPlaylistTrackRsp) GetPlaylist() *Playlist { + if x != nil { + return x.Playlist + } + return nil +} + +type DeletePlaylistTrackReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + PlaylistID int32 `protobuf:"varint,1,opt,name=playlistID,proto3" json:"playlistID,omitempty"` + TrackID int32 `protobuf:"varint,2,opt,name=trackID,proto3" json:"trackID,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeletePlaylistTrackReq) Reset() { + *x = DeletePlaylistTrackReq{} + mi := &file_main_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeletePlaylistTrackReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeletePlaylistTrackReq) ProtoMessage() {} + +func (x *DeletePlaylistTrackReq) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[50] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeletePlaylistTrackReq.ProtoReflect.Descriptor instead. +func (*DeletePlaylistTrackReq) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{50} +} + +func (x *DeletePlaylistTrackReq) GetPlaylistID() int32 { + if x != nil { + return x.PlaylistID + } + return 0 +} + +func (x *DeletePlaylistTrackReq) GetTrackID() int32 { + if x != nil { + return x.TrackID + } + return 0 +} + +type DeletePlaylistTrackRsp struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeletePlaylistTrackRsp) Reset() { + *x = DeletePlaylistTrackRsp{} + mi := &file_main_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeletePlaylistTrackRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeletePlaylistTrackRsp) ProtoMessage() {} + +func (x *DeletePlaylistTrackRsp) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[51] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeletePlaylistTrackRsp.ProtoReflect.Descriptor instead. +func (*DeletePlaylistTrackRsp) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{51} +} + +type SetScenarioPlaylistReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + ID int32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + PlaylistID int32 `protobuf:"varint,2,opt,name=playlistID,proto3" json:"playlistID,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SetScenarioPlaylistReq) Reset() { + *x = SetScenarioPlaylistReq{} + mi := &file_main_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SetScenarioPlaylistReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetScenarioPlaylistReq) ProtoMessage() {} + +func (x *SetScenarioPlaylistReq) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[52] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetScenarioPlaylistReq.ProtoReflect.Descriptor instead. +func (*SetScenarioPlaylistReq) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{52} +} + +func (x *SetScenarioPlaylistReq) GetID() int32 { + if x != nil { + return x.ID + } + return 0 +} + +func (x *SetScenarioPlaylistReq) GetPlaylistID() int32 { + if x != nil { + return x.PlaylistID + } + return 0 +} + +type SetScenarioPlaylistRsp struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SetScenarioPlaylistRsp) Reset() { + *x = SetScenarioPlaylistRsp{} + mi := &file_main_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SetScenarioPlaylistRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetScenarioPlaylistRsp) ProtoMessage() {} + +func (x *SetScenarioPlaylistRsp) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[53] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetScenarioPlaylistRsp.ProtoReflect.Descriptor instead. +func (*SetScenarioPlaylistRsp) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{53} +} + type AddScenarioReq struct { state protoimpl.MessageState `protogen:"open.v1"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` @@ -1926,7 +2738,7 @@ type AddScenarioReq struct { func (x *AddScenarioReq) Reset() { *x = AddScenarioReq{} - mi := &file_main_proto_msgTypes[38] + mi := &file_main_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1938,7 +2750,7 @@ func (x *AddScenarioReq) String() string { func (*AddScenarioReq) ProtoMessage() {} func (x *AddScenarioReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[38] + mi := &file_main_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1951,7 +2763,7 @@ func (x *AddScenarioReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddScenarioReq.ProtoReflect.Descriptor instead. func (*AddScenarioReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{38} + return file_main_proto_rawDescGZIP(), []int{54} } func (x *AddScenarioReq) GetName() string { @@ -1970,7 +2782,7 @@ type AddScenarioRsp struct { func (x *AddScenarioRsp) Reset() { *x = AddScenarioRsp{} - mi := &file_main_proto_msgTypes[39] + mi := &file_main_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1982,7 +2794,7 @@ func (x *AddScenarioRsp) String() string { func (*AddScenarioRsp) ProtoMessage() {} func (x *AddScenarioRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[39] + mi := &file_main_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1995,7 +2807,7 @@ func (x *AddScenarioRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddScenarioRsp.ProtoReflect.Descriptor instead. func (*AddScenarioRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{39} + return file_main_proto_rawDescGZIP(), []int{55} } func (x *AddScenarioRsp) GetID() int32 { @@ -2013,7 +2825,7 @@ type GetMyScenariosReq struct { func (x *GetMyScenariosReq) Reset() { *x = GetMyScenariosReq{} - mi := &file_main_proto_msgTypes[40] + mi := &file_main_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2025,7 +2837,7 @@ func (x *GetMyScenariosReq) String() string { func (*GetMyScenariosReq) ProtoMessage() {} func (x *GetMyScenariosReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[40] + mi := &file_main_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2038,7 +2850,7 @@ func (x *GetMyScenariosReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMyScenariosReq.ProtoReflect.Descriptor instead. func (*GetMyScenariosReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{40} + return file_main_proto_rawDescGZIP(), []int{56} } type GetMyScenariosRsp struct { @@ -2050,7 +2862,7 @@ type GetMyScenariosRsp struct { func (x *GetMyScenariosRsp) Reset() { *x = GetMyScenariosRsp{} - mi := &file_main_proto_msgTypes[41] + mi := &file_main_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2062,7 +2874,7 @@ func (x *GetMyScenariosRsp) String() string { func (*GetMyScenariosRsp) ProtoMessage() {} func (x *GetMyScenariosRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[41] + mi := &file_main_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2075,7 +2887,7 @@ func (x *GetMyScenariosRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMyScenariosRsp.ProtoReflect.Descriptor instead. func (*GetMyScenariosRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{41} + return file_main_proto_rawDescGZIP(), []int{57} } func (x *GetMyScenariosRsp) GetScenarios() []*Scenario { @@ -2093,7 +2905,7 @@ type GetScenariosCatalogReq struct { func (x *GetScenariosCatalogReq) Reset() { *x = GetScenariosCatalogReq{} - mi := &file_main_proto_msgTypes[42] + mi := &file_main_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2105,7 +2917,7 @@ func (x *GetScenariosCatalogReq) String() string { func (*GetScenariosCatalogReq) ProtoMessage() {} func (x *GetScenariosCatalogReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[42] + mi := &file_main_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2118,7 +2930,7 @@ func (x *GetScenariosCatalogReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScenariosCatalogReq.ProtoReflect.Descriptor instead. func (*GetScenariosCatalogReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{42} + return file_main_proto_rawDescGZIP(), []int{58} } type GetScenariosCatalogRsp struct { @@ -2130,7 +2942,7 @@ type GetScenariosCatalogRsp struct { func (x *GetScenariosCatalogRsp) Reset() { *x = GetScenariosCatalogRsp{} - mi := &file_main_proto_msgTypes[43] + mi := &file_main_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2142,7 +2954,7 @@ func (x *GetScenariosCatalogRsp) String() string { func (*GetScenariosCatalogRsp) ProtoMessage() {} func (x *GetScenariosCatalogRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[43] + mi := &file_main_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2155,7 +2967,7 @@ func (x *GetScenariosCatalogRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScenariosCatalogRsp.ProtoReflect.Descriptor instead. func (*GetScenariosCatalogRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{43} + return file_main_proto_rawDescGZIP(), []int{59} } func (x *GetScenariosCatalogRsp) GetScenarios() []*Scenario { @@ -2174,7 +2986,7 @@ type GetScenarioReq struct { func (x *GetScenarioReq) Reset() { *x = GetScenarioReq{} - mi := &file_main_proto_msgTypes[44] + mi := &file_main_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2186,7 +2998,7 @@ func (x *GetScenarioReq) String() string { func (*GetScenarioReq) ProtoMessage() {} func (x *GetScenarioReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[44] + mi := &file_main_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2199,7 +3011,7 @@ func (x *GetScenarioReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScenarioReq.ProtoReflect.Descriptor instead. func (*GetScenarioReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{44} + return file_main_proto_rawDescGZIP(), []int{60} } func (x *GetScenarioReq) GetID() int32 { @@ -2218,7 +3030,7 @@ type GetScenarioRsp struct { func (x *GetScenarioRsp) Reset() { *x = GetScenarioRsp{} - mi := &file_main_proto_msgTypes[45] + mi := &file_main_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2230,7 +3042,7 @@ func (x *GetScenarioRsp) String() string { func (*GetScenarioRsp) ProtoMessage() {} func (x *GetScenarioRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[45] + mi := &file_main_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2243,7 +3055,7 @@ func (x *GetScenarioRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScenarioRsp.ProtoReflect.Descriptor instead. func (*GetScenarioRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{45} + return file_main_proto_rawDescGZIP(), []int{61} } func (x *GetScenarioRsp) GetScenario() *Scenario { @@ -2254,27 +3066,28 @@ func (x *GetScenarioRsp) GetScenario() *Scenario { } type Scenario struct { - state protoimpl.MessageState `protogen:"open.v1"` - ID int32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Description *string `protobuf:"bytes,3,opt,name=description,proto3,oneof" json:"description,omitempty"` - Image *string `protobuf:"bytes,4,opt,name=image,proto3,oneof" json:"image,omitempty"` - Story *Story `protobuf:"bytes,5,opt,name=story,proto3" json:"story,omitempty"` - Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` - Author *User `protobuf:"bytes,7,opt,name=author,proto3" json:"author,omitempty"` - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - PublishedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=published_at,json=publishedAt,proto3" json:"published_at,omitempty"` - AverageRating float64 `protobuf:"fixed64,11,opt,name=average_rating,json=averageRating,proto3" json:"average_rating,omitempty"` - ReviewsCount int32 `protobuf:"varint,12,opt,name=reviews_count,json=reviewsCount,proto3" json:"reviews_count,omitempty"` - Difficulty string `protobuf:"bytes,13,opt,name=difficulty,proto3" json:"difficulty,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ID int32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Description *string `protobuf:"bytes,3,opt,name=description,proto3,oneof" json:"description,omitempty"` + Image *string `protobuf:"bytes,4,opt,name=image,proto3,oneof" json:"image,omitempty"` + Story *Story `protobuf:"bytes,5,opt,name=story,proto3" json:"story,omitempty"` + Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` + Author *User `protobuf:"bytes,7,opt,name=author,proto3" json:"author,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + PublishedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=published_at,json=publishedAt,proto3" json:"published_at,omitempty"` + AverageRating float64 `protobuf:"fixed64,11,opt,name=average_rating,json=averageRating,proto3" json:"average_rating,omitempty"` + ReviewsCount int32 `protobuf:"varint,12,opt,name=reviews_count,json=reviewsCount,proto3" json:"reviews_count,omitempty"` + Difficulty string `protobuf:"bytes,13,opt,name=difficulty,proto3" json:"difficulty,omitempty"` + MusicPlaylistId *int32 `protobuf:"varint,14,opt,name=music_playlist_id,proto3,oneof" json:"music_playlist_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Scenario) Reset() { *x = Scenario{} - mi := &file_main_proto_msgTypes[46] + mi := &file_main_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2286,7 +3099,7 @@ func (x *Scenario) String() string { func (*Scenario) ProtoMessage() {} func (x *Scenario) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[46] + mi := &file_main_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2299,7 +3112,7 @@ func (x *Scenario) ProtoReflect() protoreflect.Message { // Deprecated: Use Scenario.ProtoReflect.Descriptor instead. func (*Scenario) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{46} + return file_main_proto_rawDescGZIP(), []int{62} } func (x *Scenario) GetID() int32 { @@ -2393,6 +3206,13 @@ func (x *Scenario) GetDifficulty() string { return "" } +func (x *Scenario) GetMusicPlaylistId() int32 { + if x != nil && x.MusicPlaylistId != nil { + return *x.MusicPlaylistId + } + return 0 +} + type Story struct { state protoimpl.MessageState `protogen:"open.v1"` Places []*Place `protobuf:"bytes,1,rep,name=places,proto3" json:"places,omitempty"` @@ -2406,7 +3226,7 @@ type Story struct { func (x *Story) Reset() { *x = Story{} - mi := &file_main_proto_msgTypes[47] + mi := &file_main_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2418,7 +3238,7 @@ func (x *Story) String() string { func (*Story) ProtoMessage() {} func (x *Story) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[47] + mi := &file_main_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2431,7 +3251,7 @@ func (x *Story) ProtoReflect() protoreflect.Message { // Deprecated: Use Story.ProtoReflect.Descriptor instead. func (*Story) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{47} + return file_main_proto_rawDescGZIP(), []int{63} } func (x *Story) GetPlaces() []*Place { @@ -2479,7 +3299,7 @@ type Conclusion struct { func (x *Conclusion) Reset() { *x = Conclusion{} - mi := &file_main_proto_msgTypes[48] + mi := &file_main_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2491,7 +3311,7 @@ func (x *Conclusion) String() string { func (*Conclusion) ProtoMessage() {} func (x *Conclusion) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[48] + mi := &file_main_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2504,7 +3324,7 @@ func (x *Conclusion) ProtoReflect() protoreflect.Message { // Deprecated: Use Conclusion.ProtoReflect.Descriptor instead. func (*Conclusion) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{48} + return file_main_proto_rawDescGZIP(), []int{64} } func (x *Conclusion) GetText() string { @@ -2531,7 +3351,7 @@ type Introduction struct { func (x *Introduction) Reset() { *x = Introduction{} - mi := &file_main_proto_msgTypes[49] + mi := &file_main_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2543,7 +3363,7 @@ func (x *Introduction) String() string { func (*Introduction) ProtoMessage() {} func (x *Introduction) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[49] + mi := &file_main_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2556,7 +3376,7 @@ func (x *Introduction) ProtoReflect() protoreflect.Message { // Deprecated: Use Introduction.ProtoReflect.Descriptor instead. func (*Introduction) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{49} + return file_main_proto_rawDescGZIP(), []int{65} } func (x *Introduction) GetText() string { @@ -2589,7 +3409,7 @@ type Place struct { func (x *Place) Reset() { *x = Place{} - mi := &file_main_proto_msgTypes[50] + mi := &file_main_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2601,7 +3421,7 @@ func (x *Place) String() string { func (*Place) ProtoMessage() {} func (x *Place) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[50] + mi := &file_main_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2614,7 +3434,7 @@ func (x *Place) ProtoReflect() protoreflect.Message { // Deprecated: Use Place.ProtoReflect.Descriptor instead. func (*Place) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{50} + return file_main_proto_rawDescGZIP(), []int{66} } func (x *Place) GetCode() string { @@ -2687,7 +3507,7 @@ type Application struct { func (x *Application) Reset() { *x = Application{} - mi := &file_main_proto_msgTypes[51] + mi := &file_main_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2699,7 +3519,7 @@ func (x *Application) String() string { func (*Application) ProtoMessage() {} func (x *Application) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[51] + mi := &file_main_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2712,7 +3532,7 @@ func (x *Application) ProtoReflect() protoreflect.Message { // Deprecated: Use Application.ProtoReflect.Descriptor instead. func (*Application) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{51} + return file_main_proto_rawDescGZIP(), []int{67} } func (x *Application) GetName() string { @@ -2747,7 +3567,7 @@ type Door struct { func (x *Door) Reset() { *x = Door{} - mi := &file_main_proto_msgTypes[52] + mi := &file_main_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2759,7 +3579,7 @@ func (x *Door) String() string { func (*Door) ProtoMessage() {} func (x *Door) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[52] + mi := &file_main_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2772,7 +3592,7 @@ func (x *Door) ProtoReflect() protoreflect.Message { // Deprecated: Use Door.ProtoReflect.Descriptor instead. func (*Door) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{52} + return file_main_proto_rawDescGZIP(), []int{68} } func (x *Door) GetCode() string { @@ -2805,7 +3625,7 @@ type Key struct { func (x *Key) Reset() { *x = Key{} - mi := &file_main_proto_msgTypes[53] + mi := &file_main_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2817,7 +3637,7 @@ func (x *Key) String() string { func (*Key) ProtoMessage() {} func (x *Key) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[53] + mi := &file_main_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2830,7 +3650,7 @@ func (x *Key) ProtoReflect() protoreflect.Message { // Deprecated: Use Key.ProtoReflect.Descriptor instead. func (*Key) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{53} + return file_main_proto_rawDescGZIP(), []int{69} } func (x *Key) GetName() string { @@ -2857,7 +3677,7 @@ type Question struct { func (x *Question) Reset() { *x = Question{} - mi := &file_main_proto_msgTypes[54] + mi := &file_main_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2869,7 +3689,7 @@ func (x *Question) String() string { func (*Question) ProtoMessage() {} func (x *Question) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[54] + mi := &file_main_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2882,7 +3702,7 @@ func (x *Question) ProtoReflect() protoreflect.Message { // Deprecated: Use Question.ProtoReflect.Descriptor instead. func (*Question) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{54} + return file_main_proto_rawDescGZIP(), []int{70} } func (x *Question) GetCode() string { @@ -2919,7 +3739,7 @@ type Answer struct { func (x *Answer) Reset() { *x = Answer{} - mi := &file_main_proto_msgTypes[55] + mi := &file_main_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2931,7 +3751,7 @@ func (x *Answer) String() string { func (*Answer) ProtoMessage() {} func (x *Answer) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[55] + mi := &file_main_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2944,7 +3764,7 @@ func (x *Answer) ProtoReflect() protoreflect.Message { // Deprecated: Use Answer.ProtoReflect.Descriptor instead. func (*Answer) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{55} + return file_main_proto_rawDescGZIP(), []int{71} } func (x *Answer) GetQuestionCode() string { @@ -2974,7 +3794,7 @@ type AnswerScore struct { func (x *AnswerScore) Reset() { *x = AnswerScore{} - mi := &file_main_proto_msgTypes[56] + mi := &file_main_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2986,7 +3806,7 @@ func (x *AnswerScore) String() string { func (*AnswerScore) ProtoMessage() {} func (x *AnswerScore) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[56] + mi := &file_main_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2999,7 +3819,7 @@ func (x *AnswerScore) ProtoReflect() protoreflect.Message { // Deprecated: Use AnswerScore.ProtoReflect.Descriptor instead. func (*AnswerScore) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{56} + return file_main_proto_rawDescGZIP(), []int{72} } func (x *AnswerScore) GetQuestionCode() string { @@ -3034,7 +3854,7 @@ type TeamAnswers struct { func (x *TeamAnswers) Reset() { *x = TeamAnswers{} - mi := &file_main_proto_msgTypes[57] + mi := &file_main_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3046,7 +3866,7 @@ func (x *TeamAnswers) String() string { func (*TeamAnswers) ProtoMessage() {} func (x *TeamAnswers) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[57] + mi := &file_main_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3059,7 +3879,7 @@ func (x *TeamAnswers) ProtoReflect() protoreflect.Message { // Deprecated: Use TeamAnswers.ProtoReflect.Descriptor instead. func (*TeamAnswers) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{57} + return file_main_proto_rawDescGZIP(), []int{73} } func (x *TeamAnswers) GetTeam() *Team { @@ -3088,7 +3908,7 @@ type UpdateScenarioReq struct { func (x *UpdateScenarioReq) Reset() { *x = UpdateScenarioReq{} - mi := &file_main_proto_msgTypes[58] + mi := &file_main_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3100,7 +3920,7 @@ func (x *UpdateScenarioReq) String() string { func (*UpdateScenarioReq) ProtoMessage() {} func (x *UpdateScenarioReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[58] + mi := &file_main_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3113,7 +3933,7 @@ func (x *UpdateScenarioReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateScenarioReq.ProtoReflect.Descriptor instead. func (*UpdateScenarioReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{58} + return file_main_proto_rawDescGZIP(), []int{74} } func (x *UpdateScenarioReq) GetID() int32 { @@ -3152,7 +3972,7 @@ type UpdateScenarioRsp struct { func (x *UpdateScenarioRsp) Reset() { *x = UpdateScenarioRsp{} - mi := &file_main_proto_msgTypes[59] + mi := &file_main_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3164,7 +3984,7 @@ func (x *UpdateScenarioRsp) String() string { func (*UpdateScenarioRsp) ProtoMessage() {} func (x *UpdateScenarioRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[59] + mi := &file_main_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3177,7 +3997,7 @@ func (x *UpdateScenarioRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateScenarioRsp.ProtoReflect.Descriptor instead. func (*UpdateScenarioRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{59} + return file_main_proto_rawDescGZIP(), []int{75} } type PublicScenarioReq struct { @@ -3189,7 +4009,7 @@ type PublicScenarioReq struct { func (x *PublicScenarioReq) Reset() { *x = PublicScenarioReq{} - mi := &file_main_proto_msgTypes[60] + mi := &file_main_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3201,7 +4021,7 @@ func (x *PublicScenarioReq) String() string { func (*PublicScenarioReq) ProtoMessage() {} func (x *PublicScenarioReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[60] + mi := &file_main_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3214,7 +4034,7 @@ func (x *PublicScenarioReq) ProtoReflect() protoreflect.Message { // Deprecated: Use PublicScenarioReq.ProtoReflect.Descriptor instead. func (*PublicScenarioReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{60} + return file_main_proto_rawDescGZIP(), []int{76} } func (x *PublicScenarioReq) GetID() int32 { @@ -3232,7 +4052,7 @@ type PublicScenarioRsp struct { func (x *PublicScenarioRsp) Reset() { *x = PublicScenarioRsp{} - mi := &file_main_proto_msgTypes[61] + mi := &file_main_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3244,7 +4064,7 @@ func (x *PublicScenarioRsp) String() string { func (*PublicScenarioRsp) ProtoMessage() {} func (x *PublicScenarioRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[61] + mi := &file_main_proto_msgTypes[77] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3257,7 +4077,7 @@ func (x *PublicScenarioRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use PublicScenarioRsp.ProtoReflect.Descriptor instead. func (*PublicScenarioRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{61} + return file_main_proto_rawDescGZIP(), []int{77} } type DraftScenarioReq struct { @@ -3269,7 +4089,7 @@ type DraftScenarioReq struct { func (x *DraftScenarioReq) Reset() { *x = DraftScenarioReq{} - mi := &file_main_proto_msgTypes[62] + mi := &file_main_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3281,7 +4101,7 @@ func (x *DraftScenarioReq) String() string { func (*DraftScenarioReq) ProtoMessage() {} func (x *DraftScenarioReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[62] + mi := &file_main_proto_msgTypes[78] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3294,7 +4114,7 @@ func (x *DraftScenarioReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DraftScenarioReq.ProtoReflect.Descriptor instead. func (*DraftScenarioReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{62} + return file_main_proto_rawDescGZIP(), []int{78} } func (x *DraftScenarioReq) GetID() int32 { @@ -3312,7 +4132,7 @@ type DraftScenarioRsp struct { func (x *DraftScenarioRsp) Reset() { *x = DraftScenarioRsp{} - mi := &file_main_proto_msgTypes[63] + mi := &file_main_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3324,7 +4144,7 @@ func (x *DraftScenarioRsp) String() string { func (*DraftScenarioRsp) ProtoMessage() {} func (x *DraftScenarioRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[63] + mi := &file_main_proto_msgTypes[79] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3337,7 +4157,7 @@ func (x *DraftScenarioRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use DraftScenarioRsp.ProtoReflect.Descriptor instead. func (*DraftScenarioRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{63} + return file_main_proto_rawDescGZIP(), []int{79} } type DeleteScenarioReq struct { @@ -3349,7 +4169,7 @@ type DeleteScenarioReq struct { func (x *DeleteScenarioReq) Reset() { *x = DeleteScenarioReq{} - mi := &file_main_proto_msgTypes[64] + mi := &file_main_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3361,7 +4181,7 @@ func (x *DeleteScenarioReq) String() string { func (*DeleteScenarioReq) ProtoMessage() {} func (x *DeleteScenarioReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[64] + mi := &file_main_proto_msgTypes[80] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3374,7 +4194,7 @@ func (x *DeleteScenarioReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteScenarioReq.ProtoReflect.Descriptor instead. func (*DeleteScenarioReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{64} + return file_main_proto_rawDescGZIP(), []int{80} } func (x *DeleteScenarioReq) GetID() int32 { @@ -3392,7 +4212,7 @@ type DeleteScenarioRsp struct { func (x *DeleteScenarioRsp) Reset() { *x = DeleteScenarioRsp{} - mi := &file_main_proto_msgTypes[65] + mi := &file_main_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3404,7 +4224,7 @@ func (x *DeleteScenarioRsp) String() string { func (*DeleteScenarioRsp) ProtoMessage() {} func (x *DeleteScenarioRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[65] + mi := &file_main_proto_msgTypes[81] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3417,7 +4237,7 @@ func (x *DeleteScenarioRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteScenarioRsp.ProtoReflect.Descriptor instead. func (*DeleteScenarioRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{65} + return file_main_proto_rawDescGZIP(), []int{81} } type AddScenarioPlaceReq struct { @@ -3430,7 +4250,7 @@ type AddScenarioPlaceReq struct { func (x *AddScenarioPlaceReq) Reset() { *x = AddScenarioPlaceReq{} - mi := &file_main_proto_msgTypes[66] + mi := &file_main_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3442,7 +4262,7 @@ func (x *AddScenarioPlaceReq) String() string { func (*AddScenarioPlaceReq) ProtoMessage() {} func (x *AddScenarioPlaceReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[66] + mi := &file_main_proto_msgTypes[82] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3455,7 +4275,7 @@ func (x *AddScenarioPlaceReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddScenarioPlaceReq.ProtoReflect.Descriptor instead. func (*AddScenarioPlaceReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{66} + return file_main_proto_rawDescGZIP(), []int{82} } func (x *AddScenarioPlaceReq) GetID() int32 { @@ -3480,7 +4300,7 @@ type AddScenarioPlaceRsp struct { func (x *AddScenarioPlaceRsp) Reset() { *x = AddScenarioPlaceRsp{} - mi := &file_main_proto_msgTypes[67] + mi := &file_main_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3492,7 +4312,7 @@ func (x *AddScenarioPlaceRsp) String() string { func (*AddScenarioPlaceRsp) ProtoMessage() {} func (x *AddScenarioPlaceRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[67] + mi := &file_main_proto_msgTypes[83] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3505,7 +4325,7 @@ func (x *AddScenarioPlaceRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddScenarioPlaceRsp.ProtoReflect.Descriptor instead. func (*AddScenarioPlaceRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{67} + return file_main_proto_rawDescGZIP(), []int{83} } type UpdateScenarioPlaceReq struct { @@ -3519,7 +4339,7 @@ type UpdateScenarioPlaceReq struct { func (x *UpdateScenarioPlaceReq) Reset() { *x = UpdateScenarioPlaceReq{} - mi := &file_main_proto_msgTypes[68] + mi := &file_main_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3531,7 +4351,7 @@ func (x *UpdateScenarioPlaceReq) String() string { func (*UpdateScenarioPlaceReq) ProtoMessage() {} func (x *UpdateScenarioPlaceReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[68] + mi := &file_main_proto_msgTypes[84] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3544,7 +4364,7 @@ func (x *UpdateScenarioPlaceReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateScenarioPlaceReq.ProtoReflect.Descriptor instead. func (*UpdateScenarioPlaceReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{68} + return file_main_proto_rawDescGZIP(), []int{84} } func (x *UpdateScenarioPlaceReq) GetID() int32 { @@ -3576,7 +4396,7 @@ type UpdateScenarioPlaceRsp struct { func (x *UpdateScenarioPlaceRsp) Reset() { *x = UpdateScenarioPlaceRsp{} - mi := &file_main_proto_msgTypes[69] + mi := &file_main_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3588,7 +4408,7 @@ func (x *UpdateScenarioPlaceRsp) String() string { func (*UpdateScenarioPlaceRsp) ProtoMessage() {} func (x *UpdateScenarioPlaceRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[69] + mi := &file_main_proto_msgTypes[85] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3601,7 +4421,7 @@ func (x *UpdateScenarioPlaceRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateScenarioPlaceRsp.ProtoReflect.Descriptor instead. func (*UpdateScenarioPlaceRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{69} + return file_main_proto_rawDescGZIP(), []int{85} } type DeleteScenarioPlaceReq struct { @@ -3614,7 +4434,7 @@ type DeleteScenarioPlaceReq struct { func (x *DeleteScenarioPlaceReq) Reset() { *x = DeleteScenarioPlaceReq{} - mi := &file_main_proto_msgTypes[70] + mi := &file_main_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3626,7 +4446,7 @@ func (x *DeleteScenarioPlaceReq) String() string { func (*DeleteScenarioPlaceReq) ProtoMessage() {} func (x *DeleteScenarioPlaceReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[70] + mi := &file_main_proto_msgTypes[86] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3639,7 +4459,7 @@ func (x *DeleteScenarioPlaceReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteScenarioPlaceReq.ProtoReflect.Descriptor instead. func (*DeleteScenarioPlaceReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{70} + return file_main_proto_rawDescGZIP(), []int{86} } func (x *DeleteScenarioPlaceReq) GetID() int32 { @@ -3664,7 +4484,7 @@ type DeleteScenarioPlaceRsp struct { func (x *DeleteScenarioPlaceRsp) Reset() { *x = DeleteScenarioPlaceRsp{} - mi := &file_main_proto_msgTypes[71] + mi := &file_main_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3676,7 +4496,7 @@ func (x *DeleteScenarioPlaceRsp) String() string { func (*DeleteScenarioPlaceRsp) ProtoMessage() {} func (x *DeleteScenarioPlaceRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[71] + mi := &file_main_proto_msgTypes[87] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3689,7 +4509,7 @@ func (x *DeleteScenarioPlaceRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteScenarioPlaceRsp.ProtoReflect.Descriptor instead. func (*DeleteScenarioPlaceRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{71} + return file_main_proto_rawDescGZIP(), []int{87} } type UpdateScenarioConclusionReq struct { @@ -3702,7 +4522,7 @@ type UpdateScenarioConclusionReq struct { func (x *UpdateScenarioConclusionReq) Reset() { *x = UpdateScenarioConclusionReq{} - mi := &file_main_proto_msgTypes[72] + mi := &file_main_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3714,7 +4534,7 @@ func (x *UpdateScenarioConclusionReq) String() string { func (*UpdateScenarioConclusionReq) ProtoMessage() {} func (x *UpdateScenarioConclusionReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[72] + mi := &file_main_proto_msgTypes[88] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3727,7 +4547,7 @@ func (x *UpdateScenarioConclusionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateScenarioConclusionReq.ProtoReflect.Descriptor instead. func (*UpdateScenarioConclusionReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{72} + return file_main_proto_rawDescGZIP(), []int{88} } func (x *UpdateScenarioConclusionReq) GetID() int32 { @@ -3752,7 +4572,7 @@ type UpdateScenarioConclusionRsp struct { func (x *UpdateScenarioConclusionRsp) Reset() { *x = UpdateScenarioConclusionRsp{} - mi := &file_main_proto_msgTypes[73] + mi := &file_main_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3764,7 +4584,7 @@ func (x *UpdateScenarioConclusionRsp) String() string { func (*UpdateScenarioConclusionRsp) ProtoMessage() {} func (x *UpdateScenarioConclusionRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[73] + mi := &file_main_proto_msgTypes[89] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3777,7 +4597,7 @@ func (x *UpdateScenarioConclusionRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateScenarioConclusionRsp.ProtoReflect.Descriptor instead. func (*UpdateScenarioConclusionRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{73} + return file_main_proto_rawDescGZIP(), []int{89} } type UpdateScenarioIntroReq struct { @@ -3790,7 +4610,7 @@ type UpdateScenarioIntroReq struct { func (x *UpdateScenarioIntroReq) Reset() { *x = UpdateScenarioIntroReq{} - mi := &file_main_proto_msgTypes[74] + mi := &file_main_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3802,7 +4622,7 @@ func (x *UpdateScenarioIntroReq) String() string { func (*UpdateScenarioIntroReq) ProtoMessage() {} func (x *UpdateScenarioIntroReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[74] + mi := &file_main_proto_msgTypes[90] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3815,7 +4635,7 @@ func (x *UpdateScenarioIntroReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateScenarioIntroReq.ProtoReflect.Descriptor instead. func (*UpdateScenarioIntroReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{74} + return file_main_proto_rawDescGZIP(), []int{90} } func (x *UpdateScenarioIntroReq) GetID() int32 { @@ -3840,7 +4660,7 @@ type UpdateScenarioIntroRsp struct { func (x *UpdateScenarioIntroRsp) Reset() { *x = UpdateScenarioIntroRsp{} - mi := &file_main_proto_msgTypes[75] + mi := &file_main_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3852,7 +4672,7 @@ func (x *UpdateScenarioIntroRsp) String() string { func (*UpdateScenarioIntroRsp) ProtoMessage() {} func (x *UpdateScenarioIntroRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[75] + mi := &file_main_proto_msgTypes[91] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3865,7 +4685,7 @@ func (x *UpdateScenarioIntroRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateScenarioIntroRsp.ProtoReflect.Descriptor instead. func (*UpdateScenarioIntroRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{75} + return file_main_proto_rawDescGZIP(), []int{91} } type AddScenarioQuestionReq struct { @@ -3878,7 +4698,7 @@ type AddScenarioQuestionReq struct { func (x *AddScenarioQuestionReq) Reset() { *x = AddScenarioQuestionReq{} - mi := &file_main_proto_msgTypes[76] + mi := &file_main_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3890,7 +4710,7 @@ func (x *AddScenarioQuestionReq) String() string { func (*AddScenarioQuestionReq) ProtoMessage() {} func (x *AddScenarioQuestionReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[76] + mi := &file_main_proto_msgTypes[92] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3903,7 +4723,7 @@ func (x *AddScenarioQuestionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddScenarioQuestionReq.ProtoReflect.Descriptor instead. func (*AddScenarioQuestionReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{76} + return file_main_proto_rawDescGZIP(), []int{92} } func (x *AddScenarioQuestionReq) GetID() int32 { @@ -3928,7 +4748,7 @@ type AddScenarioQuestionRsp struct { func (x *AddScenarioQuestionRsp) Reset() { *x = AddScenarioQuestionRsp{} - mi := &file_main_proto_msgTypes[77] + mi := &file_main_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3940,7 +4760,7 @@ func (x *AddScenarioQuestionRsp) String() string { func (*AddScenarioQuestionRsp) ProtoMessage() {} func (x *AddScenarioQuestionRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[77] + mi := &file_main_proto_msgTypes[93] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3953,7 +4773,7 @@ func (x *AddScenarioQuestionRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddScenarioQuestionRsp.ProtoReflect.Descriptor instead. func (*AddScenarioQuestionRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{77} + return file_main_proto_rawDescGZIP(), []int{93} } type UpdateScenarioQuestionReq struct { @@ -3967,7 +4787,7 @@ type UpdateScenarioQuestionReq struct { func (x *UpdateScenarioQuestionReq) Reset() { *x = UpdateScenarioQuestionReq{} - mi := &file_main_proto_msgTypes[78] + mi := &file_main_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3979,7 +4799,7 @@ func (x *UpdateScenarioQuestionReq) String() string { func (*UpdateScenarioQuestionReq) ProtoMessage() {} func (x *UpdateScenarioQuestionReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[78] + mi := &file_main_proto_msgTypes[94] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3992,7 +4812,7 @@ func (x *UpdateScenarioQuestionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateScenarioQuestionReq.ProtoReflect.Descriptor instead. func (*UpdateScenarioQuestionReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{78} + return file_main_proto_rawDescGZIP(), []int{94} } func (x *UpdateScenarioQuestionReq) GetID() int32 { @@ -4024,7 +4844,7 @@ type UpdateScenarioQuestionRsp struct { func (x *UpdateScenarioQuestionRsp) Reset() { *x = UpdateScenarioQuestionRsp{} - mi := &file_main_proto_msgTypes[79] + mi := &file_main_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4036,7 +4856,7 @@ func (x *UpdateScenarioQuestionRsp) String() string { func (*UpdateScenarioQuestionRsp) ProtoMessage() {} func (x *UpdateScenarioQuestionRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[79] + mi := &file_main_proto_msgTypes[95] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4049,7 +4869,7 @@ func (x *UpdateScenarioQuestionRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateScenarioQuestionRsp.ProtoReflect.Descriptor instead. func (*UpdateScenarioQuestionRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{79} + return file_main_proto_rawDescGZIP(), []int{95} } type DeleteScenarioQuestionReq struct { @@ -4062,7 +4882,7 @@ type DeleteScenarioQuestionReq struct { func (x *DeleteScenarioQuestionReq) Reset() { *x = DeleteScenarioQuestionReq{} - mi := &file_main_proto_msgTypes[80] + mi := &file_main_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4074,7 +4894,7 @@ func (x *DeleteScenarioQuestionReq) String() string { func (*DeleteScenarioQuestionReq) ProtoMessage() {} func (x *DeleteScenarioQuestionReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[80] + mi := &file_main_proto_msgTypes[96] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4087,7 +4907,7 @@ func (x *DeleteScenarioQuestionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteScenarioQuestionReq.ProtoReflect.Descriptor instead. func (*DeleteScenarioQuestionReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{80} + return file_main_proto_rawDescGZIP(), []int{96} } func (x *DeleteScenarioQuestionReq) GetID() int32 { @@ -4112,7 +4932,7 @@ type DeleteScenarioQuestionRsp struct { func (x *DeleteScenarioQuestionRsp) Reset() { *x = DeleteScenarioQuestionRsp{} - mi := &file_main_proto_msgTypes[81] + mi := &file_main_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4124,7 +4944,7 @@ func (x *DeleteScenarioQuestionRsp) String() string { func (*DeleteScenarioQuestionRsp) ProtoMessage() {} func (x *DeleteScenarioQuestionRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[81] + mi := &file_main_proto_msgTypes[97] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4137,7 +4957,7 @@ func (x *DeleteScenarioQuestionRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteScenarioQuestionRsp.ProtoReflect.Descriptor instead. func (*DeleteScenarioQuestionRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{81} + return file_main_proto_rawDescGZIP(), []int{97} } type DownloadScenarioArchiveReq struct { @@ -4149,7 +4969,7 @@ type DownloadScenarioArchiveReq struct { func (x *DownloadScenarioArchiveReq) Reset() { *x = DownloadScenarioArchiveReq{} - mi := &file_main_proto_msgTypes[82] + mi := &file_main_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4161,7 +4981,7 @@ func (x *DownloadScenarioArchiveReq) String() string { func (*DownloadScenarioArchiveReq) ProtoMessage() {} func (x *DownloadScenarioArchiveReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[82] + mi := &file_main_proto_msgTypes[98] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4174,7 +4994,7 @@ func (x *DownloadScenarioArchiveReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DownloadScenarioArchiveReq.ProtoReflect.Descriptor instead. func (*DownloadScenarioArchiveReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{82} + return file_main_proto_rawDescGZIP(), []int{98} } func (x *DownloadScenarioArchiveReq) GetID() int32 { @@ -4193,7 +5013,7 @@ type UploadScenarioArchiveRsp struct { func (x *UploadScenarioArchiveRsp) Reset() { *x = UploadScenarioArchiveRsp{} - mi := &file_main_proto_msgTypes[83] + mi := &file_main_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4205,7 +5025,7 @@ func (x *UploadScenarioArchiveRsp) String() string { func (*UploadScenarioArchiveRsp) ProtoMessage() {} func (x *UploadScenarioArchiveRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[83] + mi := &file_main_proto_msgTypes[99] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4218,7 +5038,7 @@ func (x *UploadScenarioArchiveRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadScenarioArchiveRsp.ProtoReflect.Descriptor instead. func (*UploadScenarioArchiveRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{83} + return file_main_proto_rawDescGZIP(), []int{99} } func (x *UploadScenarioArchiveRsp) GetID() int32 { @@ -4242,7 +5062,7 @@ type AddGameReq struct { func (x *AddGameReq) Reset() { *x = AddGameReq{} - mi := &file_main_proto_msgTypes[84] + mi := &file_main_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4254,7 +5074,7 @@ func (x *AddGameReq) String() string { func (*AddGameReq) ProtoMessage() {} func (x *AddGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[84] + mi := &file_main_proto_msgTypes[100] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4267,7 +5087,7 @@ func (x *AddGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddGameReq.ProtoReflect.Descriptor instead. func (*AddGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{84} + return file_main_proto_rawDescGZIP(), []int{100} } func (x *AddGameReq) GetName() string { @@ -4321,7 +5141,7 @@ type AddGameRsp struct { func (x *AddGameRsp) Reset() { *x = AddGameRsp{} - mi := &file_main_proto_msgTypes[85] + mi := &file_main_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4333,7 +5153,7 @@ func (x *AddGameRsp) String() string { func (*AddGameRsp) ProtoMessage() {} func (x *AddGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[85] + mi := &file_main_proto_msgTypes[101] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4346,7 +5166,7 @@ func (x *AddGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddGameRsp.ProtoReflect.Descriptor instead. func (*AddGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{85} + return file_main_proto_rawDescGZIP(), []int{101} } func (x *AddGameRsp) GetID() int32 { @@ -4364,7 +5184,7 @@ type GetGamesReq struct { func (x *GetGamesReq) Reset() { *x = GetGamesReq{} - mi := &file_main_proto_msgTypes[86] + mi := &file_main_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4376,7 +5196,7 @@ func (x *GetGamesReq) String() string { func (*GetGamesReq) ProtoMessage() {} func (x *GetGamesReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[86] + mi := &file_main_proto_msgTypes[102] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4389,7 +5209,7 @@ func (x *GetGamesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGamesReq.ProtoReflect.Descriptor instead. func (*GetGamesReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{86} + return file_main_proto_rawDescGZIP(), []int{102} } type GetGamesRsp struct { @@ -4401,7 +5221,7 @@ type GetGamesRsp struct { func (x *GetGamesRsp) Reset() { *x = GetGamesRsp{} - mi := &file_main_proto_msgTypes[87] + mi := &file_main_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4413,7 +5233,7 @@ func (x *GetGamesRsp) String() string { func (*GetGamesRsp) ProtoMessage() {} func (x *GetGamesRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[87] + mi := &file_main_proto_msgTypes[103] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4426,7 +5246,7 @@ func (x *GetGamesRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGamesRsp.ProtoReflect.Descriptor instead. func (*GetGamesRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{87} + return file_main_proto_rawDescGZIP(), []int{103} } func (x *GetGamesRsp) GetGames() []*Game { @@ -4455,7 +5275,7 @@ type Game struct { func (x *Game) Reset() { *x = Game{} - mi := &file_main_proto_msgTypes[88] + mi := &file_main_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4467,7 +5287,7 @@ func (x *Game) String() string { func (*Game) ProtoMessage() {} func (x *Game) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[88] + mi := &file_main_proto_msgTypes[104] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4480,7 +5300,7 @@ func (x *Game) ProtoReflect() protoreflect.Message { // Deprecated: Use Game.ProtoReflect.Descriptor instead. func (*Game) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{88} + return file_main_proto_rawDescGZIP(), []int{104} } func (x *Game) GetID() int32 { @@ -4582,13 +5402,14 @@ type ScreenState struct { TimerRemainingSeconds int64 `protobuf:"varint,18,opt,name=timer_remaining_seconds,json=timerRemainingSeconds,proto3" json:"timer_remaining_seconds,omitempty"` TimerState ScreenTimerState `protobuf:"varint,19,opt,name=timer_state,json=timerState,proto3,enum=crabs.evening_detective_server.ScreenTimerState" json:"timer_state,omitempty"` Text string `protobuf:"bytes,20,opt,name=text,proto3" json:"text,omitempty"` + Music *MusicState `protobuf:"bytes,21,opt,name=music,proto3" json:"music,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ScreenState) Reset() { *x = ScreenState{} - mi := &file_main_proto_msgTypes[89] + mi := &file_main_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4600,7 +5421,7 @@ func (x *ScreenState) String() string { func (*ScreenState) ProtoMessage() {} func (x *ScreenState) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[89] + mi := &file_main_proto_msgTypes[105] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4613,7 +5434,7 @@ func (x *ScreenState) ProtoReflect() protoreflect.Message { // Deprecated: Use ScreenState.ProtoReflect.Descriptor instead. func (*ScreenState) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{89} + return file_main_proto_rawDescGZIP(), []int{105} } func (x *ScreenState) GetID() string { @@ -4756,6 +5577,13 @@ func (x *ScreenState) GetText() string { return "" } +func (x *ScreenState) GetMusic() *MusicState { + if x != nil { + return x.Music + } + return nil +} + type CreateScreenSessionReq struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -4764,7 +5592,7 @@ type CreateScreenSessionReq struct { func (x *CreateScreenSessionReq) Reset() { *x = CreateScreenSessionReq{} - mi := &file_main_proto_msgTypes[90] + mi := &file_main_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4776,7 +5604,7 @@ func (x *CreateScreenSessionReq) String() string { func (*CreateScreenSessionReq) ProtoMessage() {} func (x *CreateScreenSessionReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[90] + mi := &file_main_proto_msgTypes[106] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4789,7 +5617,7 @@ func (x *CreateScreenSessionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateScreenSessionReq.ProtoReflect.Descriptor instead. func (*CreateScreenSessionReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{90} + return file_main_proto_rawDescGZIP(), []int{106} } type CreateScreenSessionRsp struct { @@ -4802,7 +5630,7 @@ type CreateScreenSessionRsp struct { func (x *CreateScreenSessionRsp) Reset() { *x = CreateScreenSessionRsp{} - mi := &file_main_proto_msgTypes[91] + mi := &file_main_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4814,7 +5642,7 @@ func (x *CreateScreenSessionRsp) String() string { func (*CreateScreenSessionRsp) ProtoMessage() {} func (x *CreateScreenSessionRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[91] + mi := &file_main_proto_msgTypes[107] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4827,7 +5655,7 @@ func (x *CreateScreenSessionRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateScreenSessionRsp.ProtoReflect.Descriptor instead. func (*CreateScreenSessionRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{91} + return file_main_proto_rawDescGZIP(), []int{107} } func (x *CreateScreenSessionRsp) GetScreenID() string { @@ -4854,7 +5682,7 @@ type GetScreenStateReq struct { func (x *GetScreenStateReq) Reset() { *x = GetScreenStateReq{} - mi := &file_main_proto_msgTypes[92] + mi := &file_main_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4866,7 +5694,7 @@ func (x *GetScreenStateReq) String() string { func (*GetScreenStateReq) ProtoMessage() {} func (x *GetScreenStateReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[92] + mi := &file_main_proto_msgTypes[108] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4879,7 +5707,7 @@ func (x *GetScreenStateReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScreenStateReq.ProtoReflect.Descriptor instead. func (*GetScreenStateReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{92} + return file_main_proto_rawDescGZIP(), []int{108} } func (x *GetScreenStateReq) GetScreenID() string { @@ -4905,7 +5733,7 @@ type GetScreenStateRsp struct { func (x *GetScreenStateRsp) Reset() { *x = GetScreenStateRsp{} - mi := &file_main_proto_msgTypes[93] + mi := &file_main_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4917,7 +5745,7 @@ func (x *GetScreenStateRsp) String() string { func (*GetScreenStateRsp) ProtoMessage() {} func (x *GetScreenStateRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[93] + mi := &file_main_proto_msgTypes[109] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4930,7 +5758,7 @@ func (x *GetScreenStateRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScreenStateRsp.ProtoReflect.Descriptor instead. func (*GetScreenStateRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{93} + return file_main_proto_rawDescGZIP(), []int{109} } func (x *GetScreenStateRsp) GetState() *ScreenState { @@ -4949,7 +5777,7 @@ type GetGameScreensReq struct { func (x *GetGameScreensReq) Reset() { *x = GetGameScreensReq{} - mi := &file_main_proto_msgTypes[94] + mi := &file_main_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4961,7 +5789,7 @@ func (x *GetGameScreensReq) String() string { func (*GetGameScreensReq) ProtoMessage() {} func (x *GetGameScreensReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[94] + mi := &file_main_proto_msgTypes[110] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4974,7 +5802,7 @@ func (x *GetGameScreensReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameScreensReq.ProtoReflect.Descriptor instead. func (*GetGameScreensReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{94} + return file_main_proto_rawDescGZIP(), []int{110} } func (x *GetGameScreensReq) GetGameID() int32 { @@ -4993,7 +5821,7 @@ type GetGameScreensRsp struct { func (x *GetGameScreensRsp) Reset() { *x = GetGameScreensRsp{} - mi := &file_main_proto_msgTypes[95] + mi := &file_main_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5005,7 +5833,7 @@ func (x *GetGameScreensRsp) String() string { func (*GetGameScreensRsp) ProtoMessage() {} func (x *GetGameScreensRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[95] + mi := &file_main_proto_msgTypes[111] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5018,7 +5846,7 @@ func (x *GetGameScreensRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameScreensRsp.ProtoReflect.Descriptor instead. func (*GetGameScreensRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{95} + return file_main_proto_rawDescGZIP(), []int{111} } func (x *GetGameScreensRsp) GetScreens() []*ScreenState { @@ -5028,6 +5856,442 @@ func (x *GetGameScreensRsp) GetScreens() []*ScreenState { return nil } +type MusicState struct { + state protoimpl.MessageState `protogen:"open.v1"` + Playlist *Playlist `protobuf:"bytes,1,opt,name=playlist,proto3" json:"playlist,omitempty"` + TrackIndex int32 `protobuf:"varint,2,opt,name=track_index,json=trackIndex,proto3" json:"track_index,omitempty"` + PositionMs int64 `protobuf:"varint,3,opt,name=position_ms,json=positionMs,proto3" json:"position_ms,omitempty"` + Volume int32 `protobuf:"varint,4,opt,name=volume,proto3" json:"volume,omitempty"` + Loop bool `protobuf:"varint,5,opt,name=loop,proto3" json:"loop,omitempty"` + Playback MusicPlaybackState `protobuf:"varint,6,opt,name=playback,proto3,enum=crabs.evening_detective_server.MusicPlaybackState" json:"playback,omitempty"` + StateVersion int64 `protobuf:"varint,7,opt,name=state_version,json=stateVersion,proto3" json:"state_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MusicState) Reset() { + *x = MusicState{} + mi := &file_main_proto_msgTypes[112] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MusicState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MusicState) ProtoMessage() {} + +func (x *MusicState) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[112] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MusicState.ProtoReflect.Descriptor instead. +func (*MusicState) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{112} +} + +func (x *MusicState) GetPlaylist() *Playlist { + if x != nil { + return x.Playlist + } + return nil +} + +func (x *MusicState) GetTrackIndex() int32 { + if x != nil { + return x.TrackIndex + } + return 0 +} + +func (x *MusicState) GetPositionMs() int64 { + if x != nil { + return x.PositionMs + } + return 0 +} + +func (x *MusicState) GetVolume() int32 { + if x != nil { + return x.Volume + } + return 0 +} + +func (x *MusicState) GetLoop() bool { + if x != nil { + return x.Loop + } + return false +} + +func (x *MusicState) GetPlayback() MusicPlaybackState { + if x != nil { + return x.Playback + } + return MusicPlaybackState_MUSIC_PLAYBACK_UNSPECIFIED +} + +func (x *MusicState) GetStateVersion() int64 { + if x != nil { + return x.StateVersion + } + return 0 +} + +type GetGameMusicReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + GameID int32 `protobuf:"varint,1,opt,name=gameID,proto3" json:"gameID,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetGameMusicReq) Reset() { + *x = GetGameMusicReq{} + mi := &file_main_proto_msgTypes[113] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetGameMusicReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetGameMusicReq) ProtoMessage() {} + +func (x *GetGameMusicReq) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[113] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetGameMusicReq.ProtoReflect.Descriptor instead. +func (*GetGameMusicReq) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{113} +} + +func (x *GetGameMusicReq) GetGameID() int32 { + if x != nil { + return x.GameID + } + return 0 +} + +type GetGameMusicRsp struct { + state protoimpl.MessageState `protogen:"open.v1"` + Playlists []*Playlist `protobuf:"bytes,1,rep,name=playlists,proto3" json:"playlists,omitempty"` + State *MusicState `protobuf:"bytes,2,opt,name=state,proto3" json:"state,omitempty"` + ScenarioPlaylistId int32 `protobuf:"varint,3,opt,name=scenario_playlist_id,json=scenarioPlaylistId,proto3" json:"scenario_playlist_id,omitempty"` + GamePlaylistId int32 `protobuf:"varint,4,opt,name=game_playlist_id,json=gamePlaylistId,proto3" json:"game_playlist_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetGameMusicRsp) Reset() { + *x = GetGameMusicRsp{} + mi := &file_main_proto_msgTypes[114] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetGameMusicRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetGameMusicRsp) ProtoMessage() {} + +func (x *GetGameMusicRsp) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[114] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetGameMusicRsp.ProtoReflect.Descriptor instead. +func (*GetGameMusicRsp) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{114} +} + +func (x *GetGameMusicRsp) GetPlaylists() []*Playlist { + if x != nil { + return x.Playlists + } + return nil +} + +func (x *GetGameMusicRsp) GetState() *MusicState { + if x != nil { + return x.State + } + return nil +} + +func (x *GetGameMusicRsp) GetScenarioPlaylistId() int32 { + if x != nil { + return x.ScenarioPlaylistId + } + return 0 +} + +func (x *GetGameMusicRsp) GetGamePlaylistId() int32 { + if x != nil { + return x.GamePlaylistId + } + return 0 +} + +type SetGameMusicReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + GameID int32 `protobuf:"varint,1,opt,name=gameID,proto3" json:"gameID,omitempty"` + PlaylistID int32 `protobuf:"varint,2,opt,name=playlistID,proto3" json:"playlistID,omitempty"` + TrackIndex int32 `protobuf:"varint,3,opt,name=track_index,json=trackIndex,proto3" json:"track_index,omitempty"` + PositionMs int64 `protobuf:"varint,4,opt,name=position_ms,json=positionMs,proto3" json:"position_ms,omitempty"` + Volume int32 `protobuf:"varint,5,opt,name=volume,proto3" json:"volume,omitempty"` + Loop bool `protobuf:"varint,6,opt,name=loop,proto3" json:"loop,omitempty"` + Playback MusicPlaybackState `protobuf:"varint,7,opt,name=playback,proto3,enum=crabs.evening_detective_server.MusicPlaybackState" json:"playback,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SetGameMusicReq) Reset() { + *x = SetGameMusicReq{} + mi := &file_main_proto_msgTypes[115] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SetGameMusicReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetGameMusicReq) ProtoMessage() {} + +func (x *SetGameMusicReq) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[115] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetGameMusicReq.ProtoReflect.Descriptor instead. +func (*SetGameMusicReq) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{115} +} + +func (x *SetGameMusicReq) GetGameID() int32 { + if x != nil { + return x.GameID + } + return 0 +} + +func (x *SetGameMusicReq) GetPlaylistID() int32 { + if x != nil { + return x.PlaylistID + } + return 0 +} + +func (x *SetGameMusicReq) GetTrackIndex() int32 { + if x != nil { + return x.TrackIndex + } + return 0 +} + +func (x *SetGameMusicReq) GetPositionMs() int64 { + if x != nil { + return x.PositionMs + } + return 0 +} + +func (x *SetGameMusicReq) GetVolume() int32 { + if x != nil { + return x.Volume + } + return 0 +} + +func (x *SetGameMusicReq) GetLoop() bool { + if x != nil { + return x.Loop + } + return false +} + +func (x *SetGameMusicReq) GetPlayback() MusicPlaybackState { + if x != nil { + return x.Playback + } + return MusicPlaybackState_MUSIC_PLAYBACK_UNSPECIFIED +} + +type SetGameMusicRsp struct { + state protoimpl.MessageState `protogen:"open.v1"` + State *MusicState `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SetGameMusicRsp) Reset() { + *x = SetGameMusicRsp{} + mi := &file_main_proto_msgTypes[116] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SetGameMusicRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetGameMusicRsp) ProtoMessage() {} + +func (x *SetGameMusicRsp) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[116] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetGameMusicRsp.ProtoReflect.Descriptor instead. +func (*SetGameMusicRsp) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{116} +} + +func (x *SetGameMusicRsp) GetState() *MusicState { + if x != nil { + return x.State + } + return nil +} + +type AdvanceScreenMusicReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + ScreenID string `protobuf:"bytes,1,opt,name=screenID,proto3" json:"screenID,omitempty"` + AccessToken string `protobuf:"bytes,2,opt,name=accessToken,proto3" json:"accessToken,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AdvanceScreenMusicReq) Reset() { + *x = AdvanceScreenMusicReq{} + mi := &file_main_proto_msgTypes[117] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AdvanceScreenMusicReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AdvanceScreenMusicReq) ProtoMessage() {} + +func (x *AdvanceScreenMusicReq) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[117] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AdvanceScreenMusicReq.ProtoReflect.Descriptor instead. +func (*AdvanceScreenMusicReq) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{117} +} + +func (x *AdvanceScreenMusicReq) GetScreenID() string { + if x != nil { + return x.ScreenID + } + return "" +} + +func (x *AdvanceScreenMusicReq) GetAccessToken() string { + if x != nil { + return x.AccessToken + } + return "" +} + +type AdvanceScreenMusicRsp struct { + state protoimpl.MessageState `protogen:"open.v1"` + State *MusicState `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AdvanceScreenMusicRsp) Reset() { + *x = AdvanceScreenMusicRsp{} + mi := &file_main_proto_msgTypes[118] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AdvanceScreenMusicRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AdvanceScreenMusicRsp) ProtoMessage() {} + +func (x *AdvanceScreenMusicRsp) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[118] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AdvanceScreenMusicRsp.ProtoReflect.Descriptor instead. +func (*AdvanceScreenMusicRsp) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{118} +} + +func (x *AdvanceScreenMusicRsp) GetState() *MusicState { + if x != nil { + return x.State + } + return nil +} + type BindScreenReq struct { state protoimpl.MessageState `protogen:"open.v1"` ScreenID string `protobuf:"bytes,1,opt,name=screenID,proto3" json:"screenID,omitempty"` @@ -5039,7 +6303,7 @@ type BindScreenReq struct { func (x *BindScreenReq) Reset() { *x = BindScreenReq{} - mi := &file_main_proto_msgTypes[96] + mi := &file_main_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5051,7 +6315,7 @@ func (x *BindScreenReq) String() string { func (*BindScreenReq) ProtoMessage() {} func (x *BindScreenReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[96] + mi := &file_main_proto_msgTypes[119] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5064,7 +6328,7 @@ func (x *BindScreenReq) ProtoReflect() protoreflect.Message { // Deprecated: Use BindScreenReq.ProtoReflect.Descriptor instead. func (*BindScreenReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{96} + return file_main_proto_rawDescGZIP(), []int{119} } func (x *BindScreenReq) GetScreenID() string { @@ -5097,7 +6361,7 @@ type BindScreenRsp struct { func (x *BindScreenRsp) Reset() { *x = BindScreenRsp{} - mi := &file_main_proto_msgTypes[97] + mi := &file_main_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5109,7 +6373,7 @@ func (x *BindScreenRsp) String() string { func (*BindScreenRsp) ProtoMessage() {} func (x *BindScreenRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[97] + mi := &file_main_proto_msgTypes[120] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5122,7 +6386,7 @@ func (x *BindScreenRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use BindScreenRsp.ProtoReflect.Descriptor instead. func (*BindScreenRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{97} + return file_main_proto_rawDescGZIP(), []int{120} } func (x *BindScreenRsp) GetState() *ScreenState { @@ -5141,7 +6405,7 @@ type UnbindScreenReq struct { func (x *UnbindScreenReq) Reset() { *x = UnbindScreenReq{} - mi := &file_main_proto_msgTypes[98] + mi := &file_main_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5153,7 +6417,7 @@ func (x *UnbindScreenReq) String() string { func (*UnbindScreenReq) ProtoMessage() {} func (x *UnbindScreenReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[98] + mi := &file_main_proto_msgTypes[121] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5166,7 +6430,7 @@ func (x *UnbindScreenReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UnbindScreenReq.ProtoReflect.Descriptor instead. func (*UnbindScreenReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{98} + return file_main_proto_rawDescGZIP(), []int{121} } func (x *UnbindScreenReq) GetScreenID() string { @@ -5184,7 +6448,7 @@ type UnbindScreenRsp struct { func (x *UnbindScreenRsp) Reset() { *x = UnbindScreenRsp{} - mi := &file_main_proto_msgTypes[99] + mi := &file_main_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5196,7 +6460,7 @@ func (x *UnbindScreenRsp) String() string { func (*UnbindScreenRsp) ProtoMessage() {} func (x *UnbindScreenRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[99] + mi := &file_main_proto_msgTypes[122] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5209,7 +6473,7 @@ func (x *UnbindScreenRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UnbindScreenRsp.ProtoReflect.Descriptor instead. func (*UnbindScreenRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{99} + return file_main_proto_rawDescGZIP(), []int{122} } type SetScreenSoundReq struct { @@ -5222,7 +6486,7 @@ type SetScreenSoundReq struct { func (x *SetScreenSoundReq) Reset() { *x = SetScreenSoundReq{} - mi := &file_main_proto_msgTypes[100] + mi := &file_main_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5234,7 +6498,7 @@ func (x *SetScreenSoundReq) String() string { func (*SetScreenSoundReq) ProtoMessage() {} func (x *SetScreenSoundReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[100] + mi := &file_main_proto_msgTypes[123] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5247,7 +6511,7 @@ func (x *SetScreenSoundReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SetScreenSoundReq.ProtoReflect.Descriptor instead. func (*SetScreenSoundReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{100} + return file_main_proto_rawDescGZIP(), []int{123} } func (x *SetScreenSoundReq) GetScreenID() string { @@ -5272,7 +6536,7 @@ type SetScreenSoundRsp struct { func (x *SetScreenSoundRsp) Reset() { *x = SetScreenSoundRsp{} - mi := &file_main_proto_msgTypes[101] + mi := &file_main_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5284,7 +6548,7 @@ func (x *SetScreenSoundRsp) String() string { func (*SetScreenSoundRsp) ProtoMessage() {} func (x *SetScreenSoundRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[101] + mi := &file_main_proto_msgTypes[124] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5297,7 +6561,7 @@ func (x *SetScreenSoundRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use SetScreenSoundRsp.ProtoReflect.Descriptor instead. func (*SetScreenSoundRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{101} + return file_main_proto_rawDescGZIP(), []int{124} } type MapItem struct { @@ -5316,7 +6580,7 @@ type MapItem struct { func (x *MapItem) Reset() { *x = MapItem{} - mi := &file_main_proto_msgTypes[102] + mi := &file_main_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5328,7 +6592,7 @@ func (x *MapItem) String() string { func (*MapItem) ProtoMessage() {} func (x *MapItem) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[102] + mi := &file_main_proto_msgTypes[125] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5341,7 +6605,7 @@ func (x *MapItem) ProtoReflect() protoreflect.Message { // Deprecated: Use MapItem.ProtoReflect.Descriptor instead. func (*MapItem) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{102} + return file_main_proto_rawDescGZIP(), []int{125} } func (x *MapItem) GetKind() string { @@ -5409,7 +6673,7 @@ type GetGameMapReq struct { func (x *GetGameMapReq) Reset() { *x = GetGameMapReq{} - mi := &file_main_proto_msgTypes[103] + mi := &file_main_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5421,7 +6685,7 @@ func (x *GetGameMapReq) String() string { func (*GetGameMapReq) ProtoMessage() {} func (x *GetGameMapReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[103] + mi := &file_main_proto_msgTypes[126] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5434,7 +6698,7 @@ func (x *GetGameMapReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameMapReq.ProtoReflect.Descriptor instead. func (*GetGameMapReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{103} + return file_main_proto_rawDescGZIP(), []int{126} } func (x *GetGameMapReq) GetGameID() int32 { @@ -5453,7 +6717,7 @@ type GetGameMapRsp struct { func (x *GetGameMapRsp) Reset() { *x = GetGameMapRsp{} - mi := &file_main_proto_msgTypes[104] + mi := &file_main_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5465,7 +6729,7 @@ func (x *GetGameMapRsp) String() string { func (*GetGameMapRsp) ProtoMessage() {} func (x *GetGameMapRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[104] + mi := &file_main_proto_msgTypes[127] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5478,7 +6742,7 @@ func (x *GetGameMapRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameMapRsp.ProtoReflect.Descriptor instead. func (*GetGameMapRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{104} + return file_main_proto_rawDescGZIP(), []int{127} } func (x *GetGameMapRsp) GetItems() []*MapItem { @@ -5502,7 +6766,7 @@ type UpdateGameMapItemReq struct { func (x *UpdateGameMapItemReq) Reset() { *x = UpdateGameMapItemReq{} - mi := &file_main_proto_msgTypes[105] + mi := &file_main_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5514,7 +6778,7 @@ func (x *UpdateGameMapItemReq) String() string { func (*UpdateGameMapItemReq) ProtoMessage() {} func (x *UpdateGameMapItemReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[105] + mi := &file_main_proto_msgTypes[128] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5527,7 +6791,7 @@ func (x *UpdateGameMapItemReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGameMapItemReq.ProtoReflect.Descriptor instead. func (*UpdateGameMapItemReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{105} + return file_main_proto_rawDescGZIP(), []int{128} } func (x *UpdateGameMapItemReq) GetGameID() int32 { @@ -5580,7 +6844,7 @@ type UpdateGameMapItemRsp struct { func (x *UpdateGameMapItemRsp) Reset() { *x = UpdateGameMapItemRsp{} - mi := &file_main_proto_msgTypes[106] + mi := &file_main_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5592,7 +6856,7 @@ func (x *UpdateGameMapItemRsp) String() string { func (*UpdateGameMapItemRsp) ProtoMessage() {} func (x *UpdateGameMapItemRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[106] + mi := &file_main_proto_msgTypes[129] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5605,7 +6869,7 @@ func (x *UpdateGameMapItemRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGameMapItemRsp.ProtoReflect.Descriptor instead. func (*UpdateGameMapItemRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{106} + return file_main_proto_rawDescGZIP(), []int{129} } type SetScreenModeReq struct { @@ -5618,7 +6882,7 @@ type SetScreenModeReq struct { func (x *SetScreenModeReq) Reset() { *x = SetScreenModeReq{} - mi := &file_main_proto_msgTypes[107] + mi := &file_main_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5630,7 +6894,7 @@ func (x *SetScreenModeReq) String() string { func (*SetScreenModeReq) ProtoMessage() {} func (x *SetScreenModeReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[107] + mi := &file_main_proto_msgTypes[130] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5643,7 +6907,7 @@ func (x *SetScreenModeReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SetScreenModeReq.ProtoReflect.Descriptor instead. func (*SetScreenModeReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{107} + return file_main_proto_rawDescGZIP(), []int{130} } func (x *SetScreenModeReq) GetGameID() int32 { @@ -5668,7 +6932,7 @@ type SetScreenModeRsp struct { func (x *SetScreenModeRsp) Reset() { *x = SetScreenModeRsp{} - mi := &file_main_proto_msgTypes[108] + mi := &file_main_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5680,7 +6944,7 @@ func (x *SetScreenModeRsp) String() string { func (*SetScreenModeRsp) ProtoMessage() {} func (x *SetScreenModeRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[108] + mi := &file_main_proto_msgTypes[131] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5693,7 +6957,7 @@ func (x *SetScreenModeRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use SetScreenModeRsp.ProtoReflect.Descriptor instead. func (*SetScreenModeRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{108} + return file_main_proto_rawDescGZIP(), []int{131} } type SetScreenTimerReq struct { @@ -5707,7 +6971,7 @@ type SetScreenTimerReq struct { func (x *SetScreenTimerReq) Reset() { *x = SetScreenTimerReq{} - mi := &file_main_proto_msgTypes[109] + mi := &file_main_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5719,7 +6983,7 @@ func (x *SetScreenTimerReq) String() string { func (*SetScreenTimerReq) ProtoMessage() {} func (x *SetScreenTimerReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[109] + mi := &file_main_proto_msgTypes[132] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5732,7 +6996,7 @@ func (x *SetScreenTimerReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SetScreenTimerReq.ProtoReflect.Descriptor instead. func (*SetScreenTimerReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{109} + return file_main_proto_rawDescGZIP(), []int{132} } func (x *SetScreenTimerReq) GetGameID() int32 { @@ -5764,7 +7028,7 @@ type SetScreenTimerRsp struct { func (x *SetScreenTimerRsp) Reset() { *x = SetScreenTimerRsp{} - mi := &file_main_proto_msgTypes[110] + mi := &file_main_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5776,7 +7040,7 @@ func (x *SetScreenTimerRsp) String() string { func (*SetScreenTimerRsp) ProtoMessage() {} func (x *SetScreenTimerRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[110] + mi := &file_main_proto_msgTypes[133] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5789,7 +7053,7 @@ func (x *SetScreenTimerRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use SetScreenTimerRsp.ProtoReflect.Descriptor instead. func (*SetScreenTimerRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{110} + return file_main_proto_rawDescGZIP(), []int{133} } type SendScreenCommandReq struct { @@ -5804,7 +7068,7 @@ type SendScreenCommandReq struct { func (x *SendScreenCommandReq) Reset() { *x = SendScreenCommandReq{} - mi := &file_main_proto_msgTypes[111] + mi := &file_main_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5816,7 +7080,7 @@ func (x *SendScreenCommandReq) String() string { func (*SendScreenCommandReq) ProtoMessage() {} func (x *SendScreenCommandReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[111] + mi := &file_main_proto_msgTypes[134] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5829,7 +7093,7 @@ func (x *SendScreenCommandReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SendScreenCommandReq.ProtoReflect.Descriptor instead. func (*SendScreenCommandReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{111} + return file_main_proto_rawDescGZIP(), []int{134} } func (x *SendScreenCommandReq) GetGameID() int32 { @@ -5868,7 +7132,7 @@ type SendScreenCommandRsp struct { func (x *SendScreenCommandRsp) Reset() { *x = SendScreenCommandRsp{} - mi := &file_main_proto_msgTypes[112] + mi := &file_main_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5880,7 +7144,7 @@ func (x *SendScreenCommandRsp) String() string { func (*SendScreenCommandRsp) ProtoMessage() {} func (x *SendScreenCommandRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[112] + mi := &file_main_proto_msgTypes[135] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5893,7 +7157,7 @@ func (x *SendScreenCommandRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use SendScreenCommandRsp.ProtoReflect.Descriptor instead. func (*SendScreenCommandRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{112} + return file_main_proto_rawDescGZIP(), []int{135} } type ScreenPlanStep struct { @@ -5908,7 +7172,7 @@ type ScreenPlanStep struct { func (x *ScreenPlanStep) Reset() { *x = ScreenPlanStep{} - mi := &file_main_proto_msgTypes[113] + mi := &file_main_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5920,7 +7184,7 @@ func (x *ScreenPlanStep) String() string { func (*ScreenPlanStep) ProtoMessage() {} func (x *ScreenPlanStep) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[113] + mi := &file_main_proto_msgTypes[136] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5933,7 +7197,7 @@ func (x *ScreenPlanStep) ProtoReflect() protoreflect.Message { // Deprecated: Use ScreenPlanStep.ProtoReflect.Descriptor instead. func (*ScreenPlanStep) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{113} + return file_main_proto_rawDescGZIP(), []int{136} } func (x *ScreenPlanStep) GetMode() ScreenMode { @@ -5974,7 +7238,7 @@ type ScreenPlan struct { func (x *ScreenPlan) Reset() { *x = ScreenPlan{} - mi := &file_main_proto_msgTypes[114] + mi := &file_main_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5986,7 +7250,7 @@ func (x *ScreenPlan) String() string { func (*ScreenPlan) ProtoMessage() {} func (x *ScreenPlan) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[114] + mi := &file_main_proto_msgTypes[137] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5999,7 +7263,7 @@ func (x *ScreenPlan) ProtoReflect() protoreflect.Message { // Deprecated: Use ScreenPlan.ProtoReflect.Descriptor instead. func (*ScreenPlan) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{114} + return file_main_proto_rawDescGZIP(), []int{137} } func (x *ScreenPlan) GetSteps() []*ScreenPlanStep { @@ -6025,7 +7289,7 @@ type GetScreenPlanReq struct { func (x *GetScreenPlanReq) Reset() { *x = GetScreenPlanReq{} - mi := &file_main_proto_msgTypes[115] + mi := &file_main_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6037,7 +7301,7 @@ func (x *GetScreenPlanReq) String() string { func (*GetScreenPlanReq) ProtoMessage() {} func (x *GetScreenPlanReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[115] + mi := &file_main_proto_msgTypes[138] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6050,7 +7314,7 @@ func (x *GetScreenPlanReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScreenPlanReq.ProtoReflect.Descriptor instead. func (*GetScreenPlanReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{115} + return file_main_proto_rawDescGZIP(), []int{138} } func (x *GetScreenPlanReq) GetGameID() int32 { @@ -6069,7 +7333,7 @@ type GetScreenPlanRsp struct { func (x *GetScreenPlanRsp) Reset() { *x = GetScreenPlanRsp{} - mi := &file_main_proto_msgTypes[116] + mi := &file_main_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6081,7 +7345,7 @@ func (x *GetScreenPlanRsp) String() string { func (*GetScreenPlanRsp) ProtoMessage() {} func (x *GetScreenPlanRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[116] + mi := &file_main_proto_msgTypes[139] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6094,7 +7358,7 @@ func (x *GetScreenPlanRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScreenPlanRsp.ProtoReflect.Descriptor instead. func (*GetScreenPlanRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{116} + return file_main_proto_rawDescGZIP(), []int{139} } func (x *GetScreenPlanRsp) GetPlan() *ScreenPlan { @@ -6115,7 +7379,7 @@ type SaveScreenPlanReq struct { func (x *SaveScreenPlanReq) Reset() { *x = SaveScreenPlanReq{} - mi := &file_main_proto_msgTypes[117] + mi := &file_main_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6127,7 +7391,7 @@ func (x *SaveScreenPlanReq) String() string { func (*SaveScreenPlanReq) ProtoMessage() {} func (x *SaveScreenPlanReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[117] + mi := &file_main_proto_msgTypes[140] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6140,7 +7404,7 @@ func (x *SaveScreenPlanReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SaveScreenPlanReq.ProtoReflect.Descriptor instead. func (*SaveScreenPlanReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{117} + return file_main_proto_rawDescGZIP(), []int{140} } func (x *SaveScreenPlanReq) GetGameID() int32 { @@ -6173,7 +7437,7 @@ type SaveScreenPlanRsp struct { func (x *SaveScreenPlanRsp) Reset() { *x = SaveScreenPlanRsp{} - mi := &file_main_proto_msgTypes[118] + mi := &file_main_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6185,7 +7449,7 @@ func (x *SaveScreenPlanRsp) String() string { func (*SaveScreenPlanRsp) ProtoMessage() {} func (x *SaveScreenPlanRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[118] + mi := &file_main_proto_msgTypes[141] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6198,7 +7462,7 @@ func (x *SaveScreenPlanRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use SaveScreenPlanRsp.ProtoReflect.Descriptor instead. func (*SaveScreenPlanRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{118} + return file_main_proto_rawDescGZIP(), []int{141} } func (x *SaveScreenPlanRsp) GetPlan() *ScreenPlan { @@ -6218,7 +7482,7 @@ type SetScreenPlanStepReq struct { func (x *SetScreenPlanStepReq) Reset() { *x = SetScreenPlanStepReq{} - mi := &file_main_proto_msgTypes[119] + mi := &file_main_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6230,7 +7494,7 @@ func (x *SetScreenPlanStepReq) String() string { func (*SetScreenPlanStepReq) ProtoMessage() {} func (x *SetScreenPlanStepReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[119] + mi := &file_main_proto_msgTypes[142] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6243,7 +7507,7 @@ func (x *SetScreenPlanStepReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SetScreenPlanStepReq.ProtoReflect.Descriptor instead. func (*SetScreenPlanStepReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{119} + return file_main_proto_rawDescGZIP(), []int{142} } func (x *SetScreenPlanStepReq) GetGameID() int32 { @@ -6269,7 +7533,7 @@ type SetScreenPlanStepRsp struct { func (x *SetScreenPlanStepRsp) Reset() { *x = SetScreenPlanStepRsp{} - mi := &file_main_proto_msgTypes[120] + mi := &file_main_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6281,7 +7545,7 @@ func (x *SetScreenPlanStepRsp) String() string { func (*SetScreenPlanStepRsp) ProtoMessage() {} func (x *SetScreenPlanStepRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[120] + mi := &file_main_proto_msgTypes[143] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6294,7 +7558,7 @@ func (x *SetScreenPlanStepRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use SetScreenPlanStepRsp.ProtoReflect.Descriptor instead. func (*SetScreenPlanStepRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{120} + return file_main_proto_rawDescGZIP(), []int{143} } func (x *SetScreenPlanStepRsp) GetPlan() *ScreenPlan { @@ -6314,7 +7578,7 @@ type GetScreenResultsReq struct { func (x *GetScreenResultsReq) Reset() { *x = GetScreenResultsReq{} - mi := &file_main_proto_msgTypes[121] + mi := &file_main_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6326,7 +7590,7 @@ func (x *GetScreenResultsReq) String() string { func (*GetScreenResultsReq) ProtoMessage() {} func (x *GetScreenResultsReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[121] + mi := &file_main_proto_msgTypes[144] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6339,7 +7603,7 @@ func (x *GetScreenResultsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScreenResultsReq.ProtoReflect.Descriptor instead. func (*GetScreenResultsReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{121} + return file_main_proto_rawDescGZIP(), []int{144} } func (x *GetScreenResultsReq) GetScreenID() string { @@ -6366,7 +7630,7 @@ type GetScreenResultsRsp struct { func (x *GetScreenResultsRsp) Reset() { *x = GetScreenResultsRsp{} - mi := &file_main_proto_msgTypes[122] + mi := &file_main_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6378,7 +7642,7 @@ func (x *GetScreenResultsRsp) String() string { func (*GetScreenResultsRsp) ProtoMessage() {} func (x *GetScreenResultsRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[122] + mi := &file_main_proto_msgTypes[145] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6391,7 +7655,7 @@ func (x *GetScreenResultsRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScreenResultsRsp.ProtoReflect.Descriptor instead. func (*GetScreenResultsRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{122} + return file_main_proto_rawDescGZIP(), []int{145} } func (x *GetScreenResultsRsp) GetQuestions() []*ResultsQuestion { @@ -6418,7 +7682,7 @@ type GetParticipationReq struct { func (x *GetParticipationReq) Reset() { *x = GetParticipationReq{} - mi := &file_main_proto_msgTypes[123] + mi := &file_main_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6430,7 +7694,7 @@ func (x *GetParticipationReq) String() string { func (*GetParticipationReq) ProtoMessage() {} func (x *GetParticipationReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[123] + mi := &file_main_proto_msgTypes[146] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6443,7 +7707,7 @@ func (x *GetParticipationReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetParticipationReq.ProtoReflect.Descriptor instead. func (*GetParticipationReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{123} + return file_main_proto_rawDescGZIP(), []int{146} } func (x *GetParticipationReq) GetToken() string { @@ -6465,7 +7729,7 @@ type AnswerParticipationReq struct { func (x *AnswerParticipationReq) Reset() { *x = AnswerParticipationReq{} - mi := &file_main_proto_msgTypes[124] + mi := &file_main_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6477,7 +7741,7 @@ func (x *AnswerParticipationReq) String() string { func (*AnswerParticipationReq) ProtoMessage() {} func (x *AnswerParticipationReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[124] + mi := &file_main_proto_msgTypes[147] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6490,7 +7754,7 @@ func (x *AnswerParticipationReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AnswerParticipationReq.ProtoReflect.Descriptor instead. func (*AnswerParticipationReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{124} + return file_main_proto_rawDescGZIP(), []int{147} } func (x *AnswerParticipationReq) GetToken() string { @@ -6528,7 +7792,7 @@ type ParticipationRsp struct { func (x *ParticipationRsp) Reset() { *x = ParticipationRsp{} - mi := &file_main_proto_msgTypes[125] + mi := &file_main_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6540,7 +7804,7 @@ func (x *ParticipationRsp) String() string { func (*ParticipationRsp) ProtoMessage() {} func (x *ParticipationRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[125] + mi := &file_main_proto_msgTypes[148] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6553,7 +7817,7 @@ func (x *ParticipationRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use ParticipationRsp.ProtoReflect.Descriptor instead. func (*ParticipationRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{125} + return file_main_proto_rawDescGZIP(), []int{148} } func (x *ParticipationRsp) GetTeamName() string { @@ -6622,7 +7886,7 @@ type Team struct { func (x *Team) Reset() { *x = Team{} - mi := &file_main_proto_msgTypes[126] + mi := &file_main_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6634,7 +7898,7 @@ func (x *Team) String() string { func (*Team) ProtoMessage() {} func (x *Team) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[126] + mi := &file_main_proto_msgTypes[149] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6647,7 +7911,7 @@ func (x *Team) ProtoReflect() protoreflect.Message { // Deprecated: Use Team.ProtoReflect.Descriptor instead. func (*Team) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{126} + return file_main_proto_rawDescGZIP(), []int{149} } func (x *Team) GetID() int32 { @@ -6743,7 +8007,7 @@ type GetGameReq struct { func (x *GetGameReq) Reset() { *x = GetGameReq{} - mi := &file_main_proto_msgTypes[127] + mi := &file_main_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6755,7 +8019,7 @@ func (x *GetGameReq) String() string { func (*GetGameReq) ProtoMessage() {} func (x *GetGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[127] + mi := &file_main_proto_msgTypes[150] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6768,7 +8032,7 @@ func (x *GetGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameReq.ProtoReflect.Descriptor instead. func (*GetGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{127} + return file_main_proto_rawDescGZIP(), []int{150} } func (x *GetGameReq) GetID() int32 { @@ -6787,7 +8051,7 @@ type GetGameRsp struct { func (x *GetGameRsp) Reset() { *x = GetGameRsp{} - mi := &file_main_proto_msgTypes[128] + mi := &file_main_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6799,7 +8063,7 @@ func (x *GetGameRsp) String() string { func (*GetGameRsp) ProtoMessage() {} func (x *GetGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[128] + mi := &file_main_proto_msgTypes[151] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6812,7 +8076,7 @@ func (x *GetGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameRsp.ProtoReflect.Descriptor instead. func (*GetGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{128} + return file_main_proto_rawDescGZIP(), []int{151} } func (x *GetGameRsp) GetGame() *Game { @@ -6831,7 +8095,7 @@ type GetGameAnswersReq struct { func (x *GetGameAnswersReq) Reset() { *x = GetGameAnswersReq{} - mi := &file_main_proto_msgTypes[129] + mi := &file_main_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6843,7 +8107,7 @@ func (x *GetGameAnswersReq) String() string { func (*GetGameAnswersReq) ProtoMessage() {} func (x *GetGameAnswersReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[129] + mi := &file_main_proto_msgTypes[152] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6856,7 +8120,7 @@ func (x *GetGameAnswersReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameAnswersReq.ProtoReflect.Descriptor instead. func (*GetGameAnswersReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{129} + return file_main_proto_rawDescGZIP(), []int{152} } func (x *GetGameAnswersReq) GetGameID() int32 { @@ -6876,7 +8140,7 @@ type GetGameAnswersRsp struct { func (x *GetGameAnswersRsp) Reset() { *x = GetGameAnswersRsp{} - mi := &file_main_proto_msgTypes[130] + mi := &file_main_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6888,7 +8152,7 @@ func (x *GetGameAnswersRsp) String() string { func (*GetGameAnswersRsp) ProtoMessage() {} func (x *GetGameAnswersRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[130] + mi := &file_main_proto_msgTypes[153] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6901,7 +8165,7 @@ func (x *GetGameAnswersRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameAnswersRsp.ProtoReflect.Descriptor instead. func (*GetGameAnswersRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{130} + return file_main_proto_rawDescGZIP(), []int{153} } func (x *GetGameAnswersRsp) GetQuestions() []*Question { @@ -6927,7 +8191,7 @@ type GetGameResultsReq struct { func (x *GetGameResultsReq) Reset() { *x = GetGameResultsReq{} - mi := &file_main_proto_msgTypes[131] + mi := &file_main_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6939,7 +8203,7 @@ func (x *GetGameResultsReq) String() string { func (*GetGameResultsReq) ProtoMessage() {} func (x *GetGameResultsReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[131] + mi := &file_main_proto_msgTypes[154] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6952,7 +8216,7 @@ func (x *GetGameResultsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameResultsReq.ProtoReflect.Descriptor instead. func (*GetGameResultsReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{131} + return file_main_proto_rawDescGZIP(), []int{154} } func (x *GetGameResultsReq) GetGameID() int32 { @@ -6974,7 +8238,7 @@ type ResultsQuestion struct { func (x *ResultsQuestion) Reset() { *x = ResultsQuestion{} - mi := &file_main_proto_msgTypes[132] + mi := &file_main_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6986,7 +8250,7 @@ func (x *ResultsQuestion) String() string { func (*ResultsQuestion) ProtoMessage() {} func (x *ResultsQuestion) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[132] + mi := &file_main_proto_msgTypes[155] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6999,7 +8263,7 @@ func (x *ResultsQuestion) ProtoReflect() protoreflect.Message { // Deprecated: Use ResultsQuestion.ProtoReflect.Descriptor instead. func (*ResultsQuestion) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{132} + return file_main_proto_rawDescGZIP(), []int{155} } func (x *ResultsQuestion) GetCode() string { @@ -7035,7 +8299,7 @@ type TeamResult struct { func (x *TeamResult) Reset() { *x = TeamResult{} - mi := &file_main_proto_msgTypes[133] + mi := &file_main_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7047,7 +8311,7 @@ func (x *TeamResult) String() string { func (*TeamResult) ProtoMessage() {} func (x *TeamResult) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[133] + mi := &file_main_proto_msgTypes[156] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7060,7 +8324,7 @@ func (x *TeamResult) ProtoReflect() protoreflect.Message { // Deprecated: Use TeamResult.ProtoReflect.Descriptor instead. func (*TeamResult) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{133} + return file_main_proto_rawDescGZIP(), []int{156} } func (x *TeamResult) GetTeam() *Team { @@ -7108,7 +8372,7 @@ type GetGameResultsRsp struct { func (x *GetGameResultsRsp) Reset() { *x = GetGameResultsRsp{} - mi := &file_main_proto_msgTypes[134] + mi := &file_main_proto_msgTypes[157] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7120,7 +8384,7 @@ func (x *GetGameResultsRsp) String() string { func (*GetGameResultsRsp) ProtoMessage() {} func (x *GetGameResultsRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[134] + mi := &file_main_proto_msgTypes[157] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7133,7 +8397,7 @@ func (x *GetGameResultsRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameResultsRsp.ProtoReflect.Descriptor instead. func (*GetGameResultsRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{134} + return file_main_proto_rawDescGZIP(), []int{157} } func (x *GetGameResultsRsp) GetQuestions() []*ResultsQuestion { @@ -7168,7 +8432,7 @@ type GameReview struct { func (x *GameReview) Reset() { *x = GameReview{} - mi := &file_main_proto_msgTypes[135] + mi := &file_main_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7180,7 +8444,7 @@ func (x *GameReview) String() string { func (*GameReview) ProtoMessage() {} func (x *GameReview) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[135] + mi := &file_main_proto_msgTypes[158] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7193,7 +8457,7 @@ func (x *GameReview) ProtoReflect() protoreflect.Message { // Deprecated: Use GameReview.ProtoReflect.Descriptor instead. func (*GameReview) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{135} + return file_main_proto_rawDescGZIP(), []int{158} } func (x *GameReview) GetID() int32 { @@ -7280,7 +8544,7 @@ type CreateGameReviewReq struct { func (x *CreateGameReviewReq) Reset() { *x = CreateGameReviewReq{} - mi := &file_main_proto_msgTypes[136] + mi := &file_main_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7292,7 +8556,7 @@ func (x *CreateGameReviewReq) String() string { func (*CreateGameReviewReq) ProtoMessage() {} func (x *CreateGameReviewReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[136] + mi := &file_main_proto_msgTypes[159] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7305,7 +8569,7 @@ func (x *CreateGameReviewReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateGameReviewReq.ProtoReflect.Descriptor instead. func (*CreateGameReviewReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{136} + return file_main_proto_rawDescGZIP(), []int{159} } func (x *CreateGameReviewReq) GetGameID() int32 { @@ -7359,7 +8623,7 @@ type CreateGameReviewRsp struct { func (x *CreateGameReviewRsp) Reset() { *x = CreateGameReviewRsp{} - mi := &file_main_proto_msgTypes[137] + mi := &file_main_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7371,7 +8635,7 @@ func (x *CreateGameReviewRsp) String() string { func (*CreateGameReviewRsp) ProtoMessage() {} func (x *CreateGameReviewRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[137] + mi := &file_main_proto_msgTypes[160] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7384,7 +8648,7 @@ func (x *CreateGameReviewRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateGameReviewRsp.ProtoReflect.Descriptor instead. func (*CreateGameReviewRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{137} + return file_main_proto_rawDescGZIP(), []int{160} } func (x *CreateGameReviewRsp) GetReview() *GameReview { @@ -7403,7 +8667,7 @@ type GetGameReviewsReq struct { func (x *GetGameReviewsReq) Reset() { *x = GetGameReviewsReq{} - mi := &file_main_proto_msgTypes[138] + mi := &file_main_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7415,7 +8679,7 @@ func (x *GetGameReviewsReq) String() string { func (*GetGameReviewsReq) ProtoMessage() {} func (x *GetGameReviewsReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[138] + mi := &file_main_proto_msgTypes[161] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7428,7 +8692,7 @@ func (x *GetGameReviewsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameReviewsReq.ProtoReflect.Descriptor instead. func (*GetGameReviewsReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{138} + return file_main_proto_rawDescGZIP(), []int{161} } func (x *GetGameReviewsReq) GetGameID() int32 { @@ -7447,7 +8711,7 @@ type GetScenarioReviewsReq struct { func (x *GetScenarioReviewsReq) Reset() { *x = GetScenarioReviewsReq{} - mi := &file_main_proto_msgTypes[139] + mi := &file_main_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7459,7 +8723,7 @@ func (x *GetScenarioReviewsReq) String() string { func (*GetScenarioReviewsReq) ProtoMessage() {} func (x *GetScenarioReviewsReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[139] + mi := &file_main_proto_msgTypes[162] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7472,7 +8736,7 @@ func (x *GetScenarioReviewsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScenarioReviewsReq.ProtoReflect.Descriptor instead. func (*GetScenarioReviewsReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{139} + return file_main_proto_rawDescGZIP(), []int{162} } func (x *GetScenarioReviewsReq) GetScenarioID() int32 { @@ -7490,7 +8754,7 @@ type GetReviewsForModerationReq struct { func (x *GetReviewsForModerationReq) Reset() { *x = GetReviewsForModerationReq{} - mi := &file_main_proto_msgTypes[140] + mi := &file_main_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7502,7 +8766,7 @@ func (x *GetReviewsForModerationReq) String() string { func (*GetReviewsForModerationReq) ProtoMessage() {} func (x *GetReviewsForModerationReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[140] + mi := &file_main_proto_msgTypes[163] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7515,7 +8779,7 @@ func (x *GetReviewsForModerationReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetReviewsForModerationReq.ProtoReflect.Descriptor instead. func (*GetReviewsForModerationReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{140} + return file_main_proto_rawDescGZIP(), []int{163} } type GetGameReviewsRsp struct { @@ -7529,7 +8793,7 @@ type GetGameReviewsRsp struct { func (x *GetGameReviewsRsp) Reset() { *x = GetGameReviewsRsp{} - mi := &file_main_proto_msgTypes[141] + mi := &file_main_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7541,7 +8805,7 @@ func (x *GetGameReviewsRsp) String() string { func (*GetGameReviewsRsp) ProtoMessage() {} func (x *GetGameReviewsRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[141] + mi := &file_main_proto_msgTypes[164] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7554,7 +8818,7 @@ func (x *GetGameReviewsRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameReviewsRsp.ProtoReflect.Descriptor instead. func (*GetGameReviewsRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{141} + return file_main_proto_rawDescGZIP(), []int{164} } func (x *GetGameReviewsRsp) GetAverageRating() float64 { @@ -7588,7 +8852,7 @@ type ModerateGameReviewReq struct { func (x *ModerateGameReviewReq) Reset() { *x = ModerateGameReviewReq{} - mi := &file_main_proto_msgTypes[142] + mi := &file_main_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7600,7 +8864,7 @@ func (x *ModerateGameReviewReq) String() string { func (*ModerateGameReviewReq) ProtoMessage() {} func (x *ModerateGameReviewReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[142] + mi := &file_main_proto_msgTypes[165] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7613,7 +8877,7 @@ func (x *ModerateGameReviewReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ModerateGameReviewReq.ProtoReflect.Descriptor instead. func (*ModerateGameReviewReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{142} + return file_main_proto_rawDescGZIP(), []int{165} } func (x *ModerateGameReviewReq) GetID() int32 { @@ -7639,7 +8903,7 @@ type ModerateGameReviewRsp struct { func (x *ModerateGameReviewRsp) Reset() { *x = ModerateGameReviewRsp{} - mi := &file_main_proto_msgTypes[143] + mi := &file_main_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7651,7 +8915,7 @@ func (x *ModerateGameReviewRsp) String() string { func (*ModerateGameReviewRsp) ProtoMessage() {} func (x *ModerateGameReviewRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[143] + mi := &file_main_proto_msgTypes[166] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7664,7 +8928,7 @@ func (x *ModerateGameReviewRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use ModerateGameReviewRsp.ProtoReflect.Descriptor instead. func (*ModerateGameReviewRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{143} + return file_main_proto_rawDescGZIP(), []int{166} } func (x *ModerateGameReviewRsp) GetReview() *GameReview { @@ -7689,7 +8953,7 @@ type UpdateGameReq struct { func (x *UpdateGameReq) Reset() { *x = UpdateGameReq{} - mi := &file_main_proto_msgTypes[144] + mi := &file_main_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7701,7 +8965,7 @@ func (x *UpdateGameReq) String() string { func (*UpdateGameReq) ProtoMessage() {} func (x *UpdateGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[144] + mi := &file_main_proto_msgTypes[167] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7714,7 +8978,7 @@ func (x *UpdateGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGameReq.ProtoReflect.Descriptor instead. func (*UpdateGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{144} + return file_main_proto_rawDescGZIP(), []int{167} } func (x *UpdateGameReq) GetID() int32 { @@ -7774,7 +9038,7 @@ type UpdateGameRsp struct { func (x *UpdateGameRsp) Reset() { *x = UpdateGameRsp{} - mi := &file_main_proto_msgTypes[145] + mi := &file_main_proto_msgTypes[168] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7786,7 +9050,7 @@ func (x *UpdateGameRsp) String() string { func (*UpdateGameRsp) ProtoMessage() {} func (x *UpdateGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[145] + mi := &file_main_proto_msgTypes[168] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7799,7 +9063,7 @@ func (x *UpdateGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGameRsp.ProtoReflect.Descriptor instead. func (*UpdateGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{145} + return file_main_proto_rawDescGZIP(), []int{168} } type StartGameReq struct { @@ -7811,7 +9075,7 @@ type StartGameReq struct { func (x *StartGameReq) Reset() { *x = StartGameReq{} - mi := &file_main_proto_msgTypes[146] + mi := &file_main_proto_msgTypes[169] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7823,7 +9087,7 @@ func (x *StartGameReq) String() string { func (*StartGameReq) ProtoMessage() {} func (x *StartGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[146] + mi := &file_main_proto_msgTypes[169] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7836,7 +9100,7 @@ func (x *StartGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use StartGameReq.ProtoReflect.Descriptor instead. func (*StartGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{146} + return file_main_proto_rawDescGZIP(), []int{169} } func (x *StartGameReq) GetID() int32 { @@ -7854,7 +9118,7 @@ type StartGameRsp struct { func (x *StartGameRsp) Reset() { *x = StartGameRsp{} - mi := &file_main_proto_msgTypes[147] + mi := &file_main_proto_msgTypes[170] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7866,7 +9130,7 @@ func (x *StartGameRsp) String() string { func (*StartGameRsp) ProtoMessage() {} func (x *StartGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[147] + mi := &file_main_proto_msgTypes[170] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7879,7 +9143,7 @@ func (x *StartGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use StartGameRsp.ProtoReflect.Descriptor instead. func (*StartGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{147} + return file_main_proto_rawDescGZIP(), []int{170} } type PauseGameReq struct { @@ -7891,7 +9155,7 @@ type PauseGameReq struct { func (x *PauseGameReq) Reset() { *x = PauseGameReq{} - mi := &file_main_proto_msgTypes[148] + mi := &file_main_proto_msgTypes[171] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7903,7 +9167,7 @@ func (x *PauseGameReq) String() string { func (*PauseGameReq) ProtoMessage() {} func (x *PauseGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[148] + mi := &file_main_proto_msgTypes[171] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7916,7 +9180,7 @@ func (x *PauseGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use PauseGameReq.ProtoReflect.Descriptor instead. func (*PauseGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{148} + return file_main_proto_rawDescGZIP(), []int{171} } func (x *PauseGameReq) GetID() int32 { @@ -7934,7 +9198,7 @@ type PauseGameRsp struct { func (x *PauseGameRsp) Reset() { *x = PauseGameRsp{} - mi := &file_main_proto_msgTypes[149] + mi := &file_main_proto_msgTypes[172] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7946,7 +9210,7 @@ func (x *PauseGameRsp) String() string { func (*PauseGameRsp) ProtoMessage() {} func (x *PauseGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[149] + mi := &file_main_proto_msgTypes[172] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7959,7 +9223,7 @@ func (x *PauseGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use PauseGameRsp.ProtoReflect.Descriptor instead. func (*PauseGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{149} + return file_main_proto_rawDescGZIP(), []int{172} } type PlayGameReq struct { @@ -7971,7 +9235,7 @@ type PlayGameReq struct { func (x *PlayGameReq) Reset() { *x = PlayGameReq{} - mi := &file_main_proto_msgTypes[150] + mi := &file_main_proto_msgTypes[173] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7983,7 +9247,7 @@ func (x *PlayGameReq) String() string { func (*PlayGameReq) ProtoMessage() {} func (x *PlayGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[150] + mi := &file_main_proto_msgTypes[173] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7996,7 +9260,7 @@ func (x *PlayGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayGameReq.ProtoReflect.Descriptor instead. func (*PlayGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{150} + return file_main_proto_rawDescGZIP(), []int{173} } func (x *PlayGameReq) GetID() int32 { @@ -8014,7 +9278,7 @@ type PlayGameRsp struct { func (x *PlayGameRsp) Reset() { *x = PlayGameRsp{} - mi := &file_main_proto_msgTypes[151] + mi := &file_main_proto_msgTypes[174] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8026,7 +9290,7 @@ func (x *PlayGameRsp) String() string { func (*PlayGameRsp) ProtoMessage() {} func (x *PlayGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[151] + mi := &file_main_proto_msgTypes[174] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8039,7 +9303,7 @@ func (x *PlayGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayGameRsp.ProtoReflect.Descriptor instead. func (*PlayGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{151} + return file_main_proto_rawDescGZIP(), []int{174} } type FinishGameReq struct { @@ -8051,7 +9315,7 @@ type FinishGameReq struct { func (x *FinishGameReq) Reset() { *x = FinishGameReq{} - mi := &file_main_proto_msgTypes[152] + mi := &file_main_proto_msgTypes[175] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8063,7 +9327,7 @@ func (x *FinishGameReq) String() string { func (*FinishGameReq) ProtoMessage() {} func (x *FinishGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[152] + mi := &file_main_proto_msgTypes[175] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8076,7 +9340,7 @@ func (x *FinishGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FinishGameReq.ProtoReflect.Descriptor instead. func (*FinishGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{152} + return file_main_proto_rawDescGZIP(), []int{175} } func (x *FinishGameReq) GetID() int32 { @@ -8094,7 +9358,7 @@ type FinishGameRsp struct { func (x *FinishGameRsp) Reset() { *x = FinishGameRsp{} - mi := &file_main_proto_msgTypes[153] + mi := &file_main_proto_msgTypes[176] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8106,7 +9370,7 @@ func (x *FinishGameRsp) String() string { func (*FinishGameRsp) ProtoMessage() {} func (x *FinishGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[153] + mi := &file_main_proto_msgTypes[176] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8119,7 +9383,7 @@ func (x *FinishGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use FinishGameRsp.ProtoReflect.Descriptor instead. func (*FinishGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{153} + return file_main_proto_rawDescGZIP(), []int{176} } type ResetGameReq struct { @@ -8131,7 +9395,7 @@ type ResetGameReq struct { func (x *ResetGameReq) Reset() { *x = ResetGameReq{} - mi := &file_main_proto_msgTypes[154] + mi := &file_main_proto_msgTypes[177] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8143,7 +9407,7 @@ func (x *ResetGameReq) String() string { func (*ResetGameReq) ProtoMessage() {} func (x *ResetGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[154] + mi := &file_main_proto_msgTypes[177] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8156,7 +9420,7 @@ func (x *ResetGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ResetGameReq.ProtoReflect.Descriptor instead. func (*ResetGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{154} + return file_main_proto_rawDescGZIP(), []int{177} } func (x *ResetGameReq) GetID() int32 { @@ -8174,7 +9438,7 @@ type ResetGameRsp struct { func (x *ResetGameRsp) Reset() { *x = ResetGameRsp{} - mi := &file_main_proto_msgTypes[155] + mi := &file_main_proto_msgTypes[178] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8186,7 +9450,7 @@ func (x *ResetGameRsp) String() string { func (*ResetGameRsp) ProtoMessage() {} func (x *ResetGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[155] + mi := &file_main_proto_msgTypes[178] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8199,7 +9463,7 @@ func (x *ResetGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use ResetGameRsp.ProtoReflect.Descriptor instead. func (*ResetGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{155} + return file_main_proto_rawDescGZIP(), []int{178} } type DeleteGameReq struct { @@ -8211,7 +9475,7 @@ type DeleteGameReq struct { func (x *DeleteGameReq) Reset() { *x = DeleteGameReq{} - mi := &file_main_proto_msgTypes[156] + mi := &file_main_proto_msgTypes[179] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8223,7 +9487,7 @@ func (x *DeleteGameReq) String() string { func (*DeleteGameReq) ProtoMessage() {} func (x *DeleteGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[156] + mi := &file_main_proto_msgTypes[179] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8236,7 +9500,7 @@ func (x *DeleteGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteGameReq.ProtoReflect.Descriptor instead. func (*DeleteGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{156} + return file_main_proto_rawDescGZIP(), []int{179} } func (x *DeleteGameReq) GetID() int32 { @@ -8254,7 +9518,7 @@ type DeleteGameRsp struct { func (x *DeleteGameRsp) Reset() { *x = DeleteGameRsp{} - mi := &file_main_proto_msgTypes[157] + mi := &file_main_proto_msgTypes[180] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8266,7 +9530,7 @@ func (x *DeleteGameRsp) String() string { func (*DeleteGameRsp) ProtoMessage() {} func (x *DeleteGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[157] + mi := &file_main_proto_msgTypes[180] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8279,7 +9543,7 @@ func (x *DeleteGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteGameRsp.ProtoReflect.Descriptor instead. func (*DeleteGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{157} + return file_main_proto_rawDescGZIP(), []int{180} } type AddTeamReq struct { @@ -8294,7 +9558,7 @@ type AddTeamReq struct { func (x *AddTeamReq) Reset() { *x = AddTeamReq{} - mi := &file_main_proto_msgTypes[158] + mi := &file_main_proto_msgTypes[181] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8306,7 +9570,7 @@ func (x *AddTeamReq) String() string { func (*AddTeamReq) ProtoMessage() {} func (x *AddTeamReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[158] + mi := &file_main_proto_msgTypes[181] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8319,7 +9583,7 @@ func (x *AddTeamReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddTeamReq.ProtoReflect.Descriptor instead. func (*AddTeamReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{158} + return file_main_proto_rawDescGZIP(), []int{181} } func (x *AddTeamReq) GetGameID() int32 { @@ -8360,7 +9624,7 @@ type AddTeamRsp struct { func (x *AddTeamRsp) Reset() { *x = AddTeamRsp{} - mi := &file_main_proto_msgTypes[159] + mi := &file_main_proto_msgTypes[182] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8372,7 +9636,7 @@ func (x *AddTeamRsp) String() string { func (*AddTeamRsp) ProtoMessage() {} func (x *AddTeamRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[159] + mi := &file_main_proto_msgTypes[182] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8385,7 +9649,7 @@ func (x *AddTeamRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddTeamRsp.ProtoReflect.Descriptor instead. func (*AddTeamRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{159} + return file_main_proto_rawDescGZIP(), []int{182} } func (x *AddTeamRsp) GetID() int32 { @@ -8412,7 +9676,7 @@ type UpdateTeamReq struct { func (x *UpdateTeamReq) Reset() { *x = UpdateTeamReq{} - mi := &file_main_proto_msgTypes[160] + mi := &file_main_proto_msgTypes[183] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8424,7 +9688,7 @@ func (x *UpdateTeamReq) String() string { func (*UpdateTeamReq) ProtoMessage() {} func (x *UpdateTeamReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[160] + mi := &file_main_proto_msgTypes[183] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8437,7 +9701,7 @@ func (x *UpdateTeamReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTeamReq.ProtoReflect.Descriptor instead. func (*UpdateTeamReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{160} + return file_main_proto_rawDescGZIP(), []int{183} } func (x *UpdateTeamReq) GetID() int32 { @@ -8462,7 +9726,7 @@ type UpdateTeamRsp struct { func (x *UpdateTeamRsp) Reset() { *x = UpdateTeamRsp{} - mi := &file_main_proto_msgTypes[161] + mi := &file_main_proto_msgTypes[184] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8474,7 +9738,7 @@ func (x *UpdateTeamRsp) String() string { func (*UpdateTeamRsp) ProtoMessage() {} func (x *UpdateTeamRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[161] + mi := &file_main_proto_msgTypes[184] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8487,7 +9751,7 @@ func (x *UpdateTeamRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTeamRsp.ProtoReflect.Descriptor instead. func (*UpdateTeamRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{161} + return file_main_proto_rawDescGZIP(), []int{184} } type DeleteTeamReq struct { @@ -8499,7 +9763,7 @@ type DeleteTeamReq struct { func (x *DeleteTeamReq) Reset() { *x = DeleteTeamReq{} - mi := &file_main_proto_msgTypes[162] + mi := &file_main_proto_msgTypes[185] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8511,7 +9775,7 @@ func (x *DeleteTeamReq) String() string { func (*DeleteTeamReq) ProtoMessage() {} func (x *DeleteTeamReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[162] + mi := &file_main_proto_msgTypes[185] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8524,7 +9788,7 @@ func (x *DeleteTeamReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTeamReq.ProtoReflect.Descriptor instead. func (*DeleteTeamReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{162} + return file_main_proto_rawDescGZIP(), []int{185} } func (x *DeleteTeamReq) GetID() int64 { @@ -8542,7 +9806,7 @@ type DeleteTeamRsp struct { func (x *DeleteTeamRsp) Reset() { *x = DeleteTeamRsp{} - mi := &file_main_proto_msgTypes[163] + mi := &file_main_proto_msgTypes[186] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8554,7 +9818,7 @@ func (x *DeleteTeamRsp) String() string { func (*DeleteTeamRsp) ProtoMessage() {} func (x *DeleteTeamRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[163] + mi := &file_main_proto_msgTypes[186] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8567,7 +9831,7 @@ func (x *DeleteTeamRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTeamRsp.ProtoReflect.Descriptor instead. func (*DeleteTeamRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{163} + return file_main_proto_rawDescGZIP(), []int{186} } type GiveTeamApplicationsReq struct { @@ -8580,7 +9844,7 @@ type GiveTeamApplicationsReq struct { func (x *GiveTeamApplicationsReq) Reset() { *x = GiveTeamApplicationsReq{} - mi := &file_main_proto_msgTypes[164] + mi := &file_main_proto_msgTypes[187] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8592,7 +9856,7 @@ func (x *GiveTeamApplicationsReq) String() string { func (*GiveTeamApplicationsReq) ProtoMessage() {} func (x *GiveTeamApplicationsReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[164] + mi := &file_main_proto_msgTypes[187] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8605,7 +9869,7 @@ func (x *GiveTeamApplicationsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GiveTeamApplicationsReq.ProtoReflect.Descriptor instead. func (*GiveTeamApplicationsReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{164} + return file_main_proto_rawDescGZIP(), []int{187} } func (x *GiveTeamApplicationsReq) GetID() int64 { @@ -8630,7 +9894,7 @@ type GiveTeamApplicationsRsp struct { func (x *GiveTeamApplicationsRsp) Reset() { *x = GiveTeamApplicationsRsp{} - mi := &file_main_proto_msgTypes[165] + mi := &file_main_proto_msgTypes[188] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8642,7 +9906,7 @@ func (x *GiveTeamApplicationsRsp) String() string { func (*GiveTeamApplicationsRsp) ProtoMessage() {} func (x *GiveTeamApplicationsRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[165] + mi := &file_main_proto_msgTypes[188] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8655,7 +9919,7 @@ func (x *GiveTeamApplicationsRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GiveTeamApplicationsRsp.ProtoReflect.Descriptor instead. func (*GiveTeamApplicationsRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{165} + return file_main_proto_rawDescGZIP(), []int{188} } type GetTeamStoryReq struct { @@ -8668,7 +9932,7 @@ type GetTeamStoryReq struct { func (x *GetTeamStoryReq) Reset() { *x = GetTeamStoryReq{} - mi := &file_main_proto_msgTypes[166] + mi := &file_main_proto_msgTypes[189] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8680,7 +9944,7 @@ func (x *GetTeamStoryReq) String() string { func (*GetTeamStoryReq) ProtoMessage() {} func (x *GetTeamStoryReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[166] + mi := &file_main_proto_msgTypes[189] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8693,7 +9957,7 @@ func (x *GetTeamStoryReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTeamStoryReq.ProtoReflect.Descriptor instead. func (*GetTeamStoryReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{166} + return file_main_proto_rawDescGZIP(), []int{189} } func (x *GetTeamStoryReq) GetID() int64 { @@ -8721,7 +9985,7 @@ type GetTeamStoryRsp struct { func (x *GetTeamStoryRsp) Reset() { *x = GetTeamStoryRsp{} - mi := &file_main_proto_msgTypes[167] + mi := &file_main_proto_msgTypes[190] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8733,7 +9997,7 @@ func (x *GetTeamStoryRsp) String() string { func (*GetTeamStoryRsp) ProtoMessage() {} func (x *GetTeamStoryRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[167] + mi := &file_main_proto_msgTypes[190] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8746,7 +10010,7 @@ func (x *GetTeamStoryRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTeamStoryRsp.ProtoReflect.Descriptor instead. func (*GetTeamStoryRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{167} + return file_main_proto_rawDescGZIP(), []int{190} } func (x *GetTeamStoryRsp) GetStory() *Story { @@ -8780,7 +10044,7 @@ type TeamAction struct { func (x *TeamAction) Reset() { *x = TeamAction{} - mi := &file_main_proto_msgTypes[168] + mi := &file_main_proto_msgTypes[191] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8792,7 +10056,7 @@ func (x *TeamAction) String() string { func (*TeamAction) ProtoMessage() {} func (x *TeamAction) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[168] + mi := &file_main_proto_msgTypes[191] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8805,7 +10069,7 @@ func (x *TeamAction) ProtoReflect() protoreflect.Message { // Deprecated: Use TeamAction.ProtoReflect.Descriptor instead. func (*TeamAction) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{168} + return file_main_proto_rawDescGZIP(), []int{191} } func (x *TeamAction) GetCode() string { @@ -8833,7 +10097,7 @@ type AddTeamActionReq struct { func (x *AddTeamActionReq) Reset() { *x = AddTeamActionReq{} - mi := &file_main_proto_msgTypes[169] + mi := &file_main_proto_msgTypes[192] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8845,7 +10109,7 @@ func (x *AddTeamActionReq) String() string { func (*AddTeamActionReq) ProtoMessage() {} func (x *AddTeamActionReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[169] + mi := &file_main_proto_msgTypes[192] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8858,7 +10122,7 @@ func (x *AddTeamActionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddTeamActionReq.ProtoReflect.Descriptor instead. func (*AddTeamActionReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{169} + return file_main_proto_rawDescGZIP(), []int{192} } func (x *AddTeamActionReq) GetID() int64 { @@ -8890,7 +10154,7 @@ type AddTeamActionRsp struct { func (x *AddTeamActionRsp) Reset() { *x = AddTeamActionRsp{} - mi := &file_main_proto_msgTypes[170] + mi := &file_main_proto_msgTypes[193] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8902,7 +10166,7 @@ func (x *AddTeamActionRsp) String() string { func (*AddTeamActionRsp) ProtoMessage() {} func (x *AddTeamActionRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[170] + mi := &file_main_proto_msgTypes[193] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8915,7 +10179,7 @@ func (x *AddTeamActionRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddTeamActionRsp.ProtoReflect.Descriptor instead. func (*AddTeamActionRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{170} + return file_main_proto_rawDescGZIP(), []int{193} } type DeleteLastTeamActionReq struct { @@ -8927,7 +10191,7 @@ type DeleteLastTeamActionReq struct { func (x *DeleteLastTeamActionReq) Reset() { *x = DeleteLastTeamActionReq{} - mi := &file_main_proto_msgTypes[171] + mi := &file_main_proto_msgTypes[194] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8939,7 +10203,7 @@ func (x *DeleteLastTeamActionReq) String() string { func (*DeleteLastTeamActionReq) ProtoMessage() {} func (x *DeleteLastTeamActionReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[171] + mi := &file_main_proto_msgTypes[194] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8952,7 +10216,7 @@ func (x *DeleteLastTeamActionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteLastTeamActionReq.ProtoReflect.Descriptor instead. func (*DeleteLastTeamActionReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{171} + return file_main_proto_rawDescGZIP(), []int{194} } func (x *DeleteLastTeamActionReq) GetID() int64 { @@ -8970,7 +10234,7 @@ type DeleteLastTeamActionRsp struct { func (x *DeleteLastTeamActionRsp) Reset() { *x = DeleteLastTeamActionRsp{} - mi := &file_main_proto_msgTypes[172] + mi := &file_main_proto_msgTypes[195] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8982,7 +10246,7 @@ func (x *DeleteLastTeamActionRsp) String() string { func (*DeleteLastTeamActionRsp) ProtoMessage() {} func (x *DeleteLastTeamActionRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[172] + mi := &file_main_proto_msgTypes[195] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8995,7 +10259,7 @@ func (x *DeleteLastTeamActionRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteLastTeamActionRsp.ProtoReflect.Descriptor instead. func (*DeleteLastTeamActionRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{172} + return file_main_proto_rawDescGZIP(), []int{195} } type GetTeamAnswersReq struct { @@ -9008,7 +10272,7 @@ type GetTeamAnswersReq struct { func (x *GetTeamAnswersReq) Reset() { *x = GetTeamAnswersReq{} - mi := &file_main_proto_msgTypes[173] + mi := &file_main_proto_msgTypes[196] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9020,7 +10284,7 @@ func (x *GetTeamAnswersReq) String() string { func (*GetTeamAnswersReq) ProtoMessage() {} func (x *GetTeamAnswersReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[173] + mi := &file_main_proto_msgTypes[196] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9033,7 +10297,7 @@ func (x *GetTeamAnswersReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTeamAnswersReq.ProtoReflect.Descriptor instead. func (*GetTeamAnswersReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{173} + return file_main_proto_rawDescGZIP(), []int{196} } func (x *GetTeamAnswersReq) GetID() int64 { @@ -9059,7 +10323,7 @@ type GetTeamAnswersRsp struct { func (x *GetTeamAnswersRsp) Reset() { *x = GetTeamAnswersRsp{} - mi := &file_main_proto_msgTypes[174] + mi := &file_main_proto_msgTypes[197] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9071,7 +10335,7 @@ func (x *GetTeamAnswersRsp) String() string { func (*GetTeamAnswersRsp) ProtoMessage() {} func (x *GetTeamAnswersRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[174] + mi := &file_main_proto_msgTypes[197] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9084,7 +10348,7 @@ func (x *GetTeamAnswersRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTeamAnswersRsp.ProtoReflect.Descriptor instead. func (*GetTeamAnswersRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{174} + return file_main_proto_rawDescGZIP(), []int{197} } func (x *GetTeamAnswersRsp) GetAnswers() []*Answer { @@ -9105,7 +10369,7 @@ type SubmitTeamAnswersReq struct { func (x *SubmitTeamAnswersReq) Reset() { *x = SubmitTeamAnswersReq{} - mi := &file_main_proto_msgTypes[175] + mi := &file_main_proto_msgTypes[198] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9117,7 +10381,7 @@ func (x *SubmitTeamAnswersReq) String() string { func (*SubmitTeamAnswersReq) ProtoMessage() {} func (x *SubmitTeamAnswersReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[175] + mi := &file_main_proto_msgTypes[198] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9130,7 +10394,7 @@ func (x *SubmitTeamAnswersReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitTeamAnswersReq.ProtoReflect.Descriptor instead. func (*SubmitTeamAnswersReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{175} + return file_main_proto_rawDescGZIP(), []int{198} } func (x *SubmitTeamAnswersReq) GetID() int64 { @@ -9162,7 +10426,7 @@ type SubmitTeamAnswersRsp struct { func (x *SubmitTeamAnswersRsp) Reset() { *x = SubmitTeamAnswersRsp{} - mi := &file_main_proto_msgTypes[176] + mi := &file_main_proto_msgTypes[199] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9174,7 +10438,7 @@ func (x *SubmitTeamAnswersRsp) String() string { func (*SubmitTeamAnswersRsp) ProtoMessage() {} func (x *SubmitTeamAnswersRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[176] + mi := &file_main_proto_msgTypes[199] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9187,7 +10451,7 @@ func (x *SubmitTeamAnswersRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitTeamAnswersRsp.ProtoReflect.Descriptor instead. func (*SubmitTeamAnswersRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{176} + return file_main_proto_rawDescGZIP(), []int{199} } type SetTeamAnswerScoreReq struct { @@ -9202,7 +10466,7 @@ type SetTeamAnswerScoreReq struct { func (x *SetTeamAnswerScoreReq) Reset() { *x = SetTeamAnswerScoreReq{} - mi := &file_main_proto_msgTypes[177] + mi := &file_main_proto_msgTypes[200] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9214,7 +10478,7 @@ func (x *SetTeamAnswerScoreReq) String() string { func (*SetTeamAnswerScoreReq) ProtoMessage() {} func (x *SetTeamAnswerScoreReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[177] + mi := &file_main_proto_msgTypes[200] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9227,7 +10491,7 @@ func (x *SetTeamAnswerScoreReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SetTeamAnswerScoreReq.ProtoReflect.Descriptor instead. func (*SetTeamAnswerScoreReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{177} + return file_main_proto_rawDescGZIP(), []int{200} } func (x *SetTeamAnswerScoreReq) GetID() int64 { @@ -9259,7 +10523,7 @@ type SetTeamAnswerScoreRsp struct { func (x *SetTeamAnswerScoreRsp) Reset() { *x = SetTeamAnswerScoreRsp{} - mi := &file_main_proto_msgTypes[178] + mi := &file_main_proto_msgTypes[201] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9271,7 +10535,7 @@ func (x *SetTeamAnswerScoreRsp) String() string { func (*SetTeamAnswerScoreRsp) ProtoMessage() {} func (x *SetTeamAnswerScoreRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[178] + mi := &file_main_proto_msgTypes[201] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9284,7 +10548,7 @@ func (x *SetTeamAnswerScoreRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use SetTeamAnswerScoreRsp.ProtoReflect.Descriptor instead. func (*SetTeamAnswerScoreRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{178} + return file_main_proto_rawDescGZIP(), []int{201} } type UpdateScenarioBackgroundReq struct { @@ -9297,7 +10561,7 @@ type UpdateScenarioBackgroundReq struct { func (x *UpdateScenarioBackgroundReq) Reset() { *x = UpdateScenarioBackgroundReq{} - mi := &file_main_proto_msgTypes[179] + mi := &file_main_proto_msgTypes[202] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9309,7 +10573,7 @@ func (x *UpdateScenarioBackgroundReq) String() string { func (*UpdateScenarioBackgroundReq) ProtoMessage() {} func (x *UpdateScenarioBackgroundReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[179] + mi := &file_main_proto_msgTypes[202] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9322,7 +10586,7 @@ func (x *UpdateScenarioBackgroundReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateScenarioBackgroundReq.ProtoReflect.Descriptor instead. func (*UpdateScenarioBackgroundReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{179} + return file_main_proto_rawDescGZIP(), []int{202} } func (x *UpdateScenarioBackgroundReq) GetID() int32 { @@ -9347,7 +10611,7 @@ type UpdateScenarioBackgroundRsp struct { func (x *UpdateScenarioBackgroundRsp) Reset() { *x = UpdateScenarioBackgroundRsp{} - mi := &file_main_proto_msgTypes[180] + mi := &file_main_proto_msgTypes[203] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9359,7 +10623,7 @@ func (x *UpdateScenarioBackgroundRsp) String() string { func (*UpdateScenarioBackgroundRsp) ProtoMessage() {} func (x *UpdateScenarioBackgroundRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[180] + mi := &file_main_proto_msgTypes[203] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9372,7 +10636,7 @@ func (x *UpdateScenarioBackgroundRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateScenarioBackgroundRsp.ProtoReflect.Descriptor instead. func (*UpdateScenarioBackgroundRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{180} + return file_main_proto_rawDescGZIP(), []int{203} } type IssueGameTicketsReq struct { @@ -9385,7 +10649,7 @@ type IssueGameTicketsReq struct { func (x *IssueGameTicketsReq) Reset() { *x = IssueGameTicketsReq{} - mi := &file_main_proto_msgTypes[181] + mi := &file_main_proto_msgTypes[204] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9397,7 +10661,7 @@ func (x *IssueGameTicketsReq) String() string { func (*IssueGameTicketsReq) ProtoMessage() {} func (x *IssueGameTicketsReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[181] + mi := &file_main_proto_msgTypes[204] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9410,7 +10674,7 @@ func (x *IssueGameTicketsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use IssueGameTicketsReq.ProtoReflect.Descriptor instead. func (*IssueGameTicketsReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{181} + return file_main_proto_rawDescGZIP(), []int{204} } func (x *IssueGameTicketsReq) GetGameID() int32 { @@ -9436,7 +10700,7 @@ type IssueGameTicketsRsp struct { func (x *IssueGameTicketsRsp) Reset() { *x = IssueGameTicketsRsp{} - mi := &file_main_proto_msgTypes[182] + mi := &file_main_proto_msgTypes[205] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9448,7 +10712,7 @@ func (x *IssueGameTicketsRsp) String() string { func (*IssueGameTicketsRsp) ProtoMessage() {} func (x *IssueGameTicketsRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[182] + mi := &file_main_proto_msgTypes[205] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9461,7 +10725,7 @@ func (x *IssueGameTicketsRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use IssueGameTicketsRsp.ProtoReflect.Descriptor instead. func (*IssueGameTicketsRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{182} + return file_main_proto_rawDescGZIP(), []int{205} } func (x *IssueGameTicketsRsp) GetTickets() []*Ticket { @@ -9481,7 +10745,7 @@ type Ticket struct { func (x *Ticket) Reset() { *x = Ticket{} - mi := &file_main_proto_msgTypes[183] + mi := &file_main_proto_msgTypes[206] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9493,7 +10757,7 @@ func (x *Ticket) String() string { func (*Ticket) ProtoMessage() {} func (x *Ticket) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[183] + mi := &file_main_proto_msgTypes[206] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9506,7 +10770,7 @@ func (x *Ticket) ProtoReflect() protoreflect.Message { // Deprecated: Use Ticket.ProtoReflect.Descriptor instead. func (*Ticket) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{183} + return file_main_proto_rawDescGZIP(), []int{206} } func (x *Ticket) GetID() int32 { @@ -9532,7 +10796,7 @@ type GetTicketReq struct { func (x *GetTicketReq) Reset() { *x = GetTicketReq{} - mi := &file_main_proto_msgTypes[184] + mi := &file_main_proto_msgTypes[207] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9544,7 +10808,7 @@ func (x *GetTicketReq) String() string { func (*GetTicketReq) ProtoMessage() {} func (x *GetTicketReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[184] + mi := &file_main_proto_msgTypes[207] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9557,7 +10821,7 @@ func (x *GetTicketReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTicketReq.ProtoReflect.Descriptor instead. func (*GetTicketReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{184} + return file_main_proto_rawDescGZIP(), []int{207} } func (x *GetTicketReq) GetToken() string { @@ -9576,7 +10840,7 @@ type GetTicketRsp struct { func (x *GetTicketRsp) Reset() { *x = GetTicketRsp{} - mi := &file_main_proto_msgTypes[185] + mi := &file_main_proto_msgTypes[208] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9588,7 +10852,7 @@ func (x *GetTicketRsp) String() string { func (*GetTicketRsp) ProtoMessage() {} func (x *GetTicketRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[185] + mi := &file_main_proto_msgTypes[208] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9601,7 +10865,7 @@ func (x *GetTicketRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTicketRsp.ProtoReflect.Descriptor instead. func (*GetTicketRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{185} + return file_main_proto_rawDescGZIP(), []int{208} } func (x *GetTicketRsp) GetTicket() *TicketPage { @@ -9620,7 +10884,7 @@ type AcceptTicketReq struct { func (x *AcceptTicketReq) Reset() { *x = AcceptTicketReq{} - mi := &file_main_proto_msgTypes[186] + mi := &file_main_proto_msgTypes[209] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9632,7 +10896,7 @@ func (x *AcceptTicketReq) String() string { func (*AcceptTicketReq) ProtoMessage() {} func (x *AcceptTicketReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[186] + mi := &file_main_proto_msgTypes[209] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9645,7 +10909,7 @@ func (x *AcceptTicketReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AcceptTicketReq.ProtoReflect.Descriptor instead. func (*AcceptTicketReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{186} + return file_main_proto_rawDescGZIP(), []int{209} } func (x *AcceptTicketReq) GetToken() string { @@ -9664,7 +10928,7 @@ type AcceptTicketRsp struct { func (x *AcceptTicketRsp) Reset() { *x = AcceptTicketRsp{} - mi := &file_main_proto_msgTypes[187] + mi := &file_main_proto_msgTypes[210] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9676,7 +10940,7 @@ func (x *AcceptTicketRsp) String() string { func (*AcceptTicketRsp) ProtoMessage() {} func (x *AcceptTicketRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[187] + mi := &file_main_proto_msgTypes[210] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9689,7 +10953,7 @@ func (x *AcceptTicketRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use AcceptTicketRsp.ProtoReflect.Descriptor instead. func (*AcceptTicketRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{187} + return file_main_proto_rawDescGZIP(), []int{210} } func (x *AcceptTicketRsp) GetTicket() *TicketPage { @@ -9715,7 +10979,7 @@ type TicketPage struct { func (x *TicketPage) Reset() { *x = TicketPage{} - mi := &file_main_proto_msgTypes[188] + mi := &file_main_proto_msgTypes[211] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9727,7 +10991,7 @@ func (x *TicketPage) String() string { func (*TicketPage) ProtoMessage() {} func (x *TicketPage) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[188] + mi := &file_main_proto_msgTypes[211] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9740,7 +11004,7 @@ func (x *TicketPage) ProtoReflect() protoreflect.Message { // Deprecated: Use TicketPage.ProtoReflect.Descriptor instead. func (*TicketPage) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{188} + return file_main_proto_rawDescGZIP(), []int{211} } func (x *TicketPage) GetID() int32 { @@ -9885,7 +11149,52 @@ const file_main_proto_rawDesc = "" + "\bfilename\x18\x01 \x01(\tR\bfilename\x12\x1c\n" + "\tfile_type\x18\x02 \x01(\tR\tfile_type\"-\n" + "\x0fDownloadFileReq\x12\x1a\n" + - "\bfilename\x18\x01 \x01(\tR\bfilename\"$\n" + + "\bfilename\x18\x01 \x01(\tR\bfilename\"k\n" + + "\rPlaylistTrack\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\x05R\x02ID\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1a\n" + + "\bfilename\x18\x03 \x01(\tR\bfilename\x12\x1a\n" + + "\bposition\x18\x04 \x01(\x05R\bposition\"u\n" + + "\bPlaylist\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\x05R\x02ID\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12E\n" + + "\x06tracks\x18\x03 \x03(\v2-.crabs.evening_detective_server.PlaylistTrackR\x06tracks\"\x11\n" + + "\x0fGetPlaylistsReq\"Y\n" + + "\x0fGetPlaylistsRsp\x12F\n" + + "\tplaylists\x18\x01 \x03(\v2(.crabs.evening_detective_server.PlaylistR\tplaylists\"'\n" + + "\x11CreatePlaylistReq\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\"Y\n" + + "\x11CreatePlaylistRsp\x12D\n" + + "\bplaylist\x18\x01 \x01(\v2(.crabs.evening_detective_server.PlaylistR\bplaylist\"7\n" + + "\x11UpdatePlaylistReq\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\x05R\x02ID\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\"Y\n" + + "\x11UpdatePlaylistRsp\x12D\n" + + "\bplaylist\x18\x01 \x01(\v2(.crabs.evening_detective_server.PlaylistR\bplaylist\"#\n" + + "\x11DeletePlaylistReq\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\x05R\x02ID\"\x13\n" + + "\x11DeletePlaylistRsp\"|\n" + + "\x16UploadPlaylistTrackReq\x12\x1e\n" + + "\n" + + "playlistID\x18\x01 \x01(\x05R\n" + + "playlistID\x12\x12\n" + + "\x04name\x18\x02 \x01(\tR\x04name\x12\x1a\n" + + "\bfilename\x18\x03 \x01(\tR\bfilename\x12\x12\n" + + "\x04data\x18\x04 \x01(\fR\x04data\"^\n" + + "\x16UploadPlaylistTrackRsp\x12D\n" + + "\bplaylist\x18\x01 \x01(\v2(.crabs.evening_detective_server.PlaylistR\bplaylist\"R\n" + + "\x16DeletePlaylistTrackReq\x12\x1e\n" + + "\n" + + "playlistID\x18\x01 \x01(\x05R\n" + + "playlistID\x12\x18\n" + + "\atrackID\x18\x02 \x01(\x05R\atrackID\"\x18\n" + + "\x16DeletePlaylistTrackRsp\"H\n" + + "\x16SetScenarioPlaylistReq\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\x05R\x02ID\x12\x1e\n" + + "\n" + + "playlistID\x18\x02 \x01(\x05R\n" + + "playlistID\"\x18\n" + + "\x16SetScenarioPlaylistRsp\"$\n" + "\x0eAddScenarioReq\x12\x12\n" + "\x04name\x18\x01 \x01(\tR\x04name\" \n" + "\x0eAddScenarioRsp\x12\x0e\n" + @@ -9899,7 +11208,7 @@ const file_main_proto_rawDesc = "" + "\x0eGetScenarioReq\x12\x0e\n" + "\x02ID\x18\x01 \x01(\x05R\x02ID\"V\n" + "\x0eGetScenarioRsp\x12D\n" + - "\bscenario\x18\x01 \x01(\v2(.crabs.evening_detective_server.ScenarioR\bscenario\"\xbe\x04\n" + + "\bscenario\x18\x01 \x01(\v2(.crabs.evening_detective_server.ScenarioR\bscenario\"\x87\x05\n" + "\bScenario\x12\x0e\n" + "\x02ID\x18\x01 \x01(\x05R\x02ID\x12\x12\n" + "\x04name\x18\x02 \x01(\tR\x04name\x12%\n" + @@ -9918,9 +11227,11 @@ const file_main_proto_rawDesc = "" + "\rreviews_count\x18\f \x01(\x05R\freviewsCount\x12\x1e\n" + "\n" + "difficulty\x18\r \x01(\tR\n" + - "difficultyB\x0e\n" + + "difficulty\x121\n" + + "\x11music_playlist_id\x18\x0e \x01(\x05H\x02R\x11music_playlist_id\x88\x01\x01B\x0e\n" + "\f_descriptionB\b\n" + - "\x06_image\"\xcc\x02\n" + + "\x06_imageB\x14\n" + + "\x12_music_playlist_id\"\xcc\x02\n" + "\x05Story\x12=\n" + "\x06places\x18\x01 \x03(\v2%.crabs.evening_detective_server.PlaceR\x06places\x12P\n" + "\fintroduction\x18\x02 \x01(\v2,.crabs.evening_detective_server.IntroductionR\fintroduction\x12F\n" + @@ -10058,7 +11369,7 @@ const file_main_proto_rawDesc = "" + " \x01(\tR\x06format\x12\x1a\n" + "\blocation\x18\v \x01(\tR\blocationB\r\n" + "\v_started_atB\v\n" + - "\t_ended_at\"\xaa\x06\n" + + "\t_ended_at\"\xec\x06\n" + "\vScreenState\x12\x0e\n" + "\x02ID\x18\x01 \x01(\tR\x02ID\x12\x16\n" + "\x06status\x18\x02 \x01(\tR\x06status\x12\x1b\n" + @@ -10085,7 +11396,8 @@ const file_main_proto_rawDesc = "" + "\x17timer_remaining_seconds\x18\x12 \x01(\x03R\x15timerRemainingSeconds\x12Q\n" + "\vtimer_state\x18\x13 \x01(\x0e20.crabs.evening_detective_server.ScreenTimerStateR\n" + "timerState\x12\x12\n" + - "\x04text\x18\x14 \x01(\tR\x04textB\t\n" + + "\x04text\x18\x14 \x01(\tR\x04text\x12@\n" + + "\x05music\x18\x15 \x01(\v2*.crabs.evening_detective_server.MusicStateR\x05musicB\t\n" + "\a_gameID\"\x18\n" + "\x16CreateScreenSessionReq\"W\n" + "\x16CreateScreenSessionRsp\x12\x1a\n" + @@ -10099,7 +11411,44 @@ const file_main_proto_rawDesc = "" + "\x11GetGameScreensReq\x12\x16\n" + "\x06gameID\x18\x01 \x01(\x05R\x06gameID\"Z\n" + "\x11GetGameScreensRsp\x12E\n" + - "\ascreens\x18\x01 \x03(\v2+.crabs.evening_detective_server.ScreenStateR\ascreens\"e\n" + + "\ascreens\x18\x01 \x03(\v2+.crabs.evening_detective_server.ScreenStateR\ascreens\"\xb5\x02\n" + + "\n" + + "MusicState\x12D\n" + + "\bplaylist\x18\x01 \x01(\v2(.crabs.evening_detective_server.PlaylistR\bplaylist\x12\x1f\n" + + "\vtrack_index\x18\x02 \x01(\x05R\n" + + "trackIndex\x12\x1f\n" + + "\vposition_ms\x18\x03 \x01(\x03R\n" + + "positionMs\x12\x16\n" + + "\x06volume\x18\x04 \x01(\x05R\x06volume\x12\x12\n" + + "\x04loop\x18\x05 \x01(\bR\x04loop\x12N\n" + + "\bplayback\x18\x06 \x01(\x0e22.crabs.evening_detective_server.MusicPlaybackStateR\bplayback\x12#\n" + + "\rstate_version\x18\a \x01(\x03R\fstateVersion\")\n" + + "\x0fGetGameMusicReq\x12\x16\n" + + "\x06gameID\x18\x01 \x01(\x05R\x06gameID\"\xf7\x01\n" + + "\x0fGetGameMusicRsp\x12F\n" + + "\tplaylists\x18\x01 \x03(\v2(.crabs.evening_detective_server.PlaylistR\tplaylists\x12@\n" + + "\x05state\x18\x02 \x01(\v2*.crabs.evening_detective_server.MusicStateR\x05state\x120\n" + + "\x14scenario_playlist_id\x18\x03 \x01(\x05R\x12scenarioPlaylistId\x12(\n" + + "\x10game_playlist_id\x18\x04 \x01(\x05R\x0egamePlaylistId\"\x87\x02\n" + + "\x0fSetGameMusicReq\x12\x16\n" + + "\x06gameID\x18\x01 \x01(\x05R\x06gameID\x12\x1e\n" + + "\n" + + "playlistID\x18\x02 \x01(\x05R\n" + + "playlistID\x12\x1f\n" + + "\vtrack_index\x18\x03 \x01(\x05R\n" + + "trackIndex\x12\x1f\n" + + "\vposition_ms\x18\x04 \x01(\x03R\n" + + "positionMs\x12\x16\n" + + "\x06volume\x18\x05 \x01(\x05R\x06volume\x12\x12\n" + + "\x04loop\x18\x06 \x01(\bR\x04loop\x12N\n" + + "\bplayback\x18\a \x01(\x0e22.crabs.evening_detective_server.MusicPlaybackStateR\bplayback\"S\n" + + "\x0fSetGameMusicRsp\x12@\n" + + "\x05state\x18\x01 \x01(\v2*.crabs.evening_detective_server.MusicStateR\x05state\"U\n" + + "\x15AdvanceScreenMusicReq\x12\x1a\n" + + "\bscreenID\x18\x01 \x01(\tR\bscreenID\x12 \n" + + "\vaccessToken\x18\x02 \x01(\tR\vaccessToken\"Y\n" + + "\x15AdvanceScreenMusicRsp\x12@\n" + + "\x05state\x18\x01 \x01(\v2*.crabs.evening_detective_server.MusicStateR\x05state\"e\n" + "\rBindScreenReq\x12\x1a\n" + "\bscreenID\x18\x01 \x01(\tR\bscreenID\x12 \n" + "\vaccessToken\x18\x02 \x01(\tR\vaccessToken\x12\x16\n" + @@ -10427,7 +11776,12 @@ const file_main_proto_rawDesc = "" + "\x1aSCREEN_COMMAND_TIMER_PAUSE\x10\t\x12\x1f\n" + "\x1bSCREEN_COMMAND_TIMER_RESUME\x10\n" + "\x12\x1e\n" + - "\x1aSCREEN_COMMAND_TIMER_RESET\x10\v2ͫ\x01\n" + + "\x1aSCREEN_COMMAND_TIMER_RESET\x10\v*\x87\x01\n" + + "\x12MusicPlaybackState\x12\x1e\n" + + "\x1aMUSIC_PLAYBACK_UNSPECIFIED\x10\x00\x12\x1a\n" + + "\x16MUSIC_PLAYBACK_STOPPED\x10\x01\x12\x1a\n" + + "\x16MUSIC_PLAYBACK_PLAYING\x10\x02\x12\x19\n" + + "\x15MUSIC_PLAYBACK_PAUSED\x10\x032\xf6\xbc\x01\n" + "\x16EveningDetectiveServer\x12\xd3\x05\n" + "\x10GetParticipation\x123.crabs.evening_detective_server.GetParticipationReq\x1a0.crabs.evening_detective_server.ParticipationRsp\"\xd7\x04\x92A\xb2\x04\n" + ")Подтверждение участия\x122Получить состояние участия\x1a\xce\x03Возвращает команду, игру и текущее решение по персональному токену из письма. Авторизация JWT не требуется. Чтение не меняет статус участия. Токен передаётся в теле запроса. Недействительная ссылка и ошибки обработки возвращаются стандартным gRPC status error.b\x00\x82\xd3\xe4\x93\x02\x1b:\x01*\"\x16/api/participation/get\x12\xf9\b\n" + @@ -10487,7 +11841,21 @@ const file_main_proto_rawDesc = "" + "Файлы\x12\x1bЗагрузить файл\x82\xd3\xe4\x93\x02\x16:\x01*\"\x11/api/files/upload\x12\x9e\x01\n" + "\fDownloadFile\x12/.crabs.evening_detective_server.DownloadFileReq\x1a\x14.google.api.HttpBody\"G\x92A'\n" + "\n" + - "Файлы\x12\x19Получить файл\x82\xd3\xe4\x93\x02\x17\x12\x15/api/files/{filename}\x12\xbd\x01\n" + + "Файлы\x12\x19Получить файл\x82\xd3\xe4\x93\x02\x17\x12\x15/api/files/{filename}\x12\xbe\x01\n" + + "\fGetPlaylists\x12/.crabs.evening_detective_server.GetPlaylistsReq\x1a/.crabs.evening_detective_server.GetPlaylistsRsp\"L\x92A3\n" + + "\fМузыка\x12#Получить плейлисты\x82\xd3\xe4\x93\x02\x10\x12\x0e/api/playlists\x12\xc3\x01\n" + + "\x0eCreatePlaylist\x121.crabs.evening_detective_server.CreatePlaylistReq\x1a1.crabs.evening_detective_server.CreatePlaylistRsp\"K\x92A/\n" + + "\fМузыка\x12\x1fСоздать плейлист\x82\xd3\xe4\x93\x02\x13:\x01*\"\x0e/api/playlists\x12\xca\x01\n" + + "\x0eUpdatePlaylist\x121.crabs.evening_detective_server.UpdatePlaylistReq\x1a1.crabs.evening_detective_server.UpdatePlaylistRsp\"R\x92A1\n" + + "\fМузыка\x12!Изменить плейлист\x82\xd3\xe4\x93\x02\x18:\x01*\x1a\x13/api/playlists/{ID}\x12\xc5\x01\n" + + "\x0eDeletePlaylist\x121.crabs.evening_detective_server.DeletePlaylistReq\x1a1.crabs.evening_detective_server.DeletePlaylistRsp\"M\x92A/\n" + + "\fМузыка\x12\x1fУдалить плейлист\x82\xd3\xe4\x93\x02\x15*\x13/api/playlists/{ID}\x12\xf1\x01\n" + + "\x13UploadPlaylistTrack\x126.crabs.evening_detective_server.UploadPlaylistTrackReq\x1a6.crabs.evening_detective_server.UploadPlaylistTrackRsp\"j\x92A:\n" + + "\fМузыка\x12*Загрузить MP3 в плейлист\x82\xd3\xe4\x93\x02':\x01*\"\"/api/playlists/{playlistID}/tracks\x12\xf8\x01\n" + + "\x13DeletePlaylistTrack\x126.crabs.evening_detective_server.DeletePlaylistTrackReq\x1a6.crabs.evening_detective_server.DeletePlaylistTrackRsp\"q\x92A:\n" + + "\fМузыка\x12*Удалить MP3 из плейлиста\x82\xd3\xe4\x93\x02.*,/api/playlists/{playlistID}/tracks/{trackID}\x12\xf5\x01\n" + + "\x13SetScenarioPlaylist\x126.crabs.evening_detective_server.SetScenarioPlaylistReq\x1a6.crabs.evening_detective_server.SetScenarioPlaylistRsp\"n\x92AD\n" + + "\fМузыка\x124Назначить плейлист сценарию\x82\xd3\xe4\x93\x02!:\x01*\x1a\x1c/api/scenarios/{ID}/playlist\x12\xbd\x01\n" + "\vAddScenario\x12..crabs.evening_detective_server.AddScenarioReq\x1a..crabs.evening_detective_server.AddScenarioRsp\"N\x92A3\n" + "\x10Сценарии\x12\x1fСоздать сценарий\x82\xd3\xe4\x93\x02\x12:\x01*\"\r/api/scenario\x12\xd2\x01\n" + "\x0eGetMyScenarios\x121.crabs.evening_detective_server.GetMyScenariosReq\x1a1.crabs.evening_detective_server.GetMyScenariosRsp\"Z\x92A>\n" + @@ -10555,7 +11923,15 @@ const file_main_proto_rawDesc = "" + "\x04\n" + "\x00\x12\x00\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/api/screens/state\x12\xd4\x01\n" + "\x0eGetGameScreens\x121.crabs.evening_detective_server.GetGameScreensReq\x1a1.crabs.evening_detective_server.GetGameScreensRsp\"\\\x92A6\n" + - "\fЭкраны\x12&Получить экраны игры\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/games/{gameID}/screens\x12\xcf\x01\n" + + "\fЭкраны\x12&Получить экраны игры\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/games/{gameID}/screens\x12\xcc\x01\n" + + "\fGetGameMusic\x12/.crabs.evening_detective_server.GetGameMusicReq\x1a/.crabs.evening_detective_server.GetGameMusicRsp\"Z\x92A6\n" + + "\fМузыка\x12&Получить музыку игры\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/games/{gameID}/music\x12\xcf\x01\n" + + "\fSetGameMusic\x12/.crabs.evening_detective_server.SetGameMusicReq\x1a/.crabs.evening_detective_server.SetGameMusicRsp\"]\x92A6\n" + + "\fМузыка\x12&Изменить музыку игры\x82\xd3\xe4\x93\x02\x1e:\x01*\"\x19/api/games/{gameID}/music\x12\x82\x02\n" + + "\x12AdvanceScreenMusic\x125.crabs.evening_detective_server.AdvanceScreenMusicReq\x1a5.crabs.evening_detective_server.AdvanceScreenMusicRsp\"~\x92AV\n" + + "\fМузыка\x12>Перейти к следующему треку экранаb\x06\n" + + "\x04\n" + + "\x00\x12\x00\x82\xd3\xe4\x93\x02\x1f:\x01*\"\x1a/api/screens/music/advance\x12\xcf\x01\n" + "\n" + "BindScreen\x12-.crabs.evening_detective_server.BindScreenReq\x1a-.crabs.evening_detective_server.BindScreenRsp\"c\x92A9\n" + "\fЭкраны\x12)Привязать экран к игре\x82\xd3\xe4\x93\x02!:\x01*\"\x1c/api/screens/{screenID}/bind\x12\xd7\x01\n" + @@ -10674,462 +12050,519 @@ func file_main_proto_rawDescGZIP() []byte { return file_main_proto_rawDescData } -var file_main_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_main_proto_msgTypes = make([]protoimpl.MessageInfo, 189) +var file_main_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_main_proto_msgTypes = make([]protoimpl.MessageInfo, 212) var file_main_proto_goTypes = []any{ (ScreenMode)(0), // 0: crabs.evening_detective_server.ScreenMode (ScreenTimerState)(0), // 1: crabs.evening_detective_server.ScreenTimerState (ScreenCommand)(0), // 2: crabs.evening_detective_server.ScreenCommand - (*PingReq)(nil), // 3: crabs.evening_detective_server.PingReq - (*PingRsp)(nil), // 4: crabs.evening_detective_server.PingRsp - (*EchoReq)(nil), // 5: crabs.evening_detective_server.EchoReq - (*EchoRsp)(nil), // 6: crabs.evening_detective_server.EchoRsp - (*SignupReq)(nil), // 7: crabs.evening_detective_server.SignupReq - (*SignupRsp)(nil), // 8: crabs.evening_detective_server.SignupRsp - (*RefreshPasswordReq)(nil), // 9: crabs.evening_detective_server.RefreshPasswordReq - (*RefreshPasswordRsp)(nil), // 10: crabs.evening_detective_server.RefreshPasswordRsp - (*LoginReq)(nil), // 11: crabs.evening_detective_server.LoginReq - (*LoginRsp)(nil), // 12: crabs.evening_detective_server.LoginRsp - (*RefreshReq)(nil), // 13: crabs.evening_detective_server.RefreshReq - (*RefreshRsp)(nil), // 14: crabs.evening_detective_server.RefreshRsp - (*DeleteAccountReq)(nil), // 15: crabs.evening_detective_server.DeleteAccountReq - (*DeleteAccountRsp)(nil), // 16: crabs.evening_detective_server.DeleteAccountRsp - (*GetTermsReq)(nil), // 17: crabs.evening_detective_server.GetTermsReq - (*GetTermsRsp)(nil), // 18: crabs.evening_detective_server.GetTermsRsp - (*GetPrivacyReq)(nil), // 19: crabs.evening_detective_server.GetPrivacyReq - (*GetPrivacyRsp)(nil), // 20: crabs.evening_detective_server.GetPrivacyRsp - (*GetConsentReq)(nil), // 21: crabs.evening_detective_server.GetConsentReq - (*GetConsentRsp)(nil), // 22: crabs.evening_detective_server.GetConsentRsp - (*GetUsersReq)(nil), // 23: crabs.evening_detective_server.GetUsersReq - (*GetUsersRsp)(nil), // 24: crabs.evening_detective_server.GetUsersRsp - (*User)(nil), // 25: crabs.evening_detective_server.User - (*GetUserByIDReq)(nil), // 26: crabs.evening_detective_server.GetUserByIDReq - (*GetUserByIDRsp)(nil), // 27: crabs.evening_detective_server.GetUserByIDRsp - (*GetMeReq)(nil), // 28: crabs.evening_detective_server.GetMeReq - (*GetMeRsp)(nil), // 29: crabs.evening_detective_server.GetMeRsp - (*ChangeUserPasswordReq)(nil), // 30: crabs.evening_detective_server.ChangeUserPasswordReq - (*ChangeUserPasswordRsp)(nil), // 31: crabs.evening_detective_server.ChangeUserPasswordRsp - (*AddUserRoleReq)(nil), // 32: crabs.evening_detective_server.AddUserRoleReq - (*AddUserRoleRsp)(nil), // 33: crabs.evening_detective_server.AddUserRoleRsp - (*DeleteUserRoleReq)(nil), // 34: crabs.evening_detective_server.DeleteUserRoleReq - (*DeleteUserRoleRsp)(nil), // 35: crabs.evening_detective_server.DeleteUserRoleRsp - (*GetPermissionsReq)(nil), // 36: crabs.evening_detective_server.GetPermissionsReq - (*GetPermissionsRsp)(nil), // 37: crabs.evening_detective_server.GetPermissionsRsp - (*UploadFileReq)(nil), // 38: crabs.evening_detective_server.UploadFileReq - (*UploadFileRsp)(nil), // 39: crabs.evening_detective_server.UploadFileRsp - (*DownloadFileReq)(nil), // 40: crabs.evening_detective_server.DownloadFileReq - (*AddScenarioReq)(nil), // 41: crabs.evening_detective_server.AddScenarioReq - (*AddScenarioRsp)(nil), // 42: crabs.evening_detective_server.AddScenarioRsp - (*GetMyScenariosReq)(nil), // 43: crabs.evening_detective_server.GetMyScenariosReq - (*GetMyScenariosRsp)(nil), // 44: crabs.evening_detective_server.GetMyScenariosRsp - (*GetScenariosCatalogReq)(nil), // 45: crabs.evening_detective_server.GetScenariosCatalogReq - (*GetScenariosCatalogRsp)(nil), // 46: crabs.evening_detective_server.GetScenariosCatalogRsp - (*GetScenarioReq)(nil), // 47: crabs.evening_detective_server.GetScenarioReq - (*GetScenarioRsp)(nil), // 48: crabs.evening_detective_server.GetScenarioRsp - (*Scenario)(nil), // 49: crabs.evening_detective_server.Scenario - (*Story)(nil), // 50: crabs.evening_detective_server.Story - (*Conclusion)(nil), // 51: crabs.evening_detective_server.Conclusion - (*Introduction)(nil), // 52: crabs.evening_detective_server.Introduction - (*Place)(nil), // 53: crabs.evening_detective_server.Place - (*Application)(nil), // 54: crabs.evening_detective_server.Application - (*Door)(nil), // 55: crabs.evening_detective_server.Door - (*Key)(nil), // 56: crabs.evening_detective_server.Key - (*Question)(nil), // 57: crabs.evening_detective_server.Question - (*Answer)(nil), // 58: crabs.evening_detective_server.Answer - (*AnswerScore)(nil), // 59: crabs.evening_detective_server.AnswerScore - (*TeamAnswers)(nil), // 60: crabs.evening_detective_server.TeamAnswers - (*UpdateScenarioReq)(nil), // 61: crabs.evening_detective_server.UpdateScenarioReq - (*UpdateScenarioRsp)(nil), // 62: crabs.evening_detective_server.UpdateScenarioRsp - (*PublicScenarioReq)(nil), // 63: crabs.evening_detective_server.PublicScenarioReq - (*PublicScenarioRsp)(nil), // 64: crabs.evening_detective_server.PublicScenarioRsp - (*DraftScenarioReq)(nil), // 65: crabs.evening_detective_server.DraftScenarioReq - (*DraftScenarioRsp)(nil), // 66: crabs.evening_detective_server.DraftScenarioRsp - (*DeleteScenarioReq)(nil), // 67: crabs.evening_detective_server.DeleteScenarioReq - (*DeleteScenarioRsp)(nil), // 68: crabs.evening_detective_server.DeleteScenarioRsp - (*AddScenarioPlaceReq)(nil), // 69: crabs.evening_detective_server.AddScenarioPlaceReq - (*AddScenarioPlaceRsp)(nil), // 70: crabs.evening_detective_server.AddScenarioPlaceRsp - (*UpdateScenarioPlaceReq)(nil), // 71: crabs.evening_detective_server.UpdateScenarioPlaceReq - (*UpdateScenarioPlaceRsp)(nil), // 72: crabs.evening_detective_server.UpdateScenarioPlaceRsp - (*DeleteScenarioPlaceReq)(nil), // 73: crabs.evening_detective_server.DeleteScenarioPlaceReq - (*DeleteScenarioPlaceRsp)(nil), // 74: crabs.evening_detective_server.DeleteScenarioPlaceRsp - (*UpdateScenarioConclusionReq)(nil), // 75: crabs.evening_detective_server.UpdateScenarioConclusionReq - (*UpdateScenarioConclusionRsp)(nil), // 76: crabs.evening_detective_server.UpdateScenarioConclusionRsp - (*UpdateScenarioIntroReq)(nil), // 77: crabs.evening_detective_server.UpdateScenarioIntroReq - (*UpdateScenarioIntroRsp)(nil), // 78: crabs.evening_detective_server.UpdateScenarioIntroRsp - (*AddScenarioQuestionReq)(nil), // 79: crabs.evening_detective_server.AddScenarioQuestionReq - (*AddScenarioQuestionRsp)(nil), // 80: crabs.evening_detective_server.AddScenarioQuestionRsp - (*UpdateScenarioQuestionReq)(nil), // 81: crabs.evening_detective_server.UpdateScenarioQuestionReq - (*UpdateScenarioQuestionRsp)(nil), // 82: crabs.evening_detective_server.UpdateScenarioQuestionRsp - (*DeleteScenarioQuestionReq)(nil), // 83: crabs.evening_detective_server.DeleteScenarioQuestionReq - (*DeleteScenarioQuestionRsp)(nil), // 84: crabs.evening_detective_server.DeleteScenarioQuestionRsp - (*DownloadScenarioArchiveReq)(nil), // 85: crabs.evening_detective_server.DownloadScenarioArchiveReq - (*UploadScenarioArchiveRsp)(nil), // 86: crabs.evening_detective_server.UploadScenarioArchiveRsp - (*AddGameReq)(nil), // 87: crabs.evening_detective_server.AddGameReq - (*AddGameRsp)(nil), // 88: crabs.evening_detective_server.AddGameRsp - (*GetGamesReq)(nil), // 89: crabs.evening_detective_server.GetGamesReq - (*GetGamesRsp)(nil), // 90: crabs.evening_detective_server.GetGamesRsp - (*Game)(nil), // 91: crabs.evening_detective_server.Game - (*ScreenState)(nil), // 92: crabs.evening_detective_server.ScreenState - (*CreateScreenSessionReq)(nil), // 93: crabs.evening_detective_server.CreateScreenSessionReq - (*CreateScreenSessionRsp)(nil), // 94: crabs.evening_detective_server.CreateScreenSessionRsp - (*GetScreenStateReq)(nil), // 95: crabs.evening_detective_server.GetScreenStateReq - (*GetScreenStateRsp)(nil), // 96: crabs.evening_detective_server.GetScreenStateRsp - (*GetGameScreensReq)(nil), // 97: crabs.evening_detective_server.GetGameScreensReq - (*GetGameScreensRsp)(nil), // 98: crabs.evening_detective_server.GetGameScreensRsp - (*BindScreenReq)(nil), // 99: crabs.evening_detective_server.BindScreenReq - (*BindScreenRsp)(nil), // 100: crabs.evening_detective_server.BindScreenRsp - (*UnbindScreenReq)(nil), // 101: crabs.evening_detective_server.UnbindScreenReq - (*UnbindScreenRsp)(nil), // 102: crabs.evening_detective_server.UnbindScreenRsp - (*SetScreenSoundReq)(nil), // 103: crabs.evening_detective_server.SetScreenSoundReq - (*SetScreenSoundRsp)(nil), // 104: crabs.evening_detective_server.SetScreenSoundRsp - (*MapItem)(nil), // 105: crabs.evening_detective_server.MapItem - (*GetGameMapReq)(nil), // 106: crabs.evening_detective_server.GetGameMapReq - (*GetGameMapRsp)(nil), // 107: crabs.evening_detective_server.GetGameMapRsp - (*UpdateGameMapItemReq)(nil), // 108: crabs.evening_detective_server.UpdateGameMapItemReq - (*UpdateGameMapItemRsp)(nil), // 109: crabs.evening_detective_server.UpdateGameMapItemRsp - (*SetScreenModeReq)(nil), // 110: crabs.evening_detective_server.SetScreenModeReq - (*SetScreenModeRsp)(nil), // 111: crabs.evening_detective_server.SetScreenModeRsp - (*SetScreenTimerReq)(nil), // 112: crabs.evening_detective_server.SetScreenTimerReq - (*SetScreenTimerRsp)(nil), // 113: crabs.evening_detective_server.SetScreenTimerRsp - (*SendScreenCommandReq)(nil), // 114: crabs.evening_detective_server.SendScreenCommandReq - (*SendScreenCommandRsp)(nil), // 115: crabs.evening_detective_server.SendScreenCommandRsp - (*ScreenPlanStep)(nil), // 116: crabs.evening_detective_server.ScreenPlanStep - (*ScreenPlan)(nil), // 117: crabs.evening_detective_server.ScreenPlan - (*GetScreenPlanReq)(nil), // 118: crabs.evening_detective_server.GetScreenPlanReq - (*GetScreenPlanRsp)(nil), // 119: crabs.evening_detective_server.GetScreenPlanRsp - (*SaveScreenPlanReq)(nil), // 120: crabs.evening_detective_server.SaveScreenPlanReq - (*SaveScreenPlanRsp)(nil), // 121: crabs.evening_detective_server.SaveScreenPlanRsp - (*SetScreenPlanStepReq)(nil), // 122: crabs.evening_detective_server.SetScreenPlanStepReq - (*SetScreenPlanStepRsp)(nil), // 123: crabs.evening_detective_server.SetScreenPlanStepRsp - (*GetScreenResultsReq)(nil), // 124: crabs.evening_detective_server.GetScreenResultsReq - (*GetScreenResultsRsp)(nil), // 125: crabs.evening_detective_server.GetScreenResultsRsp - (*GetParticipationReq)(nil), // 126: crabs.evening_detective_server.GetParticipationReq - (*AnswerParticipationReq)(nil), // 127: crabs.evening_detective_server.AnswerParticipationReq - (*ParticipationRsp)(nil), // 128: crabs.evening_detective_server.ParticipationRsp - (*Team)(nil), // 129: crabs.evening_detective_server.Team - (*GetGameReq)(nil), // 130: crabs.evening_detective_server.GetGameReq - (*GetGameRsp)(nil), // 131: crabs.evening_detective_server.GetGameRsp - (*GetGameAnswersReq)(nil), // 132: crabs.evening_detective_server.GetGameAnswersReq - (*GetGameAnswersRsp)(nil), // 133: crabs.evening_detective_server.GetGameAnswersRsp - (*GetGameResultsReq)(nil), // 134: crabs.evening_detective_server.GetGameResultsReq - (*ResultsQuestion)(nil), // 135: crabs.evening_detective_server.ResultsQuestion - (*TeamResult)(nil), // 136: crabs.evening_detective_server.TeamResult - (*GetGameResultsRsp)(nil), // 137: crabs.evening_detective_server.GetGameResultsRsp - (*GameReview)(nil), // 138: crabs.evening_detective_server.GameReview - (*CreateGameReviewReq)(nil), // 139: crabs.evening_detective_server.CreateGameReviewReq - (*CreateGameReviewRsp)(nil), // 140: crabs.evening_detective_server.CreateGameReviewRsp - (*GetGameReviewsReq)(nil), // 141: crabs.evening_detective_server.GetGameReviewsReq - (*GetScenarioReviewsReq)(nil), // 142: crabs.evening_detective_server.GetScenarioReviewsReq - (*GetReviewsForModerationReq)(nil), // 143: crabs.evening_detective_server.GetReviewsForModerationReq - (*GetGameReviewsRsp)(nil), // 144: crabs.evening_detective_server.GetGameReviewsRsp - (*ModerateGameReviewReq)(nil), // 145: crabs.evening_detective_server.ModerateGameReviewReq - (*ModerateGameReviewRsp)(nil), // 146: crabs.evening_detective_server.ModerateGameReviewRsp - (*UpdateGameReq)(nil), // 147: crabs.evening_detective_server.UpdateGameReq - (*UpdateGameRsp)(nil), // 148: crabs.evening_detective_server.UpdateGameRsp - (*StartGameReq)(nil), // 149: crabs.evening_detective_server.StartGameReq - (*StartGameRsp)(nil), // 150: crabs.evening_detective_server.StartGameRsp - (*PauseGameReq)(nil), // 151: crabs.evening_detective_server.PauseGameReq - (*PauseGameRsp)(nil), // 152: crabs.evening_detective_server.PauseGameRsp - (*PlayGameReq)(nil), // 153: crabs.evening_detective_server.PlayGameReq - (*PlayGameRsp)(nil), // 154: crabs.evening_detective_server.PlayGameRsp - (*FinishGameReq)(nil), // 155: crabs.evening_detective_server.FinishGameReq - (*FinishGameRsp)(nil), // 156: crabs.evening_detective_server.FinishGameRsp - (*ResetGameReq)(nil), // 157: crabs.evening_detective_server.ResetGameReq - (*ResetGameRsp)(nil), // 158: crabs.evening_detective_server.ResetGameRsp - (*DeleteGameReq)(nil), // 159: crabs.evening_detective_server.DeleteGameReq - (*DeleteGameRsp)(nil), // 160: crabs.evening_detective_server.DeleteGameRsp - (*AddTeamReq)(nil), // 161: crabs.evening_detective_server.AddTeamReq - (*AddTeamRsp)(nil), // 162: crabs.evening_detective_server.AddTeamRsp - (*UpdateTeamReq)(nil), // 163: crabs.evening_detective_server.UpdateTeamReq - (*UpdateTeamRsp)(nil), // 164: crabs.evening_detective_server.UpdateTeamRsp - (*DeleteTeamReq)(nil), // 165: crabs.evening_detective_server.DeleteTeamReq - (*DeleteTeamRsp)(nil), // 166: crabs.evening_detective_server.DeleteTeamRsp - (*GiveTeamApplicationsReq)(nil), // 167: crabs.evening_detective_server.GiveTeamApplicationsReq - (*GiveTeamApplicationsRsp)(nil), // 168: crabs.evening_detective_server.GiveTeamApplicationsRsp - (*GetTeamStoryReq)(nil), // 169: crabs.evening_detective_server.GetTeamStoryReq - (*GetTeamStoryRsp)(nil), // 170: crabs.evening_detective_server.GetTeamStoryRsp - (*TeamAction)(nil), // 171: crabs.evening_detective_server.TeamAction - (*AddTeamActionReq)(nil), // 172: crabs.evening_detective_server.AddTeamActionReq - (*AddTeamActionRsp)(nil), // 173: crabs.evening_detective_server.AddTeamActionRsp - (*DeleteLastTeamActionReq)(nil), // 174: crabs.evening_detective_server.DeleteLastTeamActionReq - (*DeleteLastTeamActionRsp)(nil), // 175: crabs.evening_detective_server.DeleteLastTeamActionRsp - (*GetTeamAnswersReq)(nil), // 176: crabs.evening_detective_server.GetTeamAnswersReq - (*GetTeamAnswersRsp)(nil), // 177: crabs.evening_detective_server.GetTeamAnswersRsp - (*SubmitTeamAnswersReq)(nil), // 178: crabs.evening_detective_server.SubmitTeamAnswersReq - (*SubmitTeamAnswersRsp)(nil), // 179: crabs.evening_detective_server.SubmitTeamAnswersRsp - (*SetTeamAnswerScoreReq)(nil), // 180: crabs.evening_detective_server.SetTeamAnswerScoreReq - (*SetTeamAnswerScoreRsp)(nil), // 181: crabs.evening_detective_server.SetTeamAnswerScoreRsp - (*UpdateScenarioBackgroundReq)(nil), // 182: crabs.evening_detective_server.UpdateScenarioBackgroundReq - (*UpdateScenarioBackgroundRsp)(nil), // 183: crabs.evening_detective_server.UpdateScenarioBackgroundRsp - (*IssueGameTicketsReq)(nil), // 184: crabs.evening_detective_server.IssueGameTicketsReq - (*IssueGameTicketsRsp)(nil), // 185: crabs.evening_detective_server.IssueGameTicketsRsp - (*Ticket)(nil), // 186: crabs.evening_detective_server.Ticket - (*GetTicketReq)(nil), // 187: crabs.evening_detective_server.GetTicketReq - (*GetTicketRsp)(nil), // 188: crabs.evening_detective_server.GetTicketRsp - (*AcceptTicketReq)(nil), // 189: crabs.evening_detective_server.AcceptTicketReq - (*AcceptTicketRsp)(nil), // 190: crabs.evening_detective_server.AcceptTicketRsp - (*TicketPage)(nil), // 191: crabs.evening_detective_server.TicketPage - (*timestamppb.Timestamp)(nil), // 192: google.protobuf.Timestamp - (*httpbody.HttpBody)(nil), // 193: google.api.HttpBody + (MusicPlaybackState)(0), // 3: crabs.evening_detective_server.MusicPlaybackState + (*PingReq)(nil), // 4: crabs.evening_detective_server.PingReq + (*PingRsp)(nil), // 5: crabs.evening_detective_server.PingRsp + (*EchoReq)(nil), // 6: crabs.evening_detective_server.EchoReq + (*EchoRsp)(nil), // 7: crabs.evening_detective_server.EchoRsp + (*SignupReq)(nil), // 8: crabs.evening_detective_server.SignupReq + (*SignupRsp)(nil), // 9: crabs.evening_detective_server.SignupRsp + (*RefreshPasswordReq)(nil), // 10: crabs.evening_detective_server.RefreshPasswordReq + (*RefreshPasswordRsp)(nil), // 11: crabs.evening_detective_server.RefreshPasswordRsp + (*LoginReq)(nil), // 12: crabs.evening_detective_server.LoginReq + (*LoginRsp)(nil), // 13: crabs.evening_detective_server.LoginRsp + (*RefreshReq)(nil), // 14: crabs.evening_detective_server.RefreshReq + (*RefreshRsp)(nil), // 15: crabs.evening_detective_server.RefreshRsp + (*DeleteAccountReq)(nil), // 16: crabs.evening_detective_server.DeleteAccountReq + (*DeleteAccountRsp)(nil), // 17: crabs.evening_detective_server.DeleteAccountRsp + (*GetTermsReq)(nil), // 18: crabs.evening_detective_server.GetTermsReq + (*GetTermsRsp)(nil), // 19: crabs.evening_detective_server.GetTermsRsp + (*GetPrivacyReq)(nil), // 20: crabs.evening_detective_server.GetPrivacyReq + (*GetPrivacyRsp)(nil), // 21: crabs.evening_detective_server.GetPrivacyRsp + (*GetConsentReq)(nil), // 22: crabs.evening_detective_server.GetConsentReq + (*GetConsentRsp)(nil), // 23: crabs.evening_detective_server.GetConsentRsp + (*GetUsersReq)(nil), // 24: crabs.evening_detective_server.GetUsersReq + (*GetUsersRsp)(nil), // 25: crabs.evening_detective_server.GetUsersRsp + (*User)(nil), // 26: crabs.evening_detective_server.User + (*GetUserByIDReq)(nil), // 27: crabs.evening_detective_server.GetUserByIDReq + (*GetUserByIDRsp)(nil), // 28: crabs.evening_detective_server.GetUserByIDRsp + (*GetMeReq)(nil), // 29: crabs.evening_detective_server.GetMeReq + (*GetMeRsp)(nil), // 30: crabs.evening_detective_server.GetMeRsp + (*ChangeUserPasswordReq)(nil), // 31: crabs.evening_detective_server.ChangeUserPasswordReq + (*ChangeUserPasswordRsp)(nil), // 32: crabs.evening_detective_server.ChangeUserPasswordRsp + (*AddUserRoleReq)(nil), // 33: crabs.evening_detective_server.AddUserRoleReq + (*AddUserRoleRsp)(nil), // 34: crabs.evening_detective_server.AddUserRoleRsp + (*DeleteUserRoleReq)(nil), // 35: crabs.evening_detective_server.DeleteUserRoleReq + (*DeleteUserRoleRsp)(nil), // 36: crabs.evening_detective_server.DeleteUserRoleRsp + (*GetPermissionsReq)(nil), // 37: crabs.evening_detective_server.GetPermissionsReq + (*GetPermissionsRsp)(nil), // 38: crabs.evening_detective_server.GetPermissionsRsp + (*UploadFileReq)(nil), // 39: crabs.evening_detective_server.UploadFileReq + (*UploadFileRsp)(nil), // 40: crabs.evening_detective_server.UploadFileRsp + (*DownloadFileReq)(nil), // 41: crabs.evening_detective_server.DownloadFileReq + (*PlaylistTrack)(nil), // 42: crabs.evening_detective_server.PlaylistTrack + (*Playlist)(nil), // 43: crabs.evening_detective_server.Playlist + (*GetPlaylistsReq)(nil), // 44: crabs.evening_detective_server.GetPlaylistsReq + (*GetPlaylistsRsp)(nil), // 45: crabs.evening_detective_server.GetPlaylistsRsp + (*CreatePlaylistReq)(nil), // 46: crabs.evening_detective_server.CreatePlaylistReq + (*CreatePlaylistRsp)(nil), // 47: crabs.evening_detective_server.CreatePlaylistRsp + (*UpdatePlaylistReq)(nil), // 48: crabs.evening_detective_server.UpdatePlaylistReq + (*UpdatePlaylistRsp)(nil), // 49: crabs.evening_detective_server.UpdatePlaylistRsp + (*DeletePlaylistReq)(nil), // 50: crabs.evening_detective_server.DeletePlaylistReq + (*DeletePlaylistRsp)(nil), // 51: crabs.evening_detective_server.DeletePlaylistRsp + (*UploadPlaylistTrackReq)(nil), // 52: crabs.evening_detective_server.UploadPlaylistTrackReq + (*UploadPlaylistTrackRsp)(nil), // 53: crabs.evening_detective_server.UploadPlaylistTrackRsp + (*DeletePlaylistTrackReq)(nil), // 54: crabs.evening_detective_server.DeletePlaylistTrackReq + (*DeletePlaylistTrackRsp)(nil), // 55: crabs.evening_detective_server.DeletePlaylistTrackRsp + (*SetScenarioPlaylistReq)(nil), // 56: crabs.evening_detective_server.SetScenarioPlaylistReq + (*SetScenarioPlaylistRsp)(nil), // 57: crabs.evening_detective_server.SetScenarioPlaylistRsp + (*AddScenarioReq)(nil), // 58: crabs.evening_detective_server.AddScenarioReq + (*AddScenarioRsp)(nil), // 59: crabs.evening_detective_server.AddScenarioRsp + (*GetMyScenariosReq)(nil), // 60: crabs.evening_detective_server.GetMyScenariosReq + (*GetMyScenariosRsp)(nil), // 61: crabs.evening_detective_server.GetMyScenariosRsp + (*GetScenariosCatalogReq)(nil), // 62: crabs.evening_detective_server.GetScenariosCatalogReq + (*GetScenariosCatalogRsp)(nil), // 63: crabs.evening_detective_server.GetScenariosCatalogRsp + (*GetScenarioReq)(nil), // 64: crabs.evening_detective_server.GetScenarioReq + (*GetScenarioRsp)(nil), // 65: crabs.evening_detective_server.GetScenarioRsp + (*Scenario)(nil), // 66: crabs.evening_detective_server.Scenario + (*Story)(nil), // 67: crabs.evening_detective_server.Story + (*Conclusion)(nil), // 68: crabs.evening_detective_server.Conclusion + (*Introduction)(nil), // 69: crabs.evening_detective_server.Introduction + (*Place)(nil), // 70: crabs.evening_detective_server.Place + (*Application)(nil), // 71: crabs.evening_detective_server.Application + (*Door)(nil), // 72: crabs.evening_detective_server.Door + (*Key)(nil), // 73: crabs.evening_detective_server.Key + (*Question)(nil), // 74: crabs.evening_detective_server.Question + (*Answer)(nil), // 75: crabs.evening_detective_server.Answer + (*AnswerScore)(nil), // 76: crabs.evening_detective_server.AnswerScore + (*TeamAnswers)(nil), // 77: crabs.evening_detective_server.TeamAnswers + (*UpdateScenarioReq)(nil), // 78: crabs.evening_detective_server.UpdateScenarioReq + (*UpdateScenarioRsp)(nil), // 79: crabs.evening_detective_server.UpdateScenarioRsp + (*PublicScenarioReq)(nil), // 80: crabs.evening_detective_server.PublicScenarioReq + (*PublicScenarioRsp)(nil), // 81: crabs.evening_detective_server.PublicScenarioRsp + (*DraftScenarioReq)(nil), // 82: crabs.evening_detective_server.DraftScenarioReq + (*DraftScenarioRsp)(nil), // 83: crabs.evening_detective_server.DraftScenarioRsp + (*DeleteScenarioReq)(nil), // 84: crabs.evening_detective_server.DeleteScenarioReq + (*DeleteScenarioRsp)(nil), // 85: crabs.evening_detective_server.DeleteScenarioRsp + (*AddScenarioPlaceReq)(nil), // 86: crabs.evening_detective_server.AddScenarioPlaceReq + (*AddScenarioPlaceRsp)(nil), // 87: crabs.evening_detective_server.AddScenarioPlaceRsp + (*UpdateScenarioPlaceReq)(nil), // 88: crabs.evening_detective_server.UpdateScenarioPlaceReq + (*UpdateScenarioPlaceRsp)(nil), // 89: crabs.evening_detective_server.UpdateScenarioPlaceRsp + (*DeleteScenarioPlaceReq)(nil), // 90: crabs.evening_detective_server.DeleteScenarioPlaceReq + (*DeleteScenarioPlaceRsp)(nil), // 91: crabs.evening_detective_server.DeleteScenarioPlaceRsp + (*UpdateScenarioConclusionReq)(nil), // 92: crabs.evening_detective_server.UpdateScenarioConclusionReq + (*UpdateScenarioConclusionRsp)(nil), // 93: crabs.evening_detective_server.UpdateScenarioConclusionRsp + (*UpdateScenarioIntroReq)(nil), // 94: crabs.evening_detective_server.UpdateScenarioIntroReq + (*UpdateScenarioIntroRsp)(nil), // 95: crabs.evening_detective_server.UpdateScenarioIntroRsp + (*AddScenarioQuestionReq)(nil), // 96: crabs.evening_detective_server.AddScenarioQuestionReq + (*AddScenarioQuestionRsp)(nil), // 97: crabs.evening_detective_server.AddScenarioQuestionRsp + (*UpdateScenarioQuestionReq)(nil), // 98: crabs.evening_detective_server.UpdateScenarioQuestionReq + (*UpdateScenarioQuestionRsp)(nil), // 99: crabs.evening_detective_server.UpdateScenarioQuestionRsp + (*DeleteScenarioQuestionReq)(nil), // 100: crabs.evening_detective_server.DeleteScenarioQuestionReq + (*DeleteScenarioQuestionRsp)(nil), // 101: crabs.evening_detective_server.DeleteScenarioQuestionRsp + (*DownloadScenarioArchiveReq)(nil), // 102: crabs.evening_detective_server.DownloadScenarioArchiveReq + (*UploadScenarioArchiveRsp)(nil), // 103: crabs.evening_detective_server.UploadScenarioArchiveRsp + (*AddGameReq)(nil), // 104: crabs.evening_detective_server.AddGameReq + (*AddGameRsp)(nil), // 105: crabs.evening_detective_server.AddGameRsp + (*GetGamesReq)(nil), // 106: crabs.evening_detective_server.GetGamesReq + (*GetGamesRsp)(nil), // 107: crabs.evening_detective_server.GetGamesRsp + (*Game)(nil), // 108: crabs.evening_detective_server.Game + (*ScreenState)(nil), // 109: crabs.evening_detective_server.ScreenState + (*CreateScreenSessionReq)(nil), // 110: crabs.evening_detective_server.CreateScreenSessionReq + (*CreateScreenSessionRsp)(nil), // 111: crabs.evening_detective_server.CreateScreenSessionRsp + (*GetScreenStateReq)(nil), // 112: crabs.evening_detective_server.GetScreenStateReq + (*GetScreenStateRsp)(nil), // 113: crabs.evening_detective_server.GetScreenStateRsp + (*GetGameScreensReq)(nil), // 114: crabs.evening_detective_server.GetGameScreensReq + (*GetGameScreensRsp)(nil), // 115: crabs.evening_detective_server.GetGameScreensRsp + (*MusicState)(nil), // 116: crabs.evening_detective_server.MusicState + (*GetGameMusicReq)(nil), // 117: crabs.evening_detective_server.GetGameMusicReq + (*GetGameMusicRsp)(nil), // 118: crabs.evening_detective_server.GetGameMusicRsp + (*SetGameMusicReq)(nil), // 119: crabs.evening_detective_server.SetGameMusicReq + (*SetGameMusicRsp)(nil), // 120: crabs.evening_detective_server.SetGameMusicRsp + (*AdvanceScreenMusicReq)(nil), // 121: crabs.evening_detective_server.AdvanceScreenMusicReq + (*AdvanceScreenMusicRsp)(nil), // 122: crabs.evening_detective_server.AdvanceScreenMusicRsp + (*BindScreenReq)(nil), // 123: crabs.evening_detective_server.BindScreenReq + (*BindScreenRsp)(nil), // 124: crabs.evening_detective_server.BindScreenRsp + (*UnbindScreenReq)(nil), // 125: crabs.evening_detective_server.UnbindScreenReq + (*UnbindScreenRsp)(nil), // 126: crabs.evening_detective_server.UnbindScreenRsp + (*SetScreenSoundReq)(nil), // 127: crabs.evening_detective_server.SetScreenSoundReq + (*SetScreenSoundRsp)(nil), // 128: crabs.evening_detective_server.SetScreenSoundRsp + (*MapItem)(nil), // 129: crabs.evening_detective_server.MapItem + (*GetGameMapReq)(nil), // 130: crabs.evening_detective_server.GetGameMapReq + (*GetGameMapRsp)(nil), // 131: crabs.evening_detective_server.GetGameMapRsp + (*UpdateGameMapItemReq)(nil), // 132: crabs.evening_detective_server.UpdateGameMapItemReq + (*UpdateGameMapItemRsp)(nil), // 133: crabs.evening_detective_server.UpdateGameMapItemRsp + (*SetScreenModeReq)(nil), // 134: crabs.evening_detective_server.SetScreenModeReq + (*SetScreenModeRsp)(nil), // 135: crabs.evening_detective_server.SetScreenModeRsp + (*SetScreenTimerReq)(nil), // 136: crabs.evening_detective_server.SetScreenTimerReq + (*SetScreenTimerRsp)(nil), // 137: crabs.evening_detective_server.SetScreenTimerRsp + (*SendScreenCommandReq)(nil), // 138: crabs.evening_detective_server.SendScreenCommandReq + (*SendScreenCommandRsp)(nil), // 139: crabs.evening_detective_server.SendScreenCommandRsp + (*ScreenPlanStep)(nil), // 140: crabs.evening_detective_server.ScreenPlanStep + (*ScreenPlan)(nil), // 141: crabs.evening_detective_server.ScreenPlan + (*GetScreenPlanReq)(nil), // 142: crabs.evening_detective_server.GetScreenPlanReq + (*GetScreenPlanRsp)(nil), // 143: crabs.evening_detective_server.GetScreenPlanRsp + (*SaveScreenPlanReq)(nil), // 144: crabs.evening_detective_server.SaveScreenPlanReq + (*SaveScreenPlanRsp)(nil), // 145: crabs.evening_detective_server.SaveScreenPlanRsp + (*SetScreenPlanStepReq)(nil), // 146: crabs.evening_detective_server.SetScreenPlanStepReq + (*SetScreenPlanStepRsp)(nil), // 147: crabs.evening_detective_server.SetScreenPlanStepRsp + (*GetScreenResultsReq)(nil), // 148: crabs.evening_detective_server.GetScreenResultsReq + (*GetScreenResultsRsp)(nil), // 149: crabs.evening_detective_server.GetScreenResultsRsp + (*GetParticipationReq)(nil), // 150: crabs.evening_detective_server.GetParticipationReq + (*AnswerParticipationReq)(nil), // 151: crabs.evening_detective_server.AnswerParticipationReq + (*ParticipationRsp)(nil), // 152: crabs.evening_detective_server.ParticipationRsp + (*Team)(nil), // 153: crabs.evening_detective_server.Team + (*GetGameReq)(nil), // 154: crabs.evening_detective_server.GetGameReq + (*GetGameRsp)(nil), // 155: crabs.evening_detective_server.GetGameRsp + (*GetGameAnswersReq)(nil), // 156: crabs.evening_detective_server.GetGameAnswersReq + (*GetGameAnswersRsp)(nil), // 157: crabs.evening_detective_server.GetGameAnswersRsp + (*GetGameResultsReq)(nil), // 158: crabs.evening_detective_server.GetGameResultsReq + (*ResultsQuestion)(nil), // 159: crabs.evening_detective_server.ResultsQuestion + (*TeamResult)(nil), // 160: crabs.evening_detective_server.TeamResult + (*GetGameResultsRsp)(nil), // 161: crabs.evening_detective_server.GetGameResultsRsp + (*GameReview)(nil), // 162: crabs.evening_detective_server.GameReview + (*CreateGameReviewReq)(nil), // 163: crabs.evening_detective_server.CreateGameReviewReq + (*CreateGameReviewRsp)(nil), // 164: crabs.evening_detective_server.CreateGameReviewRsp + (*GetGameReviewsReq)(nil), // 165: crabs.evening_detective_server.GetGameReviewsReq + (*GetScenarioReviewsReq)(nil), // 166: crabs.evening_detective_server.GetScenarioReviewsReq + (*GetReviewsForModerationReq)(nil), // 167: crabs.evening_detective_server.GetReviewsForModerationReq + (*GetGameReviewsRsp)(nil), // 168: crabs.evening_detective_server.GetGameReviewsRsp + (*ModerateGameReviewReq)(nil), // 169: crabs.evening_detective_server.ModerateGameReviewReq + (*ModerateGameReviewRsp)(nil), // 170: crabs.evening_detective_server.ModerateGameReviewRsp + (*UpdateGameReq)(nil), // 171: crabs.evening_detective_server.UpdateGameReq + (*UpdateGameRsp)(nil), // 172: crabs.evening_detective_server.UpdateGameRsp + (*StartGameReq)(nil), // 173: crabs.evening_detective_server.StartGameReq + (*StartGameRsp)(nil), // 174: crabs.evening_detective_server.StartGameRsp + (*PauseGameReq)(nil), // 175: crabs.evening_detective_server.PauseGameReq + (*PauseGameRsp)(nil), // 176: crabs.evening_detective_server.PauseGameRsp + (*PlayGameReq)(nil), // 177: crabs.evening_detective_server.PlayGameReq + (*PlayGameRsp)(nil), // 178: crabs.evening_detective_server.PlayGameRsp + (*FinishGameReq)(nil), // 179: crabs.evening_detective_server.FinishGameReq + (*FinishGameRsp)(nil), // 180: crabs.evening_detective_server.FinishGameRsp + (*ResetGameReq)(nil), // 181: crabs.evening_detective_server.ResetGameReq + (*ResetGameRsp)(nil), // 182: crabs.evening_detective_server.ResetGameRsp + (*DeleteGameReq)(nil), // 183: crabs.evening_detective_server.DeleteGameReq + (*DeleteGameRsp)(nil), // 184: crabs.evening_detective_server.DeleteGameRsp + (*AddTeamReq)(nil), // 185: crabs.evening_detective_server.AddTeamReq + (*AddTeamRsp)(nil), // 186: crabs.evening_detective_server.AddTeamRsp + (*UpdateTeamReq)(nil), // 187: crabs.evening_detective_server.UpdateTeamReq + (*UpdateTeamRsp)(nil), // 188: crabs.evening_detective_server.UpdateTeamRsp + (*DeleteTeamReq)(nil), // 189: crabs.evening_detective_server.DeleteTeamReq + (*DeleteTeamRsp)(nil), // 190: crabs.evening_detective_server.DeleteTeamRsp + (*GiveTeamApplicationsReq)(nil), // 191: crabs.evening_detective_server.GiveTeamApplicationsReq + (*GiveTeamApplicationsRsp)(nil), // 192: crabs.evening_detective_server.GiveTeamApplicationsRsp + (*GetTeamStoryReq)(nil), // 193: crabs.evening_detective_server.GetTeamStoryReq + (*GetTeamStoryRsp)(nil), // 194: crabs.evening_detective_server.GetTeamStoryRsp + (*TeamAction)(nil), // 195: crabs.evening_detective_server.TeamAction + (*AddTeamActionReq)(nil), // 196: crabs.evening_detective_server.AddTeamActionReq + (*AddTeamActionRsp)(nil), // 197: crabs.evening_detective_server.AddTeamActionRsp + (*DeleteLastTeamActionReq)(nil), // 198: crabs.evening_detective_server.DeleteLastTeamActionReq + (*DeleteLastTeamActionRsp)(nil), // 199: crabs.evening_detective_server.DeleteLastTeamActionRsp + (*GetTeamAnswersReq)(nil), // 200: crabs.evening_detective_server.GetTeamAnswersReq + (*GetTeamAnswersRsp)(nil), // 201: crabs.evening_detective_server.GetTeamAnswersRsp + (*SubmitTeamAnswersReq)(nil), // 202: crabs.evening_detective_server.SubmitTeamAnswersReq + (*SubmitTeamAnswersRsp)(nil), // 203: crabs.evening_detective_server.SubmitTeamAnswersRsp + (*SetTeamAnswerScoreReq)(nil), // 204: crabs.evening_detective_server.SetTeamAnswerScoreReq + (*SetTeamAnswerScoreRsp)(nil), // 205: crabs.evening_detective_server.SetTeamAnswerScoreRsp + (*UpdateScenarioBackgroundReq)(nil), // 206: crabs.evening_detective_server.UpdateScenarioBackgroundReq + (*UpdateScenarioBackgroundRsp)(nil), // 207: crabs.evening_detective_server.UpdateScenarioBackgroundRsp + (*IssueGameTicketsReq)(nil), // 208: crabs.evening_detective_server.IssueGameTicketsReq + (*IssueGameTicketsRsp)(nil), // 209: crabs.evening_detective_server.IssueGameTicketsRsp + (*Ticket)(nil), // 210: crabs.evening_detective_server.Ticket + (*GetTicketReq)(nil), // 211: crabs.evening_detective_server.GetTicketReq + (*GetTicketRsp)(nil), // 212: crabs.evening_detective_server.GetTicketRsp + (*AcceptTicketReq)(nil), // 213: crabs.evening_detective_server.AcceptTicketReq + (*AcceptTicketRsp)(nil), // 214: crabs.evening_detective_server.AcceptTicketRsp + (*TicketPage)(nil), // 215: crabs.evening_detective_server.TicketPage + (*timestamppb.Timestamp)(nil), // 216: google.protobuf.Timestamp + (*httpbody.HttpBody)(nil), // 217: google.api.HttpBody } var file_main_proto_depIdxs = []int32{ - 25, // 0: crabs.evening_detective_server.GetUsersRsp.users:type_name -> crabs.evening_detective_server.User - 192, // 1: crabs.evening_detective_server.User.created_at:type_name -> google.protobuf.Timestamp - 25, // 2: crabs.evening_detective_server.GetUserByIDRsp.user:type_name -> crabs.evening_detective_server.User - 25, // 3: crabs.evening_detective_server.GetMeRsp.user:type_name -> crabs.evening_detective_server.User - 49, // 4: crabs.evening_detective_server.GetMyScenariosRsp.scenarios:type_name -> crabs.evening_detective_server.Scenario - 49, // 5: crabs.evening_detective_server.GetScenariosCatalogRsp.scenarios:type_name -> crabs.evening_detective_server.Scenario - 49, // 6: crabs.evening_detective_server.GetScenarioRsp.scenario:type_name -> crabs.evening_detective_server.Scenario - 50, // 7: crabs.evening_detective_server.Scenario.story:type_name -> crabs.evening_detective_server.Story - 25, // 8: crabs.evening_detective_server.Scenario.author:type_name -> crabs.evening_detective_server.User - 192, // 9: crabs.evening_detective_server.Scenario.updated_at:type_name -> google.protobuf.Timestamp - 192, // 10: crabs.evening_detective_server.Scenario.created_at:type_name -> google.protobuf.Timestamp - 192, // 11: crabs.evening_detective_server.Scenario.published_at:type_name -> google.protobuf.Timestamp - 53, // 12: crabs.evening_detective_server.Story.places:type_name -> crabs.evening_detective_server.Place - 52, // 13: crabs.evening_detective_server.Story.introduction:type_name -> crabs.evening_detective_server.Introduction - 57, // 14: crabs.evening_detective_server.Story.questions:type_name -> crabs.evening_detective_server.Question - 51, // 15: crabs.evening_detective_server.Story.conclusion:type_name -> crabs.evening_detective_server.Conclusion - 54, // 16: crabs.evening_detective_server.Place.applications:type_name -> crabs.evening_detective_server.Application - 55, // 17: crabs.evening_detective_server.Place.doors:type_name -> crabs.evening_detective_server.Door - 56, // 18: crabs.evening_detective_server.Place.keys:type_name -> crabs.evening_detective_server.Key - 56, // 19: crabs.evening_detective_server.Door.keys:type_name -> crabs.evening_detective_server.Key - 129, // 20: crabs.evening_detective_server.TeamAnswers.team:type_name -> crabs.evening_detective_server.Team - 59, // 21: crabs.evening_detective_server.TeamAnswers.answers:type_name -> crabs.evening_detective_server.AnswerScore - 53, // 22: crabs.evening_detective_server.AddScenarioPlaceReq.place:type_name -> crabs.evening_detective_server.Place - 53, // 23: crabs.evening_detective_server.UpdateScenarioPlaceReq.place:type_name -> crabs.evening_detective_server.Place - 51, // 24: crabs.evening_detective_server.UpdateScenarioConclusionReq.conclusion:type_name -> crabs.evening_detective_server.Conclusion - 52, // 25: crabs.evening_detective_server.UpdateScenarioIntroReq.introduction:type_name -> crabs.evening_detective_server.Introduction - 57, // 26: crabs.evening_detective_server.AddScenarioQuestionReq.question:type_name -> crabs.evening_detective_server.Question - 57, // 27: crabs.evening_detective_server.UpdateScenarioQuestionReq.question:type_name -> crabs.evening_detective_server.Question - 192, // 28: crabs.evening_detective_server.AddGameReq.start_at:type_name -> google.protobuf.Timestamp - 91, // 29: crabs.evening_detective_server.GetGamesRsp.games:type_name -> crabs.evening_detective_server.Game - 192, // 30: crabs.evening_detective_server.Game.start_at:type_name -> google.protobuf.Timestamp - 49, // 31: crabs.evening_detective_server.Game.scenario:type_name -> crabs.evening_detective_server.Scenario - 129, // 32: crabs.evening_detective_server.Game.teams:type_name -> crabs.evening_detective_server.Team - 192, // 33: crabs.evening_detective_server.Game.started_at:type_name -> google.protobuf.Timestamp - 192, // 34: crabs.evening_detective_server.Game.ended_at:type_name -> google.protobuf.Timestamp - 0, // 35: crabs.evening_detective_server.ScreenState.mode:type_name -> crabs.evening_detective_server.ScreenMode - 2, // 36: crabs.evening_detective_server.ScreenState.command:type_name -> crabs.evening_detective_server.ScreenCommand - 1, // 37: crabs.evening_detective_server.ScreenState.timer_state:type_name -> crabs.evening_detective_server.ScreenTimerState - 92, // 38: crabs.evening_detective_server.GetScreenStateRsp.state:type_name -> crabs.evening_detective_server.ScreenState - 92, // 39: crabs.evening_detective_server.GetGameScreensRsp.screens:type_name -> crabs.evening_detective_server.ScreenState - 92, // 40: crabs.evening_detective_server.BindScreenRsp.state:type_name -> crabs.evening_detective_server.ScreenState - 105, // 41: crabs.evening_detective_server.GetGameMapRsp.items:type_name -> crabs.evening_detective_server.MapItem - 0, // 42: crabs.evening_detective_server.SetScreenModeReq.mode:type_name -> crabs.evening_detective_server.ScreenMode - 2, // 43: crabs.evening_detective_server.SendScreenCommandReq.command:type_name -> crabs.evening_detective_server.ScreenCommand - 0, // 44: crabs.evening_detective_server.ScreenPlanStep.mode:type_name -> crabs.evening_detective_server.ScreenMode - 116, // 45: crabs.evening_detective_server.ScreenPlan.steps:type_name -> crabs.evening_detective_server.ScreenPlanStep - 117, // 46: crabs.evening_detective_server.GetScreenPlanRsp.plan:type_name -> crabs.evening_detective_server.ScreenPlan - 116, // 47: crabs.evening_detective_server.SaveScreenPlanReq.steps:type_name -> crabs.evening_detective_server.ScreenPlanStep - 117, // 48: crabs.evening_detective_server.SaveScreenPlanRsp.plan:type_name -> crabs.evening_detective_server.ScreenPlan - 117, // 49: crabs.evening_detective_server.SetScreenPlanStepRsp.plan:type_name -> crabs.evening_detective_server.ScreenPlan - 135, // 50: crabs.evening_detective_server.GetScreenResultsRsp.questions:type_name -> crabs.evening_detective_server.ResultsQuestion - 136, // 51: crabs.evening_detective_server.GetScreenResultsRsp.teams:type_name -> crabs.evening_detective_server.TeamResult - 192, // 52: crabs.evening_detective_server.ParticipationRsp.start_at:type_name -> google.protobuf.Timestamp - 54, // 53: crabs.evening_detective_server.Team.applications:type_name -> crabs.evening_detective_server.Application - 91, // 54: crabs.evening_detective_server.GetGameRsp.game:type_name -> crabs.evening_detective_server.Game - 57, // 55: crabs.evening_detective_server.GetGameAnswersRsp.questions:type_name -> crabs.evening_detective_server.Question - 60, // 56: crabs.evening_detective_server.GetGameAnswersRsp.teams:type_name -> crabs.evening_detective_server.TeamAnswers - 129, // 57: crabs.evening_detective_server.TeamResult.team:type_name -> crabs.evening_detective_server.Team - 59, // 58: crabs.evening_detective_server.TeamResult.answers:type_name -> crabs.evening_detective_server.AnswerScore - 135, // 59: crabs.evening_detective_server.GetGameResultsRsp.questions:type_name -> crabs.evening_detective_server.ResultsQuestion - 136, // 60: crabs.evening_detective_server.GetGameResultsRsp.teams:type_name -> crabs.evening_detective_server.TeamResult - 192, // 61: crabs.evening_detective_server.GameReview.created_at:type_name -> google.protobuf.Timestamp - 138, // 62: crabs.evening_detective_server.CreateGameReviewRsp.review:type_name -> crabs.evening_detective_server.GameReview - 138, // 63: crabs.evening_detective_server.GetGameReviewsRsp.reviews:type_name -> crabs.evening_detective_server.GameReview - 138, // 64: crabs.evening_detective_server.ModerateGameReviewRsp.review:type_name -> crabs.evening_detective_server.GameReview - 192, // 65: crabs.evening_detective_server.UpdateGameReq.start_at:type_name -> google.protobuf.Timestamp - 50, // 66: crabs.evening_detective_server.GetTeamStoryRsp.story:type_name -> crabs.evening_detective_server.Story - 91, // 67: crabs.evening_detective_server.GetTeamStoryRsp.game:type_name -> crabs.evening_detective_server.Game - 171, // 68: crabs.evening_detective_server.GetTeamStoryRsp.actions:type_name -> crabs.evening_detective_server.TeamAction - 58, // 69: crabs.evening_detective_server.GetTeamAnswersRsp.answers:type_name -> crabs.evening_detective_server.Answer - 58, // 70: crabs.evening_detective_server.SubmitTeamAnswersReq.answers:type_name -> crabs.evening_detective_server.Answer - 186, // 71: crabs.evening_detective_server.IssueGameTicketsRsp.tickets:type_name -> crabs.evening_detective_server.Ticket - 191, // 72: crabs.evening_detective_server.GetTicketRsp.ticket:type_name -> crabs.evening_detective_server.TicketPage - 191, // 73: crabs.evening_detective_server.AcceptTicketRsp.ticket:type_name -> crabs.evening_detective_server.TicketPage - 192, // 74: crabs.evening_detective_server.TicketPage.start_at:type_name -> google.protobuf.Timestamp - 192, // 75: crabs.evening_detective_server.TicketPage.used_at:type_name -> google.protobuf.Timestamp - 126, // 76: crabs.evening_detective_server.EveningDetectiveServer.GetParticipation:input_type -> crabs.evening_detective_server.GetParticipationReq - 127, // 77: crabs.evening_detective_server.EveningDetectiveServer.AnswerParticipation:input_type -> crabs.evening_detective_server.AnswerParticipationReq - 3, // 78: crabs.evening_detective_server.EveningDetectiveServer.Ping:input_type -> crabs.evening_detective_server.PingReq - 5, // 79: crabs.evening_detective_server.EveningDetectiveServer.Echo:input_type -> crabs.evening_detective_server.EchoReq - 7, // 80: crabs.evening_detective_server.EveningDetectiveServer.Signup:input_type -> crabs.evening_detective_server.SignupReq - 9, // 81: crabs.evening_detective_server.EveningDetectiveServer.RefreshPassword:input_type -> crabs.evening_detective_server.RefreshPasswordReq - 11, // 82: crabs.evening_detective_server.EveningDetectiveServer.Login:input_type -> crabs.evening_detective_server.LoginReq - 13, // 83: crabs.evening_detective_server.EveningDetectiveServer.Refresh:input_type -> crabs.evening_detective_server.RefreshReq - 15, // 84: crabs.evening_detective_server.EveningDetectiveServer.DeleteAccount:input_type -> crabs.evening_detective_server.DeleteAccountReq - 17, // 85: crabs.evening_detective_server.EveningDetectiveServer.GetTerms:input_type -> crabs.evening_detective_server.GetTermsReq - 19, // 86: crabs.evening_detective_server.EveningDetectiveServer.GetPrivacy:input_type -> crabs.evening_detective_server.GetPrivacyReq - 21, // 87: crabs.evening_detective_server.EveningDetectiveServer.GetConsent:input_type -> crabs.evening_detective_server.GetConsentReq - 23, // 88: crabs.evening_detective_server.EveningDetectiveServer.GetUsers:input_type -> crabs.evening_detective_server.GetUsersReq - 26, // 89: crabs.evening_detective_server.EveningDetectiveServer.GetUserByID:input_type -> crabs.evening_detective_server.GetUserByIDReq - 28, // 90: crabs.evening_detective_server.EveningDetectiveServer.GetMe:input_type -> crabs.evening_detective_server.GetMeReq - 30, // 91: crabs.evening_detective_server.EveningDetectiveServer.ChangeUserPassword:input_type -> crabs.evening_detective_server.ChangeUserPasswordReq - 32, // 92: crabs.evening_detective_server.EveningDetectiveServer.AddUserRole:input_type -> crabs.evening_detective_server.AddUserRoleReq - 34, // 93: crabs.evening_detective_server.EveningDetectiveServer.DeleteUserRole:input_type -> crabs.evening_detective_server.DeleteUserRoleReq - 36, // 94: crabs.evening_detective_server.EveningDetectiveServer.GetPermissions:input_type -> crabs.evening_detective_server.GetPermissionsReq - 38, // 95: crabs.evening_detective_server.EveningDetectiveServer.UploadFile:input_type -> crabs.evening_detective_server.UploadFileReq - 40, // 96: crabs.evening_detective_server.EveningDetectiveServer.DownloadFile:input_type -> crabs.evening_detective_server.DownloadFileReq - 41, // 97: crabs.evening_detective_server.EveningDetectiveServer.AddScenario:input_type -> crabs.evening_detective_server.AddScenarioReq - 43, // 98: crabs.evening_detective_server.EveningDetectiveServer.GetMyScenarios:input_type -> crabs.evening_detective_server.GetMyScenariosReq - 45, // 99: crabs.evening_detective_server.EveningDetectiveServer.GetScenariosCatalog:input_type -> crabs.evening_detective_server.GetScenariosCatalogReq - 47, // 100: crabs.evening_detective_server.EveningDetectiveServer.GetFullScenario:input_type -> crabs.evening_detective_server.GetScenarioReq - 47, // 101: crabs.evening_detective_server.EveningDetectiveServer.GetScenario:input_type -> crabs.evening_detective_server.GetScenarioReq - 61, // 102: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenario:input_type -> crabs.evening_detective_server.UpdateScenarioReq - 63, // 103: crabs.evening_detective_server.EveningDetectiveServer.PublicScenario:input_type -> crabs.evening_detective_server.PublicScenarioReq - 65, // 104: crabs.evening_detective_server.EveningDetectiveServer.DraftScenario:input_type -> crabs.evening_detective_server.DraftScenarioReq - 67, // 105: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenario:input_type -> crabs.evening_detective_server.DeleteScenarioReq - 69, // 106: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioPlace:input_type -> crabs.evening_detective_server.AddScenarioPlaceReq - 71, // 107: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioPlace:input_type -> crabs.evening_detective_server.UpdateScenarioPlaceReq - 73, // 108: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioPlace:input_type -> crabs.evening_detective_server.DeleteScenarioPlaceReq - 79, // 109: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioQuestion:input_type -> crabs.evening_detective_server.AddScenarioQuestionReq - 81, // 110: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioQuestion:input_type -> crabs.evening_detective_server.UpdateScenarioQuestionReq - 83, // 111: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioQuestion:input_type -> crabs.evening_detective_server.DeleteScenarioQuestionReq - 182, // 112: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioBackground:input_type -> crabs.evening_detective_server.UpdateScenarioBackgroundReq - 77, // 113: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioIntro:input_type -> crabs.evening_detective_server.UpdateScenarioIntroReq - 75, // 114: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioConclusion:input_type -> crabs.evening_detective_server.UpdateScenarioConclusionReq - 85, // 115: crabs.evening_detective_server.EveningDetectiveServer.DownloadScenarioArchive:input_type -> crabs.evening_detective_server.DownloadScenarioArchiveReq - 193, // 116: crabs.evening_detective_server.EveningDetectiveServer.UploadScenarioArchive:input_type -> google.api.HttpBody - 87, // 117: crabs.evening_detective_server.EveningDetectiveServer.AddGame:input_type -> crabs.evening_detective_server.AddGameReq - 89, // 118: crabs.evening_detective_server.EveningDetectiveServer.GetGames:input_type -> crabs.evening_detective_server.GetGamesReq - 130, // 119: crabs.evening_detective_server.EveningDetectiveServer.GetGame:input_type -> crabs.evening_detective_server.GetGameReq - 184, // 120: crabs.evening_detective_server.EveningDetectiveServer.IssueGameTickets:input_type -> crabs.evening_detective_server.IssueGameTicketsReq - 187, // 121: crabs.evening_detective_server.EveningDetectiveServer.GetTicket:input_type -> crabs.evening_detective_server.GetTicketReq - 189, // 122: crabs.evening_detective_server.EveningDetectiveServer.AcceptTicket:input_type -> crabs.evening_detective_server.AcceptTicketReq - 93, // 123: crabs.evening_detective_server.EveningDetectiveServer.CreateScreenSession:input_type -> crabs.evening_detective_server.CreateScreenSessionReq - 95, // 124: crabs.evening_detective_server.EveningDetectiveServer.GetScreenState:input_type -> crabs.evening_detective_server.GetScreenStateReq - 97, // 125: crabs.evening_detective_server.EveningDetectiveServer.GetGameScreens:input_type -> crabs.evening_detective_server.GetGameScreensReq - 99, // 126: crabs.evening_detective_server.EveningDetectiveServer.BindScreen:input_type -> crabs.evening_detective_server.BindScreenReq - 101, // 127: crabs.evening_detective_server.EveningDetectiveServer.UnbindScreen:input_type -> crabs.evening_detective_server.UnbindScreenReq - 103, // 128: crabs.evening_detective_server.EveningDetectiveServer.SetScreenSound:input_type -> crabs.evening_detective_server.SetScreenSoundReq - 106, // 129: crabs.evening_detective_server.EveningDetectiveServer.GetGameMap:input_type -> crabs.evening_detective_server.GetGameMapReq - 108, // 130: crabs.evening_detective_server.EveningDetectiveServer.UpdateGameMapItem:input_type -> crabs.evening_detective_server.UpdateGameMapItemReq - 110, // 131: crabs.evening_detective_server.EveningDetectiveServer.SetScreenMode:input_type -> crabs.evening_detective_server.SetScreenModeReq - 112, // 132: crabs.evening_detective_server.EveningDetectiveServer.SetScreenTimer:input_type -> crabs.evening_detective_server.SetScreenTimerReq - 114, // 133: crabs.evening_detective_server.EveningDetectiveServer.SendScreenCommand:input_type -> crabs.evening_detective_server.SendScreenCommandReq - 118, // 134: crabs.evening_detective_server.EveningDetectiveServer.GetScreenPlan:input_type -> crabs.evening_detective_server.GetScreenPlanReq - 120, // 135: crabs.evening_detective_server.EveningDetectiveServer.SaveScreenPlan:input_type -> crabs.evening_detective_server.SaveScreenPlanReq - 122, // 136: crabs.evening_detective_server.EveningDetectiveServer.SetScreenPlanStep:input_type -> crabs.evening_detective_server.SetScreenPlanStepReq - 124, // 137: crabs.evening_detective_server.EveningDetectiveServer.GetScreenResults:input_type -> crabs.evening_detective_server.GetScreenResultsReq - 130, // 138: crabs.evening_detective_server.EveningDetectiveServer.DownloadTeamQR:input_type -> crabs.evening_detective_server.GetGameReq - 132, // 139: crabs.evening_detective_server.EveningDetectiveServer.GetGameAnswers:input_type -> crabs.evening_detective_server.GetGameAnswersReq - 134, // 140: crabs.evening_detective_server.EveningDetectiveServer.GetGameResults:input_type -> crabs.evening_detective_server.GetGameResultsReq - 139, // 141: crabs.evening_detective_server.EveningDetectiveServer.CreateGameReview:input_type -> crabs.evening_detective_server.CreateGameReviewReq - 141, // 142: crabs.evening_detective_server.EveningDetectiveServer.GetGameReviews:input_type -> crabs.evening_detective_server.GetGameReviewsReq - 142, // 143: crabs.evening_detective_server.EveningDetectiveServer.GetScenarioReviews:input_type -> crabs.evening_detective_server.GetScenarioReviewsReq - 141, // 144: crabs.evening_detective_server.EveningDetectiveServer.GetGameReviewsForModeration:input_type -> crabs.evening_detective_server.GetGameReviewsReq - 143, // 145: crabs.evening_detective_server.EveningDetectiveServer.GetReviewsForModeration:input_type -> crabs.evening_detective_server.GetReviewsForModerationReq - 145, // 146: crabs.evening_detective_server.EveningDetectiveServer.ModerateGameReview:input_type -> crabs.evening_detective_server.ModerateGameReviewReq - 147, // 147: crabs.evening_detective_server.EveningDetectiveServer.UpdateGame:input_type -> crabs.evening_detective_server.UpdateGameReq - 149, // 148: crabs.evening_detective_server.EveningDetectiveServer.StartGame:input_type -> crabs.evening_detective_server.StartGameReq - 151, // 149: crabs.evening_detective_server.EveningDetectiveServer.PauseGame:input_type -> crabs.evening_detective_server.PauseGameReq - 153, // 150: crabs.evening_detective_server.EveningDetectiveServer.PlayGame:input_type -> crabs.evening_detective_server.PlayGameReq - 155, // 151: crabs.evening_detective_server.EveningDetectiveServer.FinishGame:input_type -> crabs.evening_detective_server.FinishGameReq - 157, // 152: crabs.evening_detective_server.EveningDetectiveServer.ResetGame:input_type -> crabs.evening_detective_server.ResetGameReq - 159, // 153: crabs.evening_detective_server.EveningDetectiveServer.DeleteGame:input_type -> crabs.evening_detective_server.DeleteGameReq - 161, // 154: crabs.evening_detective_server.EveningDetectiveServer.AddTeam:input_type -> crabs.evening_detective_server.AddTeamReq - 163, // 155: crabs.evening_detective_server.EveningDetectiveServer.UpdateTeam:input_type -> crabs.evening_detective_server.UpdateTeamReq - 165, // 156: crabs.evening_detective_server.EveningDetectiveServer.DeleteTeam:input_type -> crabs.evening_detective_server.DeleteTeamReq - 167, // 157: crabs.evening_detective_server.EveningDetectiveServer.GiveTeamApplications:input_type -> crabs.evening_detective_server.GiveTeamApplicationsReq - 169, // 158: crabs.evening_detective_server.EveningDetectiveServer.GetTeamStory:input_type -> crabs.evening_detective_server.GetTeamStoryReq - 172, // 159: crabs.evening_detective_server.EveningDetectiveServer.AddTeamAction:input_type -> crabs.evening_detective_server.AddTeamActionReq - 174, // 160: crabs.evening_detective_server.EveningDetectiveServer.DeleteLastTeamAction:input_type -> crabs.evening_detective_server.DeleteLastTeamActionReq - 176, // 161: crabs.evening_detective_server.EveningDetectiveServer.GetTeamAnswers:input_type -> crabs.evening_detective_server.GetTeamAnswersReq - 178, // 162: crabs.evening_detective_server.EveningDetectiveServer.SubmitTeamAnswers:input_type -> crabs.evening_detective_server.SubmitTeamAnswersReq - 180, // 163: crabs.evening_detective_server.EveningDetectiveServer.SetTeamAnswerScore:input_type -> crabs.evening_detective_server.SetTeamAnswerScoreReq - 128, // 164: crabs.evening_detective_server.EveningDetectiveServer.GetParticipation:output_type -> crabs.evening_detective_server.ParticipationRsp - 128, // 165: crabs.evening_detective_server.EveningDetectiveServer.AnswerParticipation:output_type -> crabs.evening_detective_server.ParticipationRsp - 4, // 166: crabs.evening_detective_server.EveningDetectiveServer.Ping:output_type -> crabs.evening_detective_server.PingRsp - 6, // 167: crabs.evening_detective_server.EveningDetectiveServer.Echo:output_type -> crabs.evening_detective_server.EchoRsp - 8, // 168: crabs.evening_detective_server.EveningDetectiveServer.Signup:output_type -> crabs.evening_detective_server.SignupRsp - 10, // 169: crabs.evening_detective_server.EveningDetectiveServer.RefreshPassword:output_type -> crabs.evening_detective_server.RefreshPasswordRsp - 12, // 170: crabs.evening_detective_server.EveningDetectiveServer.Login:output_type -> crabs.evening_detective_server.LoginRsp - 14, // 171: crabs.evening_detective_server.EveningDetectiveServer.Refresh:output_type -> crabs.evening_detective_server.RefreshRsp - 16, // 172: crabs.evening_detective_server.EveningDetectiveServer.DeleteAccount:output_type -> crabs.evening_detective_server.DeleteAccountRsp - 18, // 173: crabs.evening_detective_server.EveningDetectiveServer.GetTerms:output_type -> crabs.evening_detective_server.GetTermsRsp - 20, // 174: crabs.evening_detective_server.EveningDetectiveServer.GetPrivacy:output_type -> crabs.evening_detective_server.GetPrivacyRsp - 22, // 175: crabs.evening_detective_server.EveningDetectiveServer.GetConsent:output_type -> crabs.evening_detective_server.GetConsentRsp - 24, // 176: crabs.evening_detective_server.EveningDetectiveServer.GetUsers:output_type -> crabs.evening_detective_server.GetUsersRsp - 27, // 177: crabs.evening_detective_server.EveningDetectiveServer.GetUserByID:output_type -> crabs.evening_detective_server.GetUserByIDRsp - 29, // 178: crabs.evening_detective_server.EveningDetectiveServer.GetMe:output_type -> crabs.evening_detective_server.GetMeRsp - 31, // 179: crabs.evening_detective_server.EveningDetectiveServer.ChangeUserPassword:output_type -> crabs.evening_detective_server.ChangeUserPasswordRsp - 33, // 180: crabs.evening_detective_server.EveningDetectiveServer.AddUserRole:output_type -> crabs.evening_detective_server.AddUserRoleRsp - 35, // 181: crabs.evening_detective_server.EveningDetectiveServer.DeleteUserRole:output_type -> crabs.evening_detective_server.DeleteUserRoleRsp - 37, // 182: crabs.evening_detective_server.EveningDetectiveServer.GetPermissions:output_type -> crabs.evening_detective_server.GetPermissionsRsp - 39, // 183: crabs.evening_detective_server.EveningDetectiveServer.UploadFile:output_type -> crabs.evening_detective_server.UploadFileRsp - 193, // 184: crabs.evening_detective_server.EveningDetectiveServer.DownloadFile:output_type -> google.api.HttpBody - 42, // 185: crabs.evening_detective_server.EveningDetectiveServer.AddScenario:output_type -> crabs.evening_detective_server.AddScenarioRsp - 44, // 186: crabs.evening_detective_server.EveningDetectiveServer.GetMyScenarios:output_type -> crabs.evening_detective_server.GetMyScenariosRsp - 46, // 187: crabs.evening_detective_server.EveningDetectiveServer.GetScenariosCatalog:output_type -> crabs.evening_detective_server.GetScenariosCatalogRsp - 48, // 188: crabs.evening_detective_server.EveningDetectiveServer.GetFullScenario:output_type -> crabs.evening_detective_server.GetScenarioRsp - 48, // 189: crabs.evening_detective_server.EveningDetectiveServer.GetScenario:output_type -> crabs.evening_detective_server.GetScenarioRsp - 62, // 190: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenario:output_type -> crabs.evening_detective_server.UpdateScenarioRsp - 64, // 191: crabs.evening_detective_server.EveningDetectiveServer.PublicScenario:output_type -> crabs.evening_detective_server.PublicScenarioRsp - 66, // 192: crabs.evening_detective_server.EveningDetectiveServer.DraftScenario:output_type -> crabs.evening_detective_server.DraftScenarioRsp - 68, // 193: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenario:output_type -> crabs.evening_detective_server.DeleteScenarioRsp - 70, // 194: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioPlace:output_type -> crabs.evening_detective_server.AddScenarioPlaceRsp - 72, // 195: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioPlace:output_type -> crabs.evening_detective_server.UpdateScenarioPlaceRsp - 74, // 196: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioPlace:output_type -> crabs.evening_detective_server.DeleteScenarioPlaceRsp - 80, // 197: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioQuestion:output_type -> crabs.evening_detective_server.AddScenarioQuestionRsp - 82, // 198: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioQuestion:output_type -> crabs.evening_detective_server.UpdateScenarioQuestionRsp - 84, // 199: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioQuestion:output_type -> crabs.evening_detective_server.DeleteScenarioQuestionRsp - 183, // 200: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioBackground:output_type -> crabs.evening_detective_server.UpdateScenarioBackgroundRsp - 78, // 201: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioIntro:output_type -> crabs.evening_detective_server.UpdateScenarioIntroRsp - 76, // 202: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioConclusion:output_type -> crabs.evening_detective_server.UpdateScenarioConclusionRsp - 193, // 203: crabs.evening_detective_server.EveningDetectiveServer.DownloadScenarioArchive:output_type -> google.api.HttpBody - 86, // 204: crabs.evening_detective_server.EveningDetectiveServer.UploadScenarioArchive:output_type -> crabs.evening_detective_server.UploadScenarioArchiveRsp - 88, // 205: crabs.evening_detective_server.EveningDetectiveServer.AddGame:output_type -> crabs.evening_detective_server.AddGameRsp - 90, // 206: crabs.evening_detective_server.EveningDetectiveServer.GetGames:output_type -> crabs.evening_detective_server.GetGamesRsp - 131, // 207: crabs.evening_detective_server.EveningDetectiveServer.GetGame:output_type -> crabs.evening_detective_server.GetGameRsp - 185, // 208: crabs.evening_detective_server.EveningDetectiveServer.IssueGameTickets:output_type -> crabs.evening_detective_server.IssueGameTicketsRsp - 188, // 209: crabs.evening_detective_server.EveningDetectiveServer.GetTicket:output_type -> crabs.evening_detective_server.GetTicketRsp - 190, // 210: crabs.evening_detective_server.EveningDetectiveServer.AcceptTicket:output_type -> crabs.evening_detective_server.AcceptTicketRsp - 94, // 211: crabs.evening_detective_server.EveningDetectiveServer.CreateScreenSession:output_type -> crabs.evening_detective_server.CreateScreenSessionRsp - 96, // 212: crabs.evening_detective_server.EveningDetectiveServer.GetScreenState:output_type -> crabs.evening_detective_server.GetScreenStateRsp - 98, // 213: crabs.evening_detective_server.EveningDetectiveServer.GetGameScreens:output_type -> crabs.evening_detective_server.GetGameScreensRsp - 100, // 214: crabs.evening_detective_server.EveningDetectiveServer.BindScreen:output_type -> crabs.evening_detective_server.BindScreenRsp - 102, // 215: crabs.evening_detective_server.EveningDetectiveServer.UnbindScreen:output_type -> crabs.evening_detective_server.UnbindScreenRsp - 104, // 216: crabs.evening_detective_server.EveningDetectiveServer.SetScreenSound:output_type -> crabs.evening_detective_server.SetScreenSoundRsp - 107, // 217: crabs.evening_detective_server.EveningDetectiveServer.GetGameMap:output_type -> crabs.evening_detective_server.GetGameMapRsp - 109, // 218: crabs.evening_detective_server.EveningDetectiveServer.UpdateGameMapItem:output_type -> crabs.evening_detective_server.UpdateGameMapItemRsp - 111, // 219: crabs.evening_detective_server.EveningDetectiveServer.SetScreenMode:output_type -> crabs.evening_detective_server.SetScreenModeRsp - 113, // 220: crabs.evening_detective_server.EveningDetectiveServer.SetScreenTimer:output_type -> crabs.evening_detective_server.SetScreenTimerRsp - 115, // 221: crabs.evening_detective_server.EveningDetectiveServer.SendScreenCommand:output_type -> crabs.evening_detective_server.SendScreenCommandRsp - 119, // 222: crabs.evening_detective_server.EveningDetectiveServer.GetScreenPlan:output_type -> crabs.evening_detective_server.GetScreenPlanRsp - 121, // 223: crabs.evening_detective_server.EveningDetectiveServer.SaveScreenPlan:output_type -> crabs.evening_detective_server.SaveScreenPlanRsp - 123, // 224: crabs.evening_detective_server.EveningDetectiveServer.SetScreenPlanStep:output_type -> crabs.evening_detective_server.SetScreenPlanStepRsp - 125, // 225: crabs.evening_detective_server.EveningDetectiveServer.GetScreenResults:output_type -> crabs.evening_detective_server.GetScreenResultsRsp - 193, // 226: crabs.evening_detective_server.EveningDetectiveServer.DownloadTeamQR:output_type -> google.api.HttpBody - 133, // 227: crabs.evening_detective_server.EveningDetectiveServer.GetGameAnswers:output_type -> crabs.evening_detective_server.GetGameAnswersRsp - 137, // 228: crabs.evening_detective_server.EveningDetectiveServer.GetGameResults:output_type -> crabs.evening_detective_server.GetGameResultsRsp - 140, // 229: crabs.evening_detective_server.EveningDetectiveServer.CreateGameReview:output_type -> crabs.evening_detective_server.CreateGameReviewRsp - 144, // 230: crabs.evening_detective_server.EveningDetectiveServer.GetGameReviews:output_type -> crabs.evening_detective_server.GetGameReviewsRsp - 144, // 231: crabs.evening_detective_server.EveningDetectiveServer.GetScenarioReviews:output_type -> crabs.evening_detective_server.GetGameReviewsRsp - 144, // 232: crabs.evening_detective_server.EveningDetectiveServer.GetGameReviewsForModeration:output_type -> crabs.evening_detective_server.GetGameReviewsRsp - 144, // 233: crabs.evening_detective_server.EveningDetectiveServer.GetReviewsForModeration:output_type -> crabs.evening_detective_server.GetGameReviewsRsp - 146, // 234: crabs.evening_detective_server.EveningDetectiveServer.ModerateGameReview:output_type -> crabs.evening_detective_server.ModerateGameReviewRsp - 148, // 235: crabs.evening_detective_server.EveningDetectiveServer.UpdateGame:output_type -> crabs.evening_detective_server.UpdateGameRsp - 150, // 236: crabs.evening_detective_server.EveningDetectiveServer.StartGame:output_type -> crabs.evening_detective_server.StartGameRsp - 152, // 237: crabs.evening_detective_server.EveningDetectiveServer.PauseGame:output_type -> crabs.evening_detective_server.PauseGameRsp - 154, // 238: crabs.evening_detective_server.EveningDetectiveServer.PlayGame:output_type -> crabs.evening_detective_server.PlayGameRsp - 156, // 239: crabs.evening_detective_server.EveningDetectiveServer.FinishGame:output_type -> crabs.evening_detective_server.FinishGameRsp - 158, // 240: crabs.evening_detective_server.EveningDetectiveServer.ResetGame:output_type -> crabs.evening_detective_server.ResetGameRsp - 160, // 241: crabs.evening_detective_server.EveningDetectiveServer.DeleteGame:output_type -> crabs.evening_detective_server.DeleteGameRsp - 162, // 242: crabs.evening_detective_server.EveningDetectiveServer.AddTeam:output_type -> crabs.evening_detective_server.AddTeamRsp - 164, // 243: crabs.evening_detective_server.EveningDetectiveServer.UpdateTeam:output_type -> crabs.evening_detective_server.UpdateTeamRsp - 166, // 244: crabs.evening_detective_server.EveningDetectiveServer.DeleteTeam:output_type -> crabs.evening_detective_server.DeleteTeamRsp - 168, // 245: crabs.evening_detective_server.EveningDetectiveServer.GiveTeamApplications:output_type -> crabs.evening_detective_server.GiveTeamApplicationsRsp - 170, // 246: crabs.evening_detective_server.EveningDetectiveServer.GetTeamStory:output_type -> crabs.evening_detective_server.GetTeamStoryRsp - 173, // 247: crabs.evening_detective_server.EveningDetectiveServer.AddTeamAction:output_type -> crabs.evening_detective_server.AddTeamActionRsp - 175, // 248: crabs.evening_detective_server.EveningDetectiveServer.DeleteLastTeamAction:output_type -> crabs.evening_detective_server.DeleteLastTeamActionRsp - 177, // 249: crabs.evening_detective_server.EveningDetectiveServer.GetTeamAnswers:output_type -> crabs.evening_detective_server.GetTeamAnswersRsp - 179, // 250: crabs.evening_detective_server.EveningDetectiveServer.SubmitTeamAnswers:output_type -> crabs.evening_detective_server.SubmitTeamAnswersRsp - 181, // 251: crabs.evening_detective_server.EveningDetectiveServer.SetTeamAnswerScore:output_type -> crabs.evening_detective_server.SetTeamAnswerScoreRsp - 164, // [164:252] is the sub-list for method output_type - 76, // [76:164] is the sub-list for method input_type - 76, // [76:76] is the sub-list for extension type_name - 76, // [76:76] is the sub-list for extension extendee - 0, // [0:76] is the sub-list for field type_name + 26, // 0: crabs.evening_detective_server.GetUsersRsp.users:type_name -> crabs.evening_detective_server.User + 216, // 1: crabs.evening_detective_server.User.created_at:type_name -> google.protobuf.Timestamp + 26, // 2: crabs.evening_detective_server.GetUserByIDRsp.user:type_name -> crabs.evening_detective_server.User + 26, // 3: crabs.evening_detective_server.GetMeRsp.user:type_name -> crabs.evening_detective_server.User + 42, // 4: crabs.evening_detective_server.Playlist.tracks:type_name -> crabs.evening_detective_server.PlaylistTrack + 43, // 5: crabs.evening_detective_server.GetPlaylistsRsp.playlists:type_name -> crabs.evening_detective_server.Playlist + 43, // 6: crabs.evening_detective_server.CreatePlaylistRsp.playlist:type_name -> crabs.evening_detective_server.Playlist + 43, // 7: crabs.evening_detective_server.UpdatePlaylistRsp.playlist:type_name -> crabs.evening_detective_server.Playlist + 43, // 8: crabs.evening_detective_server.UploadPlaylistTrackRsp.playlist:type_name -> crabs.evening_detective_server.Playlist + 66, // 9: crabs.evening_detective_server.GetMyScenariosRsp.scenarios:type_name -> crabs.evening_detective_server.Scenario + 66, // 10: crabs.evening_detective_server.GetScenariosCatalogRsp.scenarios:type_name -> crabs.evening_detective_server.Scenario + 66, // 11: crabs.evening_detective_server.GetScenarioRsp.scenario:type_name -> crabs.evening_detective_server.Scenario + 67, // 12: crabs.evening_detective_server.Scenario.story:type_name -> crabs.evening_detective_server.Story + 26, // 13: crabs.evening_detective_server.Scenario.author:type_name -> crabs.evening_detective_server.User + 216, // 14: crabs.evening_detective_server.Scenario.updated_at:type_name -> google.protobuf.Timestamp + 216, // 15: crabs.evening_detective_server.Scenario.created_at:type_name -> google.protobuf.Timestamp + 216, // 16: crabs.evening_detective_server.Scenario.published_at:type_name -> google.protobuf.Timestamp + 70, // 17: crabs.evening_detective_server.Story.places:type_name -> crabs.evening_detective_server.Place + 69, // 18: crabs.evening_detective_server.Story.introduction:type_name -> crabs.evening_detective_server.Introduction + 74, // 19: crabs.evening_detective_server.Story.questions:type_name -> crabs.evening_detective_server.Question + 68, // 20: crabs.evening_detective_server.Story.conclusion:type_name -> crabs.evening_detective_server.Conclusion + 71, // 21: crabs.evening_detective_server.Place.applications:type_name -> crabs.evening_detective_server.Application + 72, // 22: crabs.evening_detective_server.Place.doors:type_name -> crabs.evening_detective_server.Door + 73, // 23: crabs.evening_detective_server.Place.keys:type_name -> crabs.evening_detective_server.Key + 73, // 24: crabs.evening_detective_server.Door.keys:type_name -> crabs.evening_detective_server.Key + 153, // 25: crabs.evening_detective_server.TeamAnswers.team:type_name -> crabs.evening_detective_server.Team + 76, // 26: crabs.evening_detective_server.TeamAnswers.answers:type_name -> crabs.evening_detective_server.AnswerScore + 70, // 27: crabs.evening_detective_server.AddScenarioPlaceReq.place:type_name -> crabs.evening_detective_server.Place + 70, // 28: crabs.evening_detective_server.UpdateScenarioPlaceReq.place:type_name -> crabs.evening_detective_server.Place + 68, // 29: crabs.evening_detective_server.UpdateScenarioConclusionReq.conclusion:type_name -> crabs.evening_detective_server.Conclusion + 69, // 30: crabs.evening_detective_server.UpdateScenarioIntroReq.introduction:type_name -> crabs.evening_detective_server.Introduction + 74, // 31: crabs.evening_detective_server.AddScenarioQuestionReq.question:type_name -> crabs.evening_detective_server.Question + 74, // 32: crabs.evening_detective_server.UpdateScenarioQuestionReq.question:type_name -> crabs.evening_detective_server.Question + 216, // 33: crabs.evening_detective_server.AddGameReq.start_at:type_name -> google.protobuf.Timestamp + 108, // 34: crabs.evening_detective_server.GetGamesRsp.games:type_name -> crabs.evening_detective_server.Game + 216, // 35: crabs.evening_detective_server.Game.start_at:type_name -> google.protobuf.Timestamp + 66, // 36: crabs.evening_detective_server.Game.scenario:type_name -> crabs.evening_detective_server.Scenario + 153, // 37: crabs.evening_detective_server.Game.teams:type_name -> crabs.evening_detective_server.Team + 216, // 38: crabs.evening_detective_server.Game.started_at:type_name -> google.protobuf.Timestamp + 216, // 39: crabs.evening_detective_server.Game.ended_at:type_name -> google.protobuf.Timestamp + 0, // 40: crabs.evening_detective_server.ScreenState.mode:type_name -> crabs.evening_detective_server.ScreenMode + 2, // 41: crabs.evening_detective_server.ScreenState.command:type_name -> crabs.evening_detective_server.ScreenCommand + 1, // 42: crabs.evening_detective_server.ScreenState.timer_state:type_name -> crabs.evening_detective_server.ScreenTimerState + 116, // 43: crabs.evening_detective_server.ScreenState.music:type_name -> crabs.evening_detective_server.MusicState + 109, // 44: crabs.evening_detective_server.GetScreenStateRsp.state:type_name -> crabs.evening_detective_server.ScreenState + 109, // 45: crabs.evening_detective_server.GetGameScreensRsp.screens:type_name -> crabs.evening_detective_server.ScreenState + 43, // 46: crabs.evening_detective_server.MusicState.playlist:type_name -> crabs.evening_detective_server.Playlist + 3, // 47: crabs.evening_detective_server.MusicState.playback:type_name -> crabs.evening_detective_server.MusicPlaybackState + 43, // 48: crabs.evening_detective_server.GetGameMusicRsp.playlists:type_name -> crabs.evening_detective_server.Playlist + 116, // 49: crabs.evening_detective_server.GetGameMusicRsp.state:type_name -> crabs.evening_detective_server.MusicState + 3, // 50: crabs.evening_detective_server.SetGameMusicReq.playback:type_name -> crabs.evening_detective_server.MusicPlaybackState + 116, // 51: crabs.evening_detective_server.SetGameMusicRsp.state:type_name -> crabs.evening_detective_server.MusicState + 116, // 52: crabs.evening_detective_server.AdvanceScreenMusicRsp.state:type_name -> crabs.evening_detective_server.MusicState + 109, // 53: crabs.evening_detective_server.BindScreenRsp.state:type_name -> crabs.evening_detective_server.ScreenState + 129, // 54: crabs.evening_detective_server.GetGameMapRsp.items:type_name -> crabs.evening_detective_server.MapItem + 0, // 55: crabs.evening_detective_server.SetScreenModeReq.mode:type_name -> crabs.evening_detective_server.ScreenMode + 2, // 56: crabs.evening_detective_server.SendScreenCommandReq.command:type_name -> crabs.evening_detective_server.ScreenCommand + 0, // 57: crabs.evening_detective_server.ScreenPlanStep.mode:type_name -> crabs.evening_detective_server.ScreenMode + 140, // 58: crabs.evening_detective_server.ScreenPlan.steps:type_name -> crabs.evening_detective_server.ScreenPlanStep + 141, // 59: crabs.evening_detective_server.GetScreenPlanRsp.plan:type_name -> crabs.evening_detective_server.ScreenPlan + 140, // 60: crabs.evening_detective_server.SaveScreenPlanReq.steps:type_name -> crabs.evening_detective_server.ScreenPlanStep + 141, // 61: crabs.evening_detective_server.SaveScreenPlanRsp.plan:type_name -> crabs.evening_detective_server.ScreenPlan + 141, // 62: crabs.evening_detective_server.SetScreenPlanStepRsp.plan:type_name -> crabs.evening_detective_server.ScreenPlan + 159, // 63: crabs.evening_detective_server.GetScreenResultsRsp.questions:type_name -> crabs.evening_detective_server.ResultsQuestion + 160, // 64: crabs.evening_detective_server.GetScreenResultsRsp.teams:type_name -> crabs.evening_detective_server.TeamResult + 216, // 65: crabs.evening_detective_server.ParticipationRsp.start_at:type_name -> google.protobuf.Timestamp + 71, // 66: crabs.evening_detective_server.Team.applications:type_name -> crabs.evening_detective_server.Application + 108, // 67: crabs.evening_detective_server.GetGameRsp.game:type_name -> crabs.evening_detective_server.Game + 74, // 68: crabs.evening_detective_server.GetGameAnswersRsp.questions:type_name -> crabs.evening_detective_server.Question + 77, // 69: crabs.evening_detective_server.GetGameAnswersRsp.teams:type_name -> crabs.evening_detective_server.TeamAnswers + 153, // 70: crabs.evening_detective_server.TeamResult.team:type_name -> crabs.evening_detective_server.Team + 76, // 71: crabs.evening_detective_server.TeamResult.answers:type_name -> crabs.evening_detective_server.AnswerScore + 159, // 72: crabs.evening_detective_server.GetGameResultsRsp.questions:type_name -> crabs.evening_detective_server.ResultsQuestion + 160, // 73: crabs.evening_detective_server.GetGameResultsRsp.teams:type_name -> crabs.evening_detective_server.TeamResult + 216, // 74: crabs.evening_detective_server.GameReview.created_at:type_name -> google.protobuf.Timestamp + 162, // 75: crabs.evening_detective_server.CreateGameReviewRsp.review:type_name -> crabs.evening_detective_server.GameReview + 162, // 76: crabs.evening_detective_server.GetGameReviewsRsp.reviews:type_name -> crabs.evening_detective_server.GameReview + 162, // 77: crabs.evening_detective_server.ModerateGameReviewRsp.review:type_name -> crabs.evening_detective_server.GameReview + 216, // 78: crabs.evening_detective_server.UpdateGameReq.start_at:type_name -> google.protobuf.Timestamp + 67, // 79: crabs.evening_detective_server.GetTeamStoryRsp.story:type_name -> crabs.evening_detective_server.Story + 108, // 80: crabs.evening_detective_server.GetTeamStoryRsp.game:type_name -> crabs.evening_detective_server.Game + 195, // 81: crabs.evening_detective_server.GetTeamStoryRsp.actions:type_name -> crabs.evening_detective_server.TeamAction + 75, // 82: crabs.evening_detective_server.GetTeamAnswersRsp.answers:type_name -> crabs.evening_detective_server.Answer + 75, // 83: crabs.evening_detective_server.SubmitTeamAnswersReq.answers:type_name -> crabs.evening_detective_server.Answer + 210, // 84: crabs.evening_detective_server.IssueGameTicketsRsp.tickets:type_name -> crabs.evening_detective_server.Ticket + 215, // 85: crabs.evening_detective_server.GetTicketRsp.ticket:type_name -> crabs.evening_detective_server.TicketPage + 215, // 86: crabs.evening_detective_server.AcceptTicketRsp.ticket:type_name -> crabs.evening_detective_server.TicketPage + 216, // 87: crabs.evening_detective_server.TicketPage.start_at:type_name -> google.protobuf.Timestamp + 216, // 88: crabs.evening_detective_server.TicketPage.used_at:type_name -> google.protobuf.Timestamp + 150, // 89: crabs.evening_detective_server.EveningDetectiveServer.GetParticipation:input_type -> crabs.evening_detective_server.GetParticipationReq + 151, // 90: crabs.evening_detective_server.EveningDetectiveServer.AnswerParticipation:input_type -> crabs.evening_detective_server.AnswerParticipationReq + 4, // 91: crabs.evening_detective_server.EveningDetectiveServer.Ping:input_type -> crabs.evening_detective_server.PingReq + 6, // 92: crabs.evening_detective_server.EveningDetectiveServer.Echo:input_type -> crabs.evening_detective_server.EchoReq + 8, // 93: crabs.evening_detective_server.EveningDetectiveServer.Signup:input_type -> crabs.evening_detective_server.SignupReq + 10, // 94: crabs.evening_detective_server.EveningDetectiveServer.RefreshPassword:input_type -> crabs.evening_detective_server.RefreshPasswordReq + 12, // 95: crabs.evening_detective_server.EveningDetectiveServer.Login:input_type -> crabs.evening_detective_server.LoginReq + 14, // 96: crabs.evening_detective_server.EveningDetectiveServer.Refresh:input_type -> crabs.evening_detective_server.RefreshReq + 16, // 97: crabs.evening_detective_server.EveningDetectiveServer.DeleteAccount:input_type -> crabs.evening_detective_server.DeleteAccountReq + 18, // 98: crabs.evening_detective_server.EveningDetectiveServer.GetTerms:input_type -> crabs.evening_detective_server.GetTermsReq + 20, // 99: crabs.evening_detective_server.EveningDetectiveServer.GetPrivacy:input_type -> crabs.evening_detective_server.GetPrivacyReq + 22, // 100: crabs.evening_detective_server.EveningDetectiveServer.GetConsent:input_type -> crabs.evening_detective_server.GetConsentReq + 24, // 101: crabs.evening_detective_server.EveningDetectiveServer.GetUsers:input_type -> crabs.evening_detective_server.GetUsersReq + 27, // 102: crabs.evening_detective_server.EveningDetectiveServer.GetUserByID:input_type -> crabs.evening_detective_server.GetUserByIDReq + 29, // 103: crabs.evening_detective_server.EveningDetectiveServer.GetMe:input_type -> crabs.evening_detective_server.GetMeReq + 31, // 104: crabs.evening_detective_server.EveningDetectiveServer.ChangeUserPassword:input_type -> crabs.evening_detective_server.ChangeUserPasswordReq + 33, // 105: crabs.evening_detective_server.EveningDetectiveServer.AddUserRole:input_type -> crabs.evening_detective_server.AddUserRoleReq + 35, // 106: crabs.evening_detective_server.EveningDetectiveServer.DeleteUserRole:input_type -> crabs.evening_detective_server.DeleteUserRoleReq + 37, // 107: crabs.evening_detective_server.EveningDetectiveServer.GetPermissions:input_type -> crabs.evening_detective_server.GetPermissionsReq + 39, // 108: crabs.evening_detective_server.EveningDetectiveServer.UploadFile:input_type -> crabs.evening_detective_server.UploadFileReq + 41, // 109: crabs.evening_detective_server.EveningDetectiveServer.DownloadFile:input_type -> crabs.evening_detective_server.DownloadFileReq + 44, // 110: crabs.evening_detective_server.EveningDetectiveServer.GetPlaylists:input_type -> crabs.evening_detective_server.GetPlaylistsReq + 46, // 111: crabs.evening_detective_server.EveningDetectiveServer.CreatePlaylist:input_type -> crabs.evening_detective_server.CreatePlaylistReq + 48, // 112: crabs.evening_detective_server.EveningDetectiveServer.UpdatePlaylist:input_type -> crabs.evening_detective_server.UpdatePlaylistReq + 50, // 113: crabs.evening_detective_server.EveningDetectiveServer.DeletePlaylist:input_type -> crabs.evening_detective_server.DeletePlaylistReq + 52, // 114: crabs.evening_detective_server.EveningDetectiveServer.UploadPlaylistTrack:input_type -> crabs.evening_detective_server.UploadPlaylistTrackReq + 54, // 115: crabs.evening_detective_server.EveningDetectiveServer.DeletePlaylistTrack:input_type -> crabs.evening_detective_server.DeletePlaylistTrackReq + 56, // 116: crabs.evening_detective_server.EveningDetectiveServer.SetScenarioPlaylist:input_type -> crabs.evening_detective_server.SetScenarioPlaylistReq + 58, // 117: crabs.evening_detective_server.EveningDetectiveServer.AddScenario:input_type -> crabs.evening_detective_server.AddScenarioReq + 60, // 118: crabs.evening_detective_server.EveningDetectiveServer.GetMyScenarios:input_type -> crabs.evening_detective_server.GetMyScenariosReq + 62, // 119: crabs.evening_detective_server.EveningDetectiveServer.GetScenariosCatalog:input_type -> crabs.evening_detective_server.GetScenariosCatalogReq + 64, // 120: crabs.evening_detective_server.EveningDetectiveServer.GetFullScenario:input_type -> crabs.evening_detective_server.GetScenarioReq + 64, // 121: crabs.evening_detective_server.EveningDetectiveServer.GetScenario:input_type -> crabs.evening_detective_server.GetScenarioReq + 78, // 122: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenario:input_type -> crabs.evening_detective_server.UpdateScenarioReq + 80, // 123: crabs.evening_detective_server.EveningDetectiveServer.PublicScenario:input_type -> crabs.evening_detective_server.PublicScenarioReq + 82, // 124: crabs.evening_detective_server.EveningDetectiveServer.DraftScenario:input_type -> crabs.evening_detective_server.DraftScenarioReq + 84, // 125: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenario:input_type -> crabs.evening_detective_server.DeleteScenarioReq + 86, // 126: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioPlace:input_type -> crabs.evening_detective_server.AddScenarioPlaceReq + 88, // 127: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioPlace:input_type -> crabs.evening_detective_server.UpdateScenarioPlaceReq + 90, // 128: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioPlace:input_type -> crabs.evening_detective_server.DeleteScenarioPlaceReq + 96, // 129: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioQuestion:input_type -> crabs.evening_detective_server.AddScenarioQuestionReq + 98, // 130: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioQuestion:input_type -> crabs.evening_detective_server.UpdateScenarioQuestionReq + 100, // 131: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioQuestion:input_type -> crabs.evening_detective_server.DeleteScenarioQuestionReq + 206, // 132: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioBackground:input_type -> crabs.evening_detective_server.UpdateScenarioBackgroundReq + 94, // 133: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioIntro:input_type -> crabs.evening_detective_server.UpdateScenarioIntroReq + 92, // 134: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioConclusion:input_type -> crabs.evening_detective_server.UpdateScenarioConclusionReq + 102, // 135: crabs.evening_detective_server.EveningDetectiveServer.DownloadScenarioArchive:input_type -> crabs.evening_detective_server.DownloadScenarioArchiveReq + 217, // 136: crabs.evening_detective_server.EveningDetectiveServer.UploadScenarioArchive:input_type -> google.api.HttpBody + 104, // 137: crabs.evening_detective_server.EveningDetectiveServer.AddGame:input_type -> crabs.evening_detective_server.AddGameReq + 106, // 138: crabs.evening_detective_server.EveningDetectiveServer.GetGames:input_type -> crabs.evening_detective_server.GetGamesReq + 154, // 139: crabs.evening_detective_server.EveningDetectiveServer.GetGame:input_type -> crabs.evening_detective_server.GetGameReq + 208, // 140: crabs.evening_detective_server.EveningDetectiveServer.IssueGameTickets:input_type -> crabs.evening_detective_server.IssueGameTicketsReq + 211, // 141: crabs.evening_detective_server.EveningDetectiveServer.GetTicket:input_type -> crabs.evening_detective_server.GetTicketReq + 213, // 142: crabs.evening_detective_server.EveningDetectiveServer.AcceptTicket:input_type -> crabs.evening_detective_server.AcceptTicketReq + 110, // 143: crabs.evening_detective_server.EveningDetectiveServer.CreateScreenSession:input_type -> crabs.evening_detective_server.CreateScreenSessionReq + 112, // 144: crabs.evening_detective_server.EveningDetectiveServer.GetScreenState:input_type -> crabs.evening_detective_server.GetScreenStateReq + 114, // 145: crabs.evening_detective_server.EveningDetectiveServer.GetGameScreens:input_type -> crabs.evening_detective_server.GetGameScreensReq + 117, // 146: crabs.evening_detective_server.EveningDetectiveServer.GetGameMusic:input_type -> crabs.evening_detective_server.GetGameMusicReq + 119, // 147: crabs.evening_detective_server.EveningDetectiveServer.SetGameMusic:input_type -> crabs.evening_detective_server.SetGameMusicReq + 121, // 148: crabs.evening_detective_server.EveningDetectiveServer.AdvanceScreenMusic:input_type -> crabs.evening_detective_server.AdvanceScreenMusicReq + 123, // 149: crabs.evening_detective_server.EveningDetectiveServer.BindScreen:input_type -> crabs.evening_detective_server.BindScreenReq + 125, // 150: crabs.evening_detective_server.EveningDetectiveServer.UnbindScreen:input_type -> crabs.evening_detective_server.UnbindScreenReq + 127, // 151: crabs.evening_detective_server.EveningDetectiveServer.SetScreenSound:input_type -> crabs.evening_detective_server.SetScreenSoundReq + 130, // 152: crabs.evening_detective_server.EveningDetectiveServer.GetGameMap:input_type -> crabs.evening_detective_server.GetGameMapReq + 132, // 153: crabs.evening_detective_server.EveningDetectiveServer.UpdateGameMapItem:input_type -> crabs.evening_detective_server.UpdateGameMapItemReq + 134, // 154: crabs.evening_detective_server.EveningDetectiveServer.SetScreenMode:input_type -> crabs.evening_detective_server.SetScreenModeReq + 136, // 155: crabs.evening_detective_server.EveningDetectiveServer.SetScreenTimer:input_type -> crabs.evening_detective_server.SetScreenTimerReq + 138, // 156: crabs.evening_detective_server.EveningDetectiveServer.SendScreenCommand:input_type -> crabs.evening_detective_server.SendScreenCommandReq + 142, // 157: crabs.evening_detective_server.EveningDetectiveServer.GetScreenPlan:input_type -> crabs.evening_detective_server.GetScreenPlanReq + 144, // 158: crabs.evening_detective_server.EveningDetectiveServer.SaveScreenPlan:input_type -> crabs.evening_detective_server.SaveScreenPlanReq + 146, // 159: crabs.evening_detective_server.EveningDetectiveServer.SetScreenPlanStep:input_type -> crabs.evening_detective_server.SetScreenPlanStepReq + 148, // 160: crabs.evening_detective_server.EveningDetectiveServer.GetScreenResults:input_type -> crabs.evening_detective_server.GetScreenResultsReq + 154, // 161: crabs.evening_detective_server.EveningDetectiveServer.DownloadTeamQR:input_type -> crabs.evening_detective_server.GetGameReq + 156, // 162: crabs.evening_detective_server.EveningDetectiveServer.GetGameAnswers:input_type -> crabs.evening_detective_server.GetGameAnswersReq + 158, // 163: crabs.evening_detective_server.EveningDetectiveServer.GetGameResults:input_type -> crabs.evening_detective_server.GetGameResultsReq + 163, // 164: crabs.evening_detective_server.EveningDetectiveServer.CreateGameReview:input_type -> crabs.evening_detective_server.CreateGameReviewReq + 165, // 165: crabs.evening_detective_server.EveningDetectiveServer.GetGameReviews:input_type -> crabs.evening_detective_server.GetGameReviewsReq + 166, // 166: crabs.evening_detective_server.EveningDetectiveServer.GetScenarioReviews:input_type -> crabs.evening_detective_server.GetScenarioReviewsReq + 165, // 167: crabs.evening_detective_server.EveningDetectiveServer.GetGameReviewsForModeration:input_type -> crabs.evening_detective_server.GetGameReviewsReq + 167, // 168: crabs.evening_detective_server.EveningDetectiveServer.GetReviewsForModeration:input_type -> crabs.evening_detective_server.GetReviewsForModerationReq + 169, // 169: crabs.evening_detective_server.EveningDetectiveServer.ModerateGameReview:input_type -> crabs.evening_detective_server.ModerateGameReviewReq + 171, // 170: crabs.evening_detective_server.EveningDetectiveServer.UpdateGame:input_type -> crabs.evening_detective_server.UpdateGameReq + 173, // 171: crabs.evening_detective_server.EveningDetectiveServer.StartGame:input_type -> crabs.evening_detective_server.StartGameReq + 175, // 172: crabs.evening_detective_server.EveningDetectiveServer.PauseGame:input_type -> crabs.evening_detective_server.PauseGameReq + 177, // 173: crabs.evening_detective_server.EveningDetectiveServer.PlayGame:input_type -> crabs.evening_detective_server.PlayGameReq + 179, // 174: crabs.evening_detective_server.EveningDetectiveServer.FinishGame:input_type -> crabs.evening_detective_server.FinishGameReq + 181, // 175: crabs.evening_detective_server.EveningDetectiveServer.ResetGame:input_type -> crabs.evening_detective_server.ResetGameReq + 183, // 176: crabs.evening_detective_server.EveningDetectiveServer.DeleteGame:input_type -> crabs.evening_detective_server.DeleteGameReq + 185, // 177: crabs.evening_detective_server.EveningDetectiveServer.AddTeam:input_type -> crabs.evening_detective_server.AddTeamReq + 187, // 178: crabs.evening_detective_server.EveningDetectiveServer.UpdateTeam:input_type -> crabs.evening_detective_server.UpdateTeamReq + 189, // 179: crabs.evening_detective_server.EveningDetectiveServer.DeleteTeam:input_type -> crabs.evening_detective_server.DeleteTeamReq + 191, // 180: crabs.evening_detective_server.EveningDetectiveServer.GiveTeamApplications:input_type -> crabs.evening_detective_server.GiveTeamApplicationsReq + 193, // 181: crabs.evening_detective_server.EveningDetectiveServer.GetTeamStory:input_type -> crabs.evening_detective_server.GetTeamStoryReq + 196, // 182: crabs.evening_detective_server.EveningDetectiveServer.AddTeamAction:input_type -> crabs.evening_detective_server.AddTeamActionReq + 198, // 183: crabs.evening_detective_server.EveningDetectiveServer.DeleteLastTeamAction:input_type -> crabs.evening_detective_server.DeleteLastTeamActionReq + 200, // 184: crabs.evening_detective_server.EveningDetectiveServer.GetTeamAnswers:input_type -> crabs.evening_detective_server.GetTeamAnswersReq + 202, // 185: crabs.evening_detective_server.EveningDetectiveServer.SubmitTeamAnswers:input_type -> crabs.evening_detective_server.SubmitTeamAnswersReq + 204, // 186: crabs.evening_detective_server.EveningDetectiveServer.SetTeamAnswerScore:input_type -> crabs.evening_detective_server.SetTeamAnswerScoreReq + 152, // 187: crabs.evening_detective_server.EveningDetectiveServer.GetParticipation:output_type -> crabs.evening_detective_server.ParticipationRsp + 152, // 188: crabs.evening_detective_server.EveningDetectiveServer.AnswerParticipation:output_type -> crabs.evening_detective_server.ParticipationRsp + 5, // 189: crabs.evening_detective_server.EveningDetectiveServer.Ping:output_type -> crabs.evening_detective_server.PingRsp + 7, // 190: crabs.evening_detective_server.EveningDetectiveServer.Echo:output_type -> crabs.evening_detective_server.EchoRsp + 9, // 191: crabs.evening_detective_server.EveningDetectiveServer.Signup:output_type -> crabs.evening_detective_server.SignupRsp + 11, // 192: crabs.evening_detective_server.EveningDetectiveServer.RefreshPassword:output_type -> crabs.evening_detective_server.RefreshPasswordRsp + 13, // 193: crabs.evening_detective_server.EveningDetectiveServer.Login:output_type -> crabs.evening_detective_server.LoginRsp + 15, // 194: crabs.evening_detective_server.EveningDetectiveServer.Refresh:output_type -> crabs.evening_detective_server.RefreshRsp + 17, // 195: crabs.evening_detective_server.EveningDetectiveServer.DeleteAccount:output_type -> crabs.evening_detective_server.DeleteAccountRsp + 19, // 196: crabs.evening_detective_server.EveningDetectiveServer.GetTerms:output_type -> crabs.evening_detective_server.GetTermsRsp + 21, // 197: crabs.evening_detective_server.EveningDetectiveServer.GetPrivacy:output_type -> crabs.evening_detective_server.GetPrivacyRsp + 23, // 198: crabs.evening_detective_server.EveningDetectiveServer.GetConsent:output_type -> crabs.evening_detective_server.GetConsentRsp + 25, // 199: crabs.evening_detective_server.EveningDetectiveServer.GetUsers:output_type -> crabs.evening_detective_server.GetUsersRsp + 28, // 200: crabs.evening_detective_server.EveningDetectiveServer.GetUserByID:output_type -> crabs.evening_detective_server.GetUserByIDRsp + 30, // 201: crabs.evening_detective_server.EveningDetectiveServer.GetMe:output_type -> crabs.evening_detective_server.GetMeRsp + 32, // 202: crabs.evening_detective_server.EveningDetectiveServer.ChangeUserPassword:output_type -> crabs.evening_detective_server.ChangeUserPasswordRsp + 34, // 203: crabs.evening_detective_server.EveningDetectiveServer.AddUserRole:output_type -> crabs.evening_detective_server.AddUserRoleRsp + 36, // 204: crabs.evening_detective_server.EveningDetectiveServer.DeleteUserRole:output_type -> crabs.evening_detective_server.DeleteUserRoleRsp + 38, // 205: crabs.evening_detective_server.EveningDetectiveServer.GetPermissions:output_type -> crabs.evening_detective_server.GetPermissionsRsp + 40, // 206: crabs.evening_detective_server.EveningDetectiveServer.UploadFile:output_type -> crabs.evening_detective_server.UploadFileRsp + 217, // 207: crabs.evening_detective_server.EveningDetectiveServer.DownloadFile:output_type -> google.api.HttpBody + 45, // 208: crabs.evening_detective_server.EveningDetectiveServer.GetPlaylists:output_type -> crabs.evening_detective_server.GetPlaylistsRsp + 47, // 209: crabs.evening_detective_server.EveningDetectiveServer.CreatePlaylist:output_type -> crabs.evening_detective_server.CreatePlaylistRsp + 49, // 210: crabs.evening_detective_server.EveningDetectiveServer.UpdatePlaylist:output_type -> crabs.evening_detective_server.UpdatePlaylistRsp + 51, // 211: crabs.evening_detective_server.EveningDetectiveServer.DeletePlaylist:output_type -> crabs.evening_detective_server.DeletePlaylistRsp + 53, // 212: crabs.evening_detective_server.EveningDetectiveServer.UploadPlaylistTrack:output_type -> crabs.evening_detective_server.UploadPlaylistTrackRsp + 55, // 213: crabs.evening_detective_server.EveningDetectiveServer.DeletePlaylistTrack:output_type -> crabs.evening_detective_server.DeletePlaylistTrackRsp + 57, // 214: crabs.evening_detective_server.EveningDetectiveServer.SetScenarioPlaylist:output_type -> crabs.evening_detective_server.SetScenarioPlaylistRsp + 59, // 215: crabs.evening_detective_server.EveningDetectiveServer.AddScenario:output_type -> crabs.evening_detective_server.AddScenarioRsp + 61, // 216: crabs.evening_detective_server.EveningDetectiveServer.GetMyScenarios:output_type -> crabs.evening_detective_server.GetMyScenariosRsp + 63, // 217: crabs.evening_detective_server.EveningDetectiveServer.GetScenariosCatalog:output_type -> crabs.evening_detective_server.GetScenariosCatalogRsp + 65, // 218: crabs.evening_detective_server.EveningDetectiveServer.GetFullScenario:output_type -> crabs.evening_detective_server.GetScenarioRsp + 65, // 219: crabs.evening_detective_server.EveningDetectiveServer.GetScenario:output_type -> crabs.evening_detective_server.GetScenarioRsp + 79, // 220: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenario:output_type -> crabs.evening_detective_server.UpdateScenarioRsp + 81, // 221: crabs.evening_detective_server.EveningDetectiveServer.PublicScenario:output_type -> crabs.evening_detective_server.PublicScenarioRsp + 83, // 222: crabs.evening_detective_server.EveningDetectiveServer.DraftScenario:output_type -> crabs.evening_detective_server.DraftScenarioRsp + 85, // 223: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenario:output_type -> crabs.evening_detective_server.DeleteScenarioRsp + 87, // 224: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioPlace:output_type -> crabs.evening_detective_server.AddScenarioPlaceRsp + 89, // 225: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioPlace:output_type -> crabs.evening_detective_server.UpdateScenarioPlaceRsp + 91, // 226: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioPlace:output_type -> crabs.evening_detective_server.DeleteScenarioPlaceRsp + 97, // 227: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioQuestion:output_type -> crabs.evening_detective_server.AddScenarioQuestionRsp + 99, // 228: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioQuestion:output_type -> crabs.evening_detective_server.UpdateScenarioQuestionRsp + 101, // 229: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioQuestion:output_type -> crabs.evening_detective_server.DeleteScenarioQuestionRsp + 207, // 230: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioBackground:output_type -> crabs.evening_detective_server.UpdateScenarioBackgroundRsp + 95, // 231: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioIntro:output_type -> crabs.evening_detective_server.UpdateScenarioIntroRsp + 93, // 232: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioConclusion:output_type -> crabs.evening_detective_server.UpdateScenarioConclusionRsp + 217, // 233: crabs.evening_detective_server.EveningDetectiveServer.DownloadScenarioArchive:output_type -> google.api.HttpBody + 103, // 234: crabs.evening_detective_server.EveningDetectiveServer.UploadScenarioArchive:output_type -> crabs.evening_detective_server.UploadScenarioArchiveRsp + 105, // 235: crabs.evening_detective_server.EveningDetectiveServer.AddGame:output_type -> crabs.evening_detective_server.AddGameRsp + 107, // 236: crabs.evening_detective_server.EveningDetectiveServer.GetGames:output_type -> crabs.evening_detective_server.GetGamesRsp + 155, // 237: crabs.evening_detective_server.EveningDetectiveServer.GetGame:output_type -> crabs.evening_detective_server.GetGameRsp + 209, // 238: crabs.evening_detective_server.EveningDetectiveServer.IssueGameTickets:output_type -> crabs.evening_detective_server.IssueGameTicketsRsp + 212, // 239: crabs.evening_detective_server.EveningDetectiveServer.GetTicket:output_type -> crabs.evening_detective_server.GetTicketRsp + 214, // 240: crabs.evening_detective_server.EveningDetectiveServer.AcceptTicket:output_type -> crabs.evening_detective_server.AcceptTicketRsp + 111, // 241: crabs.evening_detective_server.EveningDetectiveServer.CreateScreenSession:output_type -> crabs.evening_detective_server.CreateScreenSessionRsp + 113, // 242: crabs.evening_detective_server.EveningDetectiveServer.GetScreenState:output_type -> crabs.evening_detective_server.GetScreenStateRsp + 115, // 243: crabs.evening_detective_server.EveningDetectiveServer.GetGameScreens:output_type -> crabs.evening_detective_server.GetGameScreensRsp + 118, // 244: crabs.evening_detective_server.EveningDetectiveServer.GetGameMusic:output_type -> crabs.evening_detective_server.GetGameMusicRsp + 120, // 245: crabs.evening_detective_server.EveningDetectiveServer.SetGameMusic:output_type -> crabs.evening_detective_server.SetGameMusicRsp + 122, // 246: crabs.evening_detective_server.EveningDetectiveServer.AdvanceScreenMusic:output_type -> crabs.evening_detective_server.AdvanceScreenMusicRsp + 124, // 247: crabs.evening_detective_server.EveningDetectiveServer.BindScreen:output_type -> crabs.evening_detective_server.BindScreenRsp + 126, // 248: crabs.evening_detective_server.EveningDetectiveServer.UnbindScreen:output_type -> crabs.evening_detective_server.UnbindScreenRsp + 128, // 249: crabs.evening_detective_server.EveningDetectiveServer.SetScreenSound:output_type -> crabs.evening_detective_server.SetScreenSoundRsp + 131, // 250: crabs.evening_detective_server.EveningDetectiveServer.GetGameMap:output_type -> crabs.evening_detective_server.GetGameMapRsp + 133, // 251: crabs.evening_detective_server.EveningDetectiveServer.UpdateGameMapItem:output_type -> crabs.evening_detective_server.UpdateGameMapItemRsp + 135, // 252: crabs.evening_detective_server.EveningDetectiveServer.SetScreenMode:output_type -> crabs.evening_detective_server.SetScreenModeRsp + 137, // 253: crabs.evening_detective_server.EveningDetectiveServer.SetScreenTimer:output_type -> crabs.evening_detective_server.SetScreenTimerRsp + 139, // 254: crabs.evening_detective_server.EveningDetectiveServer.SendScreenCommand:output_type -> crabs.evening_detective_server.SendScreenCommandRsp + 143, // 255: crabs.evening_detective_server.EveningDetectiveServer.GetScreenPlan:output_type -> crabs.evening_detective_server.GetScreenPlanRsp + 145, // 256: crabs.evening_detective_server.EveningDetectiveServer.SaveScreenPlan:output_type -> crabs.evening_detective_server.SaveScreenPlanRsp + 147, // 257: crabs.evening_detective_server.EveningDetectiveServer.SetScreenPlanStep:output_type -> crabs.evening_detective_server.SetScreenPlanStepRsp + 149, // 258: crabs.evening_detective_server.EveningDetectiveServer.GetScreenResults:output_type -> crabs.evening_detective_server.GetScreenResultsRsp + 217, // 259: crabs.evening_detective_server.EveningDetectiveServer.DownloadTeamQR:output_type -> google.api.HttpBody + 157, // 260: crabs.evening_detective_server.EveningDetectiveServer.GetGameAnswers:output_type -> crabs.evening_detective_server.GetGameAnswersRsp + 161, // 261: crabs.evening_detective_server.EveningDetectiveServer.GetGameResults:output_type -> crabs.evening_detective_server.GetGameResultsRsp + 164, // 262: crabs.evening_detective_server.EveningDetectiveServer.CreateGameReview:output_type -> crabs.evening_detective_server.CreateGameReviewRsp + 168, // 263: crabs.evening_detective_server.EveningDetectiveServer.GetGameReviews:output_type -> crabs.evening_detective_server.GetGameReviewsRsp + 168, // 264: crabs.evening_detective_server.EveningDetectiveServer.GetScenarioReviews:output_type -> crabs.evening_detective_server.GetGameReviewsRsp + 168, // 265: crabs.evening_detective_server.EveningDetectiveServer.GetGameReviewsForModeration:output_type -> crabs.evening_detective_server.GetGameReviewsRsp + 168, // 266: crabs.evening_detective_server.EveningDetectiveServer.GetReviewsForModeration:output_type -> crabs.evening_detective_server.GetGameReviewsRsp + 170, // 267: crabs.evening_detective_server.EveningDetectiveServer.ModerateGameReview:output_type -> crabs.evening_detective_server.ModerateGameReviewRsp + 172, // 268: crabs.evening_detective_server.EveningDetectiveServer.UpdateGame:output_type -> crabs.evening_detective_server.UpdateGameRsp + 174, // 269: crabs.evening_detective_server.EveningDetectiveServer.StartGame:output_type -> crabs.evening_detective_server.StartGameRsp + 176, // 270: crabs.evening_detective_server.EveningDetectiveServer.PauseGame:output_type -> crabs.evening_detective_server.PauseGameRsp + 178, // 271: crabs.evening_detective_server.EveningDetectiveServer.PlayGame:output_type -> crabs.evening_detective_server.PlayGameRsp + 180, // 272: crabs.evening_detective_server.EveningDetectiveServer.FinishGame:output_type -> crabs.evening_detective_server.FinishGameRsp + 182, // 273: crabs.evening_detective_server.EveningDetectiveServer.ResetGame:output_type -> crabs.evening_detective_server.ResetGameRsp + 184, // 274: crabs.evening_detective_server.EveningDetectiveServer.DeleteGame:output_type -> crabs.evening_detective_server.DeleteGameRsp + 186, // 275: crabs.evening_detective_server.EveningDetectiveServer.AddTeam:output_type -> crabs.evening_detective_server.AddTeamRsp + 188, // 276: crabs.evening_detective_server.EveningDetectiveServer.UpdateTeam:output_type -> crabs.evening_detective_server.UpdateTeamRsp + 190, // 277: crabs.evening_detective_server.EveningDetectiveServer.DeleteTeam:output_type -> crabs.evening_detective_server.DeleteTeamRsp + 192, // 278: crabs.evening_detective_server.EveningDetectiveServer.GiveTeamApplications:output_type -> crabs.evening_detective_server.GiveTeamApplicationsRsp + 194, // 279: crabs.evening_detective_server.EveningDetectiveServer.GetTeamStory:output_type -> crabs.evening_detective_server.GetTeamStoryRsp + 197, // 280: crabs.evening_detective_server.EveningDetectiveServer.AddTeamAction:output_type -> crabs.evening_detective_server.AddTeamActionRsp + 199, // 281: crabs.evening_detective_server.EveningDetectiveServer.DeleteLastTeamAction:output_type -> crabs.evening_detective_server.DeleteLastTeamActionRsp + 201, // 282: crabs.evening_detective_server.EveningDetectiveServer.GetTeamAnswers:output_type -> crabs.evening_detective_server.GetTeamAnswersRsp + 203, // 283: crabs.evening_detective_server.EveningDetectiveServer.SubmitTeamAnswers:output_type -> crabs.evening_detective_server.SubmitTeamAnswersRsp + 205, // 284: crabs.evening_detective_server.EveningDetectiveServer.SetTeamAnswerScore:output_type -> crabs.evening_detective_server.SetTeamAnswerScoreRsp + 187, // [187:285] is the sub-list for method output_type + 89, // [89:187] is the sub-list for method input_type + 89, // [89:89] is the sub-list for extension type_name + 89, // [89:89] is the sub-list for extension extendee + 0, // [0:89] is the sub-list for field type_name } func init() { file_main_proto_init() } @@ -11137,19 +12570,19 @@ func file_main_proto_init() { if File_main_proto != nil { return } - file_main_proto_msgTypes[46].OneofWrappers = []any{} - file_main_proto_msgTypes[56].OneofWrappers = []any{} - file_main_proto_msgTypes[88].OneofWrappers = []any{} - file_main_proto_msgTypes[89].OneofWrappers = []any{} - file_main_proto_msgTypes[177].OneofWrappers = []any{} - file_main_proto_msgTypes[188].OneofWrappers = []any{} + file_main_proto_msgTypes[62].OneofWrappers = []any{} + file_main_proto_msgTypes[72].OneofWrappers = []any{} + file_main_proto_msgTypes[104].OneofWrappers = []any{} + file_main_proto_msgTypes[105].OneofWrappers = []any{} + file_main_proto_msgTypes[200].OneofWrappers = []any{} + file_main_proto_msgTypes[211].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_main_proto_rawDesc), len(file_main_proto_rawDesc)), - NumEnums: 3, - NumMessages: 189, + NumEnums: 4, + NumMessages: 212, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/main.pb.gw.go b/proto/main.pb.gw.go index b974657..f8249bc 100644 --- a/proto/main.pb.gw.go +++ b/proto/main.pb.gw.go @@ -641,6 +641,283 @@ func local_request_EveningDetectiveServer_DownloadFile_0(ctx context.Context, ma return msg, metadata, err } +func request_EveningDetectiveServer_GetPlaylists_0(ctx context.Context, marshaler runtime.Marshaler, client EveningDetectiveServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq GetPlaylistsReq + metadata runtime.ServerMetadata + ) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } + msg, err := client.GetPlaylists(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_EveningDetectiveServer_GetPlaylists_0(ctx context.Context, marshaler runtime.Marshaler, server EveningDetectiveServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq GetPlaylistsReq + metadata runtime.ServerMetadata + ) + msg, err := server.GetPlaylists(ctx, &protoReq) + return msg, metadata, err +} + +func request_EveningDetectiveServer_CreatePlaylist_0(ctx context.Context, marshaler runtime.Marshaler, client EveningDetectiveServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq CreatePlaylistReq + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } + msg, err := client.CreatePlaylist(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_EveningDetectiveServer_CreatePlaylist_0(ctx context.Context, marshaler runtime.Marshaler, server EveningDetectiveServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq CreatePlaylistReq + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.CreatePlaylist(ctx, &protoReq) + return msg, metadata, err +} + +func request_EveningDetectiveServer_UpdatePlaylist_0(ctx context.Context, marshaler runtime.Marshaler, client EveningDetectiveServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq UpdatePlaylistReq + metadata runtime.ServerMetadata + err error + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } + val, ok := pathParams["ID"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "ID") + } + protoReq.ID, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ID", err) + } + msg, err := client.UpdatePlaylist(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_EveningDetectiveServer_UpdatePlaylist_0(ctx context.Context, marshaler runtime.Marshaler, server EveningDetectiveServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq UpdatePlaylistReq + metadata runtime.ServerMetadata + err error + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + val, ok := pathParams["ID"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "ID") + } + protoReq.ID, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ID", err) + } + msg, err := server.UpdatePlaylist(ctx, &protoReq) + return msg, metadata, err +} + +func request_EveningDetectiveServer_DeletePlaylist_0(ctx context.Context, marshaler runtime.Marshaler, client EveningDetectiveServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq DeletePlaylistReq + metadata runtime.ServerMetadata + err error + ) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } + val, ok := pathParams["ID"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "ID") + } + protoReq.ID, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ID", err) + } + msg, err := client.DeletePlaylist(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_EveningDetectiveServer_DeletePlaylist_0(ctx context.Context, marshaler runtime.Marshaler, server EveningDetectiveServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq DeletePlaylistReq + metadata runtime.ServerMetadata + err error + ) + val, ok := pathParams["ID"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "ID") + } + protoReq.ID, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ID", err) + } + msg, err := server.DeletePlaylist(ctx, &protoReq) + return msg, metadata, err +} + +func request_EveningDetectiveServer_UploadPlaylistTrack_0(ctx context.Context, marshaler runtime.Marshaler, client EveningDetectiveServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq UploadPlaylistTrackReq + metadata runtime.ServerMetadata + err error + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } + val, ok := pathParams["playlistID"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "playlistID") + } + protoReq.PlaylistID, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "playlistID", err) + } + msg, err := client.UploadPlaylistTrack(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_EveningDetectiveServer_UploadPlaylistTrack_0(ctx context.Context, marshaler runtime.Marshaler, server EveningDetectiveServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq UploadPlaylistTrackReq + metadata runtime.ServerMetadata + err error + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + val, ok := pathParams["playlistID"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "playlistID") + } + protoReq.PlaylistID, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "playlistID", err) + } + msg, err := server.UploadPlaylistTrack(ctx, &protoReq) + return msg, metadata, err +} + +func request_EveningDetectiveServer_DeletePlaylistTrack_0(ctx context.Context, marshaler runtime.Marshaler, client EveningDetectiveServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq DeletePlaylistTrackReq + metadata runtime.ServerMetadata + err error + ) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } + val, ok := pathParams["playlistID"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "playlistID") + } + protoReq.PlaylistID, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "playlistID", err) + } + val, ok = pathParams["trackID"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "trackID") + } + protoReq.TrackID, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "trackID", err) + } + msg, err := client.DeletePlaylistTrack(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_EveningDetectiveServer_DeletePlaylistTrack_0(ctx context.Context, marshaler runtime.Marshaler, server EveningDetectiveServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq DeletePlaylistTrackReq + metadata runtime.ServerMetadata + err error + ) + val, ok := pathParams["playlistID"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "playlistID") + } + protoReq.PlaylistID, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "playlistID", err) + } + val, ok = pathParams["trackID"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "trackID") + } + protoReq.TrackID, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "trackID", err) + } + msg, err := server.DeletePlaylistTrack(ctx, &protoReq) + return msg, metadata, err +} + +func request_EveningDetectiveServer_SetScenarioPlaylist_0(ctx context.Context, marshaler runtime.Marshaler, client EveningDetectiveServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq SetScenarioPlaylistReq + metadata runtime.ServerMetadata + err error + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } + val, ok := pathParams["ID"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "ID") + } + protoReq.ID, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ID", err) + } + msg, err := client.SetScenarioPlaylist(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_EveningDetectiveServer_SetScenarioPlaylist_0(ctx context.Context, marshaler runtime.Marshaler, server EveningDetectiveServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq SetScenarioPlaylistReq + metadata runtime.ServerMetadata + err error + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + val, ok := pathParams["ID"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "ID") + } + protoReq.ID, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "ID", err) + } + msg, err := server.SetScenarioPlaylist(ctx, &protoReq) + return msg, metadata, err +} + func request_EveningDetectiveServer_AddScenario_0(ctx context.Context, marshaler runtime.Marshaler, client EveningDetectiveServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var ( protoReq AddScenarioReq @@ -1794,6 +2071,117 @@ func local_request_EveningDetectiveServer_GetGameScreens_0(ctx context.Context, return msg, metadata, err } +func request_EveningDetectiveServer_GetGameMusic_0(ctx context.Context, marshaler runtime.Marshaler, client EveningDetectiveServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq GetGameMusicReq + metadata runtime.ServerMetadata + err error + ) + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } + val, ok := pathParams["gameID"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "gameID") + } + protoReq.GameID, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gameID", err) + } + msg, err := client.GetGameMusic(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_EveningDetectiveServer_GetGameMusic_0(ctx context.Context, marshaler runtime.Marshaler, server EveningDetectiveServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq GetGameMusicReq + metadata runtime.ServerMetadata + err error + ) + val, ok := pathParams["gameID"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "gameID") + } + protoReq.GameID, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gameID", err) + } + msg, err := server.GetGameMusic(ctx, &protoReq) + return msg, metadata, err +} + +func request_EveningDetectiveServer_SetGameMusic_0(ctx context.Context, marshaler runtime.Marshaler, client EveningDetectiveServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq SetGameMusicReq + metadata runtime.ServerMetadata + err error + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } + val, ok := pathParams["gameID"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "gameID") + } + protoReq.GameID, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gameID", err) + } + msg, err := client.SetGameMusic(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_EveningDetectiveServer_SetGameMusic_0(ctx context.Context, marshaler runtime.Marshaler, server EveningDetectiveServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq SetGameMusicReq + metadata runtime.ServerMetadata + err error + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + val, ok := pathParams["gameID"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "gameID") + } + protoReq.GameID, err = runtime.Int32(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "gameID", err) + } + msg, err := server.SetGameMusic(ctx, &protoReq) + return msg, metadata, err +} + +func request_EveningDetectiveServer_AdvanceScreenMusic_0(ctx context.Context, marshaler runtime.Marshaler, client EveningDetectiveServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq AdvanceScreenMusicReq + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if req.Body != nil { + _, _ = io.Copy(io.Discard, req.Body) + } + msg, err := client.AdvanceScreenMusic(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_EveningDetectiveServer_AdvanceScreenMusic_0(ctx context.Context, marshaler runtime.Marshaler, server EveningDetectiveServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq AdvanceScreenMusicReq + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.AdvanceScreenMusic(ctx, &protoReq) + return msg, metadata, err +} + func request_EveningDetectiveServer_BindScreen_0(ctx context.Context, marshaler runtime.Marshaler, client EveningDetectiveServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var ( protoReq BindScreenReq @@ -3868,6 +4256,146 @@ func RegisterEveningDetectiveServerHandlerServer(ctx context.Context, mux *runti } forward_EveningDetectiveServer_DownloadFile_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) + mux.Handle(http.MethodGet, pattern_EveningDetectiveServer_GetPlaylists_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/GetPlaylists", runtime.WithHTTPPathPattern("/api/playlists")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EveningDetectiveServer_GetPlaylists_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_GetPlaylists_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_EveningDetectiveServer_CreatePlaylist_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/CreatePlaylist", runtime.WithHTTPPathPattern("/api/playlists")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EveningDetectiveServer_CreatePlaylist_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_CreatePlaylist_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPut, pattern_EveningDetectiveServer_UpdatePlaylist_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/UpdatePlaylist", runtime.WithHTTPPathPattern("/api/playlists/{ID}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EveningDetectiveServer_UpdatePlaylist_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_UpdatePlaylist_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodDelete, pattern_EveningDetectiveServer_DeletePlaylist_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/DeletePlaylist", runtime.WithHTTPPathPattern("/api/playlists/{ID}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EveningDetectiveServer_DeletePlaylist_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_DeletePlaylist_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_EveningDetectiveServer_UploadPlaylistTrack_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/UploadPlaylistTrack", runtime.WithHTTPPathPattern("/api/playlists/{playlistID}/tracks")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EveningDetectiveServer_UploadPlaylistTrack_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_UploadPlaylistTrack_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodDelete, pattern_EveningDetectiveServer_DeletePlaylistTrack_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/DeletePlaylistTrack", runtime.WithHTTPPathPattern("/api/playlists/{playlistID}/tracks/{trackID}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EveningDetectiveServer_DeletePlaylistTrack_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_DeletePlaylistTrack_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPut, pattern_EveningDetectiveServer_SetScenarioPlaylist_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/SetScenarioPlaylist", runtime.WithHTTPPathPattern("/api/scenarios/{ID}/playlist")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EveningDetectiveServer_SetScenarioPlaylist_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_SetScenarioPlaylist_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) mux.Handle(http.MethodPost, pattern_EveningDetectiveServer_AddScenario_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -4448,6 +4976,66 @@ func RegisterEveningDetectiveServerHandlerServer(ctx context.Context, mux *runti } forward_EveningDetectiveServer_GetGameScreens_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) + mux.Handle(http.MethodGet, pattern_EveningDetectiveServer_GetGameMusic_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/GetGameMusic", runtime.WithHTTPPathPattern("/api/games/{gameID}/music")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EveningDetectiveServer_GetGameMusic_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_GetGameMusic_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_EveningDetectiveServer_SetGameMusic_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/SetGameMusic", runtime.WithHTTPPathPattern("/api/games/{gameID}/music")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EveningDetectiveServer_SetGameMusic_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_SetGameMusic_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_EveningDetectiveServer_AdvanceScreenMusic_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/AdvanceScreenMusic", runtime.WithHTTPPathPattern("/api/screens/music/advance")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EveningDetectiveServer_AdvanceScreenMusic_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_AdvanceScreenMusic_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) mux.Handle(http.MethodPost, pattern_EveningDetectiveServer_BindScreen_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -5605,6 +6193,125 @@ func RegisterEveningDetectiveServerHandlerClient(ctx context.Context, mux *runti } forward_EveningDetectiveServer_DownloadFile_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) + mux.Handle(http.MethodGet, pattern_EveningDetectiveServer_GetPlaylists_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/GetPlaylists", runtime.WithHTTPPathPattern("/api/playlists")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EveningDetectiveServer_GetPlaylists_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_GetPlaylists_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_EveningDetectiveServer_CreatePlaylist_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/CreatePlaylist", runtime.WithHTTPPathPattern("/api/playlists")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EveningDetectiveServer_CreatePlaylist_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_CreatePlaylist_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPut, pattern_EveningDetectiveServer_UpdatePlaylist_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/UpdatePlaylist", runtime.WithHTTPPathPattern("/api/playlists/{ID}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EveningDetectiveServer_UpdatePlaylist_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_UpdatePlaylist_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodDelete, pattern_EveningDetectiveServer_DeletePlaylist_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/DeletePlaylist", runtime.WithHTTPPathPattern("/api/playlists/{ID}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EveningDetectiveServer_DeletePlaylist_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_DeletePlaylist_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_EveningDetectiveServer_UploadPlaylistTrack_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/UploadPlaylistTrack", runtime.WithHTTPPathPattern("/api/playlists/{playlistID}/tracks")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EveningDetectiveServer_UploadPlaylistTrack_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_UploadPlaylistTrack_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodDelete, pattern_EveningDetectiveServer_DeletePlaylistTrack_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/DeletePlaylistTrack", runtime.WithHTTPPathPattern("/api/playlists/{playlistID}/tracks/{trackID}")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EveningDetectiveServer_DeletePlaylistTrack_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_DeletePlaylistTrack_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPut, pattern_EveningDetectiveServer_SetScenarioPlaylist_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/SetScenarioPlaylist", runtime.WithHTTPPathPattern("/api/scenarios/{ID}/playlist")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EveningDetectiveServer_SetScenarioPlaylist_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_SetScenarioPlaylist_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) mux.Handle(http.MethodPost, pattern_EveningDetectiveServer_AddScenario_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -6098,6 +6805,57 @@ func RegisterEveningDetectiveServerHandlerClient(ctx context.Context, mux *runti } forward_EveningDetectiveServer_GetGameScreens_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) + mux.Handle(http.MethodGet, pattern_EveningDetectiveServer_GetGameMusic_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/GetGameMusic", runtime.WithHTTPPathPattern("/api/games/{gameID}/music")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EveningDetectiveServer_GetGameMusic_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_GetGameMusic_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_EveningDetectiveServer_SetGameMusic_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/SetGameMusic", runtime.WithHTTPPathPattern("/api/games/{gameID}/music")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EveningDetectiveServer_SetGameMusic_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_SetGameMusic_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_EveningDetectiveServer_AdvanceScreenMusic_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/crabs.evening_detective_server.EveningDetectiveServer/AdvanceScreenMusic", runtime.WithHTTPPathPattern("/api/screens/music/advance")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EveningDetectiveServer_AdvanceScreenMusic_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_EveningDetectiveServer_AdvanceScreenMusic_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) mux.Handle(http.MethodPost, pattern_EveningDetectiveServer_BindScreen_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -6769,6 +7527,13 @@ var ( pattern_EveningDetectiveServer_GetPermissions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "ui", "permissions"}, "")) pattern_EveningDetectiveServer_UploadFile_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "files", "upload"}, "")) pattern_EveningDetectiveServer_DownloadFile_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "files", "filename"}, "")) + pattern_EveningDetectiveServer_GetPlaylists_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "playlists"}, "")) + pattern_EveningDetectiveServer_CreatePlaylist_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "playlists"}, "")) + pattern_EveningDetectiveServer_UpdatePlaylist_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "playlists", "ID"}, "")) + pattern_EveningDetectiveServer_DeletePlaylist_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "playlists", "ID"}, "")) + pattern_EveningDetectiveServer_UploadPlaylistTrack_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "playlists", "playlistID", "tracks"}, "")) + pattern_EveningDetectiveServer_DeletePlaylistTrack_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "playlists", "playlistID", "tracks", "trackID"}, "")) + pattern_EveningDetectiveServer_SetScenarioPlaylist_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "scenarios", "ID", "playlist"}, "")) pattern_EveningDetectiveServer_AddScenario_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "scenario"}, "")) pattern_EveningDetectiveServer_GetMyScenarios_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "my-scenarios"}, "")) pattern_EveningDetectiveServer_GetScenariosCatalog_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "catalog"}, "")) @@ -6798,6 +7563,9 @@ var ( pattern_EveningDetectiveServer_CreateScreenSession_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "screens"}, "")) pattern_EveningDetectiveServer_GetScreenState_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "screens", "state"}, "")) pattern_EveningDetectiveServer_GetGameScreens_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "gameID", "screens"}, "")) + pattern_EveningDetectiveServer_GetGameMusic_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "gameID", "music"}, "")) + pattern_EveningDetectiveServer_SetGameMusic_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "gameID", "music"}, "")) + pattern_EveningDetectiveServer_AdvanceScreenMusic_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "screens", "music", "advance"}, "")) pattern_EveningDetectiveServer_BindScreen_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "screens", "screenID", "bind"}, "")) pattern_EveningDetectiveServer_UnbindScreen_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "screens", "screenID", "unbind"}, "")) pattern_EveningDetectiveServer_SetScreenSound_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "screens", "screenID", "sound"}, "")) @@ -6860,6 +7628,13 @@ var ( forward_EveningDetectiveServer_GetPermissions_0 = runtime.ForwardResponseMessage forward_EveningDetectiveServer_UploadFile_0 = runtime.ForwardResponseMessage forward_EveningDetectiveServer_DownloadFile_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetPlaylists_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_CreatePlaylist_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_UpdatePlaylist_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_DeletePlaylist_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_UploadPlaylistTrack_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_DeletePlaylistTrack_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_SetScenarioPlaylist_0 = runtime.ForwardResponseMessage forward_EveningDetectiveServer_AddScenario_0 = runtime.ForwardResponseMessage forward_EveningDetectiveServer_GetMyScenarios_0 = runtime.ForwardResponseMessage forward_EveningDetectiveServer_GetScenariosCatalog_0 = runtime.ForwardResponseMessage @@ -6889,6 +7664,9 @@ var ( forward_EveningDetectiveServer_CreateScreenSession_0 = runtime.ForwardResponseMessage forward_EveningDetectiveServer_GetScreenState_0 = runtime.ForwardResponseMessage forward_EveningDetectiveServer_GetGameScreens_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_GetGameMusic_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_SetGameMusic_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_AdvanceScreenMusic_0 = runtime.ForwardResponseMessage forward_EveningDetectiveServer_BindScreen_0 = runtime.ForwardResponseMessage forward_EveningDetectiveServer_UnbindScreen_0 = runtime.ForwardResponseMessage forward_EveningDetectiveServer_SetScreenSound_0 = runtime.ForwardResponseMessage diff --git a/proto/main_grpc.pb.go b/proto/main_grpc.pb.go index 577895a..79f19e8 100644 --- a/proto/main_grpc.pb.go +++ b/proto/main_grpc.pb.go @@ -47,6 +47,13 @@ const ( EveningDetectiveServer_GetPermissions_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetPermissions" EveningDetectiveServer_UploadFile_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UploadFile" EveningDetectiveServer_DownloadFile_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DownloadFile" + EveningDetectiveServer_GetPlaylists_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetPlaylists" + EveningDetectiveServer_CreatePlaylist_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/CreatePlaylist" + EveningDetectiveServer_UpdatePlaylist_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UpdatePlaylist" + EveningDetectiveServer_DeletePlaylist_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DeletePlaylist" + EveningDetectiveServer_UploadPlaylistTrack_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UploadPlaylistTrack" + EveningDetectiveServer_DeletePlaylistTrack_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DeletePlaylistTrack" + EveningDetectiveServer_SetScenarioPlaylist_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/SetScenarioPlaylist" EveningDetectiveServer_AddScenario_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/AddScenario" EveningDetectiveServer_GetMyScenarios_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetMyScenarios" EveningDetectiveServer_GetScenariosCatalog_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetScenariosCatalog" @@ -76,6 +83,9 @@ const ( EveningDetectiveServer_CreateScreenSession_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/CreateScreenSession" EveningDetectiveServer_GetScreenState_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetScreenState" EveningDetectiveServer_GetGameScreens_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetGameScreens" + EveningDetectiveServer_GetGameMusic_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetGameMusic" + EveningDetectiveServer_SetGameMusic_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/SetGameMusic" + EveningDetectiveServer_AdvanceScreenMusic_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/AdvanceScreenMusic" EveningDetectiveServer_BindScreen_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/BindScreen" EveningDetectiveServer_UnbindScreen_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UnbindScreen" EveningDetectiveServer_SetScreenSound_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/SetScreenSound" @@ -143,6 +153,13 @@ type EveningDetectiveServerClient interface { GetPermissions(ctx context.Context, in *GetPermissionsReq, opts ...grpc.CallOption) (*GetPermissionsRsp, error) UploadFile(ctx context.Context, in *UploadFileReq, opts ...grpc.CallOption) (*UploadFileRsp, error) DownloadFile(ctx context.Context, in *DownloadFileReq, opts ...grpc.CallOption) (*httpbody.HttpBody, error) + GetPlaylists(ctx context.Context, in *GetPlaylistsReq, opts ...grpc.CallOption) (*GetPlaylistsRsp, error) + CreatePlaylist(ctx context.Context, in *CreatePlaylistReq, opts ...grpc.CallOption) (*CreatePlaylistRsp, error) + UpdatePlaylist(ctx context.Context, in *UpdatePlaylistReq, opts ...grpc.CallOption) (*UpdatePlaylistRsp, error) + DeletePlaylist(ctx context.Context, in *DeletePlaylistReq, opts ...grpc.CallOption) (*DeletePlaylistRsp, error) + UploadPlaylistTrack(ctx context.Context, in *UploadPlaylistTrackReq, opts ...grpc.CallOption) (*UploadPlaylistTrackRsp, error) + DeletePlaylistTrack(ctx context.Context, in *DeletePlaylistTrackReq, opts ...grpc.CallOption) (*DeletePlaylistTrackRsp, error) + SetScenarioPlaylist(ctx context.Context, in *SetScenarioPlaylistReq, opts ...grpc.CallOption) (*SetScenarioPlaylistRsp, error) AddScenario(ctx context.Context, in *AddScenarioReq, opts ...grpc.CallOption) (*AddScenarioRsp, error) GetMyScenarios(ctx context.Context, in *GetMyScenariosReq, opts ...grpc.CallOption) (*GetMyScenariosRsp, error) GetScenariosCatalog(ctx context.Context, in *GetScenariosCatalogReq, opts ...grpc.CallOption) (*GetScenariosCatalogRsp, error) @@ -176,6 +193,9 @@ type EveningDetectiveServerClient interface { // Получить состояние экрана по его токену. Вызывается самим экраном. GetScreenState(ctx context.Context, in *GetScreenStateReq, opts ...grpc.CallOption) (*GetScreenStateRsp, error) GetGameScreens(ctx context.Context, in *GetGameScreensReq, opts ...grpc.CallOption) (*GetGameScreensRsp, error) + GetGameMusic(ctx context.Context, in *GetGameMusicReq, opts ...grpc.CallOption) (*GetGameMusicRsp, error) + SetGameMusic(ctx context.Context, in *SetGameMusicReq, opts ...grpc.CallOption) (*SetGameMusicRsp, error) + AdvanceScreenMusic(ctx context.Context, in *AdvanceScreenMusicReq, opts ...grpc.CallOption) (*AdvanceScreenMusicRsp, error) // Привязать экран к игре. Требует авторизацию организатора, автора или администратора. BindScreen(ctx context.Context, in *BindScreenReq, opts ...grpc.CallOption) (*BindScreenRsp, error) // Отвязать экран от игры. Требует авторизацию организатора, автора или администратора. @@ -438,6 +458,76 @@ func (c *eveningDetectiveServerClient) DownloadFile(ctx context.Context, in *Dow return out, nil } +func (c *eveningDetectiveServerClient) GetPlaylists(ctx context.Context, in *GetPlaylistsReq, opts ...grpc.CallOption) (*GetPlaylistsRsp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetPlaylistsRsp) + err := c.cc.Invoke(ctx, EveningDetectiveServer_GetPlaylists_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *eveningDetectiveServerClient) CreatePlaylist(ctx context.Context, in *CreatePlaylistReq, opts ...grpc.CallOption) (*CreatePlaylistRsp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(CreatePlaylistRsp) + err := c.cc.Invoke(ctx, EveningDetectiveServer_CreatePlaylist_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *eveningDetectiveServerClient) UpdatePlaylist(ctx context.Context, in *UpdatePlaylistReq, opts ...grpc.CallOption) (*UpdatePlaylistRsp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(UpdatePlaylistRsp) + err := c.cc.Invoke(ctx, EveningDetectiveServer_UpdatePlaylist_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *eveningDetectiveServerClient) DeletePlaylist(ctx context.Context, in *DeletePlaylistReq, opts ...grpc.CallOption) (*DeletePlaylistRsp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(DeletePlaylistRsp) + err := c.cc.Invoke(ctx, EveningDetectiveServer_DeletePlaylist_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *eveningDetectiveServerClient) UploadPlaylistTrack(ctx context.Context, in *UploadPlaylistTrackReq, opts ...grpc.CallOption) (*UploadPlaylistTrackRsp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(UploadPlaylistTrackRsp) + err := c.cc.Invoke(ctx, EveningDetectiveServer_UploadPlaylistTrack_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *eveningDetectiveServerClient) DeletePlaylistTrack(ctx context.Context, in *DeletePlaylistTrackReq, opts ...grpc.CallOption) (*DeletePlaylistTrackRsp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(DeletePlaylistTrackRsp) + err := c.cc.Invoke(ctx, EveningDetectiveServer_DeletePlaylistTrack_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *eveningDetectiveServerClient) SetScenarioPlaylist(ctx context.Context, in *SetScenarioPlaylistReq, opts ...grpc.CallOption) (*SetScenarioPlaylistRsp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(SetScenarioPlaylistRsp) + err := c.cc.Invoke(ctx, EveningDetectiveServer_SetScenarioPlaylist_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *eveningDetectiveServerClient) AddScenario(ctx context.Context, in *AddScenarioReq, opts ...grpc.CallOption) (*AddScenarioRsp, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AddScenarioRsp) @@ -728,6 +818,36 @@ func (c *eveningDetectiveServerClient) GetGameScreens(ctx context.Context, in *G return out, nil } +func (c *eveningDetectiveServerClient) GetGameMusic(ctx context.Context, in *GetGameMusicReq, opts ...grpc.CallOption) (*GetGameMusicRsp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetGameMusicRsp) + err := c.cc.Invoke(ctx, EveningDetectiveServer_GetGameMusic_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *eveningDetectiveServerClient) SetGameMusic(ctx context.Context, in *SetGameMusicReq, opts ...grpc.CallOption) (*SetGameMusicRsp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(SetGameMusicRsp) + err := c.cc.Invoke(ctx, EveningDetectiveServer_SetGameMusic_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *eveningDetectiveServerClient) AdvanceScreenMusic(ctx context.Context, in *AdvanceScreenMusicReq, opts ...grpc.CallOption) (*AdvanceScreenMusicRsp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(AdvanceScreenMusicRsp) + err := c.cc.Invoke(ctx, EveningDetectiveServer_AdvanceScreenMusic_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *eveningDetectiveServerClient) BindScreen(ctx context.Context, in *BindScreenReq, opts ...grpc.CallOption) (*BindScreenRsp, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(BindScreenRsp) @@ -1135,6 +1255,13 @@ type EveningDetectiveServerServer interface { GetPermissions(context.Context, *GetPermissionsReq) (*GetPermissionsRsp, error) UploadFile(context.Context, *UploadFileReq) (*UploadFileRsp, error) DownloadFile(context.Context, *DownloadFileReq) (*httpbody.HttpBody, error) + GetPlaylists(context.Context, *GetPlaylistsReq) (*GetPlaylistsRsp, error) + CreatePlaylist(context.Context, *CreatePlaylistReq) (*CreatePlaylistRsp, error) + UpdatePlaylist(context.Context, *UpdatePlaylistReq) (*UpdatePlaylistRsp, error) + DeletePlaylist(context.Context, *DeletePlaylistReq) (*DeletePlaylistRsp, error) + UploadPlaylistTrack(context.Context, *UploadPlaylistTrackReq) (*UploadPlaylistTrackRsp, error) + DeletePlaylistTrack(context.Context, *DeletePlaylistTrackReq) (*DeletePlaylistTrackRsp, error) + SetScenarioPlaylist(context.Context, *SetScenarioPlaylistReq) (*SetScenarioPlaylistRsp, error) AddScenario(context.Context, *AddScenarioReq) (*AddScenarioRsp, error) GetMyScenarios(context.Context, *GetMyScenariosReq) (*GetMyScenariosRsp, error) GetScenariosCatalog(context.Context, *GetScenariosCatalogReq) (*GetScenariosCatalogRsp, error) @@ -1168,6 +1295,9 @@ type EveningDetectiveServerServer interface { // Получить состояние экрана по его токену. Вызывается самим экраном. GetScreenState(context.Context, *GetScreenStateReq) (*GetScreenStateRsp, error) GetGameScreens(context.Context, *GetGameScreensReq) (*GetGameScreensRsp, error) + GetGameMusic(context.Context, *GetGameMusicReq) (*GetGameMusicRsp, error) + SetGameMusic(context.Context, *SetGameMusicReq) (*SetGameMusicRsp, error) + AdvanceScreenMusic(context.Context, *AdvanceScreenMusicReq) (*AdvanceScreenMusicRsp, error) // Привязать экран к игре. Требует авторизацию организатора, автора или администратора. BindScreen(context.Context, *BindScreenReq) (*BindScreenRsp, error) // Отвязать экран от игры. Требует авторизацию организатора, автора или администратора. @@ -1283,6 +1413,27 @@ func (UnimplementedEveningDetectiveServerServer) UploadFile(context.Context, *Up func (UnimplementedEveningDetectiveServerServer) DownloadFile(context.Context, *DownloadFileReq) (*httpbody.HttpBody, error) { return nil, status.Error(codes.Unimplemented, "method DownloadFile not implemented") } +func (UnimplementedEveningDetectiveServerServer) GetPlaylists(context.Context, *GetPlaylistsReq) (*GetPlaylistsRsp, error) { + return nil, status.Error(codes.Unimplemented, "method GetPlaylists not implemented") +} +func (UnimplementedEveningDetectiveServerServer) CreatePlaylist(context.Context, *CreatePlaylistReq) (*CreatePlaylistRsp, error) { + return nil, status.Error(codes.Unimplemented, "method CreatePlaylist not implemented") +} +func (UnimplementedEveningDetectiveServerServer) UpdatePlaylist(context.Context, *UpdatePlaylistReq) (*UpdatePlaylistRsp, error) { + return nil, status.Error(codes.Unimplemented, "method UpdatePlaylist not implemented") +} +func (UnimplementedEveningDetectiveServerServer) DeletePlaylist(context.Context, *DeletePlaylistReq) (*DeletePlaylistRsp, error) { + return nil, status.Error(codes.Unimplemented, "method DeletePlaylist not implemented") +} +func (UnimplementedEveningDetectiveServerServer) UploadPlaylistTrack(context.Context, *UploadPlaylistTrackReq) (*UploadPlaylistTrackRsp, error) { + return nil, status.Error(codes.Unimplemented, "method UploadPlaylistTrack not implemented") +} +func (UnimplementedEveningDetectiveServerServer) DeletePlaylistTrack(context.Context, *DeletePlaylistTrackReq) (*DeletePlaylistTrackRsp, error) { + return nil, status.Error(codes.Unimplemented, "method DeletePlaylistTrack not implemented") +} +func (UnimplementedEveningDetectiveServerServer) SetScenarioPlaylist(context.Context, *SetScenarioPlaylistReq) (*SetScenarioPlaylistRsp, error) { + return nil, status.Error(codes.Unimplemented, "method SetScenarioPlaylist not implemented") +} func (UnimplementedEveningDetectiveServerServer) AddScenario(context.Context, *AddScenarioReq) (*AddScenarioRsp, error) { return nil, status.Error(codes.Unimplemented, "method AddScenario not implemented") } @@ -1370,6 +1521,15 @@ func (UnimplementedEveningDetectiveServerServer) GetScreenState(context.Context, func (UnimplementedEveningDetectiveServerServer) GetGameScreens(context.Context, *GetGameScreensReq) (*GetGameScreensRsp, error) { return nil, status.Error(codes.Unimplemented, "method GetGameScreens not implemented") } +func (UnimplementedEveningDetectiveServerServer) GetGameMusic(context.Context, *GetGameMusicReq) (*GetGameMusicRsp, error) { + return nil, status.Error(codes.Unimplemented, "method GetGameMusic not implemented") +} +func (UnimplementedEveningDetectiveServerServer) SetGameMusic(context.Context, *SetGameMusicReq) (*SetGameMusicRsp, error) { + return nil, status.Error(codes.Unimplemented, "method SetGameMusic not implemented") +} +func (UnimplementedEveningDetectiveServerServer) AdvanceScreenMusic(context.Context, *AdvanceScreenMusicReq) (*AdvanceScreenMusicRsp, error) { + return nil, status.Error(codes.Unimplemented, "method AdvanceScreenMusic not implemented") +} func (UnimplementedEveningDetectiveServerServer) BindScreen(context.Context, *BindScreenReq) (*BindScreenRsp, error) { return nil, status.Error(codes.Unimplemented, "method BindScreen not implemented") } @@ -1884,6 +2044,132 @@ func _EveningDetectiveServer_DownloadFile_Handler(srv interface{}, ctx context.C return interceptor(ctx, in, info, handler) } +func _EveningDetectiveServer_GetPlaylists_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetPlaylistsReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EveningDetectiveServerServer).GetPlaylists(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: EveningDetectiveServer_GetPlaylists_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EveningDetectiveServerServer).GetPlaylists(ctx, req.(*GetPlaylistsReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _EveningDetectiveServer_CreatePlaylist_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreatePlaylistReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EveningDetectiveServerServer).CreatePlaylist(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: EveningDetectiveServer_CreatePlaylist_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EveningDetectiveServerServer).CreatePlaylist(ctx, req.(*CreatePlaylistReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _EveningDetectiveServer_UpdatePlaylist_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdatePlaylistReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EveningDetectiveServerServer).UpdatePlaylist(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: EveningDetectiveServer_UpdatePlaylist_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EveningDetectiveServerServer).UpdatePlaylist(ctx, req.(*UpdatePlaylistReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _EveningDetectiveServer_DeletePlaylist_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeletePlaylistReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EveningDetectiveServerServer).DeletePlaylist(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: EveningDetectiveServer_DeletePlaylist_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EveningDetectiveServerServer).DeletePlaylist(ctx, req.(*DeletePlaylistReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _EveningDetectiveServer_UploadPlaylistTrack_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UploadPlaylistTrackReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EveningDetectiveServerServer).UploadPlaylistTrack(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: EveningDetectiveServer_UploadPlaylistTrack_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EveningDetectiveServerServer).UploadPlaylistTrack(ctx, req.(*UploadPlaylistTrackReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _EveningDetectiveServer_DeletePlaylistTrack_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeletePlaylistTrackReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EveningDetectiveServerServer).DeletePlaylistTrack(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: EveningDetectiveServer_DeletePlaylistTrack_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EveningDetectiveServerServer).DeletePlaylistTrack(ctx, req.(*DeletePlaylistTrackReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _EveningDetectiveServer_SetScenarioPlaylist_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetScenarioPlaylistReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EveningDetectiveServerServer).SetScenarioPlaylist(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: EveningDetectiveServer_SetScenarioPlaylist_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EveningDetectiveServerServer).SetScenarioPlaylist(ctx, req.(*SetScenarioPlaylistReq)) + } + return interceptor(ctx, in, info, handler) +} + func _EveningDetectiveServer_AddScenario_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(AddScenarioReq) if err := dec(in); err != nil { @@ -2406,6 +2692,60 @@ func _EveningDetectiveServer_GetGameScreens_Handler(srv interface{}, ctx context return interceptor(ctx, in, info, handler) } +func _EveningDetectiveServer_GetGameMusic_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetGameMusicReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EveningDetectiveServerServer).GetGameMusic(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: EveningDetectiveServer_GetGameMusic_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EveningDetectiveServerServer).GetGameMusic(ctx, req.(*GetGameMusicReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _EveningDetectiveServer_SetGameMusic_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetGameMusicReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EveningDetectiveServerServer).SetGameMusic(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: EveningDetectiveServer_SetGameMusic_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EveningDetectiveServerServer).SetGameMusic(ctx, req.(*SetGameMusicReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _EveningDetectiveServer_AdvanceScreenMusic_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AdvanceScreenMusicReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EveningDetectiveServerServer).AdvanceScreenMusic(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: EveningDetectiveServer_AdvanceScreenMusic_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EveningDetectiveServerServer).AdvanceScreenMusic(ctx, req.(*AdvanceScreenMusicReq)) + } + return interceptor(ctx, in, info, handler) +} + func _EveningDetectiveServer_BindScreen_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(BindScreenReq) if err := dec(in); err != nil { @@ -3181,6 +3521,34 @@ var EveningDetectiveServer_ServiceDesc = grpc.ServiceDesc{ MethodName: "DownloadFile", Handler: _EveningDetectiveServer_DownloadFile_Handler, }, + { + MethodName: "GetPlaylists", + Handler: _EveningDetectiveServer_GetPlaylists_Handler, + }, + { + MethodName: "CreatePlaylist", + Handler: _EveningDetectiveServer_CreatePlaylist_Handler, + }, + { + MethodName: "UpdatePlaylist", + Handler: _EveningDetectiveServer_UpdatePlaylist_Handler, + }, + { + MethodName: "DeletePlaylist", + Handler: _EveningDetectiveServer_DeletePlaylist_Handler, + }, + { + MethodName: "UploadPlaylistTrack", + Handler: _EveningDetectiveServer_UploadPlaylistTrack_Handler, + }, + { + MethodName: "DeletePlaylistTrack", + Handler: _EveningDetectiveServer_DeletePlaylistTrack_Handler, + }, + { + MethodName: "SetScenarioPlaylist", + Handler: _EveningDetectiveServer_SetScenarioPlaylist_Handler, + }, { MethodName: "AddScenario", Handler: _EveningDetectiveServer_AddScenario_Handler, @@ -3297,6 +3665,18 @@ var EveningDetectiveServer_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetGameScreens", Handler: _EveningDetectiveServer_GetGameScreens_Handler, }, + { + MethodName: "GetGameMusic", + Handler: _EveningDetectiveServer_GetGameMusic_Handler, + }, + { + MethodName: "SetGameMusic", + Handler: _EveningDetectiveServer_SetGameMusic_Handler, + }, + { + MethodName: "AdvanceScreenMusic", + Handler: _EveningDetectiveServer_AdvanceScreenMusic_Handler, + }, { MethodName: "BindScreen", Handler: _EveningDetectiveServer_BindScreen_Handler,