From 300ff484dfbc7d17281f63cbd47e1faf4bf79e5f Mon Sep 17 00:00:00 2001 From: Fedorov Vladimir Date: Sat, 17 Oct 2026 16:00:21 +0700 Subject: [PATCH] up --- api/main.proto | 18 +- .../main.swagger.json | 55 +- internal/app/game_export.go | 14 + internal/app/game_export_errors.go | 6 +- internal/app/game_export_test.go | 7 +- .../repos/game_exports_repo/fixture_test.go | 24 + internal/repos/game_exports_repo/repo.go | 135 +- internal/repos/game_exports_repo/repo_test.go | 32 +- .../repos/game_exports_repo/reset_test.go | 150 ++ internal/repos/games_repo/repo.go | 4 +- .../services/answer_service/service_test.go | 2 +- .../game_export_service/export_test.go | 16 +- .../game_export_service/local_mode_test.go | 200 ++ .../services/game_export_service/model.go | 4 +- .../services/game_export_service/service.go | 30 +- .../services/game_service/lifecycle_test.go | 2 +- .../gameplay_service/finished_story_test.go | 2 +- .../20261017120000_release_game_exports.sql | 11 + proto/main.pb.go | 1675 +++++++++-------- proto/main.pb.gw.go | 84 + proto/main_grpc.pb.go | 42 + 21 files changed, 1643 insertions(+), 870 deletions(-) create mode 100644 internal/repos/game_exports_repo/reset_test.go create mode 100644 internal/services/game_export_service/local_mode_test.go create mode 100644 migrations/20261017120000_release_game_exports.sql diff --git a/api/main.proto b/api/main.proto index 05d293d..92beae8 100644 --- a/api/main.proto +++ b/api/main.proto @@ -675,6 +675,7 @@ service EveningDetectiveServer { }; } + // Each request creates a fresh setup package, replacing any unfinished preparation. rpc StartGameExport(StartGameExportReq) returns (GameExportRsp) { option (google.api.http) = { post: "/api/games/{ID}/export" @@ -682,6 +683,14 @@ service EveningDetectiveServer { }; } + // Release the transfer without discarding ready packages or their future results. + rpc ResetGameLocalMode(ResetGameLocalModeReq) returns (ResetGameLocalModeRsp) { + option (google.api.http) = { + post: "/api/games/{ID}/local-mode/reset" + body: "*" + }; + } + rpc GetGameExport(GetGameExportReq) returns (GameExportRsp) { option (google.api.http) = {get: "/api/games/{ID}/export"}; } @@ -1719,7 +1728,7 @@ message Game { // GET /api/games/{ID}/export/download (not an HttpBody RPC). message GameExport { string ID = 1; - string state = 2; // preparing, ready or failed; preparing/ready lock game writes. + string state = 2; // preparing, ready or failed; ready indicates a completed package. string packageID = 3; int64 size = 4; string sha256 = 5; @@ -1736,6 +1745,13 @@ message StartGameExportReq { int32 ID = 1; } message GetGameExportReq { int32 ID = 1; } +message ResetGameLocalModeReq { + int32 ID = 1; + string exportID = 2; // Expected latest export, protecting against stale confirmations. +} + +message ResetGameLocalModeRsp {} + message GameExportRsp { GameExport export = 1; } enum ScreenMode { diff --git a/cmd/evening_detective_server/main.swagger.json b/cmd/evening_detective_server/main.swagger.json index 5bfffc6..0c1ef9a 100644 --- a/cmd/evening_detective_server/main.swagger.json +++ b/cmd/evening_detective_server/main.swagger.json @@ -684,6 +684,7 @@ ] }, "post": { + "summary": "Each request creates a fresh setup package, replacing any unfinished preparation.", "operationId": "EveningDetectiveServer_StartGameExport", "responses": { "200": { @@ -761,6 +762,46 @@ ] } }, + "/api/games/{ID}/local-mode/reset": { + "post": { + "summary": "Release the transfer without discarding ready packages or their future results.", + "operationId": "EveningDetectiveServer_ResetGameLocalMode", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/evening_detective_serverResetGameLocalModeRsp" + } + }, + "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/EveningDetectiveServerResetGameLocalModeBody" + } + } + ], + "tags": [ + "EveningDetectiveServer" + ] + } + }, "/api/games/{ID}/pause": { "put": { "summary": "Остановить игру", @@ -4209,6 +4250,15 @@ "EveningDetectiveServerResetGameBody": { "type": "object" }, + "EveningDetectiveServerResetGameLocalModeBody": { + "type": "object", + "properties": { + "exportID": { + "type": "string", + "description": "Expected latest export, protecting against stale confirmations." + } + } + }, "EveningDetectiveServerSaveScreenPlanBody": { "type": "object", "properties": { @@ -5043,7 +5093,7 @@ }, "state": { "type": "string", - "description": "preparing, ready or failed; preparing/ready lock game writes." + "description": "preparing, ready or failed; ready indicates a completed package." }, "packageID": { "type": "string" @@ -5831,6 +5881,9 @@ } } }, + "evening_detective_serverResetGameLocalModeRsp": { + "type": "object" + }, "evening_detective_serverResetGameRsp": { "type": "object" }, diff --git a/internal/app/game_export.go b/internal/app/game_export.go index 9f4e1f2..a9daf4f 100644 --- a/internal/app/game_export.go +++ b/internal/app/game_export.go @@ -51,6 +51,20 @@ func (s *server) GetGameExport(ctx context.Context, req *proto.GetGameExportReq) return &proto.GameExportRsp{Export: mapGameExport(result)}, nil } +func (s *server) ResetGameLocalMode(ctx context.Context, req *proto.ResetGameLocalModeReq) (*proto.ResetGameLocalModeRsp, error) { + claims, err := claimsFromContext(ctx) + if err != nil { + return nil, err + } + if !canExportGame(claims) { + return nil, status.Error(codes.PermissionDenied, "permission denied") + } + if err := s.gameExportService.ResetLocalMode(ctx, int(req.GetID()), req.GetExportID()); err != nil { + return nil, gameExportErrorStatus(err) + } + return &proto.ResetGameLocalModeRsp{}, nil +} + // GameExportDownloadHandler authenticates with the existing JWT processor and streams private ZIPs. func GameExportDownloadHandler(jwt processor_jwt.IProcessorJWT, exports *game_export_service.GameExportService) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { diff --git a/internal/app/game_export_errors.go b/internal/app/game_export_errors.go index 12be667..b81891b 100644 --- a/internal/app/game_export_errors.go +++ b/internal/app/game_export_errors.go @@ -19,10 +19,12 @@ func gameExportErrorStatus(err error) error { return status.Error(codes.FailedPrecondition, game_export_service.ErrVenueMode.Error()) case errors.Is(err, game_export_service.ErrNotReady): return status.Error(codes.FailedPrecondition, game_export_service.ErrNotReady.Error()) - case errors.Is(err, game_export_service.ErrNotExportable): - return status.Error(codes.FailedPrecondition, game_export_service.ErrNotExportable.Error()) + case errors.Is(err, game_export_service.ErrExportChanged): + return status.Error(codes.Aborted, game_export_service.ErrExportChanged.Error()) case errors.Is(err, game_export_service.ErrInvalidGameID): return status.Error(codes.InvalidArgument, game_export_service.ErrInvalidGameID.Error()) + case errors.Is(err, game_export_service.ErrInvalidExportID): + return status.Error(codes.InvalidArgument, game_export_service.ErrInvalidExportID.Error()) default: log.Printf("game export API: %v", err) return status.Error(codes.Internal, "Не удалось выполнить операцию экспорта игры") diff --git a/internal/app/game_export_test.go b/internal/app/game_export_test.go index ff05dc8..6d6a327 100644 --- a/internal/app/game_export_test.go +++ b/internal/app/game_export_test.go @@ -45,6 +45,10 @@ func TestExportRolesAndVenueMode(t *testing.T) { if status.Code(err) != tc.code { t.Fatalf("status access: %v", err) } + _, err = server.ResetGameLocalMode(ctx, &proto.ResetGameLocalModeReq{ID: 1, ExportID: "export"}) + if status.Code(err) != tc.code { + t.Fatalf("reset access: %v", err) + } request := httptest.NewRequest(http.MethodGet, "/api/games/1/export/download", nil) request.SetPathValue("id", "1") if tc.role != "" { @@ -71,7 +75,8 @@ func TestExportErrorsAreSafe(t *testing.T) { }{ {"game missing", game_export_service.ErrGameNotFound, codes.NotFound}, {"export missing", game_export_service.ErrExportNotFound, codes.NotFound}, - {"progress", game_export_service.ErrNotExportable, codes.FailedPrecondition}, + {"changed export", game_export_service.ErrExportChanged, codes.Aborted}, + {"invalid export", game_export_service.ErrInvalidExportID, codes.InvalidArgument}, {"not ready", game_export_service.ErrNotReady, codes.FailedPrecondition}, {"venue", game_export_service.ErrVenueMode, codes.FailedPrecondition}, {"invalid game", game_export_service.ErrInvalidGameID, codes.InvalidArgument}, diff --git a/internal/repos/game_exports_repo/fixture_test.go b/internal/repos/game_exports_repo/fixture_test.go index c99babe..6ac821b 100644 --- a/internal/repos/game_exports_repo/fixture_test.go +++ b/internal/repos/game_exports_repo/fixture_test.go @@ -104,3 +104,27 @@ func (f exportFixture) start(t *testing.T, id string) *Attempt { requireNoError(t, err) return attempt } + +// releaseMigration exercises transactional schema changes without querying application data. +func (f exportFixture) releaseMigration(t *testing.T, down bool) error { + t.Helper() + raw, err := os.ReadFile("../../../migrations/20261017120000_release_game_exports.sql") + requireNoError(t, err) + parts := strings.Split(string(raw), "-- +goose Down") + sql := parts[0] + if down { + sql = parts[1] + } + tx, err := f.pool.Begin(context.Background()) + if err != nil { + return err + } + defer func() { _ = tx.Rollback(context.Background()) }() + if _, err := tx.Exec( + context.Background(), + sql, + ); err != nil { + return err + } + return tx.Commit(context.Background()) +} diff --git a/internal/repos/game_exports_repo/repo.go b/internal/repos/game_exports_repo/repo.go index 5a700c5..2f9b73a 100644 --- a/internal/repos/game_exports_repo/repo.go +++ b/internal/repos/game_exports_repo/repo.go @@ -13,7 +13,7 @@ import ( var ( ErrGameNotFound = errors.New("игра не найдена") - ErrNotExportable = errors.New("экспорт доступен только для игры в черновике без дат проведения и прогресса") + ErrExportChanged = errors.New("экспорт игры изменился; обновите страницу и повторите действие") ErrExportNotFound = errors.New("экспорт игры ещё не запущен") ErrOwnershipLost = errors.New("владение экспортом потеряно") ) @@ -45,79 +45,43 @@ func NewGameExportsRepo(pool *pgxpool.Pool) *GameExportsRepo { } } -// Start locks the game before inspecting progress, then saves all package data in one SQL snapshot. +// Start serializes replacements on the game and saves a fresh, consistent package snapshot. func (r *GameExportsRepo) Start(ctx context.Context, gameID, userID int, id, source string) (*Attempt, error) { tx, err := r.pool.Begin(ctx) if err != nil { return nil, err } defer func() { _ = tx.Rollback(ctx) }() - var status string - var started, ended *time.Time + var lockedID int err = tx.QueryRow( ctx, `SELECT - status, - started_at, - ended_at + id FROM games WHERE id = $1 FOR UPDATE`, gameID, - ).Scan(&status, &started, &ended) + ).Scan(&lockedID) if errors.Is(err, pgx.ErrNoRows) { return nil, ErrGameNotFound } if err != nil { return nil, err } - existing, err := readAttempt(ctx, tx, gameID, true, true) - if err == nil { - return existing, tx.Commit(ctx) - } - if !errors.Is(err, ErrExportNotFound) { - return nil, err - } - if status != "draft" || started != nil || ended != nil { - return nil, ErrNotExportable - } - var progress bool - err = tx.QueryRow( + // Retain ready packages for late results; fence unfinished workers before replacing them. + _, err = tx.Exec( ctx, - `SELECT - EXISTS ( - SELECT - 1 - FROM teams t - WHERE t.game_id = $1 AND ( - EXISTS ( - SELECT - 1 - FROM actions a - WHERE a.team_id = t.id - ) - OR EXISTS ( - SELECT - 1 - FROM applications a - WHERE a.team_id = t.id - ) - OR EXISTS ( - SELECT - 1 - FROM team_answers a - WHERE a.team_id = t.id - ) - ) - )`, + `UPDATE game_exports + SET released_at = clock_timestamp(), + state = CASE WHEN state = 'preparing' THEN 'failed' ELSE state END, + failure = CASE WHEN state = 'preparing' THEN 'Подготовка заменена новым пакетом.' ELSE failure END, + owner_id = NULL, lease_until = NULL + WHERE game_id = $1 AND released_at IS NULL AND state IN ('preparing', 'ready')`, gameID, - ).Scan(&progress) + ) if err != nil { return nil, err } - if progress { - return nil, ErrNotExportable - } snapshot, err := captureSnapshot(ctx, tx, gameID) if err != nil { return nil, err @@ -147,6 +111,75 @@ func (r *GameExportsRepo) Get(ctx context.Context, gameID int) (*Attempt, error) return readAttempt(ctx, r.pool, gameID, false, false) } +// ResetLocalMode releases only the expected latest export, preserving ready archives for late results. +func (r *GameExportsRepo) ResetLocalMode(ctx context.Context, gameID int, exportID string) error { + tx, err := r.pool.Begin(ctx) + if err != nil { + return err + } + defer func() { _ = tx.Rollback(ctx) }() + var lockedID int + err = tx.QueryRow( + ctx, + `SELECT + id + FROM games + WHERE id = $1 + FOR UPDATE`, + gameID, + ).Scan(&lockedID) + if errors.Is(err, pgx.ErrNoRows) { + return ErrGameNotFound + } + if err != nil { + return err + } + var latestID, state string + var releasedAt *time.Time + err = tx.QueryRow( + ctx, + `SELECT + id, + state, + released_at + FROM game_exports + WHERE game_id = $1 + ORDER BY created_at DESC, id + LIMIT 1 + FOR UPDATE`, + gameID, + ).Scan(&latestID, &state, &releasedAt) + if errors.Is(err, pgx.ErrNoRows) { + return ErrExportNotFound + } + if err != nil { + return err + } + if latestID != exportID { + return ErrExportChanged + } + if releasedAt != nil { + return tx.Commit(ctx) + } + if state != "ready" && state != "preparing" { + return ErrExportChanged + } + _, err = tx.Exec( + ctx, + `UPDATE game_exports + SET released_at = clock_timestamp(), + state = CASE WHEN state = 'preparing' THEN 'failed' ELSE state END, + failure = CASE WHEN state = 'preparing' THEN 'Подготовка отменена при сбросе локального режима.' ELSE failure END, + owner_id = NULL, lease_until = NULL + WHERE id = $1`, + exportID, + ) + if err != nil { + return err + } + return tx.Commit(ctx) +} + // IRowReader is implemented by both the pool and a transaction. type IRowReader interface { QueryRow(context.Context, string, ...any) pgx.Row @@ -169,7 +202,7 @@ func readAttempt(ctx context.Context, reader IRowReader, gameID int, active, wit object_key, created_at FROM game_exports - WHERE game_id = $1 AND (NOT $2 OR state IN ('preparing', 'ready')) + WHERE game_id = $1 AND (NOT $2 OR (state IN ('preparing', 'ready') AND released_at IS NULL)) ORDER BY created_at DESC, id LIMIT 1`, gameID, diff --git a/internal/repos/game_exports_repo/repo_test.go b/internal/repos/game_exports_repo/repo_test.go index fab7142..d7edcc6 100644 --- a/internal/repos/game_exports_repo/repo_test.go +++ b/internal/repos/game_exports_repo/repo_test.go @@ -108,9 +108,9 @@ func TestExportSnapshotAndEditableGame(t *testing.T) { requireNoError(t, mapRepo.Update(ctx, game_map_repo.Item{GameID: f.gameID, Kind: "team", ItemID: f.teamID, X: 10})) _, err = reviews.Moderate(ctx, review.ID, "approved") requireNoError(t, err) - same, err := f.exports.Start(ctx, f.gameID, f.userID, "not-a-new-attempt", "test") + same, err := f.exports.Get(ctx, f.gameID) requireNoError(t, err) - if same.ID != attempt.ID || !bytes.Equal(same.Snapshot, attempt.Snapshot) { + if same.ID != attempt.ID { t.Fatal("online edits changed an existing export snapshot") } requireNoError(t, f.scenarios.UpdateScenarioByID(ctx, f.scenarioID, "Edited shared story", "", "")) @@ -163,12 +163,9 @@ func TestExportConcurrentStartAndTeamWrites(t *testing.T) { if changeErr != nil { t.Fatal(changeErr) } - var id string + ids := map[string]bool{} for attempt := range attempts { - if id != "" && id != attempt.ID { - t.Fatal("more than one active export") - } - id = attempt.ID + ids[attempt.ID] = true var snapshot struct { Teams []struct { Name string `json:"name"` @@ -179,11 +176,26 @@ func TestExportConcurrentStartAndTeamWrites(t *testing.T) { t.Fatalf("unexpected team snapshot: %s", snapshot.Teams[0].Name) } } + if len(ids) != 8 { + t.Fatalf("expected fresh attempts, got %d", len(ids)) + } + current, err := f.exports.Get(ctx, f.gameID) + requireNoError(t, err) + claimed, err := f.exports.Claim(ctx, "worker") + requireNoError(t, err) + if claimed.ID != current.ID { + t.Fatal("worker claimed an obsolete attempt") + } + _, err = f.exports.Claim(ctx, "other-worker") + if !errors.Is(err, pgx.ErrNoRows) { + t.Fatalf("more than one active export: %v", err) + } + }) } } -func TestExportRejectsProgressAndRunningGames(t *testing.T) { +func TestExportAllowsProgressAndRunningGames(t *testing.T) { for _, tc := range []struct { name string mutate func(exportFixture) error @@ -205,9 +217,7 @@ func TestExportRejectsProgressAndRunningGames(t *testing.T) { f := newExportFixture(t) requireNoError(t, tc.mutate(f)) _, err := f.exports.Start(context.Background(), f.gameID, f.userID, "attempt", "https://game.example") - if !errors.Is(err, ErrNotExportable) { - t.Fatalf("export allowed: %v", err) - } + requireNoError(t, err) requireNoError(t, f.teams.UpdateTeam(context.Background(), f.teamID, "Still writable")) }) } diff --git a/internal/repos/game_exports_repo/reset_test.go b/internal/repos/game_exports_repo/reset_test.go new file mode 100644 index 0000000..100f65a --- /dev/null +++ b/internal/repos/game_exports_repo/reset_test.go @@ -0,0 +1,150 @@ +package game_exports_repo + +import ( + "context" + "errors" + "sync" + "testing" +) + +func TestResetLocalModePreservesReadyPackageAndGame(t *testing.T) { + for _, name := range []string{"ResetLocalModePreservesReadyPackageAndGame"} { + t.Run(name, func(t *testing.T) { + f := newExportFixture(t) + ctx := context.Background() + attempt := f.start(t, "ready-attempt") + _, err := f.exports.Claim(ctx, "worker") + requireNoError(t, err) + requireNoError(t, f.exports.Complete(ctx, attempt.ID, "worker", "package", "digest", 123)) + before, err := f.games.GetGameByID(ctx, f.gameID) + requireNoError(t, err) + if before.Export == nil { + t.Fatal("missing local mode before reset") + } + requireNoError(t, f.exports.ResetLocalMode(ctx, f.gameID, attempt.ID)) + requireNoError(t, f.exports.ResetLocalMode(ctx, f.gameID, attempt.ID)) + after, err := f.games.GetGameByID(ctx, f.gameID) + requireNoError(t, err) + if after.Export != nil || after.Status != before.Status || after.Name != before.Name { + t.Fatal("reset retained local mode or changed the game") + } + games, err := f.games.GetGames(ctx) + requireNoError(t, err) + for _, game := range games { + if game.ID == f.gameID && game.Export != nil { + t.Fatal("game list retained local mode") + } + } + saved, err := f.exports.Get(ctx, f.gameID) + requireNoError(t, err) + if saved.ID != attempt.ID || saved.State != "ready" || saved.PackageID != "package" { + t.Fatal("reset damaged the package needed for late results") + } + next := f.start(t, "new-attempt") + if err := f.exports.ResetLocalMode(ctx, f.gameID, attempt.ID); !errors.Is(err, ErrExportChanged) { + t.Fatalf("stale confirmation accepted: %v", err) + } + current, err := f.exports.Get(ctx, f.gameID) + requireNoError(t, err) + if current.ID != next.ID || current.State != "preparing" { + t.Fatal("stale confirmation changed new export") + } + }) + } +} + +func TestResetAndReplacementFencePreparingWorker(t *testing.T) { + for _, replace := range []bool{false, true} { + t.Run(map[bool]string{false: "reset", true: "replace"}[replace], func(t *testing.T) { + f := newExportFixture(t) + ctx := context.Background() + attempt := f.start(t, "old") + _, err := f.exports.Claim(ctx, "worker") + requireNoError(t, err) + if replace { + f.start(t, "new") + } else { + requireNoError(t, f.exports.ResetLocalMode(ctx, f.gameID, attempt.ID)) + } + if err := f.exports.Complete(ctx, attempt.ID, "worker", "package", "digest", 123); !errors.Is(err, ErrOwnershipLost) { + t.Fatalf("cancelled worker published: %v", err) + } + if err := f.exports.Heartbeat(ctx, attempt.ID, "worker"); !errors.Is(err, ErrOwnershipLost) { + t.Fatalf("cancelled worker renewed lease: %v", err) + } + keys, err := f.exports.CleanupKeys(ctx) + requireNoError(t, err) + if len(keys) != 1 || keys[0] != attempt.ObjectKey { + t.Fatalf("cancelled object cleanup lost: %v", keys) + } + }) + } +} + +func TestResetConcurrentReplacement(t *testing.T) { + for _, name := range []string{"ResetConcurrentReplacement"} { + t.Run(name, func(t *testing.T) { + f := newExportFixture(t) + ctx := context.Background() + attempt := f.start(t, "old") + var wg sync.WaitGroup + var resetErr, startErr error + wg.Add(2) + go func() { defer wg.Done(); resetErr = f.exports.ResetLocalMode(ctx, f.gameID, attempt.ID) }() + go func() { defer wg.Done(); _, startErr = f.exports.Start(ctx, f.gameID, f.userID, "new", "source") }() + wg.Wait() + requireNoError(t, startErr) + if resetErr != nil && !errors.Is(resetErr, ErrExportChanged) { + t.Fatal(resetErr) + } + game, err := f.games.GetGameByID(ctx, f.gameID) + requireNoError(t, err) + if game.Export == nil || game.Export.ID != "new" { + t.Fatal("concurrent reset released the new export") + } + }) + } +} + +func TestResetMissingGameOrExport(t *testing.T) { + for _, name := range []string{"ResetMissingGameOrExport"} { + t.Run(name, func(t *testing.T) { + f := newExportFixture(t) + ctx := context.Background() + if err := f.exports.ResetLocalMode(ctx, f.gameID+1, "missing"); !errors.Is(err, ErrGameNotFound) { + t.Fatal(err) + } + if err := f.exports.ResetLocalMode(ctx, f.gameID, "missing"); !errors.Is(err, ErrExportNotFound) { + t.Fatal(err) + } + }) + } +} + +func TestReleaseMigrationRollback(t *testing.T) { + for _, name := range []string{"ReleaseMigrationRollback"} { + t.Run(name, func(t *testing.T) { + f := newExportFixture(t) + ctx := context.Background() + requireNoError(t, f.releaseMigration(t, true)) + requireNoError(t, f.releaseMigration(t, false)) + attempt := f.start(t, "first") + _, err := f.exports.Claim(ctx, "worker") + requireNoError(t, err) + requireNoError(t, f.exports.Complete(ctx, attempt.ID, "worker", "package-1", "digest", 1)) + second := f.start(t, "second") + _, err = f.exports.Claim(ctx, "worker") + requireNoError(t, err) + requireNoError(t, f.exports.Complete(ctx, second.ID, "worker", "package-2", "digest", 1)) + // Rollback must refuse incompatible history without removing the current export or schema. + if err := f.releaseMigration(t, true); err == nil { + t.Fatal("rollback allowed incompatible ready history") + } + current, err := f.exports.Get(ctx, f.gameID) + requireNoError(t, err) + if current.ID != second.ID || current.State != "ready" { + t.Fatal("rollback damaged export history") + } + }) + } +} diff --git a/internal/repos/games_repo/repo.go b/internal/repos/games_repo/repo.go index f79b779..4149670 100644 --- a/internal/repos/games_repo/repo.go +++ b/internal/repos/games_repo/repo.go @@ -78,7 +78,7 @@ func (r *GamesRepo) GetGameByID( games.started_at, games.ended_at, (SELECT - CASE WHEN EXISTS ( + CASE WHEN e.released_at IS NOT NULL OR EXISTS ( SELECT 1 FROM game_returns r WHERE r.export_id = e.id @@ -152,7 +152,7 @@ func (r *GamesRepo) GetGames( games.format, games.status, (SELECT - CASE WHEN EXISTS ( + CASE WHEN e.released_at IS NOT NULL OR EXISTS ( SELECT 1 FROM game_returns r WHERE r.export_id = e.id diff --git a/internal/services/answer_service/service_test.go b/internal/services/answer_service/service_test.go index d2044e7..7db909d 100644 --- a/internal/services/answer_service/service_test.go +++ b/internal/services/answer_service/service_test.go @@ -29,7 +29,7 @@ func TestAnswerAccessPostgres(t *testing.T) { defer pool.Close() _, err = pool.Exec(ctx, ` CREATE TEMP TABLE game_returns(export_id TEXT); - CREATE TEMP TABLE game_exports(id TEXT, game_id INT, state TEXT, package_id TEXT, size BIGINT, sha256 TEXT, failure TEXT, created_at TIMESTAMPTZ); + CREATE TEMP TABLE game_exports(id TEXT, game_id INT, state TEXT, package_id TEXT, size BIGINT, sha256 TEXT, failure TEXT, created_at TIMESTAMPTZ, released_at TIMESTAMPTZ); CREATE TEMP TABLE games (id INT, name TEXT, description TEXT, location TEXT, start_at TIMESTAMP, format TEXT, status TEXT, scenario_id INT, started_at TIMESTAMP, ended_at TIMESTAMP); CREATE TEMP TABLE teams (id UUID, name TEXT, captain_email TEXT, participants_count INT, diff --git a/internal/services/game_export_service/export_test.go b/internal/services/game_export_service/export_test.go index db53947..e9f1f21 100644 --- a/internal/services/game_export_service/export_test.go +++ b/internal/services/game_export_service/export_test.go @@ -218,16 +218,22 @@ func TestExportBuildsSavedSnapshotAcrossWorkerRestart(t *testing.T) { } first := verifyPackage(t, f, restartedWorker) verifyExportedGameReads(t, f, restartedWorker, original.ID) - repeated, err := restartedWorker.Start(context.Background(), f.gameID, f.userID) - check(t, err) - if repeated.ID != original.ID || repeated.State != "ready" { - t.Fatal("ready export not idempotent") - } _, second := download(t, f.service(storage), f.gameID) if !bytes.Equal(first, second) { t.Fatal("download changed after restart") } assertAbortedDownload(t, f, restartedWorker, first) + repeated, err := restartedWorker.Start(context.Background(), f.gameID, f.userID) + check(t, err) + if repeated.ID == original.ID || repeated.State != "preparing" { + t.Fatal("new preparation reused old export") + } + _, err = restartedWorker.ProcessNext(context.Background()) + check(t, err) + _, changed := download(t, restartedWorker, f.gameID) + if bytes.Equal(first, changed) { + t.Fatal("new preparation reused old bytes") + } }) } } diff --git a/internal/services/game_export_service/local_mode_test.go b/internal/services/game_export_service/local_mode_test.go new file mode 100644 index 0000000..4e0c151 --- /dev/null +++ b/internal/services/game_export_service/local_mode_test.go @@ -0,0 +1,200 @@ +package game_export_service_test + +import ( + "bytes" + "context" + "errors" + "os" + "reflect" + "sync" + "testing" + "time" + + "evening_detective_server/internal/repos" + "evening_detective_server/internal/repos/actions_repo" + "evening_detective_server/internal/repos/game_imports_repo" + "evening_detective_server/internal/repos/game_screen_plans_repo" + "evening_detective_server/internal/repos/team_answers_repo" + "evening_detective_server/internal/services/game_export_service" + "evening_detective_server/internal/services/game_import_service" +) + +func TestResetLocalModeValidation(t *testing.T) { + for _, tc := range []struct { + name string + venue bool + gameID int + exportID string + want error + }{ + {"venue", true, 1, "export", game_export_service.ErrVenueMode}, + {"invalid game", false, 0, "export", game_export_service.ErrInvalidGameID}, + {"empty export", false, 1, " ", game_export_service.ErrInvalidExportID}, + } { + t.Run(tc.name, func(t *testing.T) { + service := game_export_service.NewGameExportService(nil, nil, nil, nil, "", tc.venue) + if err := service.ResetLocalMode(context.Background(), tc.gameID, tc.exportID); !errors.Is(err, tc.want) { + t.Fatalf("unexpected validation: %v", err) + } + }) + } +} + +func TestExportAnyStatusProducesFreshSetup(t *testing.T) { + for _, format := range []string{"online", "offline"} { + for _, state := range []string{"draft", "run", "pause", "finish"} { + t.Run(format+"/"+state, func(t *testing.T) { + ctx := context.Background() + f := newServiceFixture(t) + check(t, f.games.UpdateGame(ctx, f.gameID, "Test game", "Description", nil, time.Now(), int32(f.scenarioID), format)) + if state != "draft" { + check(t, f.games.StartGame(ctx, f.gameID)) + if state == "pause" { + check(t, f.games.PauseGame(ctx, f.gameID)) + } + if state == "finish" { + check(t, f.games.FinishGame(ctx, f.gameID)) + } + } + _, err := actions_repo.NewActionsRepo(f.pool).AddAction(ctx, f.teamID, "p", false) + check(t, err) + check(t, team_answers_repo.NewTeamAnswersRepo(f.pool).UpsertAnswers(ctx, f.teamID, []repos.TeamAnswer{{QuestionCode: "q", Text: "Saved answer"}})) + _, err = game_screen_plans_repo.NewGameScreenPlansRepo(f.pool).Save(ctx, f.gameID, + []game_screen_plans_repo.Step{{Mode: 1}, {Mode: 2}}, 1) + check(t, err) + before, err := f.games.GetGameByID(ctx, f.gameID) + check(t, err) + storage := &memoryStorage{objects: map[string][]byte{}} + exporter := f.service(storage) + _, err = exporter.Start(ctx, f.gameID, f.userID) + check(t, err) + _, err = exporter.ProcessNext(ctx) + check(t, err) + _, raw := download(t, exporter, f.gameID) + bundle, err := f.codec.Unpack(ctx, bytes.NewReader(raw), int64(len(raw)), t.TempDir()) + check(t, err) + defer func() { _ = os.RemoveAll(bundle.Dir) }() + game := bundle.Data.Game + if game.Status != "draft" || game.StartedAt != nil || game.EndedAt != nil || game.Format != format || + bundle.Data.Teams[0].Status != "register" || bundle.Data.ScreenPlan.CurrentStep != 0 { + t.Fatalf("package retained source progress: %+v", bundle.Data) + } + after, err := f.games.GetGameByID(ctx, f.gameID) + check(t, err) + before.Export, after.Export = nil, nil + if !reflect.DeepEqual(before, after) { + t.Fatal("export mutated the source game") + } + actions, err := actions_repo.NewActionsRepo(f.pool).GetActionsByTeamID(ctx, f.teamID) + check(t, err) + answers, err := team_answers_repo.NewTeamAnswersRepo(f.pool).GetAnswersByTeamID(ctx, f.teamID) + check(t, err) + if len(actions) != 1 || len(answers) != 1 { + t.Fatal("export removed source progress") + } + // Import into an independent venue schema using the real importer. + venue := newServiceFixture(t) + check(t, venue.teams.DeleteTeam(ctx, venue.teamID)) + check(t, venue.games.DeleteGameByID(ctx, venue.gameID)) + importer := game_import_service.NewGameImportService(game_imports_repo.NewGameImportsRepo(venue.pool), venue.codec, + &memoryStorage{objects: map[string][]byte{}}, true) + imported, err := importer.Import(ctx, bytes.NewReader(raw), venue.userID) + check(t, err) + local, err := venue.games.GetGameByID(ctx, imported.GameID) + check(t, err) + if local.Status != "draft" || local.StartedAt != nil || local.EndedAt != nil { + t.Fatalf("import did not start fresh: %+v", local) + } + actions, err = actions_repo.NewActionsRepo(venue.pool).GetActionsByTeamID(ctx, f.teamID) + check(t, err) + answers, err = team_answers_repo.NewTeamAnswersRepo(venue.pool).GetAnswersByTeamID(ctx, f.teamID) + check(t, err) + if len(actions) != 0 || len(answers) != 0 { + t.Fatal("import carried source progress") + } + }) + } + } +} + +func TestResultsFromFreshPackageOfFinishedGame(t *testing.T) { + for _, format := range []string{"online", "offline"} { + t.Run(format, func(t *testing.T) { + ctx := context.Background() + f := newReturnFixture(t, format) + check(t, f.games.StartGame(ctx, f.gameID)) + check(t, f.games.FinishGame(ctx, f.gameID)) + exporter := f.service(f.storage) + _, err := exporter.Start(ctx, f.gameID, f.userID) + check(t, err) + _, err = exporter.ProcessNext(ctx) + check(t, err) + export, _ := download(t, exporter, f.gameID) + f.manifest.SourcePackageID = export.PackageID + f.manifest.SourceSHA256 = export.SHA256 + check(t, exporter.ResetLocalMode(ctx, f.gameID, export.ID)) + _, err = f.apply(f.pack(t)) + check(t, err) + }) + } +} + +func TestLateResultsAfterResetAndNewExport(t *testing.T) { + for _, format := range []string{"online", "offline"} { + for _, next := range []string{"none", "preparing", "ready"} { + t.Run(format+"/"+next, func(t *testing.T) { + ctx := context.Background() + f := newReturnFixture(t, format) + raw := f.pack(t) + exporter := f.service(f.storage) + export, err := exporter.Get(ctx, f.gameID) + check(t, err) + check(t, exporter.ResetLocalMode(ctx, f.gameID, export.ID)) + if next != "none" { + _, err = exporter.Start(ctx, f.gameID, f.userID) + check(t, err) + if next == "ready" { + _, err = exporter.ProcessNext(ctx) + check(t, err) + } + } + check(t, exporter.Maintain(ctx)) + _, err = f.apply(raw) + check(t, err) + game, err := f.games.GetGameByID(ctx, f.gameID) + check(t, err) + if game.Status != "finish" || (next == "none" && game.Export != nil) { + t.Fatal("late results were lost or restored released local mode") + } + }) + } + } +} + +func TestResetConcurrentResults(t *testing.T) { + for _, name := range []string{"ResetConcurrentResults"} { + t.Run(name, func(t *testing.T) { + f := newReturnFixture(t, "online") + ctx := context.Background() + exporter := f.service(f.storage) + export, err := exporter.Get(ctx, f.gameID) + check(t, err) + raw := f.pack(t) + var wg sync.WaitGroup + errs := make(chan error, 2) + wg.Add(2) + go func() { defer wg.Done(); errs <- exporter.ResetLocalMode(ctx, f.gameID, export.ID) }() + go func() { defer wg.Done(); _, err := f.apply(raw); errs <- err }() + wg.Wait() + close(errs) + for err := range errs { + check(t, err) + } + game, err := f.games.GetGameByID(ctx, f.gameID) + check(t, err) + if game.Export != nil || game.Status != "finish" { + t.Fatalf("reset and return conflict: %+v", game) + } + }) + } +} diff --git a/internal/services/game_export_service/model.go b/internal/services/game_export_service/model.go index b7859a1..dd81aef 100644 --- a/internal/services/game_export_service/model.go +++ b/internal/services/game_export_service/model.go @@ -2,6 +2,7 @@ package game_export_service import ( "context" + "evening_detective_server/internal/repos" "evening_detective_server/internal/repos/game_exports_repo" ) @@ -12,12 +13,13 @@ type GameExport = repos.GameExport var ( ErrGameNotFound = game_exports_repo.ErrGameNotFound ErrExportNotFound = game_exports_repo.ErrExportNotFound - ErrNotExportable = game_exports_repo.ErrNotExportable + ErrExportChanged = game_exports_repo.ErrExportChanged ) // IGameExportsRepo is the worker's persistence boundary, including publication fencing. type IGameExportsRepo interface { Start(context.Context, int, int, string, string) (*game_exports_repo.Attempt, error) + ResetLocalMode(context.Context, int, string) error Get(context.Context, int) (*game_exports_repo.Attempt, error) Claim(context.Context, string) (*game_exports_repo.Attempt, error) Heartbeat(context.Context, string, string) error diff --git a/internal/services/game_export_service/service.go b/internal/services/game_export_service/service.go index 90ffe50..0e49305 100644 --- a/internal/services/game_export_service/service.go +++ b/internal/services/game_export_service/service.go @@ -24,9 +24,10 @@ import ( ) var ( - ErrVenueMode = errors.New("экспорт игры доступен только на онлайн-сервере") - ErrNotReady = errors.New("пакет игры ещё не готов") - ErrInvalidGameID = errors.New("некорректный идентификатор игры") + ErrVenueMode = errors.New("экспорт игры доступен только на онлайн-сервере") + ErrNotReady = errors.New("пакет игры ещё не готов") + ErrInvalidGameID = errors.New("некорректный идентификатор игры") + ErrInvalidExportID = errors.New("не указан идентификатор экспорта") ) type GameExportService struct { @@ -82,6 +83,19 @@ func (s *GameExportService) Get(ctx context.Context, gameID int) (*repos.GameExp return &attempt.GameExport, nil } +func (s *GameExportService) ResetLocalMode(ctx context.Context, gameID int, exportID string) error { + if s.venue { + return ErrVenueMode + } + if gameID <= 0 { + return ErrInvalidGameID + } + if strings.TrimSpace(exportID) == "" { + return ErrInvalidExportID + } + return s.repo.ResetLocalMode(ctx, gameID, exportID) +} + // OpenDownload always opens the same stored bytes and never changes game or export state. func (s *GameExportService) OpenDownload(ctx context.Context, gameID int) (*repos.GameExport, io.ReadCloser, error) { if s.venue { @@ -225,6 +239,16 @@ func (s *GameExportService) prepare(ctx context.Context, attempt *game_exports_r if err != nil { return err } + // Export setup for a fresh game without mutating the recorded source snapshot. + snapshot.Data.Game.Status = "draft" + snapshot.Data.Game.StartedAt = nil + snapshot.Data.Game.EndedAt = nil + for i := range snapshot.Data.Teams { + snapshot.Data.Teams[i].Status = "register" + } + if snapshot.Data.ScreenPlan != nil { + snapshot.Data.ScreenPlan.CurrentStep = 0 + } dir, err := os.MkdirTemp("", "game-export-"+attempt.ID+"-") if err != nil { return err diff --git a/internal/services/game_service/lifecycle_test.go b/internal/services/game_service/lifecycle_test.go index 49ac4c1..645fe3c 100644 --- a/internal/services/game_service/lifecycle_test.go +++ b/internal/services/game_service/lifecycle_test.go @@ -47,7 +47,7 @@ func TestServicesLifecyclePostgres(t *testing.T) { _, err = pool.Exec(ctx, ` CREATE TEMP TABLE users(id INT, username TEXT); CREATE TEMP TABLE game_returns(export_id TEXT); - CREATE TEMP TABLE game_exports(id TEXT, game_id INT, state TEXT, package_id TEXT, size BIGINT, sha256 TEXT, failure TEXT, created_at TIMESTAMPTZ); + CREATE TEMP TABLE game_exports(id TEXT, game_id INT, state TEXT, package_id TEXT, size BIGINT, sha256 TEXT, failure TEXT, created_at TIMESTAMPTZ, released_at TIMESTAMPTZ); CREATE TEMP TABLE scenarios(id INT PRIMARY KEY, playlist_id INT, name TEXT, description TEXT, image TEXT, scenario TEXT, author_id INT, status TEXT DEFAULT 'draft', updated_at TIMESTAMP DEFAULT NOW(), created_at TIMESTAMP DEFAULT NOW(), published_at TIMESTAMP, is_deleted BOOLEAN DEFAULT FALSE); CREATE TEMP TABLE games(id SERIAL PRIMARY KEY, name TEXT, description TEXT, location TEXT, start_at TIMESTAMP, scenario_id INT, diff --git a/internal/services/gameplay_service/finished_story_test.go b/internal/services/gameplay_service/finished_story_test.go index 56c6cfa..6d5b431 100644 --- a/internal/services/gameplay_service/finished_story_test.go +++ b/internal/services/gameplay_service/finished_story_test.go @@ -32,7 +32,7 @@ func TestFinishedTeamStoryPostgres(t *testing.T) { defer pool.Close() _, err = pool.Exec(ctx, ` CREATE TEMP TABLE game_returns(export_id TEXT); - CREATE TEMP TABLE game_exports(id TEXT, game_id INT, state TEXT, package_id TEXT, size BIGINT, sha256 TEXT, failure TEXT, created_at TIMESTAMPTZ); + CREATE TEMP TABLE game_exports(id TEXT, game_id INT, state TEXT, package_id TEXT, size BIGINT, sha256 TEXT, failure TEXT, created_at TIMESTAMPTZ, released_at TIMESTAMPTZ); CREATE TEMP TABLE games (id INT, name TEXT, description TEXT, location TEXT, start_at TIMESTAMP, format TEXT, status TEXT, scenario_id INT, started_at TIMESTAMP, ended_at TIMESTAMP); CREATE TEMP TABLE teams (id UUID, name TEXT, captain_email TEXT, participants_count INT, diff --git a/migrations/20261017120000_release_game_exports.sql b/migrations/20261017120000_release_game_exports.sql new file mode 100644 index 0000000..58160db --- /dev/null +++ b/migrations/20261017120000_release_game_exports.sql @@ -0,0 +1,11 @@ +-- +goose Up +ALTER TABLE game_exports ADD COLUMN released_at TIMESTAMPTZ; +DROP INDEX game_exports_active; +CREATE UNIQUE INDEX game_exports_active ON game_exports(game_id) + WHERE state IN ('preparing', 'ready') AND released_at IS NULL; + +-- +goose Down +-- Refuse rollback if retained ready exports cannot fit the old unique index. +DROP INDEX game_exports_active; +CREATE UNIQUE INDEX game_exports_active ON game_exports(game_id) WHERE state IN ('preparing', 'ready'); +ALTER TABLE game_exports DROP COLUMN released_at; diff --git a/proto/main.pb.go b/proto/main.pb.go index 2d39ae1..a729b80 100644 --- a/proto/main.pb.go +++ b/proto/main.pb.go @@ -5402,7 +5402,7 @@ func (x *Game) GetExport() *GameExport { type GameExport struct { state protoimpl.MessageState `protogen:"open.v1"` ID string `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"` - State string `protobuf:"bytes,2,opt,name=state,proto3" json:"state,omitempty"` // preparing, ready or failed; preparing/ready lock game writes. + State string `protobuf:"bytes,2,opt,name=state,proto3" json:"state,omitempty"` // preparing, ready or failed; ready indicates a completed package. PackageID string `protobuf:"bytes,3,opt,name=packageID,proto3" json:"packageID,omitempty"` Size int64 `protobuf:"varint,4,opt,name=size,proto3" json:"size,omitempty"` Sha256 string `protobuf:"bytes,5,opt,name=sha256,proto3" json:"sha256,omitempty"` @@ -5631,6 +5631,94 @@ func (x *GetGameExportReq) GetID() int32 { return 0 } +type ResetGameLocalModeReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + ID int32 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"` + ExportID string `protobuf:"bytes,2,opt,name=exportID,proto3" json:"exportID,omitempty"` // Expected latest export, protecting against stale confirmations. + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResetGameLocalModeReq) Reset() { + *x = ResetGameLocalModeReq{} + mi := &file_main_proto_msgTypes[109] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResetGameLocalModeReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResetGameLocalModeReq) ProtoMessage() {} + +func (x *ResetGameLocalModeReq) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[109] + 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 ResetGameLocalModeReq.ProtoReflect.Descriptor instead. +func (*ResetGameLocalModeReq) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{109} +} + +func (x *ResetGameLocalModeReq) GetID() int32 { + if x != nil { + return x.ID + } + return 0 +} + +func (x *ResetGameLocalModeReq) GetExportID() string { + if x != nil { + return x.ExportID + } + return "" +} + +type ResetGameLocalModeRsp struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ResetGameLocalModeRsp) Reset() { + *x = ResetGameLocalModeRsp{} + mi := &file_main_proto_msgTypes[110] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ResetGameLocalModeRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResetGameLocalModeRsp) ProtoMessage() {} + +func (x *ResetGameLocalModeRsp) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[110] + 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 ResetGameLocalModeRsp.ProtoReflect.Descriptor instead. +func (*ResetGameLocalModeRsp) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{110} +} + type GameExportRsp struct { state protoimpl.MessageState `protogen:"open.v1"` Export *GameExport `protobuf:"bytes,1,opt,name=export,proto3" json:"export,omitempty"` @@ -5640,7 +5728,7 @@ type GameExportRsp struct { func (x *GameExportRsp) Reset() { *x = GameExportRsp{} - mi := &file_main_proto_msgTypes[109] + mi := &file_main_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5652,7 +5740,7 @@ func (x *GameExportRsp) String() string { func (*GameExportRsp) ProtoMessage() {} func (x *GameExportRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[109] + mi := &file_main_proto_msgTypes[111] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5665,7 +5753,7 @@ func (x *GameExportRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GameExportRsp.ProtoReflect.Descriptor instead. func (*GameExportRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{109} + return file_main_proto_rawDescGZIP(), []int{111} } func (x *GameExportRsp) GetExport() *GameExport { @@ -5704,7 +5792,7 @@ type ScreenState struct { func (x *ScreenState) Reset() { *x = ScreenState{} - mi := &file_main_proto_msgTypes[110] + mi := &file_main_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5716,7 +5804,7 @@ func (x *ScreenState) String() string { func (*ScreenState) ProtoMessage() {} func (x *ScreenState) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[110] + mi := &file_main_proto_msgTypes[112] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5729,7 +5817,7 @@ func (x *ScreenState) ProtoReflect() protoreflect.Message { // Deprecated: Use ScreenState.ProtoReflect.Descriptor instead. func (*ScreenState) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{110} + return file_main_proto_rawDescGZIP(), []int{112} } func (x *ScreenState) GetID() string { @@ -5887,7 +5975,7 @@ type CreateScreenSessionReq struct { func (x *CreateScreenSessionReq) Reset() { *x = CreateScreenSessionReq{} - mi := &file_main_proto_msgTypes[111] + mi := &file_main_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5899,7 +5987,7 @@ func (x *CreateScreenSessionReq) String() string { func (*CreateScreenSessionReq) ProtoMessage() {} func (x *CreateScreenSessionReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[111] + mi := &file_main_proto_msgTypes[113] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5912,7 +6000,7 @@ func (x *CreateScreenSessionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateScreenSessionReq.ProtoReflect.Descriptor instead. func (*CreateScreenSessionReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{111} + return file_main_proto_rawDescGZIP(), []int{113} } type CreateScreenSessionRsp struct { @@ -5925,7 +6013,7 @@ type CreateScreenSessionRsp struct { func (x *CreateScreenSessionRsp) Reset() { *x = CreateScreenSessionRsp{} - mi := &file_main_proto_msgTypes[112] + mi := &file_main_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5937,7 +6025,7 @@ func (x *CreateScreenSessionRsp) String() string { func (*CreateScreenSessionRsp) ProtoMessage() {} func (x *CreateScreenSessionRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[112] + mi := &file_main_proto_msgTypes[114] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5950,7 +6038,7 @@ func (x *CreateScreenSessionRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateScreenSessionRsp.ProtoReflect.Descriptor instead. func (*CreateScreenSessionRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{112} + return file_main_proto_rawDescGZIP(), []int{114} } func (x *CreateScreenSessionRsp) GetScreenID() string { @@ -5977,7 +6065,7 @@ type GetScreenStateReq struct { func (x *GetScreenStateReq) Reset() { *x = GetScreenStateReq{} - mi := &file_main_proto_msgTypes[113] + mi := &file_main_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5989,7 +6077,7 @@ func (x *GetScreenStateReq) String() string { func (*GetScreenStateReq) ProtoMessage() {} func (x *GetScreenStateReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[113] + mi := &file_main_proto_msgTypes[115] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6002,7 +6090,7 @@ func (x *GetScreenStateReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScreenStateReq.ProtoReflect.Descriptor instead. func (*GetScreenStateReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{113} + return file_main_proto_rawDescGZIP(), []int{115} } func (x *GetScreenStateReq) GetScreenID() string { @@ -6028,7 +6116,7 @@ type GetScreenStateRsp struct { func (x *GetScreenStateRsp) Reset() { *x = GetScreenStateRsp{} - mi := &file_main_proto_msgTypes[114] + mi := &file_main_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6040,7 +6128,7 @@ func (x *GetScreenStateRsp) String() string { func (*GetScreenStateRsp) ProtoMessage() {} func (x *GetScreenStateRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[114] + mi := &file_main_proto_msgTypes[116] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6053,7 +6141,7 @@ func (x *GetScreenStateRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScreenStateRsp.ProtoReflect.Descriptor instead. func (*GetScreenStateRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{114} + return file_main_proto_rawDescGZIP(), []int{116} } func (x *GetScreenStateRsp) GetState() *ScreenState { @@ -6072,7 +6160,7 @@ type GetGameScreensReq struct { func (x *GetGameScreensReq) Reset() { *x = GetGameScreensReq{} - mi := &file_main_proto_msgTypes[115] + mi := &file_main_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6084,7 +6172,7 @@ func (x *GetGameScreensReq) String() string { func (*GetGameScreensReq) ProtoMessage() {} func (x *GetGameScreensReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[115] + mi := &file_main_proto_msgTypes[117] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6097,7 +6185,7 @@ func (x *GetGameScreensReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameScreensReq.ProtoReflect.Descriptor instead. func (*GetGameScreensReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{115} + return file_main_proto_rawDescGZIP(), []int{117} } func (x *GetGameScreensReq) GetGameID() int32 { @@ -6116,7 +6204,7 @@ type GetGameScreensRsp struct { func (x *GetGameScreensRsp) Reset() { *x = GetGameScreensRsp{} - mi := &file_main_proto_msgTypes[116] + mi := &file_main_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6128,7 +6216,7 @@ func (x *GetGameScreensRsp) String() string { func (*GetGameScreensRsp) ProtoMessage() {} func (x *GetGameScreensRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[116] + mi := &file_main_proto_msgTypes[118] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6141,7 +6229,7 @@ func (x *GetGameScreensRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameScreensRsp.ProtoReflect.Descriptor instead. func (*GetGameScreensRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{116} + return file_main_proto_rawDescGZIP(), []int{118} } func (x *GetGameScreensRsp) GetScreens() []*ScreenState { @@ -6166,7 +6254,7 @@ type MusicState struct { func (x *MusicState) Reset() { *x = MusicState{} - mi := &file_main_proto_msgTypes[117] + mi := &file_main_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6178,7 +6266,7 @@ func (x *MusicState) String() string { func (*MusicState) ProtoMessage() {} func (x *MusicState) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[117] + mi := &file_main_proto_msgTypes[119] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6191,7 +6279,7 @@ func (x *MusicState) ProtoReflect() protoreflect.Message { // Deprecated: Use MusicState.ProtoReflect.Descriptor instead. func (*MusicState) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{117} + return file_main_proto_rawDescGZIP(), []int{119} } func (x *MusicState) GetPlaylist() *Playlist { @@ -6252,7 +6340,7 @@ type GetGameMusicReq struct { func (x *GetGameMusicReq) Reset() { *x = GetGameMusicReq{} - mi := &file_main_proto_msgTypes[118] + mi := &file_main_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6264,7 +6352,7 @@ func (x *GetGameMusicReq) String() string { func (*GetGameMusicReq) ProtoMessage() {} func (x *GetGameMusicReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[118] + mi := &file_main_proto_msgTypes[120] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6277,7 +6365,7 @@ func (x *GetGameMusicReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameMusicReq.ProtoReflect.Descriptor instead. func (*GetGameMusicReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{118} + return file_main_proto_rawDescGZIP(), []int{120} } func (x *GetGameMusicReq) GetGameID() int32 { @@ -6299,7 +6387,7 @@ type GetGameMusicRsp struct { func (x *GetGameMusicRsp) Reset() { *x = GetGameMusicRsp{} - mi := &file_main_proto_msgTypes[119] + mi := &file_main_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6311,7 +6399,7 @@ func (x *GetGameMusicRsp) String() string { func (*GetGameMusicRsp) ProtoMessage() {} func (x *GetGameMusicRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[119] + mi := &file_main_proto_msgTypes[121] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6324,7 +6412,7 @@ func (x *GetGameMusicRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameMusicRsp.ProtoReflect.Descriptor instead. func (*GetGameMusicRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{119} + return file_main_proto_rawDescGZIP(), []int{121} } func (x *GetGameMusicRsp) GetPlaylists() []*Playlist { @@ -6370,7 +6458,7 @@ type SetGameMusicReq struct { func (x *SetGameMusicReq) Reset() { *x = SetGameMusicReq{} - mi := &file_main_proto_msgTypes[120] + mi := &file_main_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6382,7 +6470,7 @@ func (x *SetGameMusicReq) String() string { func (*SetGameMusicReq) ProtoMessage() {} func (x *SetGameMusicReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[120] + mi := &file_main_proto_msgTypes[122] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6395,7 +6483,7 @@ func (x *SetGameMusicReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SetGameMusicReq.ProtoReflect.Descriptor instead. func (*SetGameMusicReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{120} + return file_main_proto_rawDescGZIP(), []int{122} } func (x *SetGameMusicReq) GetGameID() int32 { @@ -6456,7 +6544,7 @@ type SetGameMusicRsp struct { func (x *SetGameMusicRsp) Reset() { *x = SetGameMusicRsp{} - mi := &file_main_proto_msgTypes[121] + mi := &file_main_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6468,7 +6556,7 @@ func (x *SetGameMusicRsp) String() string { func (*SetGameMusicRsp) ProtoMessage() {} func (x *SetGameMusicRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[121] + mi := &file_main_proto_msgTypes[123] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6481,7 +6569,7 @@ func (x *SetGameMusicRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use SetGameMusicRsp.ProtoReflect.Descriptor instead. func (*SetGameMusicRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{121} + return file_main_proto_rawDescGZIP(), []int{123} } func (x *SetGameMusicRsp) GetState() *MusicState { @@ -6501,7 +6589,7 @@ type AdvanceScreenMusicReq struct { func (x *AdvanceScreenMusicReq) Reset() { *x = AdvanceScreenMusicReq{} - mi := &file_main_proto_msgTypes[122] + mi := &file_main_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6513,7 +6601,7 @@ func (x *AdvanceScreenMusicReq) String() string { func (*AdvanceScreenMusicReq) ProtoMessage() {} func (x *AdvanceScreenMusicReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[122] + mi := &file_main_proto_msgTypes[124] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6526,7 +6614,7 @@ func (x *AdvanceScreenMusicReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AdvanceScreenMusicReq.ProtoReflect.Descriptor instead. func (*AdvanceScreenMusicReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{122} + return file_main_proto_rawDescGZIP(), []int{124} } func (x *AdvanceScreenMusicReq) GetScreenID() string { @@ -6552,7 +6640,7 @@ type AdvanceScreenMusicRsp struct { func (x *AdvanceScreenMusicRsp) Reset() { *x = AdvanceScreenMusicRsp{} - mi := &file_main_proto_msgTypes[123] + mi := &file_main_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6564,7 +6652,7 @@ func (x *AdvanceScreenMusicRsp) String() string { func (*AdvanceScreenMusicRsp) ProtoMessage() {} func (x *AdvanceScreenMusicRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[123] + mi := &file_main_proto_msgTypes[125] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6577,7 +6665,7 @@ func (x *AdvanceScreenMusicRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use AdvanceScreenMusicRsp.ProtoReflect.Descriptor instead. func (*AdvanceScreenMusicRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{123} + return file_main_proto_rawDescGZIP(), []int{125} } func (x *AdvanceScreenMusicRsp) GetState() *MusicState { @@ -6598,7 +6686,7 @@ type BindScreenReq struct { func (x *BindScreenReq) Reset() { *x = BindScreenReq{} - mi := &file_main_proto_msgTypes[124] + mi := &file_main_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6610,7 +6698,7 @@ func (x *BindScreenReq) String() string { func (*BindScreenReq) ProtoMessage() {} func (x *BindScreenReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[124] + mi := &file_main_proto_msgTypes[126] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6623,7 +6711,7 @@ func (x *BindScreenReq) ProtoReflect() protoreflect.Message { // Deprecated: Use BindScreenReq.ProtoReflect.Descriptor instead. func (*BindScreenReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{124} + return file_main_proto_rawDescGZIP(), []int{126} } func (x *BindScreenReq) GetScreenID() string { @@ -6656,7 +6744,7 @@ type BindScreenRsp struct { func (x *BindScreenRsp) Reset() { *x = BindScreenRsp{} - mi := &file_main_proto_msgTypes[125] + mi := &file_main_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6668,7 +6756,7 @@ func (x *BindScreenRsp) String() string { func (*BindScreenRsp) ProtoMessage() {} func (x *BindScreenRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[125] + mi := &file_main_proto_msgTypes[127] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6681,7 +6769,7 @@ func (x *BindScreenRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use BindScreenRsp.ProtoReflect.Descriptor instead. func (*BindScreenRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{125} + return file_main_proto_rawDescGZIP(), []int{127} } func (x *BindScreenRsp) GetState() *ScreenState { @@ -6700,7 +6788,7 @@ type UnbindScreenReq struct { func (x *UnbindScreenReq) Reset() { *x = UnbindScreenReq{} - mi := &file_main_proto_msgTypes[126] + mi := &file_main_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6712,7 +6800,7 @@ func (x *UnbindScreenReq) String() string { func (*UnbindScreenReq) ProtoMessage() {} func (x *UnbindScreenReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[126] + mi := &file_main_proto_msgTypes[128] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6725,7 +6813,7 @@ func (x *UnbindScreenReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UnbindScreenReq.ProtoReflect.Descriptor instead. func (*UnbindScreenReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{126} + return file_main_proto_rawDescGZIP(), []int{128} } func (x *UnbindScreenReq) GetScreenID() string { @@ -6743,7 +6831,7 @@ type UnbindScreenRsp struct { func (x *UnbindScreenRsp) Reset() { *x = UnbindScreenRsp{} - mi := &file_main_proto_msgTypes[127] + mi := &file_main_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6755,7 +6843,7 @@ func (x *UnbindScreenRsp) String() string { func (*UnbindScreenRsp) ProtoMessage() {} func (x *UnbindScreenRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[127] + mi := &file_main_proto_msgTypes[129] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6768,7 +6856,7 @@ func (x *UnbindScreenRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UnbindScreenRsp.ProtoReflect.Descriptor instead. func (*UnbindScreenRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{127} + return file_main_proto_rawDescGZIP(), []int{129} } type SetScreenSoundReq struct { @@ -6781,7 +6869,7 @@ type SetScreenSoundReq struct { func (x *SetScreenSoundReq) Reset() { *x = SetScreenSoundReq{} - mi := &file_main_proto_msgTypes[128] + mi := &file_main_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6793,7 +6881,7 @@ func (x *SetScreenSoundReq) String() string { func (*SetScreenSoundReq) ProtoMessage() {} func (x *SetScreenSoundReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[128] + mi := &file_main_proto_msgTypes[130] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6806,7 +6894,7 @@ func (x *SetScreenSoundReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SetScreenSoundReq.ProtoReflect.Descriptor instead. func (*SetScreenSoundReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{128} + return file_main_proto_rawDescGZIP(), []int{130} } func (x *SetScreenSoundReq) GetScreenID() string { @@ -6831,7 +6919,7 @@ type SetScreenSoundRsp struct { func (x *SetScreenSoundRsp) Reset() { *x = SetScreenSoundRsp{} - mi := &file_main_proto_msgTypes[129] + mi := &file_main_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6843,7 +6931,7 @@ func (x *SetScreenSoundRsp) String() string { func (*SetScreenSoundRsp) ProtoMessage() {} func (x *SetScreenSoundRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[129] + mi := &file_main_proto_msgTypes[131] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6856,7 +6944,7 @@ func (x *SetScreenSoundRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use SetScreenSoundRsp.ProtoReflect.Descriptor instead. func (*SetScreenSoundRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{129} + return file_main_proto_rawDescGZIP(), []int{131} } type MapItem struct { @@ -6875,7 +6963,7 @@ type MapItem struct { func (x *MapItem) Reset() { *x = MapItem{} - mi := &file_main_proto_msgTypes[130] + mi := &file_main_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6887,7 +6975,7 @@ func (x *MapItem) String() string { func (*MapItem) ProtoMessage() {} func (x *MapItem) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[130] + mi := &file_main_proto_msgTypes[132] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6900,7 +6988,7 @@ func (x *MapItem) ProtoReflect() protoreflect.Message { // Deprecated: Use MapItem.ProtoReflect.Descriptor instead. func (*MapItem) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{130} + return file_main_proto_rawDescGZIP(), []int{132} } func (x *MapItem) GetKind() string { @@ -6968,7 +7056,7 @@ type GetGameMapReq struct { func (x *GetGameMapReq) Reset() { *x = GetGameMapReq{} - mi := &file_main_proto_msgTypes[131] + mi := &file_main_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6980,7 +7068,7 @@ func (x *GetGameMapReq) String() string { func (*GetGameMapReq) ProtoMessage() {} func (x *GetGameMapReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[131] + mi := &file_main_proto_msgTypes[133] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6993,7 +7081,7 @@ func (x *GetGameMapReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameMapReq.ProtoReflect.Descriptor instead. func (*GetGameMapReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{131} + return file_main_proto_rawDescGZIP(), []int{133} } func (x *GetGameMapReq) GetGameID() int32 { @@ -7012,7 +7100,7 @@ type GetGameMapRsp struct { func (x *GetGameMapRsp) Reset() { *x = GetGameMapRsp{} - mi := &file_main_proto_msgTypes[132] + mi := &file_main_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7024,7 +7112,7 @@ func (x *GetGameMapRsp) String() string { func (*GetGameMapRsp) ProtoMessage() {} func (x *GetGameMapRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[132] + mi := &file_main_proto_msgTypes[134] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7037,7 +7125,7 @@ func (x *GetGameMapRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameMapRsp.ProtoReflect.Descriptor instead. func (*GetGameMapRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{132} + return file_main_proto_rawDescGZIP(), []int{134} } func (x *GetGameMapRsp) GetItems() []*MapItem { @@ -7061,7 +7149,7 @@ type UpdateGameMapItemReq struct { func (x *UpdateGameMapItemReq) Reset() { *x = UpdateGameMapItemReq{} - mi := &file_main_proto_msgTypes[133] + mi := &file_main_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7073,7 +7161,7 @@ func (x *UpdateGameMapItemReq) String() string { func (*UpdateGameMapItemReq) ProtoMessage() {} func (x *UpdateGameMapItemReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[133] + mi := &file_main_proto_msgTypes[135] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7086,7 +7174,7 @@ func (x *UpdateGameMapItemReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGameMapItemReq.ProtoReflect.Descriptor instead. func (*UpdateGameMapItemReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{133} + return file_main_proto_rawDescGZIP(), []int{135} } func (x *UpdateGameMapItemReq) GetGameID() int32 { @@ -7139,7 +7227,7 @@ type UpdateGameMapItemRsp struct { func (x *UpdateGameMapItemRsp) Reset() { *x = UpdateGameMapItemRsp{} - mi := &file_main_proto_msgTypes[134] + mi := &file_main_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7151,7 +7239,7 @@ func (x *UpdateGameMapItemRsp) String() string { func (*UpdateGameMapItemRsp) ProtoMessage() {} func (x *UpdateGameMapItemRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[134] + mi := &file_main_proto_msgTypes[136] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7164,7 +7252,7 @@ func (x *UpdateGameMapItemRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGameMapItemRsp.ProtoReflect.Descriptor instead. func (*UpdateGameMapItemRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{134} + return file_main_proto_rawDescGZIP(), []int{136} } type SetScreenModeReq struct { @@ -7177,7 +7265,7 @@ type SetScreenModeReq struct { func (x *SetScreenModeReq) Reset() { *x = SetScreenModeReq{} - mi := &file_main_proto_msgTypes[135] + mi := &file_main_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7189,7 +7277,7 @@ func (x *SetScreenModeReq) String() string { func (*SetScreenModeReq) ProtoMessage() {} func (x *SetScreenModeReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[135] + mi := &file_main_proto_msgTypes[137] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7202,7 +7290,7 @@ func (x *SetScreenModeReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SetScreenModeReq.ProtoReflect.Descriptor instead. func (*SetScreenModeReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{135} + return file_main_proto_rawDescGZIP(), []int{137} } func (x *SetScreenModeReq) GetGameID() int32 { @@ -7227,7 +7315,7 @@ type SetScreenModeRsp struct { func (x *SetScreenModeRsp) Reset() { *x = SetScreenModeRsp{} - mi := &file_main_proto_msgTypes[136] + mi := &file_main_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7239,7 +7327,7 @@ func (x *SetScreenModeRsp) String() string { func (*SetScreenModeRsp) ProtoMessage() {} func (x *SetScreenModeRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[136] + mi := &file_main_proto_msgTypes[138] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7252,7 +7340,7 @@ func (x *SetScreenModeRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use SetScreenModeRsp.ProtoReflect.Descriptor instead. func (*SetScreenModeRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{136} + return file_main_proto_rawDescGZIP(), []int{138} } type SetScreenTimerReq struct { @@ -7266,7 +7354,7 @@ type SetScreenTimerReq struct { func (x *SetScreenTimerReq) Reset() { *x = SetScreenTimerReq{} - mi := &file_main_proto_msgTypes[137] + mi := &file_main_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7278,7 +7366,7 @@ func (x *SetScreenTimerReq) String() string { func (*SetScreenTimerReq) ProtoMessage() {} func (x *SetScreenTimerReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[137] + mi := &file_main_proto_msgTypes[139] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7291,7 +7379,7 @@ func (x *SetScreenTimerReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SetScreenTimerReq.ProtoReflect.Descriptor instead. func (*SetScreenTimerReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{137} + return file_main_proto_rawDescGZIP(), []int{139} } func (x *SetScreenTimerReq) GetGameID() int32 { @@ -7323,7 +7411,7 @@ type SetScreenTimerRsp struct { func (x *SetScreenTimerRsp) Reset() { *x = SetScreenTimerRsp{} - mi := &file_main_proto_msgTypes[138] + mi := &file_main_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7335,7 +7423,7 @@ func (x *SetScreenTimerRsp) String() string { func (*SetScreenTimerRsp) ProtoMessage() {} func (x *SetScreenTimerRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[138] + mi := &file_main_proto_msgTypes[140] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7348,7 +7436,7 @@ func (x *SetScreenTimerRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use SetScreenTimerRsp.ProtoReflect.Descriptor instead. func (*SetScreenTimerRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{138} + return file_main_proto_rawDescGZIP(), []int{140} } type SendScreenCommandReq struct { @@ -7363,7 +7451,7 @@ type SendScreenCommandReq struct { func (x *SendScreenCommandReq) Reset() { *x = SendScreenCommandReq{} - mi := &file_main_proto_msgTypes[139] + mi := &file_main_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7375,7 +7463,7 @@ func (x *SendScreenCommandReq) String() string { func (*SendScreenCommandReq) ProtoMessage() {} func (x *SendScreenCommandReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[139] + mi := &file_main_proto_msgTypes[141] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7388,7 +7476,7 @@ func (x *SendScreenCommandReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SendScreenCommandReq.ProtoReflect.Descriptor instead. func (*SendScreenCommandReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{139} + return file_main_proto_rawDescGZIP(), []int{141} } func (x *SendScreenCommandReq) GetGameID() int32 { @@ -7427,7 +7515,7 @@ type SendScreenCommandRsp struct { func (x *SendScreenCommandRsp) Reset() { *x = SendScreenCommandRsp{} - mi := &file_main_proto_msgTypes[140] + mi := &file_main_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7439,7 +7527,7 @@ func (x *SendScreenCommandRsp) String() string { func (*SendScreenCommandRsp) ProtoMessage() {} func (x *SendScreenCommandRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[140] + mi := &file_main_proto_msgTypes[142] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7452,7 +7540,7 @@ func (x *SendScreenCommandRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use SendScreenCommandRsp.ProtoReflect.Descriptor instead. func (*SendScreenCommandRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{140} + return file_main_proto_rawDescGZIP(), []int{142} } type ScreenPlanStep struct { @@ -7467,7 +7555,7 @@ type ScreenPlanStep struct { func (x *ScreenPlanStep) Reset() { *x = ScreenPlanStep{} - mi := &file_main_proto_msgTypes[141] + mi := &file_main_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7479,7 +7567,7 @@ func (x *ScreenPlanStep) String() string { func (*ScreenPlanStep) ProtoMessage() {} func (x *ScreenPlanStep) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[141] + mi := &file_main_proto_msgTypes[143] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7492,7 +7580,7 @@ func (x *ScreenPlanStep) ProtoReflect() protoreflect.Message { // Deprecated: Use ScreenPlanStep.ProtoReflect.Descriptor instead. func (*ScreenPlanStep) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{141} + return file_main_proto_rawDescGZIP(), []int{143} } func (x *ScreenPlanStep) GetMode() ScreenMode { @@ -7533,7 +7621,7 @@ type ScreenPlan struct { func (x *ScreenPlan) Reset() { *x = ScreenPlan{} - mi := &file_main_proto_msgTypes[142] + mi := &file_main_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7545,7 +7633,7 @@ func (x *ScreenPlan) String() string { func (*ScreenPlan) ProtoMessage() {} func (x *ScreenPlan) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[142] + mi := &file_main_proto_msgTypes[144] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7558,7 +7646,7 @@ func (x *ScreenPlan) ProtoReflect() protoreflect.Message { // Deprecated: Use ScreenPlan.ProtoReflect.Descriptor instead. func (*ScreenPlan) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{142} + return file_main_proto_rawDescGZIP(), []int{144} } func (x *ScreenPlan) GetSteps() []*ScreenPlanStep { @@ -7584,7 +7672,7 @@ type GetScreenPlanReq struct { func (x *GetScreenPlanReq) Reset() { *x = GetScreenPlanReq{} - mi := &file_main_proto_msgTypes[143] + mi := &file_main_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7596,7 +7684,7 @@ func (x *GetScreenPlanReq) String() string { func (*GetScreenPlanReq) ProtoMessage() {} func (x *GetScreenPlanReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[143] + mi := &file_main_proto_msgTypes[145] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7609,7 +7697,7 @@ func (x *GetScreenPlanReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScreenPlanReq.ProtoReflect.Descriptor instead. func (*GetScreenPlanReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{143} + return file_main_proto_rawDescGZIP(), []int{145} } func (x *GetScreenPlanReq) GetGameID() int32 { @@ -7628,7 +7716,7 @@ type GetScreenPlanRsp struct { func (x *GetScreenPlanRsp) Reset() { *x = GetScreenPlanRsp{} - mi := &file_main_proto_msgTypes[144] + mi := &file_main_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7640,7 +7728,7 @@ func (x *GetScreenPlanRsp) String() string { func (*GetScreenPlanRsp) ProtoMessage() {} func (x *GetScreenPlanRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[144] + mi := &file_main_proto_msgTypes[146] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7653,7 +7741,7 @@ func (x *GetScreenPlanRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScreenPlanRsp.ProtoReflect.Descriptor instead. func (*GetScreenPlanRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{144} + return file_main_proto_rawDescGZIP(), []int{146} } func (x *GetScreenPlanRsp) GetPlan() *ScreenPlan { @@ -7674,7 +7762,7 @@ type SaveScreenPlanReq struct { func (x *SaveScreenPlanReq) Reset() { *x = SaveScreenPlanReq{} - mi := &file_main_proto_msgTypes[145] + mi := &file_main_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7686,7 +7774,7 @@ func (x *SaveScreenPlanReq) String() string { func (*SaveScreenPlanReq) ProtoMessage() {} func (x *SaveScreenPlanReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[145] + mi := &file_main_proto_msgTypes[147] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7699,7 +7787,7 @@ func (x *SaveScreenPlanReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SaveScreenPlanReq.ProtoReflect.Descriptor instead. func (*SaveScreenPlanReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{145} + return file_main_proto_rawDescGZIP(), []int{147} } func (x *SaveScreenPlanReq) GetGameID() int32 { @@ -7732,7 +7820,7 @@ type SaveScreenPlanRsp struct { func (x *SaveScreenPlanRsp) Reset() { *x = SaveScreenPlanRsp{} - mi := &file_main_proto_msgTypes[146] + mi := &file_main_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7744,7 +7832,7 @@ func (x *SaveScreenPlanRsp) String() string { func (*SaveScreenPlanRsp) ProtoMessage() {} func (x *SaveScreenPlanRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[146] + mi := &file_main_proto_msgTypes[148] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7757,7 +7845,7 @@ func (x *SaveScreenPlanRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use SaveScreenPlanRsp.ProtoReflect.Descriptor instead. func (*SaveScreenPlanRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{146} + return file_main_proto_rawDescGZIP(), []int{148} } func (x *SaveScreenPlanRsp) GetPlan() *ScreenPlan { @@ -7777,7 +7865,7 @@ type SetScreenPlanStepReq struct { func (x *SetScreenPlanStepReq) Reset() { *x = SetScreenPlanStepReq{} - mi := &file_main_proto_msgTypes[147] + mi := &file_main_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7789,7 +7877,7 @@ func (x *SetScreenPlanStepReq) String() string { func (*SetScreenPlanStepReq) ProtoMessage() {} func (x *SetScreenPlanStepReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[147] + mi := &file_main_proto_msgTypes[149] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7802,7 +7890,7 @@ func (x *SetScreenPlanStepReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SetScreenPlanStepReq.ProtoReflect.Descriptor instead. func (*SetScreenPlanStepReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{147} + return file_main_proto_rawDescGZIP(), []int{149} } func (x *SetScreenPlanStepReq) GetGameID() int32 { @@ -7828,7 +7916,7 @@ type SetScreenPlanStepRsp struct { func (x *SetScreenPlanStepRsp) Reset() { *x = SetScreenPlanStepRsp{} - mi := &file_main_proto_msgTypes[148] + mi := &file_main_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7840,7 +7928,7 @@ func (x *SetScreenPlanStepRsp) String() string { func (*SetScreenPlanStepRsp) ProtoMessage() {} func (x *SetScreenPlanStepRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[148] + mi := &file_main_proto_msgTypes[150] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7853,7 +7941,7 @@ func (x *SetScreenPlanStepRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use SetScreenPlanStepRsp.ProtoReflect.Descriptor instead. func (*SetScreenPlanStepRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{148} + return file_main_proto_rawDescGZIP(), []int{150} } func (x *SetScreenPlanStepRsp) GetPlan() *ScreenPlan { @@ -7873,7 +7961,7 @@ type GetScreenResultsReq struct { func (x *GetScreenResultsReq) Reset() { *x = GetScreenResultsReq{} - mi := &file_main_proto_msgTypes[149] + mi := &file_main_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7885,7 +7973,7 @@ func (x *GetScreenResultsReq) String() string { func (*GetScreenResultsReq) ProtoMessage() {} func (x *GetScreenResultsReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[149] + mi := &file_main_proto_msgTypes[151] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7898,7 +7986,7 @@ func (x *GetScreenResultsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScreenResultsReq.ProtoReflect.Descriptor instead. func (*GetScreenResultsReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{149} + return file_main_proto_rawDescGZIP(), []int{151} } func (x *GetScreenResultsReq) GetScreenID() string { @@ -7925,7 +8013,7 @@ type GetScreenResultsRsp struct { func (x *GetScreenResultsRsp) Reset() { *x = GetScreenResultsRsp{} - mi := &file_main_proto_msgTypes[150] + mi := &file_main_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7937,7 +8025,7 @@ func (x *GetScreenResultsRsp) String() string { func (*GetScreenResultsRsp) ProtoMessage() {} func (x *GetScreenResultsRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[150] + mi := &file_main_proto_msgTypes[152] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7950,7 +8038,7 @@ func (x *GetScreenResultsRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScreenResultsRsp.ProtoReflect.Descriptor instead. func (*GetScreenResultsRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{150} + return file_main_proto_rawDescGZIP(), []int{152} } func (x *GetScreenResultsRsp) GetQuestions() []*ResultsQuestion { @@ -7977,7 +8065,7 @@ type GetParticipationReq struct { func (x *GetParticipationReq) Reset() { *x = GetParticipationReq{} - mi := &file_main_proto_msgTypes[151] + mi := &file_main_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7989,7 +8077,7 @@ func (x *GetParticipationReq) String() string { func (*GetParticipationReq) ProtoMessage() {} func (x *GetParticipationReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[151] + mi := &file_main_proto_msgTypes[153] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8002,7 +8090,7 @@ func (x *GetParticipationReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetParticipationReq.ProtoReflect.Descriptor instead. func (*GetParticipationReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{151} + return file_main_proto_rawDescGZIP(), []int{153} } func (x *GetParticipationReq) GetToken() string { @@ -8024,7 +8112,7 @@ type AnswerParticipationReq struct { func (x *AnswerParticipationReq) Reset() { *x = AnswerParticipationReq{} - mi := &file_main_proto_msgTypes[152] + mi := &file_main_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8036,7 +8124,7 @@ func (x *AnswerParticipationReq) String() string { func (*AnswerParticipationReq) ProtoMessage() {} func (x *AnswerParticipationReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[152] + mi := &file_main_proto_msgTypes[154] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8049,7 +8137,7 @@ func (x *AnswerParticipationReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AnswerParticipationReq.ProtoReflect.Descriptor instead. func (*AnswerParticipationReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{152} + return file_main_proto_rawDescGZIP(), []int{154} } func (x *AnswerParticipationReq) GetToken() string { @@ -8087,7 +8175,7 @@ type ParticipationRsp struct { func (x *ParticipationRsp) Reset() { *x = ParticipationRsp{} - mi := &file_main_proto_msgTypes[153] + mi := &file_main_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8099,7 +8187,7 @@ func (x *ParticipationRsp) String() string { func (*ParticipationRsp) ProtoMessage() {} func (x *ParticipationRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[153] + mi := &file_main_proto_msgTypes[155] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8112,7 +8200,7 @@ func (x *ParticipationRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use ParticipationRsp.ProtoReflect.Descriptor instead. func (*ParticipationRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{153} + return file_main_proto_rawDescGZIP(), []int{155} } func (x *ParticipationRsp) GetTeamName() string { @@ -8181,7 +8269,7 @@ type Team struct { func (x *Team) Reset() { *x = Team{} - mi := &file_main_proto_msgTypes[154] + mi := &file_main_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8193,7 +8281,7 @@ func (x *Team) String() string { func (*Team) ProtoMessage() {} func (x *Team) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[154] + mi := &file_main_proto_msgTypes[156] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8206,7 +8294,7 @@ func (x *Team) ProtoReflect() protoreflect.Message { // Deprecated: Use Team.ProtoReflect.Descriptor instead. func (*Team) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{154} + return file_main_proto_rawDescGZIP(), []int{156} } func (x *Team) GetID() string { @@ -8302,7 +8390,7 @@ type GetGameReq struct { func (x *GetGameReq) Reset() { *x = GetGameReq{} - mi := &file_main_proto_msgTypes[155] + mi := &file_main_proto_msgTypes[157] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8314,7 +8402,7 @@ func (x *GetGameReq) String() string { func (*GetGameReq) ProtoMessage() {} func (x *GetGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[155] + mi := &file_main_proto_msgTypes[157] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8327,7 +8415,7 @@ func (x *GetGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameReq.ProtoReflect.Descriptor instead. func (*GetGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{155} + return file_main_proto_rawDescGZIP(), []int{157} } func (x *GetGameReq) GetID() int32 { @@ -8346,7 +8434,7 @@ type GetGameRsp struct { func (x *GetGameRsp) Reset() { *x = GetGameRsp{} - mi := &file_main_proto_msgTypes[156] + mi := &file_main_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8358,7 +8446,7 @@ func (x *GetGameRsp) String() string { func (*GetGameRsp) ProtoMessage() {} func (x *GetGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[156] + mi := &file_main_proto_msgTypes[158] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8371,7 +8459,7 @@ func (x *GetGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameRsp.ProtoReflect.Descriptor instead. func (*GetGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{156} + return file_main_proto_rawDescGZIP(), []int{158} } func (x *GetGameRsp) GetGame() *Game { @@ -8390,7 +8478,7 @@ type GetGameAnswersReq struct { func (x *GetGameAnswersReq) Reset() { *x = GetGameAnswersReq{} - mi := &file_main_proto_msgTypes[157] + mi := &file_main_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8402,7 +8490,7 @@ func (x *GetGameAnswersReq) String() string { func (*GetGameAnswersReq) ProtoMessage() {} func (x *GetGameAnswersReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[157] + mi := &file_main_proto_msgTypes[159] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8415,7 +8503,7 @@ func (x *GetGameAnswersReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameAnswersReq.ProtoReflect.Descriptor instead. func (*GetGameAnswersReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{157} + return file_main_proto_rawDescGZIP(), []int{159} } func (x *GetGameAnswersReq) GetGameID() int32 { @@ -8435,7 +8523,7 @@ type GetGameAnswersRsp struct { func (x *GetGameAnswersRsp) Reset() { *x = GetGameAnswersRsp{} - mi := &file_main_proto_msgTypes[158] + mi := &file_main_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8447,7 +8535,7 @@ func (x *GetGameAnswersRsp) String() string { func (*GetGameAnswersRsp) ProtoMessage() {} func (x *GetGameAnswersRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[158] + mi := &file_main_proto_msgTypes[160] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8460,7 +8548,7 @@ func (x *GetGameAnswersRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameAnswersRsp.ProtoReflect.Descriptor instead. func (*GetGameAnswersRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{158} + return file_main_proto_rawDescGZIP(), []int{160} } func (x *GetGameAnswersRsp) GetQuestions() []*Question { @@ -8486,7 +8574,7 @@ type GetGameResultsReq struct { func (x *GetGameResultsReq) Reset() { *x = GetGameResultsReq{} - mi := &file_main_proto_msgTypes[159] + mi := &file_main_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8498,7 +8586,7 @@ func (x *GetGameResultsReq) String() string { func (*GetGameResultsReq) ProtoMessage() {} func (x *GetGameResultsReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[159] + mi := &file_main_proto_msgTypes[161] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8511,7 +8599,7 @@ func (x *GetGameResultsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameResultsReq.ProtoReflect.Descriptor instead. func (*GetGameResultsReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{159} + return file_main_proto_rawDescGZIP(), []int{161} } func (x *GetGameResultsReq) GetGameID() int32 { @@ -8533,7 +8621,7 @@ type ResultsQuestion struct { func (x *ResultsQuestion) Reset() { *x = ResultsQuestion{} - mi := &file_main_proto_msgTypes[160] + mi := &file_main_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8545,7 +8633,7 @@ func (x *ResultsQuestion) String() string { func (*ResultsQuestion) ProtoMessage() {} func (x *ResultsQuestion) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[160] + mi := &file_main_proto_msgTypes[162] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8558,7 +8646,7 @@ func (x *ResultsQuestion) ProtoReflect() protoreflect.Message { // Deprecated: Use ResultsQuestion.ProtoReflect.Descriptor instead. func (*ResultsQuestion) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{160} + return file_main_proto_rawDescGZIP(), []int{162} } func (x *ResultsQuestion) GetCode() string { @@ -8594,7 +8682,7 @@ type TeamResult struct { func (x *TeamResult) Reset() { *x = TeamResult{} - mi := &file_main_proto_msgTypes[161] + mi := &file_main_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8606,7 +8694,7 @@ func (x *TeamResult) String() string { func (*TeamResult) ProtoMessage() {} func (x *TeamResult) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[161] + mi := &file_main_proto_msgTypes[163] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8619,7 +8707,7 @@ func (x *TeamResult) ProtoReflect() protoreflect.Message { // Deprecated: Use TeamResult.ProtoReflect.Descriptor instead. func (*TeamResult) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{161} + return file_main_proto_rawDescGZIP(), []int{163} } func (x *TeamResult) GetTeam() *Team { @@ -8667,7 +8755,7 @@ type GetGameResultsRsp struct { func (x *GetGameResultsRsp) Reset() { *x = GetGameResultsRsp{} - mi := &file_main_proto_msgTypes[162] + mi := &file_main_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8679,7 +8767,7 @@ func (x *GetGameResultsRsp) String() string { func (*GetGameResultsRsp) ProtoMessage() {} func (x *GetGameResultsRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[162] + mi := &file_main_proto_msgTypes[164] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8692,7 +8780,7 @@ func (x *GetGameResultsRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameResultsRsp.ProtoReflect.Descriptor instead. func (*GetGameResultsRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{162} + return file_main_proto_rawDescGZIP(), []int{164} } func (x *GetGameResultsRsp) GetQuestions() []*ResultsQuestion { @@ -8727,7 +8815,7 @@ type GameReview struct { func (x *GameReview) Reset() { *x = GameReview{} - mi := &file_main_proto_msgTypes[163] + mi := &file_main_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8739,7 +8827,7 @@ func (x *GameReview) String() string { func (*GameReview) ProtoMessage() {} func (x *GameReview) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[163] + mi := &file_main_proto_msgTypes[165] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8752,7 +8840,7 @@ func (x *GameReview) ProtoReflect() protoreflect.Message { // Deprecated: Use GameReview.ProtoReflect.Descriptor instead. func (*GameReview) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{163} + return file_main_proto_rawDescGZIP(), []int{165} } func (x *GameReview) GetID() int32 { @@ -8839,7 +8927,7 @@ type CreateGameReviewReq struct { func (x *CreateGameReviewReq) Reset() { *x = CreateGameReviewReq{} - mi := &file_main_proto_msgTypes[164] + mi := &file_main_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8851,7 +8939,7 @@ func (x *CreateGameReviewReq) String() string { func (*CreateGameReviewReq) ProtoMessage() {} func (x *CreateGameReviewReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[164] + mi := &file_main_proto_msgTypes[166] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8864,7 +8952,7 @@ func (x *CreateGameReviewReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateGameReviewReq.ProtoReflect.Descriptor instead. func (*CreateGameReviewReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{164} + return file_main_proto_rawDescGZIP(), []int{166} } func (x *CreateGameReviewReq) GetGameID() int32 { @@ -8918,7 +9006,7 @@ type CreateGameReviewRsp struct { func (x *CreateGameReviewRsp) Reset() { *x = CreateGameReviewRsp{} - mi := &file_main_proto_msgTypes[165] + mi := &file_main_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8930,7 +9018,7 @@ func (x *CreateGameReviewRsp) String() string { func (*CreateGameReviewRsp) ProtoMessage() {} func (x *CreateGameReviewRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[165] + mi := &file_main_proto_msgTypes[167] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8943,7 +9031,7 @@ func (x *CreateGameReviewRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateGameReviewRsp.ProtoReflect.Descriptor instead. func (*CreateGameReviewRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{165} + return file_main_proto_rawDescGZIP(), []int{167} } func (x *CreateGameReviewRsp) GetReview() *GameReview { @@ -8962,7 +9050,7 @@ type GetGameReviewsReq struct { func (x *GetGameReviewsReq) Reset() { *x = GetGameReviewsReq{} - mi := &file_main_proto_msgTypes[166] + mi := &file_main_proto_msgTypes[168] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8974,7 +9062,7 @@ func (x *GetGameReviewsReq) String() string { func (*GetGameReviewsReq) ProtoMessage() {} func (x *GetGameReviewsReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[166] + mi := &file_main_proto_msgTypes[168] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8987,7 +9075,7 @@ func (x *GetGameReviewsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameReviewsReq.ProtoReflect.Descriptor instead. func (*GetGameReviewsReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{166} + return file_main_proto_rawDescGZIP(), []int{168} } func (x *GetGameReviewsReq) GetGameID() int32 { @@ -9006,7 +9094,7 @@ type GetScenarioReviewsReq struct { func (x *GetScenarioReviewsReq) Reset() { *x = GetScenarioReviewsReq{} - mi := &file_main_proto_msgTypes[167] + mi := &file_main_proto_msgTypes[169] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9018,7 +9106,7 @@ func (x *GetScenarioReviewsReq) String() string { func (*GetScenarioReviewsReq) ProtoMessage() {} func (x *GetScenarioReviewsReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[167] + mi := &file_main_proto_msgTypes[169] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9031,7 +9119,7 @@ func (x *GetScenarioReviewsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScenarioReviewsReq.ProtoReflect.Descriptor instead. func (*GetScenarioReviewsReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{167} + return file_main_proto_rawDescGZIP(), []int{169} } func (x *GetScenarioReviewsReq) GetScenarioID() int32 { @@ -9049,7 +9137,7 @@ type GetReviewsForModerationReq struct { func (x *GetReviewsForModerationReq) Reset() { *x = GetReviewsForModerationReq{} - mi := &file_main_proto_msgTypes[168] + mi := &file_main_proto_msgTypes[170] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9061,7 +9149,7 @@ func (x *GetReviewsForModerationReq) String() string { func (*GetReviewsForModerationReq) ProtoMessage() {} func (x *GetReviewsForModerationReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[168] + mi := &file_main_proto_msgTypes[170] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9074,7 +9162,7 @@ func (x *GetReviewsForModerationReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetReviewsForModerationReq.ProtoReflect.Descriptor instead. func (*GetReviewsForModerationReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{168} + return file_main_proto_rawDescGZIP(), []int{170} } type GetGameReviewsRsp struct { @@ -9088,7 +9176,7 @@ type GetGameReviewsRsp struct { func (x *GetGameReviewsRsp) Reset() { *x = GetGameReviewsRsp{} - mi := &file_main_proto_msgTypes[169] + mi := &file_main_proto_msgTypes[171] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9100,7 +9188,7 @@ func (x *GetGameReviewsRsp) String() string { func (*GetGameReviewsRsp) ProtoMessage() {} func (x *GetGameReviewsRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[169] + mi := &file_main_proto_msgTypes[171] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9113,7 +9201,7 @@ func (x *GetGameReviewsRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameReviewsRsp.ProtoReflect.Descriptor instead. func (*GetGameReviewsRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{169} + return file_main_proto_rawDescGZIP(), []int{171} } func (x *GetGameReviewsRsp) GetAverageRating() float64 { @@ -9147,7 +9235,7 @@ type ModerateGameReviewReq struct { func (x *ModerateGameReviewReq) Reset() { *x = ModerateGameReviewReq{} - mi := &file_main_proto_msgTypes[170] + mi := &file_main_proto_msgTypes[172] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9159,7 +9247,7 @@ func (x *ModerateGameReviewReq) String() string { func (*ModerateGameReviewReq) ProtoMessage() {} func (x *ModerateGameReviewReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[170] + mi := &file_main_proto_msgTypes[172] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9172,7 +9260,7 @@ func (x *ModerateGameReviewReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ModerateGameReviewReq.ProtoReflect.Descriptor instead. func (*ModerateGameReviewReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{170} + return file_main_proto_rawDescGZIP(), []int{172} } func (x *ModerateGameReviewReq) GetID() int32 { @@ -9198,7 +9286,7 @@ type ModerateGameReviewRsp struct { func (x *ModerateGameReviewRsp) Reset() { *x = ModerateGameReviewRsp{} - mi := &file_main_proto_msgTypes[171] + mi := &file_main_proto_msgTypes[173] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9210,7 +9298,7 @@ func (x *ModerateGameReviewRsp) String() string { func (*ModerateGameReviewRsp) ProtoMessage() {} func (x *ModerateGameReviewRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[171] + mi := &file_main_proto_msgTypes[173] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9223,7 +9311,7 @@ func (x *ModerateGameReviewRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use ModerateGameReviewRsp.ProtoReflect.Descriptor instead. func (*ModerateGameReviewRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{171} + return file_main_proto_rawDescGZIP(), []int{173} } func (x *ModerateGameReviewRsp) GetReview() *GameReview { @@ -9248,7 +9336,7 @@ type UpdateGameReq struct { func (x *UpdateGameReq) Reset() { *x = UpdateGameReq{} - mi := &file_main_proto_msgTypes[172] + mi := &file_main_proto_msgTypes[174] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9260,7 +9348,7 @@ func (x *UpdateGameReq) String() string { func (*UpdateGameReq) ProtoMessage() {} func (x *UpdateGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[172] + mi := &file_main_proto_msgTypes[174] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9273,7 +9361,7 @@ func (x *UpdateGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGameReq.ProtoReflect.Descriptor instead. func (*UpdateGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{172} + return file_main_proto_rawDescGZIP(), []int{174} } func (x *UpdateGameReq) GetID() int32 { @@ -9333,7 +9421,7 @@ type UpdateGameRsp struct { func (x *UpdateGameRsp) Reset() { *x = UpdateGameRsp{} - mi := &file_main_proto_msgTypes[173] + mi := &file_main_proto_msgTypes[175] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9345,7 +9433,7 @@ func (x *UpdateGameRsp) String() string { func (*UpdateGameRsp) ProtoMessage() {} func (x *UpdateGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[173] + mi := &file_main_proto_msgTypes[175] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9358,7 +9446,7 @@ func (x *UpdateGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGameRsp.ProtoReflect.Descriptor instead. func (*UpdateGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{173} + return file_main_proto_rawDescGZIP(), []int{175} } type StartGameReq struct { @@ -9370,7 +9458,7 @@ type StartGameReq struct { func (x *StartGameReq) Reset() { *x = StartGameReq{} - mi := &file_main_proto_msgTypes[174] + mi := &file_main_proto_msgTypes[176] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9382,7 +9470,7 @@ func (x *StartGameReq) String() string { func (*StartGameReq) ProtoMessage() {} func (x *StartGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[174] + mi := &file_main_proto_msgTypes[176] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9395,7 +9483,7 @@ func (x *StartGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use StartGameReq.ProtoReflect.Descriptor instead. func (*StartGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{174} + return file_main_proto_rawDescGZIP(), []int{176} } func (x *StartGameReq) GetID() int32 { @@ -9413,7 +9501,7 @@ type StartGameRsp struct { func (x *StartGameRsp) Reset() { *x = StartGameRsp{} - mi := &file_main_proto_msgTypes[175] + mi := &file_main_proto_msgTypes[177] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9425,7 +9513,7 @@ func (x *StartGameRsp) String() string { func (*StartGameRsp) ProtoMessage() {} func (x *StartGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[175] + mi := &file_main_proto_msgTypes[177] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9438,7 +9526,7 @@ func (x *StartGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use StartGameRsp.ProtoReflect.Descriptor instead. func (*StartGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{175} + return file_main_proto_rawDescGZIP(), []int{177} } type PauseGameReq struct { @@ -9450,7 +9538,7 @@ type PauseGameReq struct { func (x *PauseGameReq) Reset() { *x = PauseGameReq{} - mi := &file_main_proto_msgTypes[176] + mi := &file_main_proto_msgTypes[178] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9462,7 +9550,7 @@ func (x *PauseGameReq) String() string { func (*PauseGameReq) ProtoMessage() {} func (x *PauseGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[176] + mi := &file_main_proto_msgTypes[178] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9475,7 +9563,7 @@ func (x *PauseGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use PauseGameReq.ProtoReflect.Descriptor instead. func (*PauseGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{176} + return file_main_proto_rawDescGZIP(), []int{178} } func (x *PauseGameReq) GetID() int32 { @@ -9493,7 +9581,7 @@ type PauseGameRsp struct { func (x *PauseGameRsp) Reset() { *x = PauseGameRsp{} - mi := &file_main_proto_msgTypes[177] + mi := &file_main_proto_msgTypes[179] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9505,7 +9593,7 @@ func (x *PauseGameRsp) String() string { func (*PauseGameRsp) ProtoMessage() {} func (x *PauseGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[177] + mi := &file_main_proto_msgTypes[179] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9518,7 +9606,7 @@ func (x *PauseGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use PauseGameRsp.ProtoReflect.Descriptor instead. func (*PauseGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{177} + return file_main_proto_rawDescGZIP(), []int{179} } type PlayGameReq struct { @@ -9530,7 +9618,7 @@ type PlayGameReq struct { func (x *PlayGameReq) Reset() { *x = PlayGameReq{} - mi := &file_main_proto_msgTypes[178] + mi := &file_main_proto_msgTypes[180] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9542,7 +9630,7 @@ func (x *PlayGameReq) String() string { func (*PlayGameReq) ProtoMessage() {} func (x *PlayGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[178] + mi := &file_main_proto_msgTypes[180] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9555,7 +9643,7 @@ func (x *PlayGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayGameReq.ProtoReflect.Descriptor instead. func (*PlayGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{178} + return file_main_proto_rawDescGZIP(), []int{180} } func (x *PlayGameReq) GetID() int32 { @@ -9573,7 +9661,7 @@ type PlayGameRsp struct { func (x *PlayGameRsp) Reset() { *x = PlayGameRsp{} - mi := &file_main_proto_msgTypes[179] + mi := &file_main_proto_msgTypes[181] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9585,7 +9673,7 @@ func (x *PlayGameRsp) String() string { func (*PlayGameRsp) ProtoMessage() {} func (x *PlayGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[179] + mi := &file_main_proto_msgTypes[181] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9598,7 +9686,7 @@ func (x *PlayGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayGameRsp.ProtoReflect.Descriptor instead. func (*PlayGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{179} + return file_main_proto_rawDescGZIP(), []int{181} } type FinishGameReq struct { @@ -9610,7 +9698,7 @@ type FinishGameReq struct { func (x *FinishGameReq) Reset() { *x = FinishGameReq{} - mi := &file_main_proto_msgTypes[180] + mi := &file_main_proto_msgTypes[182] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9622,7 +9710,7 @@ func (x *FinishGameReq) String() string { func (*FinishGameReq) ProtoMessage() {} func (x *FinishGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[180] + mi := &file_main_proto_msgTypes[182] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9635,7 +9723,7 @@ func (x *FinishGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FinishGameReq.ProtoReflect.Descriptor instead. func (*FinishGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{180} + return file_main_proto_rawDescGZIP(), []int{182} } func (x *FinishGameReq) GetID() int32 { @@ -9653,7 +9741,7 @@ type FinishGameRsp struct { func (x *FinishGameRsp) Reset() { *x = FinishGameRsp{} - mi := &file_main_proto_msgTypes[181] + mi := &file_main_proto_msgTypes[183] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9665,7 +9753,7 @@ func (x *FinishGameRsp) String() string { func (*FinishGameRsp) ProtoMessage() {} func (x *FinishGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[181] + mi := &file_main_proto_msgTypes[183] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9678,7 +9766,7 @@ func (x *FinishGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use FinishGameRsp.ProtoReflect.Descriptor instead. func (*FinishGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{181} + return file_main_proto_rawDescGZIP(), []int{183} } type ResetGameReq struct { @@ -9690,7 +9778,7 @@ type ResetGameReq struct { func (x *ResetGameReq) Reset() { *x = ResetGameReq{} - mi := &file_main_proto_msgTypes[182] + mi := &file_main_proto_msgTypes[184] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9702,7 +9790,7 @@ func (x *ResetGameReq) String() string { func (*ResetGameReq) ProtoMessage() {} func (x *ResetGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[182] + mi := &file_main_proto_msgTypes[184] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9715,7 +9803,7 @@ func (x *ResetGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ResetGameReq.ProtoReflect.Descriptor instead. func (*ResetGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{182} + return file_main_proto_rawDescGZIP(), []int{184} } func (x *ResetGameReq) GetID() int32 { @@ -9733,7 +9821,7 @@ type ResetGameRsp struct { func (x *ResetGameRsp) Reset() { *x = ResetGameRsp{} - mi := &file_main_proto_msgTypes[183] + mi := &file_main_proto_msgTypes[185] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9745,7 +9833,7 @@ func (x *ResetGameRsp) String() string { func (*ResetGameRsp) ProtoMessage() {} func (x *ResetGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[183] + mi := &file_main_proto_msgTypes[185] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9758,7 +9846,7 @@ func (x *ResetGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use ResetGameRsp.ProtoReflect.Descriptor instead. func (*ResetGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{183} + return file_main_proto_rawDescGZIP(), []int{185} } type DeleteGameReq struct { @@ -9770,7 +9858,7 @@ type DeleteGameReq struct { func (x *DeleteGameReq) Reset() { *x = DeleteGameReq{} - mi := &file_main_proto_msgTypes[184] + mi := &file_main_proto_msgTypes[186] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9782,7 +9870,7 @@ func (x *DeleteGameReq) String() string { func (*DeleteGameReq) ProtoMessage() {} func (x *DeleteGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[184] + mi := &file_main_proto_msgTypes[186] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9795,7 +9883,7 @@ func (x *DeleteGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteGameReq.ProtoReflect.Descriptor instead. func (*DeleteGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{184} + return file_main_proto_rawDescGZIP(), []int{186} } func (x *DeleteGameReq) GetID() int32 { @@ -9813,7 +9901,7 @@ type DeleteGameRsp struct { func (x *DeleteGameRsp) Reset() { *x = DeleteGameRsp{} - mi := &file_main_proto_msgTypes[185] + mi := &file_main_proto_msgTypes[187] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9825,7 +9913,7 @@ func (x *DeleteGameRsp) String() string { func (*DeleteGameRsp) ProtoMessage() {} func (x *DeleteGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[185] + mi := &file_main_proto_msgTypes[187] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9838,7 +9926,7 @@ func (x *DeleteGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteGameRsp.ProtoReflect.Descriptor instead. func (*DeleteGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{185} + return file_main_proto_rawDescGZIP(), []int{187} } type AddTeamReq struct { @@ -9853,7 +9941,7 @@ type AddTeamReq struct { func (x *AddTeamReq) Reset() { *x = AddTeamReq{} - mi := &file_main_proto_msgTypes[186] + mi := &file_main_proto_msgTypes[188] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9865,7 +9953,7 @@ func (x *AddTeamReq) String() string { func (*AddTeamReq) ProtoMessage() {} func (x *AddTeamReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[186] + mi := &file_main_proto_msgTypes[188] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9878,7 +9966,7 @@ func (x *AddTeamReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddTeamReq.ProtoReflect.Descriptor instead. func (*AddTeamReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{186} + return file_main_proto_rawDescGZIP(), []int{188} } func (x *AddTeamReq) GetGameID() int32 { @@ -9919,7 +10007,7 @@ type AddTeamRsp struct { func (x *AddTeamRsp) Reset() { *x = AddTeamRsp{} - mi := &file_main_proto_msgTypes[187] + mi := &file_main_proto_msgTypes[189] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9931,7 +10019,7 @@ func (x *AddTeamRsp) String() string { func (*AddTeamRsp) ProtoMessage() {} func (x *AddTeamRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[187] + mi := &file_main_proto_msgTypes[189] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9944,7 +10032,7 @@ func (x *AddTeamRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddTeamRsp.ProtoReflect.Descriptor instead. func (*AddTeamRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{187} + return file_main_proto_rawDescGZIP(), []int{189} } func (x *AddTeamRsp) GetID() string { @@ -9971,7 +10059,7 @@ type UpdateTeamReq struct { func (x *UpdateTeamReq) Reset() { *x = UpdateTeamReq{} - mi := &file_main_proto_msgTypes[188] + mi := &file_main_proto_msgTypes[190] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9983,7 +10071,7 @@ func (x *UpdateTeamReq) String() string { func (*UpdateTeamReq) ProtoMessage() {} func (x *UpdateTeamReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[188] + mi := &file_main_proto_msgTypes[190] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9996,7 +10084,7 @@ func (x *UpdateTeamReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTeamReq.ProtoReflect.Descriptor instead. func (*UpdateTeamReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{188} + return file_main_proto_rawDescGZIP(), []int{190} } func (x *UpdateTeamReq) GetID() string { @@ -10021,7 +10109,7 @@ type UpdateTeamRsp struct { func (x *UpdateTeamRsp) Reset() { *x = UpdateTeamRsp{} - mi := &file_main_proto_msgTypes[189] + mi := &file_main_proto_msgTypes[191] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10033,7 +10121,7 @@ func (x *UpdateTeamRsp) String() string { func (*UpdateTeamRsp) ProtoMessage() {} func (x *UpdateTeamRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[189] + mi := &file_main_proto_msgTypes[191] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10046,7 +10134,7 @@ func (x *UpdateTeamRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTeamRsp.ProtoReflect.Descriptor instead. func (*UpdateTeamRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{189} + return file_main_proto_rawDescGZIP(), []int{191} } type DeleteTeamReq struct { @@ -10058,7 +10146,7 @@ type DeleteTeamReq struct { func (x *DeleteTeamReq) Reset() { *x = DeleteTeamReq{} - mi := &file_main_proto_msgTypes[190] + mi := &file_main_proto_msgTypes[192] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10070,7 +10158,7 @@ func (x *DeleteTeamReq) String() string { func (*DeleteTeamReq) ProtoMessage() {} func (x *DeleteTeamReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[190] + mi := &file_main_proto_msgTypes[192] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10083,7 +10171,7 @@ func (x *DeleteTeamReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTeamReq.ProtoReflect.Descriptor instead. func (*DeleteTeamReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{190} + return file_main_proto_rawDescGZIP(), []int{192} } func (x *DeleteTeamReq) GetID() string { @@ -10101,7 +10189,7 @@ type DeleteTeamRsp struct { func (x *DeleteTeamRsp) Reset() { *x = DeleteTeamRsp{} - mi := &file_main_proto_msgTypes[191] + mi := &file_main_proto_msgTypes[193] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10113,7 +10201,7 @@ func (x *DeleteTeamRsp) String() string { func (*DeleteTeamRsp) ProtoMessage() {} func (x *DeleteTeamRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[191] + mi := &file_main_proto_msgTypes[193] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10126,7 +10214,7 @@ func (x *DeleteTeamRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTeamRsp.ProtoReflect.Descriptor instead. func (*DeleteTeamRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{191} + return file_main_proto_rawDescGZIP(), []int{193} } type GiveTeamApplicationsReq struct { @@ -10139,7 +10227,7 @@ type GiveTeamApplicationsReq struct { func (x *GiveTeamApplicationsReq) Reset() { *x = GiveTeamApplicationsReq{} - mi := &file_main_proto_msgTypes[192] + mi := &file_main_proto_msgTypes[194] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10151,7 +10239,7 @@ func (x *GiveTeamApplicationsReq) String() string { func (*GiveTeamApplicationsReq) ProtoMessage() {} func (x *GiveTeamApplicationsReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[192] + mi := &file_main_proto_msgTypes[194] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10164,7 +10252,7 @@ func (x *GiveTeamApplicationsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GiveTeamApplicationsReq.ProtoReflect.Descriptor instead. func (*GiveTeamApplicationsReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{192} + return file_main_proto_rawDescGZIP(), []int{194} } func (x *GiveTeamApplicationsReq) GetID() string { @@ -10189,7 +10277,7 @@ type GiveTeamApplicationsRsp struct { func (x *GiveTeamApplicationsRsp) Reset() { *x = GiveTeamApplicationsRsp{} - mi := &file_main_proto_msgTypes[193] + mi := &file_main_proto_msgTypes[195] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10201,7 +10289,7 @@ func (x *GiveTeamApplicationsRsp) String() string { func (*GiveTeamApplicationsRsp) ProtoMessage() {} func (x *GiveTeamApplicationsRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[193] + mi := &file_main_proto_msgTypes[195] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10214,7 +10302,7 @@ func (x *GiveTeamApplicationsRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GiveTeamApplicationsRsp.ProtoReflect.Descriptor instead. func (*GiveTeamApplicationsRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{193} + return file_main_proto_rawDescGZIP(), []int{195} } type GetTeamStoryReq struct { @@ -10227,7 +10315,7 @@ type GetTeamStoryReq struct { func (x *GetTeamStoryReq) Reset() { *x = GetTeamStoryReq{} - mi := &file_main_proto_msgTypes[194] + mi := &file_main_proto_msgTypes[196] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10239,7 +10327,7 @@ func (x *GetTeamStoryReq) String() string { func (*GetTeamStoryReq) ProtoMessage() {} func (x *GetTeamStoryReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[194] + mi := &file_main_proto_msgTypes[196] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10252,7 +10340,7 @@ func (x *GetTeamStoryReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTeamStoryReq.ProtoReflect.Descriptor instead. func (*GetTeamStoryReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{194} + return file_main_proto_rawDescGZIP(), []int{196} } func (x *GetTeamStoryReq) GetID() string { @@ -10280,7 +10368,7 @@ type GetTeamStoryRsp struct { func (x *GetTeamStoryRsp) Reset() { *x = GetTeamStoryRsp{} - mi := &file_main_proto_msgTypes[195] + mi := &file_main_proto_msgTypes[197] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10292,7 +10380,7 @@ func (x *GetTeamStoryRsp) String() string { func (*GetTeamStoryRsp) ProtoMessage() {} func (x *GetTeamStoryRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[195] + mi := &file_main_proto_msgTypes[197] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10305,7 +10393,7 @@ func (x *GetTeamStoryRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTeamStoryRsp.ProtoReflect.Descriptor instead. func (*GetTeamStoryRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{195} + return file_main_proto_rawDescGZIP(), []int{197} } func (x *GetTeamStoryRsp) GetStory() *Story { @@ -10339,7 +10427,7 @@ type TeamAction struct { func (x *TeamAction) Reset() { *x = TeamAction{} - mi := &file_main_proto_msgTypes[196] + mi := &file_main_proto_msgTypes[198] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10351,7 +10439,7 @@ func (x *TeamAction) String() string { func (*TeamAction) ProtoMessage() {} func (x *TeamAction) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[196] + mi := &file_main_proto_msgTypes[198] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10364,7 +10452,7 @@ func (x *TeamAction) ProtoReflect() protoreflect.Message { // Deprecated: Use TeamAction.ProtoReflect.Descriptor instead. func (*TeamAction) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{196} + return file_main_proto_rawDescGZIP(), []int{198} } func (x *TeamAction) GetCode() string { @@ -10392,7 +10480,7 @@ type AddTeamActionReq struct { func (x *AddTeamActionReq) Reset() { *x = AddTeamActionReq{} - mi := &file_main_proto_msgTypes[197] + mi := &file_main_proto_msgTypes[199] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10404,7 +10492,7 @@ func (x *AddTeamActionReq) String() string { func (*AddTeamActionReq) ProtoMessage() {} func (x *AddTeamActionReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[197] + mi := &file_main_proto_msgTypes[199] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10417,7 +10505,7 @@ func (x *AddTeamActionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddTeamActionReq.ProtoReflect.Descriptor instead. func (*AddTeamActionReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{197} + return file_main_proto_rawDescGZIP(), []int{199} } func (x *AddTeamActionReq) GetID() string { @@ -10449,7 +10537,7 @@ type AddTeamActionRsp struct { func (x *AddTeamActionRsp) Reset() { *x = AddTeamActionRsp{} - mi := &file_main_proto_msgTypes[198] + mi := &file_main_proto_msgTypes[200] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10461,7 +10549,7 @@ func (x *AddTeamActionRsp) String() string { func (*AddTeamActionRsp) ProtoMessage() {} func (x *AddTeamActionRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[198] + mi := &file_main_proto_msgTypes[200] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10474,7 +10562,7 @@ func (x *AddTeamActionRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddTeamActionRsp.ProtoReflect.Descriptor instead. func (*AddTeamActionRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{198} + return file_main_proto_rawDescGZIP(), []int{200} } type DeleteLastTeamActionReq struct { @@ -10486,7 +10574,7 @@ type DeleteLastTeamActionReq struct { func (x *DeleteLastTeamActionReq) Reset() { *x = DeleteLastTeamActionReq{} - mi := &file_main_proto_msgTypes[199] + mi := &file_main_proto_msgTypes[201] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10498,7 +10586,7 @@ func (x *DeleteLastTeamActionReq) String() string { func (*DeleteLastTeamActionReq) ProtoMessage() {} func (x *DeleteLastTeamActionReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[199] + mi := &file_main_proto_msgTypes[201] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10511,7 +10599,7 @@ func (x *DeleteLastTeamActionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteLastTeamActionReq.ProtoReflect.Descriptor instead. func (*DeleteLastTeamActionReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{199} + return file_main_proto_rawDescGZIP(), []int{201} } func (x *DeleteLastTeamActionReq) GetID() string { @@ -10529,7 +10617,7 @@ type DeleteLastTeamActionRsp struct { func (x *DeleteLastTeamActionRsp) Reset() { *x = DeleteLastTeamActionRsp{} - mi := &file_main_proto_msgTypes[200] + mi := &file_main_proto_msgTypes[202] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10541,7 +10629,7 @@ func (x *DeleteLastTeamActionRsp) String() string { func (*DeleteLastTeamActionRsp) ProtoMessage() {} func (x *DeleteLastTeamActionRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[200] + mi := &file_main_proto_msgTypes[202] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10554,7 +10642,7 @@ func (x *DeleteLastTeamActionRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteLastTeamActionRsp.ProtoReflect.Descriptor instead. func (*DeleteLastTeamActionRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{200} + return file_main_proto_rawDescGZIP(), []int{202} } type GetTeamAnswersReq struct { @@ -10567,7 +10655,7 @@ type GetTeamAnswersReq struct { func (x *GetTeamAnswersReq) Reset() { *x = GetTeamAnswersReq{} - mi := &file_main_proto_msgTypes[201] + mi := &file_main_proto_msgTypes[203] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10579,7 +10667,7 @@ func (x *GetTeamAnswersReq) String() string { func (*GetTeamAnswersReq) ProtoMessage() {} func (x *GetTeamAnswersReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[201] + mi := &file_main_proto_msgTypes[203] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10592,7 +10680,7 @@ func (x *GetTeamAnswersReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTeamAnswersReq.ProtoReflect.Descriptor instead. func (*GetTeamAnswersReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{201} + return file_main_proto_rawDescGZIP(), []int{203} } func (x *GetTeamAnswersReq) GetID() string { @@ -10618,7 +10706,7 @@ type GetTeamAnswersRsp struct { func (x *GetTeamAnswersRsp) Reset() { *x = GetTeamAnswersRsp{} - mi := &file_main_proto_msgTypes[202] + mi := &file_main_proto_msgTypes[204] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10630,7 +10718,7 @@ func (x *GetTeamAnswersRsp) String() string { func (*GetTeamAnswersRsp) ProtoMessage() {} func (x *GetTeamAnswersRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[202] + mi := &file_main_proto_msgTypes[204] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10643,7 +10731,7 @@ func (x *GetTeamAnswersRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTeamAnswersRsp.ProtoReflect.Descriptor instead. func (*GetTeamAnswersRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{202} + return file_main_proto_rawDescGZIP(), []int{204} } func (x *GetTeamAnswersRsp) GetAnswers() []*Answer { @@ -10664,7 +10752,7 @@ type SubmitTeamAnswersReq struct { func (x *SubmitTeamAnswersReq) Reset() { *x = SubmitTeamAnswersReq{} - mi := &file_main_proto_msgTypes[203] + mi := &file_main_proto_msgTypes[205] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10676,7 +10764,7 @@ func (x *SubmitTeamAnswersReq) String() string { func (*SubmitTeamAnswersReq) ProtoMessage() {} func (x *SubmitTeamAnswersReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[203] + mi := &file_main_proto_msgTypes[205] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10689,7 +10777,7 @@ func (x *SubmitTeamAnswersReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitTeamAnswersReq.ProtoReflect.Descriptor instead. func (*SubmitTeamAnswersReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{203} + return file_main_proto_rawDescGZIP(), []int{205} } func (x *SubmitTeamAnswersReq) GetID() string { @@ -10721,7 +10809,7 @@ type SubmitTeamAnswersRsp struct { func (x *SubmitTeamAnswersRsp) Reset() { *x = SubmitTeamAnswersRsp{} - mi := &file_main_proto_msgTypes[204] + mi := &file_main_proto_msgTypes[206] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10733,7 +10821,7 @@ func (x *SubmitTeamAnswersRsp) String() string { func (*SubmitTeamAnswersRsp) ProtoMessage() {} func (x *SubmitTeamAnswersRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[204] + mi := &file_main_proto_msgTypes[206] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10746,7 +10834,7 @@ func (x *SubmitTeamAnswersRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitTeamAnswersRsp.ProtoReflect.Descriptor instead. func (*SubmitTeamAnswersRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{204} + return file_main_proto_rawDescGZIP(), []int{206} } type SetTeamAnswerScoreReq struct { @@ -10761,7 +10849,7 @@ type SetTeamAnswerScoreReq struct { func (x *SetTeamAnswerScoreReq) Reset() { *x = SetTeamAnswerScoreReq{} - mi := &file_main_proto_msgTypes[205] + mi := &file_main_proto_msgTypes[207] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10773,7 +10861,7 @@ func (x *SetTeamAnswerScoreReq) String() string { func (*SetTeamAnswerScoreReq) ProtoMessage() {} func (x *SetTeamAnswerScoreReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[205] + mi := &file_main_proto_msgTypes[207] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10786,7 +10874,7 @@ func (x *SetTeamAnswerScoreReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SetTeamAnswerScoreReq.ProtoReflect.Descriptor instead. func (*SetTeamAnswerScoreReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{205} + return file_main_proto_rawDescGZIP(), []int{207} } func (x *SetTeamAnswerScoreReq) GetID() string { @@ -10818,7 +10906,7 @@ type SetTeamAnswerScoreRsp struct { func (x *SetTeamAnswerScoreRsp) Reset() { *x = SetTeamAnswerScoreRsp{} - mi := &file_main_proto_msgTypes[206] + mi := &file_main_proto_msgTypes[208] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10830,7 +10918,7 @@ func (x *SetTeamAnswerScoreRsp) String() string { func (*SetTeamAnswerScoreRsp) ProtoMessage() {} func (x *SetTeamAnswerScoreRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[206] + mi := &file_main_proto_msgTypes[208] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10843,7 +10931,7 @@ func (x *SetTeamAnswerScoreRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use SetTeamAnswerScoreRsp.ProtoReflect.Descriptor instead. func (*SetTeamAnswerScoreRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{206} + return file_main_proto_rawDescGZIP(), []int{208} } type UpdateScenarioBackgroundReq struct { @@ -10856,7 +10944,7 @@ type UpdateScenarioBackgroundReq struct { func (x *UpdateScenarioBackgroundReq) Reset() { *x = UpdateScenarioBackgroundReq{} - mi := &file_main_proto_msgTypes[207] + mi := &file_main_proto_msgTypes[209] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10868,7 +10956,7 @@ func (x *UpdateScenarioBackgroundReq) String() string { func (*UpdateScenarioBackgroundReq) ProtoMessage() {} func (x *UpdateScenarioBackgroundReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[207] + mi := &file_main_proto_msgTypes[209] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10881,7 +10969,7 @@ func (x *UpdateScenarioBackgroundReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateScenarioBackgroundReq.ProtoReflect.Descriptor instead. func (*UpdateScenarioBackgroundReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{207} + return file_main_proto_rawDescGZIP(), []int{209} } func (x *UpdateScenarioBackgroundReq) GetID() int32 { @@ -10906,7 +10994,7 @@ type UpdateScenarioBackgroundRsp struct { func (x *UpdateScenarioBackgroundRsp) Reset() { *x = UpdateScenarioBackgroundRsp{} - mi := &file_main_proto_msgTypes[208] + mi := &file_main_proto_msgTypes[210] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10918,7 +11006,7 @@ func (x *UpdateScenarioBackgroundRsp) String() string { func (*UpdateScenarioBackgroundRsp) ProtoMessage() {} func (x *UpdateScenarioBackgroundRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[208] + mi := &file_main_proto_msgTypes[210] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10931,7 +11019,7 @@ func (x *UpdateScenarioBackgroundRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateScenarioBackgroundRsp.ProtoReflect.Descriptor instead. func (*UpdateScenarioBackgroundRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{208} + return file_main_proto_rawDescGZIP(), []int{210} } type IssueGameTicketsReq struct { @@ -10944,7 +11032,7 @@ type IssueGameTicketsReq struct { func (x *IssueGameTicketsReq) Reset() { *x = IssueGameTicketsReq{} - mi := &file_main_proto_msgTypes[209] + mi := &file_main_proto_msgTypes[211] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10956,7 +11044,7 @@ func (x *IssueGameTicketsReq) String() string { func (*IssueGameTicketsReq) ProtoMessage() {} func (x *IssueGameTicketsReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[209] + mi := &file_main_proto_msgTypes[211] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10969,7 +11057,7 @@ func (x *IssueGameTicketsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use IssueGameTicketsReq.ProtoReflect.Descriptor instead. func (*IssueGameTicketsReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{209} + return file_main_proto_rawDescGZIP(), []int{211} } func (x *IssueGameTicketsReq) GetGameID() int32 { @@ -10995,7 +11083,7 @@ type IssueGameTicketsRsp struct { func (x *IssueGameTicketsRsp) Reset() { *x = IssueGameTicketsRsp{} - mi := &file_main_proto_msgTypes[210] + mi := &file_main_proto_msgTypes[212] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11007,7 +11095,7 @@ func (x *IssueGameTicketsRsp) String() string { func (*IssueGameTicketsRsp) ProtoMessage() {} func (x *IssueGameTicketsRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[210] + mi := &file_main_proto_msgTypes[212] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11020,7 +11108,7 @@ func (x *IssueGameTicketsRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use IssueGameTicketsRsp.ProtoReflect.Descriptor instead. func (*IssueGameTicketsRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{210} + return file_main_proto_rawDescGZIP(), []int{212} } func (x *IssueGameTicketsRsp) GetTickets() []*Ticket { @@ -11040,7 +11128,7 @@ type Ticket struct { func (x *Ticket) Reset() { *x = Ticket{} - mi := &file_main_proto_msgTypes[211] + mi := &file_main_proto_msgTypes[213] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11052,7 +11140,7 @@ func (x *Ticket) String() string { func (*Ticket) ProtoMessage() {} func (x *Ticket) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[211] + mi := &file_main_proto_msgTypes[213] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11065,7 +11153,7 @@ func (x *Ticket) ProtoReflect() protoreflect.Message { // Deprecated: Use Ticket.ProtoReflect.Descriptor instead. func (*Ticket) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{211} + return file_main_proto_rawDescGZIP(), []int{213} } func (x *Ticket) GetID() int32 { @@ -11091,7 +11179,7 @@ type GetTicketReq struct { func (x *GetTicketReq) Reset() { *x = GetTicketReq{} - mi := &file_main_proto_msgTypes[212] + mi := &file_main_proto_msgTypes[214] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11103,7 +11191,7 @@ func (x *GetTicketReq) String() string { func (*GetTicketReq) ProtoMessage() {} func (x *GetTicketReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[212] + mi := &file_main_proto_msgTypes[214] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11116,7 +11204,7 @@ func (x *GetTicketReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTicketReq.ProtoReflect.Descriptor instead. func (*GetTicketReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{212} + return file_main_proto_rawDescGZIP(), []int{214} } func (x *GetTicketReq) GetToken() string { @@ -11135,7 +11223,7 @@ type GetTicketRsp struct { func (x *GetTicketRsp) Reset() { *x = GetTicketRsp{} - mi := &file_main_proto_msgTypes[213] + mi := &file_main_proto_msgTypes[215] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11147,7 +11235,7 @@ func (x *GetTicketRsp) String() string { func (*GetTicketRsp) ProtoMessage() {} func (x *GetTicketRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[213] + mi := &file_main_proto_msgTypes[215] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11160,7 +11248,7 @@ func (x *GetTicketRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTicketRsp.ProtoReflect.Descriptor instead. func (*GetTicketRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{213} + return file_main_proto_rawDescGZIP(), []int{215} } func (x *GetTicketRsp) GetTicket() *TicketPage { @@ -11179,7 +11267,7 @@ type AcceptTicketReq struct { func (x *AcceptTicketReq) Reset() { *x = AcceptTicketReq{} - mi := &file_main_proto_msgTypes[214] + mi := &file_main_proto_msgTypes[216] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11191,7 +11279,7 @@ func (x *AcceptTicketReq) String() string { func (*AcceptTicketReq) ProtoMessage() {} func (x *AcceptTicketReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[214] + mi := &file_main_proto_msgTypes[216] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11204,7 +11292,7 @@ func (x *AcceptTicketReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AcceptTicketReq.ProtoReflect.Descriptor instead. func (*AcceptTicketReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{214} + return file_main_proto_rawDescGZIP(), []int{216} } func (x *AcceptTicketReq) GetToken() string { @@ -11223,7 +11311,7 @@ type AcceptTicketRsp struct { func (x *AcceptTicketRsp) Reset() { *x = AcceptTicketRsp{} - mi := &file_main_proto_msgTypes[215] + mi := &file_main_proto_msgTypes[217] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11235,7 +11323,7 @@ func (x *AcceptTicketRsp) String() string { func (*AcceptTicketRsp) ProtoMessage() {} func (x *AcceptTicketRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[215] + mi := &file_main_proto_msgTypes[217] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11248,7 +11336,7 @@ func (x *AcceptTicketRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use AcceptTicketRsp.ProtoReflect.Descriptor instead. func (*AcceptTicketRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{215} + return file_main_proto_rawDescGZIP(), []int{217} } func (x *AcceptTicketRsp) GetTicket() *TicketPage { @@ -11274,7 +11362,7 @@ type TicketPage struct { func (x *TicketPage) Reset() { *x = TicketPage{} - mi := &file_main_proto_msgTypes[216] + mi := &file_main_proto_msgTypes[218] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11286,7 +11374,7 @@ func (x *TicketPage) String() string { func (*TicketPage) ProtoMessage() {} func (x *TicketPage) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[216] + mi := &file_main_proto_msgTypes[218] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11299,7 +11387,7 @@ func (x *TicketPage) ProtoReflect() protoreflect.Message { // Deprecated: Use TicketPage.ProtoReflect.Descriptor instead. func (*TicketPage) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{216} + return file_main_proto_rawDescGZIP(), []int{218} } func (x *TicketPage) GetID() int32 { @@ -11381,7 +11469,7 @@ type DeveloperTask struct { func (x *DeveloperTask) Reset() { *x = DeveloperTask{} - mi := &file_main_proto_msgTypes[217] + mi := &file_main_proto_msgTypes[219] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11393,7 +11481,7 @@ func (x *DeveloperTask) String() string { func (*DeveloperTask) ProtoMessage() {} func (x *DeveloperTask) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[217] + mi := &file_main_proto_msgTypes[219] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11406,7 +11494,7 @@ func (x *DeveloperTask) ProtoReflect() protoreflect.Message { // Deprecated: Use DeveloperTask.ProtoReflect.Descriptor instead. func (*DeveloperTask) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{217} + return file_main_proto_rawDescGZIP(), []int{219} } func (x *DeveloperTask) GetID() int32 { @@ -11496,7 +11584,7 @@ type TaskAssignee struct { func (x *TaskAssignee) Reset() { *x = TaskAssignee{} - mi := &file_main_proto_msgTypes[218] + mi := &file_main_proto_msgTypes[220] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11508,7 +11596,7 @@ func (x *TaskAssignee) String() string { func (*TaskAssignee) ProtoMessage() {} func (x *TaskAssignee) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[218] + mi := &file_main_proto_msgTypes[220] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11521,7 +11609,7 @@ func (x *TaskAssignee) ProtoReflect() protoreflect.Message { // Deprecated: Use TaskAssignee.ProtoReflect.Descriptor instead. func (*TaskAssignee) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{218} + return file_main_proto_rawDescGZIP(), []int{220} } func (x *TaskAssignee) GetID() int32 { @@ -11546,7 +11634,7 @@ type GetTasksReq struct { func (x *GetTasksReq) Reset() { *x = GetTasksReq{} - mi := &file_main_proto_msgTypes[219] + mi := &file_main_proto_msgTypes[221] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11558,7 +11646,7 @@ func (x *GetTasksReq) String() string { func (*GetTasksReq) ProtoMessage() {} func (x *GetTasksReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[219] + mi := &file_main_proto_msgTypes[221] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11571,7 +11659,7 @@ func (x *GetTasksReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTasksReq.ProtoReflect.Descriptor instead. func (*GetTasksReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{219} + return file_main_proto_rawDescGZIP(), []int{221} } type GetTasksRsp struct { @@ -11583,7 +11671,7 @@ type GetTasksRsp struct { func (x *GetTasksRsp) Reset() { *x = GetTasksRsp{} - mi := &file_main_proto_msgTypes[220] + mi := &file_main_proto_msgTypes[222] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11595,7 +11683,7 @@ func (x *GetTasksRsp) String() string { func (*GetTasksRsp) ProtoMessage() {} func (x *GetTasksRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[220] + mi := &file_main_proto_msgTypes[222] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11608,7 +11696,7 @@ func (x *GetTasksRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTasksRsp.ProtoReflect.Descriptor instead. func (*GetTasksRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{220} + return file_main_proto_rawDescGZIP(), []int{222} } func (x *GetTasksRsp) GetTasks() []*DeveloperTask { @@ -11626,7 +11714,7 @@ type GetTaskAssigneesReq struct { func (x *GetTaskAssigneesReq) Reset() { *x = GetTaskAssigneesReq{} - mi := &file_main_proto_msgTypes[221] + mi := &file_main_proto_msgTypes[223] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11638,7 +11726,7 @@ func (x *GetTaskAssigneesReq) String() string { func (*GetTaskAssigneesReq) ProtoMessage() {} func (x *GetTaskAssigneesReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[221] + mi := &file_main_proto_msgTypes[223] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11651,7 +11739,7 @@ func (x *GetTaskAssigneesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTaskAssigneesReq.ProtoReflect.Descriptor instead. func (*GetTaskAssigneesReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{221} + return file_main_proto_rawDescGZIP(), []int{223} } type GetTaskAssigneesRsp struct { @@ -11663,7 +11751,7 @@ type GetTaskAssigneesRsp struct { func (x *GetTaskAssigneesRsp) Reset() { *x = GetTaskAssigneesRsp{} - mi := &file_main_proto_msgTypes[222] + mi := &file_main_proto_msgTypes[224] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11675,7 +11763,7 @@ func (x *GetTaskAssigneesRsp) String() string { func (*GetTaskAssigneesRsp) ProtoMessage() {} func (x *GetTaskAssigneesRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[222] + mi := &file_main_proto_msgTypes[224] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11688,7 +11776,7 @@ func (x *GetTaskAssigneesRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTaskAssigneesRsp.ProtoReflect.Descriptor instead. func (*GetTaskAssigneesRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{222} + return file_main_proto_rawDescGZIP(), []int{224} } func (x *GetTaskAssigneesRsp) GetAssignees() []*TaskAssignee { @@ -11711,7 +11799,7 @@ type CreateTaskReq struct { func (x *CreateTaskReq) Reset() { *x = CreateTaskReq{} - mi := &file_main_proto_msgTypes[223] + mi := &file_main_proto_msgTypes[225] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11723,7 +11811,7 @@ func (x *CreateTaskReq) String() string { func (*CreateTaskReq) ProtoMessage() {} func (x *CreateTaskReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[223] + mi := &file_main_proto_msgTypes[225] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11736,7 +11824,7 @@ func (x *CreateTaskReq) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTaskReq.ProtoReflect.Descriptor instead. func (*CreateTaskReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{223} + return file_main_proto_rawDescGZIP(), []int{225} } func (x *CreateTaskReq) GetTitle() string { @@ -11789,7 +11877,7 @@ type UpdateTaskReq struct { func (x *UpdateTaskReq) Reset() { *x = UpdateTaskReq{} - mi := &file_main_proto_msgTypes[224] + mi := &file_main_proto_msgTypes[226] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11801,7 +11889,7 @@ func (x *UpdateTaskReq) String() string { func (*UpdateTaskReq) ProtoMessage() {} func (x *UpdateTaskReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[224] + mi := &file_main_proto_msgTypes[226] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11814,7 +11902,7 @@ func (x *UpdateTaskReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTaskReq.ProtoReflect.Descriptor instead. func (*UpdateTaskReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{224} + return file_main_proto_rawDescGZIP(), []int{226} } func (x *UpdateTaskReq) GetID() int32 { @@ -11877,7 +11965,7 @@ type SetTaskStatusReq struct { func (x *SetTaskStatusReq) Reset() { *x = SetTaskStatusReq{} - mi := &file_main_proto_msgTypes[225] + mi := &file_main_proto_msgTypes[227] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11889,7 +11977,7 @@ func (x *SetTaskStatusReq) String() string { func (*SetTaskStatusReq) ProtoMessage() {} func (x *SetTaskStatusReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[225] + mi := &file_main_proto_msgTypes[227] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11902,7 +11990,7 @@ func (x *SetTaskStatusReq) ProtoReflect() protoreflect.Message { // Deprecated: Use SetTaskStatusReq.ProtoReflect.Descriptor instead. func (*SetTaskStatusReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{225} + return file_main_proto_rawDescGZIP(), []int{227} } func (x *SetTaskStatusReq) GetID() int32 { @@ -11936,7 +12024,7 @@ type DeleteTaskReq struct { func (x *DeleteTaskReq) Reset() { *x = DeleteTaskReq{} - mi := &file_main_proto_msgTypes[226] + mi := &file_main_proto_msgTypes[228] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11948,7 +12036,7 @@ func (x *DeleteTaskReq) String() string { func (*DeleteTaskReq) ProtoMessage() {} func (x *DeleteTaskReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[226] + mi := &file_main_proto_msgTypes[228] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11961,7 +12049,7 @@ func (x *DeleteTaskReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTaskReq.ProtoReflect.Descriptor instead. func (*DeleteTaskReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{226} + return file_main_proto_rawDescGZIP(), []int{228} } func (x *DeleteTaskReq) GetID() int32 { @@ -11987,7 +12075,7 @@ type TaskRsp struct { func (x *TaskRsp) Reset() { *x = TaskRsp{} - mi := &file_main_proto_msgTypes[227] + mi := &file_main_proto_msgTypes[229] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11999,7 +12087,7 @@ func (x *TaskRsp) String() string { func (*TaskRsp) ProtoMessage() {} func (x *TaskRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[227] + mi := &file_main_proto_msgTypes[229] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12012,7 +12100,7 @@ func (x *TaskRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use TaskRsp.ProtoReflect.Descriptor instead. func (*TaskRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{227} + return file_main_proto_rawDescGZIP(), []int{229} } func (x *TaskRsp) GetTask() *DeveloperTask { @@ -12030,7 +12118,7 @@ type DeleteTaskRsp struct { func (x *DeleteTaskRsp) Reset() { *x = DeleteTaskRsp{} - mi := &file_main_proto_msgTypes[228] + mi := &file_main_proto_msgTypes[230] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12042,7 +12130,7 @@ func (x *DeleteTaskRsp) String() string { func (*DeleteTaskRsp) ProtoMessage() {} func (x *DeleteTaskRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[228] + mi := &file_main_proto_msgTypes[230] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12055,7 +12143,7 @@ func (x *DeleteTaskRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTaskRsp.ProtoReflect.Descriptor instead. func (*DeleteTaskRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{228} + return file_main_proto_rawDescGZIP(), []int{230} } type GameResultsPackageReq struct { @@ -12067,7 +12155,7 @@ type GameResultsPackageReq struct { func (x *GameResultsPackageReq) Reset() { *x = GameResultsPackageReq{} - mi := &file_main_proto_msgTypes[229] + mi := &file_main_proto_msgTypes[231] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12079,7 +12167,7 @@ func (x *GameResultsPackageReq) String() string { func (*GameResultsPackageReq) ProtoMessage() {} func (x *GameResultsPackageReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[229] + mi := &file_main_proto_msgTypes[231] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12092,7 +12180,7 @@ func (x *GameResultsPackageReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GameResultsPackageReq.ProtoReflect.Descriptor instead. func (*GameResultsPackageReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{229} + return file_main_proto_rawDescGZIP(), []int{231} } func (x *GameResultsPackageReq) GetID() int32 { @@ -12112,7 +12200,7 @@ type ApplyGameResultsPackageReq struct { func (x *ApplyGameResultsPackageReq) Reset() { *x = ApplyGameResultsPackageReq{} - mi := &file_main_proto_msgTypes[230] + mi := &file_main_proto_msgTypes[232] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12124,7 +12212,7 @@ func (x *ApplyGameResultsPackageReq) String() string { func (*ApplyGameResultsPackageReq) ProtoMessage() {} func (x *ApplyGameResultsPackageReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[230] + mi := &file_main_proto_msgTypes[232] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12137,7 +12225,7 @@ func (x *ApplyGameResultsPackageReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplyGameResultsPackageReq.ProtoReflect.Descriptor instead. func (*ApplyGameResultsPackageReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{230} + return file_main_proto_rawDescGZIP(), []int{232} } func (x *ApplyGameResultsPackageReq) GetID() int32 { @@ -12165,7 +12253,7 @@ type GameResultsPackageRsp struct { func (x *GameResultsPackageRsp) Reset() { *x = GameResultsPackageRsp{} - mi := &file_main_proto_msgTypes[231] + mi := &file_main_proto_msgTypes[233] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12177,7 +12265,7 @@ func (x *GameResultsPackageRsp) String() string { func (*GameResultsPackageRsp) ProtoMessage() {} func (x *GameResultsPackageRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[231] + mi := &file_main_proto_msgTypes[233] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12190,7 +12278,7 @@ func (x *GameResultsPackageRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GameResultsPackageRsp.ProtoReflect.Descriptor instead. func (*GameResultsPackageRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{231} + return file_main_proto_rawDescGZIP(), []int{233} } func (x *GameResultsPackageRsp) GetGameID() int32 { @@ -12229,7 +12317,7 @@ type DeviceHeartbeatReq struct { func (x *DeviceHeartbeatReq) Reset() { *x = DeviceHeartbeatReq{} - mi := &file_main_proto_msgTypes[232] + mi := &file_main_proto_msgTypes[234] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12241,7 +12329,7 @@ func (x *DeviceHeartbeatReq) String() string { func (*DeviceHeartbeatReq) ProtoMessage() {} func (x *DeviceHeartbeatReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[232] + mi := &file_main_proto_msgTypes[234] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12254,7 +12342,7 @@ func (x *DeviceHeartbeatReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceHeartbeatReq.ProtoReflect.Descriptor instead. func (*DeviceHeartbeatReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{232} + return file_main_proto_rawDescGZIP(), []int{234} } func (x *DeviceHeartbeatReq) GetDeviceID() string { @@ -12316,7 +12404,7 @@ type DeviceHeartbeatRsp struct { func (x *DeviceHeartbeatRsp) Reset() { *x = DeviceHeartbeatRsp{} - mi := &file_main_proto_msgTypes[233] + mi := &file_main_proto_msgTypes[235] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12328,7 +12416,7 @@ func (x *DeviceHeartbeatRsp) String() string { func (*DeviceHeartbeatRsp) ProtoMessage() {} func (x *DeviceHeartbeatRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[233] + mi := &file_main_proto_msgTypes[235] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12341,7 +12429,7 @@ func (x *DeviceHeartbeatRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceHeartbeatRsp.ProtoReflect.Descriptor instead. func (*DeviceHeartbeatRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{233} + return file_main_proto_rawDescGZIP(), []int{235} } func (x *DeviceHeartbeatRsp) GetEnabled() bool { @@ -12367,7 +12455,7 @@ type GetDevicesReq struct { func (x *GetDevicesReq) Reset() { *x = GetDevicesReq{} - mi := &file_main_proto_msgTypes[234] + mi := &file_main_proto_msgTypes[236] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12379,7 +12467,7 @@ func (x *GetDevicesReq) String() string { func (*GetDevicesReq) ProtoMessage() {} func (x *GetDevicesReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[234] + mi := &file_main_proto_msgTypes[236] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12392,7 +12480,7 @@ func (x *GetDevicesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDevicesReq.ProtoReflect.Descriptor instead. func (*GetDevicesReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{234} + return file_main_proto_rawDescGZIP(), []int{236} } func (x *GetDevicesReq) GetGameID() int32 { @@ -12413,7 +12501,7 @@ type GetDevicesRsp struct { func (x *GetDevicesRsp) Reset() { *x = GetDevicesRsp{} - mi := &file_main_proto_msgTypes[235] + mi := &file_main_proto_msgTypes[237] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12425,7 +12513,7 @@ func (x *GetDevicesRsp) String() string { func (*GetDevicesRsp) ProtoMessage() {} func (x *GetDevicesRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[235] + mi := &file_main_proto_msgTypes[237] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12438,7 +12526,7 @@ func (x *GetDevicesRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDevicesRsp.ProtoReflect.Descriptor instead. func (*GetDevicesRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{235} + return file_main_proto_rawDescGZIP(), []int{237} } func (x *GetDevicesRsp) GetDevices() []*VenueDevice { @@ -12475,7 +12563,7 @@ type VenueDevice struct { func (x *VenueDevice) Reset() { *x = VenueDevice{} - mi := &file_main_proto_msgTypes[236] + mi := &file_main_proto_msgTypes[238] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12487,7 +12575,7 @@ func (x *VenueDevice) String() string { func (*VenueDevice) ProtoMessage() {} func (x *VenueDevice) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[236] + mi := &file_main_proto_msgTypes[238] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12500,7 +12588,7 @@ func (x *VenueDevice) ProtoReflect() protoreflect.Message { // Deprecated: Use VenueDevice.ProtoReflect.Descriptor instead. func (*VenueDevice) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{236} + return file_main_proto_rawDescGZIP(), []int{238} } func (x *VenueDevice) GetID() string { @@ -12556,7 +12644,7 @@ type DeviceConnection struct { func (x *DeviceConnection) Reset() { *x = DeviceConnection{} - mi := &file_main_proto_msgTypes[237] + mi := &file_main_proto_msgTypes[239] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12568,7 +12656,7 @@ func (x *DeviceConnection) String() string { func (*DeviceConnection) ProtoMessage() {} func (x *DeviceConnection) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[237] + mi := &file_main_proto_msgTypes[239] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12581,7 +12669,7 @@ func (x *DeviceConnection) ProtoReflect() protoreflect.Message { // Deprecated: Use DeviceConnection.ProtoReflect.Descriptor instead. func (*DeviceConnection) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{237} + return file_main_proto_rawDescGZIP(), []int{239} } func (x *DeviceConnection) GetID() string { @@ -12667,7 +12755,7 @@ type VenueWiFi struct { func (x *VenueWiFi) Reset() { *x = VenueWiFi{} - mi := &file_main_proto_msgTypes[238] + mi := &file_main_proto_msgTypes[240] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12679,7 +12767,7 @@ func (x *VenueWiFi) String() string { func (*VenueWiFi) ProtoMessage() {} func (x *VenueWiFi) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[238] + mi := &file_main_proto_msgTypes[240] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12692,7 +12780,7 @@ func (x *VenueWiFi) ProtoReflect() protoreflect.Message { // Deprecated: Use VenueWiFi.ProtoReflect.Descriptor instead. func (*VenueWiFi) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{238} + return file_main_proto_rawDescGZIP(), []int{240} } func (x *VenueWiFi) GetEnabled() bool { @@ -12742,7 +12830,7 @@ type WiFiClient struct { func (x *WiFiClient) Reset() { *x = WiFiClient{} - mi := &file_main_proto_msgTypes[239] + mi := &file_main_proto_msgTypes[241] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12754,7 +12842,7 @@ func (x *WiFiClient) String() string { func (*WiFiClient) ProtoMessage() {} func (x *WiFiClient) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[239] + mi := &file_main_proto_msgTypes[241] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12767,7 +12855,7 @@ func (x *WiFiClient) ProtoReflect() protoreflect.Message { // Deprecated: Use WiFiClient.ProtoReflect.Descriptor instead. func (*WiFiClient) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{239} + return file_main_proto_rawDescGZIP(), []int{241} } func (x *WiFiClient) GetIP() string { @@ -12808,7 +12896,7 @@ type TeamReceiptReq struct { func (x *TeamReceiptReq) Reset() { *x = TeamReceiptReq{} - mi := &file_main_proto_msgTypes[240] + mi := &file_main_proto_msgTypes[242] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12820,7 +12908,7 @@ func (x *TeamReceiptReq) String() string { func (*TeamReceiptReq) ProtoMessage() {} func (x *TeamReceiptReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[240] + mi := &file_main_proto_msgTypes[242] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12833,7 +12921,7 @@ func (x *TeamReceiptReq) ProtoReflect() protoreflect.Message { // Deprecated: Use TeamReceiptReq.ProtoReflect.Descriptor instead. func (*TeamReceiptReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{240} + return file_main_proto_rawDescGZIP(), []int{242} } func (x *TeamReceiptReq) GetGameID() int32 { @@ -12858,7 +12946,7 @@ type PrintTeamReceiptRsp struct { func (x *PrintTeamReceiptRsp) Reset() { *x = PrintTeamReceiptRsp{} - mi := &file_main_proto_msgTypes[241] + mi := &file_main_proto_msgTypes[243] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12870,7 +12958,7 @@ func (x *PrintTeamReceiptRsp) String() string { func (*PrintTeamReceiptRsp) ProtoMessage() {} func (x *PrintTeamReceiptRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[241] + mi := &file_main_proto_msgTypes[243] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12883,7 +12971,7 @@ func (x *PrintTeamReceiptRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use PrintTeamReceiptRsp.ProtoReflect.Descriptor instead. func (*PrintTeamReceiptRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{241} + return file_main_proto_rawDescGZIP(), []int{243} } var File_main_proto protoreflect.FileDescriptor @@ -13210,7 +13298,11 @@ const file_main_proto_rawDesc = "" + "\x12StartGameExportReq\x12\x0e\n" + "\x02ID\x18\x01 \x01(\x05R\x02ID\"\"\n" + "\x10GetGameExportReq\x12\x0e\n" + - "\x02ID\x18\x01 \x01(\x05R\x02ID\"S\n" + + "\x02ID\x18\x01 \x01(\x05R\x02ID\"C\n" + + "\x15ResetGameLocalModeReq\x12\x0e\n" + + "\x02ID\x18\x01 \x01(\x05R\x02ID\x12\x1a\n" + + "\bexportID\x18\x02 \x01(\tR\bexportID\"\x17\n" + + "\x15ResetGameLocalModeRsp\"S\n" + "\rGameExportRsp\x12B\n" + "\x06export\x18\x01 \x01(\v2*.crabs.evening_detective_server.GameExportR\x06export\"\xec\x06\n" + "\vScreenState\x12\x0e\n" + @@ -13757,7 +13849,7 @@ const file_main_proto_rawDesc = "" + "\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\xd1\xe2\x01\n" + + "\x15MUSIC_PLAYBACK_PAUSED\x10\x032\x83\xe4\x01\n" + "\x16EveningDetectiveServer\x12\xa9\x04\n" + "\x0fDeviceHeartbeat\x122.crabs.evening_detective_server.DeviceHeartbeatReq\x1a2.crabs.evening_detective_server.DeviceHeartbeatRsp\"\xad\x03\x92A\x88\x03\n" + "\x14Устройства\x12OОбновить присутствие подключения браузера\x1a\x9c\x02Публичный endpoint. Контексты взаимоисключающие и проверяются сервером. В prod enabled=false без регистрации. UUID обозначает браузерный профиль, не физический телефон.b\x00\x82\xd3\xe4\x93\x02\x1b:\x01*\"\x16/api/devices/heartbeat\x12\xa1\x04\n" + @@ -13908,7 +14000,8 @@ const file_main_proto_rawDesc = "" + "\bИгры\x12\\Скачать свежий ZIP результатов завершённой venue-игры:\x0fapplication/zip\x82\xd3\xe4\x93\x02*\x12(/api/games/{ID}/results-package/download\x12\xb5\x04\n" + "\x17ApplyGameResultsPackage\x12:.crabs.evening_detective_server.ApplyGameResultsPackageReq\x1a5.crabs.evening_detective_server.GameResultsPackageRsp\"\xa6\x03\x92A\xec\x02\n" + "\bИгры\x12QПрименить ZIP результатов на исходной prod-игре\x1a\xe9\x01HTTP принимает сырой ZIP до 1 ГиБ, включая поток без Content-Length. Ошибки: 400 неверный пакет/игра, 413 размер, 409 конфликт, 503 временный отказ.2\x0fapplication/zip:\x10application/json\x82\xd3\xe4\x93\x020:\apackage\"%/api/games/{ID}/results-package/apply\x12\x97\x01\n" + - "\x0fStartGameExport\x122.crabs.evening_detective_server.StartGameExportReq\x1a-.crabs.evening_detective_server.GameExportRsp\"!\x82\xd3\xe4\x93\x02\x1b:\x01*\"\x16/api/games/{ID}/export\x12\x90\x01\n" + + "\x0fStartGameExport\x122.crabs.evening_detective_server.StartGameExportReq\x1a-.crabs.evening_detective_server.GameExportRsp\"!\x82\xd3\xe4\x93\x02\x1b:\x01*\"\x16/api/games/{ID}/export\x12\xaf\x01\n" + + "\x12ResetGameLocalMode\x125.crabs.evening_detective_server.ResetGameLocalModeReq\x1a5.crabs.evening_detective_server.ResetGameLocalModeRsp\"+\x82\xd3\xe4\x93\x02%:\x01*\" /api/games/{ID}/local-mode/reset\x12\x90\x01\n" + "\rGetGameExport\x120.crabs.evening_detective_server.GetGameExportReq\x1a-.crabs.evening_detective_server.GameExportRsp\"\x1e\x82\xd3\xe4\x93\x02\x18\x12\x16/api/games/{ID}/export\x12\xec\x01\n" + "\x10IssueGameTickets\x123.crabs.evening_detective_server.IssueGameTicketsReq\x1a3.crabs.evening_detective_server.IssueGameTicketsRsp\"n\x92AE\n" + "\fБилеты\x12-Выпустить билеты на игруb\x06\n" + @@ -14063,7 +14156,7 @@ func file_main_proto_rawDescGZIP() []byte { } var file_main_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_main_proto_msgTypes = make([]protoimpl.MessageInfo, 242) +var file_main_proto_msgTypes = make([]protoimpl.MessageInfo, 244) var file_main_proto_goTypes = []any{ (ScreenMode)(0), // 0: crabs.evening_detective_server.ScreenMode (ScreenTimerState)(0), // 1: crabs.evening_detective_server.ScreenTimerState @@ -14178,145 +14271,147 @@ var file_main_proto_goTypes = []any{ (*GameImportRsp)(nil), // 110: crabs.evening_detective_server.GameImportRsp (*StartGameExportReq)(nil), // 111: crabs.evening_detective_server.StartGameExportReq (*GetGameExportReq)(nil), // 112: crabs.evening_detective_server.GetGameExportReq - (*GameExportRsp)(nil), // 113: crabs.evening_detective_server.GameExportRsp - (*ScreenState)(nil), // 114: crabs.evening_detective_server.ScreenState - (*CreateScreenSessionReq)(nil), // 115: crabs.evening_detective_server.CreateScreenSessionReq - (*CreateScreenSessionRsp)(nil), // 116: crabs.evening_detective_server.CreateScreenSessionRsp - (*GetScreenStateReq)(nil), // 117: crabs.evening_detective_server.GetScreenStateReq - (*GetScreenStateRsp)(nil), // 118: crabs.evening_detective_server.GetScreenStateRsp - (*GetGameScreensReq)(nil), // 119: crabs.evening_detective_server.GetGameScreensReq - (*GetGameScreensRsp)(nil), // 120: crabs.evening_detective_server.GetGameScreensRsp - (*MusicState)(nil), // 121: crabs.evening_detective_server.MusicState - (*GetGameMusicReq)(nil), // 122: crabs.evening_detective_server.GetGameMusicReq - (*GetGameMusicRsp)(nil), // 123: crabs.evening_detective_server.GetGameMusicRsp - (*SetGameMusicReq)(nil), // 124: crabs.evening_detective_server.SetGameMusicReq - (*SetGameMusicRsp)(nil), // 125: crabs.evening_detective_server.SetGameMusicRsp - (*AdvanceScreenMusicReq)(nil), // 126: crabs.evening_detective_server.AdvanceScreenMusicReq - (*AdvanceScreenMusicRsp)(nil), // 127: crabs.evening_detective_server.AdvanceScreenMusicRsp - (*BindScreenReq)(nil), // 128: crabs.evening_detective_server.BindScreenReq - (*BindScreenRsp)(nil), // 129: crabs.evening_detective_server.BindScreenRsp - (*UnbindScreenReq)(nil), // 130: crabs.evening_detective_server.UnbindScreenReq - (*UnbindScreenRsp)(nil), // 131: crabs.evening_detective_server.UnbindScreenRsp - (*SetScreenSoundReq)(nil), // 132: crabs.evening_detective_server.SetScreenSoundReq - (*SetScreenSoundRsp)(nil), // 133: crabs.evening_detective_server.SetScreenSoundRsp - (*MapItem)(nil), // 134: crabs.evening_detective_server.MapItem - (*GetGameMapReq)(nil), // 135: crabs.evening_detective_server.GetGameMapReq - (*GetGameMapRsp)(nil), // 136: crabs.evening_detective_server.GetGameMapRsp - (*UpdateGameMapItemReq)(nil), // 137: crabs.evening_detective_server.UpdateGameMapItemReq - (*UpdateGameMapItemRsp)(nil), // 138: crabs.evening_detective_server.UpdateGameMapItemRsp - (*SetScreenModeReq)(nil), // 139: crabs.evening_detective_server.SetScreenModeReq - (*SetScreenModeRsp)(nil), // 140: crabs.evening_detective_server.SetScreenModeRsp - (*SetScreenTimerReq)(nil), // 141: crabs.evening_detective_server.SetScreenTimerReq - (*SetScreenTimerRsp)(nil), // 142: crabs.evening_detective_server.SetScreenTimerRsp - (*SendScreenCommandReq)(nil), // 143: crabs.evening_detective_server.SendScreenCommandReq - (*SendScreenCommandRsp)(nil), // 144: crabs.evening_detective_server.SendScreenCommandRsp - (*ScreenPlanStep)(nil), // 145: crabs.evening_detective_server.ScreenPlanStep - (*ScreenPlan)(nil), // 146: crabs.evening_detective_server.ScreenPlan - (*GetScreenPlanReq)(nil), // 147: crabs.evening_detective_server.GetScreenPlanReq - (*GetScreenPlanRsp)(nil), // 148: crabs.evening_detective_server.GetScreenPlanRsp - (*SaveScreenPlanReq)(nil), // 149: crabs.evening_detective_server.SaveScreenPlanReq - (*SaveScreenPlanRsp)(nil), // 150: crabs.evening_detective_server.SaveScreenPlanRsp - (*SetScreenPlanStepReq)(nil), // 151: crabs.evening_detective_server.SetScreenPlanStepReq - (*SetScreenPlanStepRsp)(nil), // 152: crabs.evening_detective_server.SetScreenPlanStepRsp - (*GetScreenResultsReq)(nil), // 153: crabs.evening_detective_server.GetScreenResultsReq - (*GetScreenResultsRsp)(nil), // 154: crabs.evening_detective_server.GetScreenResultsRsp - (*GetParticipationReq)(nil), // 155: crabs.evening_detective_server.GetParticipationReq - (*AnswerParticipationReq)(nil), // 156: crabs.evening_detective_server.AnswerParticipationReq - (*ParticipationRsp)(nil), // 157: crabs.evening_detective_server.ParticipationRsp - (*Team)(nil), // 158: crabs.evening_detective_server.Team - (*GetGameReq)(nil), // 159: crabs.evening_detective_server.GetGameReq - (*GetGameRsp)(nil), // 160: crabs.evening_detective_server.GetGameRsp - (*GetGameAnswersReq)(nil), // 161: crabs.evening_detective_server.GetGameAnswersReq - (*GetGameAnswersRsp)(nil), // 162: crabs.evening_detective_server.GetGameAnswersRsp - (*GetGameResultsReq)(nil), // 163: crabs.evening_detective_server.GetGameResultsReq - (*ResultsQuestion)(nil), // 164: crabs.evening_detective_server.ResultsQuestion - (*TeamResult)(nil), // 165: crabs.evening_detective_server.TeamResult - (*GetGameResultsRsp)(nil), // 166: crabs.evening_detective_server.GetGameResultsRsp - (*GameReview)(nil), // 167: crabs.evening_detective_server.GameReview - (*CreateGameReviewReq)(nil), // 168: crabs.evening_detective_server.CreateGameReviewReq - (*CreateGameReviewRsp)(nil), // 169: crabs.evening_detective_server.CreateGameReviewRsp - (*GetGameReviewsReq)(nil), // 170: crabs.evening_detective_server.GetGameReviewsReq - (*GetScenarioReviewsReq)(nil), // 171: crabs.evening_detective_server.GetScenarioReviewsReq - (*GetReviewsForModerationReq)(nil), // 172: crabs.evening_detective_server.GetReviewsForModerationReq - (*GetGameReviewsRsp)(nil), // 173: crabs.evening_detective_server.GetGameReviewsRsp - (*ModerateGameReviewReq)(nil), // 174: crabs.evening_detective_server.ModerateGameReviewReq - (*ModerateGameReviewRsp)(nil), // 175: crabs.evening_detective_server.ModerateGameReviewRsp - (*UpdateGameReq)(nil), // 176: crabs.evening_detective_server.UpdateGameReq - (*UpdateGameRsp)(nil), // 177: crabs.evening_detective_server.UpdateGameRsp - (*StartGameReq)(nil), // 178: crabs.evening_detective_server.StartGameReq - (*StartGameRsp)(nil), // 179: crabs.evening_detective_server.StartGameRsp - (*PauseGameReq)(nil), // 180: crabs.evening_detective_server.PauseGameReq - (*PauseGameRsp)(nil), // 181: crabs.evening_detective_server.PauseGameRsp - (*PlayGameReq)(nil), // 182: crabs.evening_detective_server.PlayGameReq - (*PlayGameRsp)(nil), // 183: crabs.evening_detective_server.PlayGameRsp - (*FinishGameReq)(nil), // 184: crabs.evening_detective_server.FinishGameReq - (*FinishGameRsp)(nil), // 185: crabs.evening_detective_server.FinishGameRsp - (*ResetGameReq)(nil), // 186: crabs.evening_detective_server.ResetGameReq - (*ResetGameRsp)(nil), // 187: crabs.evening_detective_server.ResetGameRsp - (*DeleteGameReq)(nil), // 188: crabs.evening_detective_server.DeleteGameReq - (*DeleteGameRsp)(nil), // 189: crabs.evening_detective_server.DeleteGameRsp - (*AddTeamReq)(nil), // 190: crabs.evening_detective_server.AddTeamReq - (*AddTeamRsp)(nil), // 191: crabs.evening_detective_server.AddTeamRsp - (*UpdateTeamReq)(nil), // 192: crabs.evening_detective_server.UpdateTeamReq - (*UpdateTeamRsp)(nil), // 193: crabs.evening_detective_server.UpdateTeamRsp - (*DeleteTeamReq)(nil), // 194: crabs.evening_detective_server.DeleteTeamReq - (*DeleteTeamRsp)(nil), // 195: crabs.evening_detective_server.DeleteTeamRsp - (*GiveTeamApplicationsReq)(nil), // 196: crabs.evening_detective_server.GiveTeamApplicationsReq - (*GiveTeamApplicationsRsp)(nil), // 197: crabs.evening_detective_server.GiveTeamApplicationsRsp - (*GetTeamStoryReq)(nil), // 198: crabs.evening_detective_server.GetTeamStoryReq - (*GetTeamStoryRsp)(nil), // 199: crabs.evening_detective_server.GetTeamStoryRsp - (*TeamAction)(nil), // 200: crabs.evening_detective_server.TeamAction - (*AddTeamActionReq)(nil), // 201: crabs.evening_detective_server.AddTeamActionReq - (*AddTeamActionRsp)(nil), // 202: crabs.evening_detective_server.AddTeamActionRsp - (*DeleteLastTeamActionReq)(nil), // 203: crabs.evening_detective_server.DeleteLastTeamActionReq - (*DeleteLastTeamActionRsp)(nil), // 204: crabs.evening_detective_server.DeleteLastTeamActionRsp - (*GetTeamAnswersReq)(nil), // 205: crabs.evening_detective_server.GetTeamAnswersReq - (*GetTeamAnswersRsp)(nil), // 206: crabs.evening_detective_server.GetTeamAnswersRsp - (*SubmitTeamAnswersReq)(nil), // 207: crabs.evening_detective_server.SubmitTeamAnswersReq - (*SubmitTeamAnswersRsp)(nil), // 208: crabs.evening_detective_server.SubmitTeamAnswersRsp - (*SetTeamAnswerScoreReq)(nil), // 209: crabs.evening_detective_server.SetTeamAnswerScoreReq - (*SetTeamAnswerScoreRsp)(nil), // 210: crabs.evening_detective_server.SetTeamAnswerScoreRsp - (*UpdateScenarioBackgroundReq)(nil), // 211: crabs.evening_detective_server.UpdateScenarioBackgroundReq - (*UpdateScenarioBackgroundRsp)(nil), // 212: crabs.evening_detective_server.UpdateScenarioBackgroundRsp - (*IssueGameTicketsReq)(nil), // 213: crabs.evening_detective_server.IssueGameTicketsReq - (*IssueGameTicketsRsp)(nil), // 214: crabs.evening_detective_server.IssueGameTicketsRsp - (*Ticket)(nil), // 215: crabs.evening_detective_server.Ticket - (*GetTicketReq)(nil), // 216: crabs.evening_detective_server.GetTicketReq - (*GetTicketRsp)(nil), // 217: crabs.evening_detective_server.GetTicketRsp - (*AcceptTicketReq)(nil), // 218: crabs.evening_detective_server.AcceptTicketReq - (*AcceptTicketRsp)(nil), // 219: crabs.evening_detective_server.AcceptTicketRsp - (*TicketPage)(nil), // 220: crabs.evening_detective_server.TicketPage - (*DeveloperTask)(nil), // 221: crabs.evening_detective_server.DeveloperTask - (*TaskAssignee)(nil), // 222: crabs.evening_detective_server.TaskAssignee - (*GetTasksReq)(nil), // 223: crabs.evening_detective_server.GetTasksReq - (*GetTasksRsp)(nil), // 224: crabs.evening_detective_server.GetTasksRsp - (*GetTaskAssigneesReq)(nil), // 225: crabs.evening_detective_server.GetTaskAssigneesReq - (*GetTaskAssigneesRsp)(nil), // 226: crabs.evening_detective_server.GetTaskAssigneesRsp - (*CreateTaskReq)(nil), // 227: crabs.evening_detective_server.CreateTaskReq - (*UpdateTaskReq)(nil), // 228: crabs.evening_detective_server.UpdateTaskReq - (*SetTaskStatusReq)(nil), // 229: crabs.evening_detective_server.SetTaskStatusReq - (*DeleteTaskReq)(nil), // 230: crabs.evening_detective_server.DeleteTaskReq - (*TaskRsp)(nil), // 231: crabs.evening_detective_server.TaskRsp - (*DeleteTaskRsp)(nil), // 232: crabs.evening_detective_server.DeleteTaskRsp - (*GameResultsPackageReq)(nil), // 233: crabs.evening_detective_server.GameResultsPackageReq - (*ApplyGameResultsPackageReq)(nil), // 234: crabs.evening_detective_server.ApplyGameResultsPackageReq - (*GameResultsPackageRsp)(nil), // 235: crabs.evening_detective_server.GameResultsPackageRsp - (*DeviceHeartbeatReq)(nil), // 236: crabs.evening_detective_server.DeviceHeartbeatReq - (*DeviceHeartbeatRsp)(nil), // 237: crabs.evening_detective_server.DeviceHeartbeatRsp - (*GetDevicesReq)(nil), // 238: crabs.evening_detective_server.GetDevicesReq - (*GetDevicesRsp)(nil), // 239: crabs.evening_detective_server.GetDevicesRsp - (*VenueDevice)(nil), // 240: crabs.evening_detective_server.VenueDevice - (*DeviceConnection)(nil), // 241: crabs.evening_detective_server.DeviceConnection - (*VenueWiFi)(nil), // 242: crabs.evening_detective_server.VenueWiFi - (*WiFiClient)(nil), // 243: crabs.evening_detective_server.WiFiClient - (*TeamReceiptReq)(nil), // 244: crabs.evening_detective_server.TeamReceiptReq - (*PrintTeamReceiptRsp)(nil), // 245: crabs.evening_detective_server.PrintTeamReceiptRsp - (*timestamppb.Timestamp)(nil), // 246: google.protobuf.Timestamp - (*httpbody.HttpBody)(nil), // 247: google.api.HttpBody + (*ResetGameLocalModeReq)(nil), // 113: crabs.evening_detective_server.ResetGameLocalModeReq + (*ResetGameLocalModeRsp)(nil), // 114: crabs.evening_detective_server.ResetGameLocalModeRsp + (*GameExportRsp)(nil), // 115: crabs.evening_detective_server.GameExportRsp + (*ScreenState)(nil), // 116: crabs.evening_detective_server.ScreenState + (*CreateScreenSessionReq)(nil), // 117: crabs.evening_detective_server.CreateScreenSessionReq + (*CreateScreenSessionRsp)(nil), // 118: crabs.evening_detective_server.CreateScreenSessionRsp + (*GetScreenStateReq)(nil), // 119: crabs.evening_detective_server.GetScreenStateReq + (*GetScreenStateRsp)(nil), // 120: crabs.evening_detective_server.GetScreenStateRsp + (*GetGameScreensReq)(nil), // 121: crabs.evening_detective_server.GetGameScreensReq + (*GetGameScreensRsp)(nil), // 122: crabs.evening_detective_server.GetGameScreensRsp + (*MusicState)(nil), // 123: crabs.evening_detective_server.MusicState + (*GetGameMusicReq)(nil), // 124: crabs.evening_detective_server.GetGameMusicReq + (*GetGameMusicRsp)(nil), // 125: crabs.evening_detective_server.GetGameMusicRsp + (*SetGameMusicReq)(nil), // 126: crabs.evening_detective_server.SetGameMusicReq + (*SetGameMusicRsp)(nil), // 127: crabs.evening_detective_server.SetGameMusicRsp + (*AdvanceScreenMusicReq)(nil), // 128: crabs.evening_detective_server.AdvanceScreenMusicReq + (*AdvanceScreenMusicRsp)(nil), // 129: crabs.evening_detective_server.AdvanceScreenMusicRsp + (*BindScreenReq)(nil), // 130: crabs.evening_detective_server.BindScreenReq + (*BindScreenRsp)(nil), // 131: crabs.evening_detective_server.BindScreenRsp + (*UnbindScreenReq)(nil), // 132: crabs.evening_detective_server.UnbindScreenReq + (*UnbindScreenRsp)(nil), // 133: crabs.evening_detective_server.UnbindScreenRsp + (*SetScreenSoundReq)(nil), // 134: crabs.evening_detective_server.SetScreenSoundReq + (*SetScreenSoundRsp)(nil), // 135: crabs.evening_detective_server.SetScreenSoundRsp + (*MapItem)(nil), // 136: crabs.evening_detective_server.MapItem + (*GetGameMapReq)(nil), // 137: crabs.evening_detective_server.GetGameMapReq + (*GetGameMapRsp)(nil), // 138: crabs.evening_detective_server.GetGameMapRsp + (*UpdateGameMapItemReq)(nil), // 139: crabs.evening_detective_server.UpdateGameMapItemReq + (*UpdateGameMapItemRsp)(nil), // 140: crabs.evening_detective_server.UpdateGameMapItemRsp + (*SetScreenModeReq)(nil), // 141: crabs.evening_detective_server.SetScreenModeReq + (*SetScreenModeRsp)(nil), // 142: crabs.evening_detective_server.SetScreenModeRsp + (*SetScreenTimerReq)(nil), // 143: crabs.evening_detective_server.SetScreenTimerReq + (*SetScreenTimerRsp)(nil), // 144: crabs.evening_detective_server.SetScreenTimerRsp + (*SendScreenCommandReq)(nil), // 145: crabs.evening_detective_server.SendScreenCommandReq + (*SendScreenCommandRsp)(nil), // 146: crabs.evening_detective_server.SendScreenCommandRsp + (*ScreenPlanStep)(nil), // 147: crabs.evening_detective_server.ScreenPlanStep + (*ScreenPlan)(nil), // 148: crabs.evening_detective_server.ScreenPlan + (*GetScreenPlanReq)(nil), // 149: crabs.evening_detective_server.GetScreenPlanReq + (*GetScreenPlanRsp)(nil), // 150: crabs.evening_detective_server.GetScreenPlanRsp + (*SaveScreenPlanReq)(nil), // 151: crabs.evening_detective_server.SaveScreenPlanReq + (*SaveScreenPlanRsp)(nil), // 152: crabs.evening_detective_server.SaveScreenPlanRsp + (*SetScreenPlanStepReq)(nil), // 153: crabs.evening_detective_server.SetScreenPlanStepReq + (*SetScreenPlanStepRsp)(nil), // 154: crabs.evening_detective_server.SetScreenPlanStepRsp + (*GetScreenResultsReq)(nil), // 155: crabs.evening_detective_server.GetScreenResultsReq + (*GetScreenResultsRsp)(nil), // 156: crabs.evening_detective_server.GetScreenResultsRsp + (*GetParticipationReq)(nil), // 157: crabs.evening_detective_server.GetParticipationReq + (*AnswerParticipationReq)(nil), // 158: crabs.evening_detective_server.AnswerParticipationReq + (*ParticipationRsp)(nil), // 159: crabs.evening_detective_server.ParticipationRsp + (*Team)(nil), // 160: crabs.evening_detective_server.Team + (*GetGameReq)(nil), // 161: crabs.evening_detective_server.GetGameReq + (*GetGameRsp)(nil), // 162: crabs.evening_detective_server.GetGameRsp + (*GetGameAnswersReq)(nil), // 163: crabs.evening_detective_server.GetGameAnswersReq + (*GetGameAnswersRsp)(nil), // 164: crabs.evening_detective_server.GetGameAnswersRsp + (*GetGameResultsReq)(nil), // 165: crabs.evening_detective_server.GetGameResultsReq + (*ResultsQuestion)(nil), // 166: crabs.evening_detective_server.ResultsQuestion + (*TeamResult)(nil), // 167: crabs.evening_detective_server.TeamResult + (*GetGameResultsRsp)(nil), // 168: crabs.evening_detective_server.GetGameResultsRsp + (*GameReview)(nil), // 169: crabs.evening_detective_server.GameReview + (*CreateGameReviewReq)(nil), // 170: crabs.evening_detective_server.CreateGameReviewReq + (*CreateGameReviewRsp)(nil), // 171: crabs.evening_detective_server.CreateGameReviewRsp + (*GetGameReviewsReq)(nil), // 172: crabs.evening_detective_server.GetGameReviewsReq + (*GetScenarioReviewsReq)(nil), // 173: crabs.evening_detective_server.GetScenarioReviewsReq + (*GetReviewsForModerationReq)(nil), // 174: crabs.evening_detective_server.GetReviewsForModerationReq + (*GetGameReviewsRsp)(nil), // 175: crabs.evening_detective_server.GetGameReviewsRsp + (*ModerateGameReviewReq)(nil), // 176: crabs.evening_detective_server.ModerateGameReviewReq + (*ModerateGameReviewRsp)(nil), // 177: crabs.evening_detective_server.ModerateGameReviewRsp + (*UpdateGameReq)(nil), // 178: crabs.evening_detective_server.UpdateGameReq + (*UpdateGameRsp)(nil), // 179: crabs.evening_detective_server.UpdateGameRsp + (*StartGameReq)(nil), // 180: crabs.evening_detective_server.StartGameReq + (*StartGameRsp)(nil), // 181: crabs.evening_detective_server.StartGameRsp + (*PauseGameReq)(nil), // 182: crabs.evening_detective_server.PauseGameReq + (*PauseGameRsp)(nil), // 183: crabs.evening_detective_server.PauseGameRsp + (*PlayGameReq)(nil), // 184: crabs.evening_detective_server.PlayGameReq + (*PlayGameRsp)(nil), // 185: crabs.evening_detective_server.PlayGameRsp + (*FinishGameReq)(nil), // 186: crabs.evening_detective_server.FinishGameReq + (*FinishGameRsp)(nil), // 187: crabs.evening_detective_server.FinishGameRsp + (*ResetGameReq)(nil), // 188: crabs.evening_detective_server.ResetGameReq + (*ResetGameRsp)(nil), // 189: crabs.evening_detective_server.ResetGameRsp + (*DeleteGameReq)(nil), // 190: crabs.evening_detective_server.DeleteGameReq + (*DeleteGameRsp)(nil), // 191: crabs.evening_detective_server.DeleteGameRsp + (*AddTeamReq)(nil), // 192: crabs.evening_detective_server.AddTeamReq + (*AddTeamRsp)(nil), // 193: crabs.evening_detective_server.AddTeamRsp + (*UpdateTeamReq)(nil), // 194: crabs.evening_detective_server.UpdateTeamReq + (*UpdateTeamRsp)(nil), // 195: crabs.evening_detective_server.UpdateTeamRsp + (*DeleteTeamReq)(nil), // 196: crabs.evening_detective_server.DeleteTeamReq + (*DeleteTeamRsp)(nil), // 197: crabs.evening_detective_server.DeleteTeamRsp + (*GiveTeamApplicationsReq)(nil), // 198: crabs.evening_detective_server.GiveTeamApplicationsReq + (*GiveTeamApplicationsRsp)(nil), // 199: crabs.evening_detective_server.GiveTeamApplicationsRsp + (*GetTeamStoryReq)(nil), // 200: crabs.evening_detective_server.GetTeamStoryReq + (*GetTeamStoryRsp)(nil), // 201: crabs.evening_detective_server.GetTeamStoryRsp + (*TeamAction)(nil), // 202: crabs.evening_detective_server.TeamAction + (*AddTeamActionReq)(nil), // 203: crabs.evening_detective_server.AddTeamActionReq + (*AddTeamActionRsp)(nil), // 204: crabs.evening_detective_server.AddTeamActionRsp + (*DeleteLastTeamActionReq)(nil), // 205: crabs.evening_detective_server.DeleteLastTeamActionReq + (*DeleteLastTeamActionRsp)(nil), // 206: crabs.evening_detective_server.DeleteLastTeamActionRsp + (*GetTeamAnswersReq)(nil), // 207: crabs.evening_detective_server.GetTeamAnswersReq + (*GetTeamAnswersRsp)(nil), // 208: crabs.evening_detective_server.GetTeamAnswersRsp + (*SubmitTeamAnswersReq)(nil), // 209: crabs.evening_detective_server.SubmitTeamAnswersReq + (*SubmitTeamAnswersRsp)(nil), // 210: crabs.evening_detective_server.SubmitTeamAnswersRsp + (*SetTeamAnswerScoreReq)(nil), // 211: crabs.evening_detective_server.SetTeamAnswerScoreReq + (*SetTeamAnswerScoreRsp)(nil), // 212: crabs.evening_detective_server.SetTeamAnswerScoreRsp + (*UpdateScenarioBackgroundReq)(nil), // 213: crabs.evening_detective_server.UpdateScenarioBackgroundReq + (*UpdateScenarioBackgroundRsp)(nil), // 214: crabs.evening_detective_server.UpdateScenarioBackgroundRsp + (*IssueGameTicketsReq)(nil), // 215: crabs.evening_detective_server.IssueGameTicketsReq + (*IssueGameTicketsRsp)(nil), // 216: crabs.evening_detective_server.IssueGameTicketsRsp + (*Ticket)(nil), // 217: crabs.evening_detective_server.Ticket + (*GetTicketReq)(nil), // 218: crabs.evening_detective_server.GetTicketReq + (*GetTicketRsp)(nil), // 219: crabs.evening_detective_server.GetTicketRsp + (*AcceptTicketReq)(nil), // 220: crabs.evening_detective_server.AcceptTicketReq + (*AcceptTicketRsp)(nil), // 221: crabs.evening_detective_server.AcceptTicketRsp + (*TicketPage)(nil), // 222: crabs.evening_detective_server.TicketPage + (*DeveloperTask)(nil), // 223: crabs.evening_detective_server.DeveloperTask + (*TaskAssignee)(nil), // 224: crabs.evening_detective_server.TaskAssignee + (*GetTasksReq)(nil), // 225: crabs.evening_detective_server.GetTasksReq + (*GetTasksRsp)(nil), // 226: crabs.evening_detective_server.GetTasksRsp + (*GetTaskAssigneesReq)(nil), // 227: crabs.evening_detective_server.GetTaskAssigneesReq + (*GetTaskAssigneesRsp)(nil), // 228: crabs.evening_detective_server.GetTaskAssigneesRsp + (*CreateTaskReq)(nil), // 229: crabs.evening_detective_server.CreateTaskReq + (*UpdateTaskReq)(nil), // 230: crabs.evening_detective_server.UpdateTaskReq + (*SetTaskStatusReq)(nil), // 231: crabs.evening_detective_server.SetTaskStatusReq + (*DeleteTaskReq)(nil), // 232: crabs.evening_detective_server.DeleteTaskReq + (*TaskRsp)(nil), // 233: crabs.evening_detective_server.TaskRsp + (*DeleteTaskRsp)(nil), // 234: crabs.evening_detective_server.DeleteTaskRsp + (*GameResultsPackageReq)(nil), // 235: crabs.evening_detective_server.GameResultsPackageReq + (*ApplyGameResultsPackageReq)(nil), // 236: crabs.evening_detective_server.ApplyGameResultsPackageReq + (*GameResultsPackageRsp)(nil), // 237: crabs.evening_detective_server.GameResultsPackageRsp + (*DeviceHeartbeatReq)(nil), // 238: crabs.evening_detective_server.DeviceHeartbeatReq + (*DeviceHeartbeatRsp)(nil), // 239: crabs.evening_detective_server.DeviceHeartbeatRsp + (*GetDevicesReq)(nil), // 240: crabs.evening_detective_server.GetDevicesReq + (*GetDevicesRsp)(nil), // 241: crabs.evening_detective_server.GetDevicesRsp + (*VenueDevice)(nil), // 242: crabs.evening_detective_server.VenueDevice + (*DeviceConnection)(nil), // 243: crabs.evening_detective_server.DeviceConnection + (*VenueWiFi)(nil), // 244: crabs.evening_detective_server.VenueWiFi + (*WiFiClient)(nil), // 245: crabs.evening_detective_server.WiFiClient + (*TeamReceiptReq)(nil), // 246: crabs.evening_detective_server.TeamReceiptReq + (*PrintTeamReceiptRsp)(nil), // 247: crabs.evening_detective_server.PrintTeamReceiptRsp + (*timestamppb.Timestamp)(nil), // 248: google.protobuf.Timestamp + (*httpbody.HttpBody)(nil), // 249: google.api.HttpBody } var file_main_proto_depIdxs = []int32{ 26, // 0: crabs.evening_detective_server.GetUsersRsp.users:type_name -> crabs.evening_detective_server.User - 246, // 1: crabs.evening_detective_server.User.created_at:type_name -> google.protobuf.Timestamp + 248, // 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 @@ -14329,9 +14424,9 @@ var file_main_proto_depIdxs = []int32{ 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 - 246, // 14: crabs.evening_detective_server.Scenario.updated_at:type_name -> google.protobuf.Timestamp - 246, // 15: crabs.evening_detective_server.Scenario.created_at:type_name -> google.protobuf.Timestamp - 246, // 16: crabs.evening_detective_server.Scenario.published_at:type_name -> google.protobuf.Timestamp + 248, // 14: crabs.evening_detective_server.Scenario.updated_at:type_name -> google.protobuf.Timestamp + 248, // 15: crabs.evening_detective_server.Scenario.created_at:type_name -> google.protobuf.Timestamp + 248, // 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 @@ -14340,7 +14435,7 @@ var file_main_proto_depIdxs = []int32{ 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 - 158, // 25: crabs.evening_detective_server.TeamAnswers.team:type_name -> crabs.evening_detective_server.Team + 160, // 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 @@ -14348,91 +14443,91 @@ var file_main_proto_depIdxs = []int32{ 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 - 246, // 33: crabs.evening_detective_server.AddGameReq.start_at:type_name -> google.protobuf.Timestamp + 248, // 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 - 246, // 35: crabs.evening_detective_server.Game.start_at:type_name -> google.protobuf.Timestamp + 248, // 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 - 158, // 37: crabs.evening_detective_server.Game.teams:type_name -> crabs.evening_detective_server.Team - 246, // 38: crabs.evening_detective_server.Game.started_at:type_name -> google.protobuf.Timestamp - 246, // 39: crabs.evening_detective_server.Game.ended_at:type_name -> google.protobuf.Timestamp + 160, // 37: crabs.evening_detective_server.Game.teams:type_name -> crabs.evening_detective_server.Team + 248, // 38: crabs.evening_detective_server.Game.started_at:type_name -> google.protobuf.Timestamp + 248, // 39: crabs.evening_detective_server.Game.ended_at:type_name -> google.protobuf.Timestamp 109, // 40: crabs.evening_detective_server.Game.export:type_name -> crabs.evening_detective_server.GameExport 109, // 41: crabs.evening_detective_server.GameExportRsp.export:type_name -> crabs.evening_detective_server.GameExport 0, // 42: crabs.evening_detective_server.ScreenState.mode:type_name -> crabs.evening_detective_server.ScreenMode 2, // 43: crabs.evening_detective_server.ScreenState.command:type_name -> crabs.evening_detective_server.ScreenCommand 1, // 44: crabs.evening_detective_server.ScreenState.timer_state:type_name -> crabs.evening_detective_server.ScreenTimerState - 121, // 45: crabs.evening_detective_server.ScreenState.music:type_name -> crabs.evening_detective_server.MusicState - 114, // 46: crabs.evening_detective_server.GetScreenStateRsp.state:type_name -> crabs.evening_detective_server.ScreenState - 114, // 47: crabs.evening_detective_server.GetGameScreensRsp.screens:type_name -> crabs.evening_detective_server.ScreenState + 123, // 45: crabs.evening_detective_server.ScreenState.music:type_name -> crabs.evening_detective_server.MusicState + 116, // 46: crabs.evening_detective_server.GetScreenStateRsp.state:type_name -> crabs.evening_detective_server.ScreenState + 116, // 47: crabs.evening_detective_server.GetGameScreensRsp.screens:type_name -> crabs.evening_detective_server.ScreenState 43, // 48: crabs.evening_detective_server.MusicState.playlist:type_name -> crabs.evening_detective_server.Playlist 3, // 49: crabs.evening_detective_server.MusicState.playback:type_name -> crabs.evening_detective_server.MusicPlaybackState 43, // 50: crabs.evening_detective_server.GetGameMusicRsp.playlists:type_name -> crabs.evening_detective_server.Playlist - 121, // 51: crabs.evening_detective_server.GetGameMusicRsp.state:type_name -> crabs.evening_detective_server.MusicState + 123, // 51: crabs.evening_detective_server.GetGameMusicRsp.state:type_name -> crabs.evening_detective_server.MusicState 3, // 52: crabs.evening_detective_server.SetGameMusicReq.playback:type_name -> crabs.evening_detective_server.MusicPlaybackState - 121, // 53: crabs.evening_detective_server.SetGameMusicRsp.state:type_name -> crabs.evening_detective_server.MusicState - 121, // 54: crabs.evening_detective_server.AdvanceScreenMusicRsp.state:type_name -> crabs.evening_detective_server.MusicState - 114, // 55: crabs.evening_detective_server.BindScreenRsp.state:type_name -> crabs.evening_detective_server.ScreenState - 134, // 56: crabs.evening_detective_server.GetGameMapRsp.items:type_name -> crabs.evening_detective_server.MapItem + 123, // 53: crabs.evening_detective_server.SetGameMusicRsp.state:type_name -> crabs.evening_detective_server.MusicState + 123, // 54: crabs.evening_detective_server.AdvanceScreenMusicRsp.state:type_name -> crabs.evening_detective_server.MusicState + 116, // 55: crabs.evening_detective_server.BindScreenRsp.state:type_name -> crabs.evening_detective_server.ScreenState + 136, // 56: crabs.evening_detective_server.GetGameMapRsp.items:type_name -> crabs.evening_detective_server.MapItem 0, // 57: crabs.evening_detective_server.SetScreenModeReq.mode:type_name -> crabs.evening_detective_server.ScreenMode 2, // 58: crabs.evening_detective_server.SendScreenCommandReq.command:type_name -> crabs.evening_detective_server.ScreenCommand 0, // 59: crabs.evening_detective_server.ScreenPlanStep.mode:type_name -> crabs.evening_detective_server.ScreenMode - 145, // 60: crabs.evening_detective_server.ScreenPlan.steps:type_name -> crabs.evening_detective_server.ScreenPlanStep - 146, // 61: crabs.evening_detective_server.GetScreenPlanRsp.plan:type_name -> crabs.evening_detective_server.ScreenPlan - 145, // 62: crabs.evening_detective_server.SaveScreenPlanReq.steps:type_name -> crabs.evening_detective_server.ScreenPlanStep - 146, // 63: crabs.evening_detective_server.SaveScreenPlanRsp.plan:type_name -> crabs.evening_detective_server.ScreenPlan - 146, // 64: crabs.evening_detective_server.SetScreenPlanStepRsp.plan:type_name -> crabs.evening_detective_server.ScreenPlan - 164, // 65: crabs.evening_detective_server.GetScreenResultsRsp.questions:type_name -> crabs.evening_detective_server.ResultsQuestion - 165, // 66: crabs.evening_detective_server.GetScreenResultsRsp.teams:type_name -> crabs.evening_detective_server.TeamResult - 246, // 67: crabs.evening_detective_server.ParticipationRsp.start_at:type_name -> google.protobuf.Timestamp + 147, // 60: crabs.evening_detective_server.ScreenPlan.steps:type_name -> crabs.evening_detective_server.ScreenPlanStep + 148, // 61: crabs.evening_detective_server.GetScreenPlanRsp.plan:type_name -> crabs.evening_detective_server.ScreenPlan + 147, // 62: crabs.evening_detective_server.SaveScreenPlanReq.steps:type_name -> crabs.evening_detective_server.ScreenPlanStep + 148, // 63: crabs.evening_detective_server.SaveScreenPlanRsp.plan:type_name -> crabs.evening_detective_server.ScreenPlan + 148, // 64: crabs.evening_detective_server.SetScreenPlanStepRsp.plan:type_name -> crabs.evening_detective_server.ScreenPlan + 166, // 65: crabs.evening_detective_server.GetScreenResultsRsp.questions:type_name -> crabs.evening_detective_server.ResultsQuestion + 167, // 66: crabs.evening_detective_server.GetScreenResultsRsp.teams:type_name -> crabs.evening_detective_server.TeamResult + 248, // 67: crabs.evening_detective_server.ParticipationRsp.start_at:type_name -> google.protobuf.Timestamp 71, // 68: crabs.evening_detective_server.Team.applications:type_name -> crabs.evening_detective_server.Application 108, // 69: crabs.evening_detective_server.GetGameRsp.game:type_name -> crabs.evening_detective_server.Game 74, // 70: crabs.evening_detective_server.GetGameAnswersRsp.questions:type_name -> crabs.evening_detective_server.Question 77, // 71: crabs.evening_detective_server.GetGameAnswersRsp.teams:type_name -> crabs.evening_detective_server.TeamAnswers - 158, // 72: crabs.evening_detective_server.TeamResult.team:type_name -> crabs.evening_detective_server.Team + 160, // 72: crabs.evening_detective_server.TeamResult.team:type_name -> crabs.evening_detective_server.Team 76, // 73: crabs.evening_detective_server.TeamResult.answers:type_name -> crabs.evening_detective_server.AnswerScore - 164, // 74: crabs.evening_detective_server.GetGameResultsRsp.questions:type_name -> crabs.evening_detective_server.ResultsQuestion - 165, // 75: crabs.evening_detective_server.GetGameResultsRsp.teams:type_name -> crabs.evening_detective_server.TeamResult - 246, // 76: crabs.evening_detective_server.GameReview.created_at:type_name -> google.protobuf.Timestamp - 167, // 77: crabs.evening_detective_server.CreateGameReviewRsp.review:type_name -> crabs.evening_detective_server.GameReview - 167, // 78: crabs.evening_detective_server.GetGameReviewsRsp.reviews:type_name -> crabs.evening_detective_server.GameReview - 167, // 79: crabs.evening_detective_server.ModerateGameReviewRsp.review:type_name -> crabs.evening_detective_server.GameReview - 246, // 80: crabs.evening_detective_server.UpdateGameReq.start_at:type_name -> google.protobuf.Timestamp + 166, // 74: crabs.evening_detective_server.GetGameResultsRsp.questions:type_name -> crabs.evening_detective_server.ResultsQuestion + 167, // 75: crabs.evening_detective_server.GetGameResultsRsp.teams:type_name -> crabs.evening_detective_server.TeamResult + 248, // 76: crabs.evening_detective_server.GameReview.created_at:type_name -> google.protobuf.Timestamp + 169, // 77: crabs.evening_detective_server.CreateGameReviewRsp.review:type_name -> crabs.evening_detective_server.GameReview + 169, // 78: crabs.evening_detective_server.GetGameReviewsRsp.reviews:type_name -> crabs.evening_detective_server.GameReview + 169, // 79: crabs.evening_detective_server.ModerateGameReviewRsp.review:type_name -> crabs.evening_detective_server.GameReview + 248, // 80: crabs.evening_detective_server.UpdateGameReq.start_at:type_name -> google.protobuf.Timestamp 67, // 81: crabs.evening_detective_server.GetTeamStoryRsp.story:type_name -> crabs.evening_detective_server.Story 108, // 82: crabs.evening_detective_server.GetTeamStoryRsp.game:type_name -> crabs.evening_detective_server.Game - 200, // 83: crabs.evening_detective_server.GetTeamStoryRsp.actions:type_name -> crabs.evening_detective_server.TeamAction + 202, // 83: crabs.evening_detective_server.GetTeamStoryRsp.actions:type_name -> crabs.evening_detective_server.TeamAction 75, // 84: crabs.evening_detective_server.GetTeamAnswersRsp.answers:type_name -> crabs.evening_detective_server.Answer 75, // 85: crabs.evening_detective_server.SubmitTeamAnswersReq.answers:type_name -> crabs.evening_detective_server.Answer - 215, // 86: crabs.evening_detective_server.IssueGameTicketsRsp.tickets:type_name -> crabs.evening_detective_server.Ticket - 220, // 87: crabs.evening_detective_server.GetTicketRsp.ticket:type_name -> crabs.evening_detective_server.TicketPage - 220, // 88: crabs.evening_detective_server.AcceptTicketRsp.ticket:type_name -> crabs.evening_detective_server.TicketPage - 246, // 89: crabs.evening_detective_server.TicketPage.start_at:type_name -> google.protobuf.Timestamp - 246, // 90: crabs.evening_detective_server.TicketPage.used_at:type_name -> google.protobuf.Timestamp - 246, // 91: crabs.evening_detective_server.DeveloperTask.createdAt:type_name -> google.protobuf.Timestamp - 246, // 92: crabs.evening_detective_server.DeveloperTask.updatedAt:type_name -> google.protobuf.Timestamp - 221, // 93: crabs.evening_detective_server.GetTasksRsp.tasks:type_name -> crabs.evening_detective_server.DeveloperTask - 222, // 94: crabs.evening_detective_server.GetTaskAssigneesRsp.assignees:type_name -> crabs.evening_detective_server.TaskAssignee - 221, // 95: crabs.evening_detective_server.TaskRsp.task:type_name -> crabs.evening_detective_server.DeveloperTask - 247, // 96: crabs.evening_detective_server.ApplyGameResultsPackageReq.package:type_name -> google.api.HttpBody - 246, // 97: crabs.evening_detective_server.DeviceHeartbeatRsp.serverTime:type_name -> google.protobuf.Timestamp - 240, // 98: crabs.evening_detective_server.GetDevicesRsp.devices:type_name -> crabs.evening_detective_server.VenueDevice - 246, // 99: crabs.evening_detective_server.GetDevicesRsp.serverTime:type_name -> google.protobuf.Timestamp - 242, // 100: crabs.evening_detective_server.GetDevicesRsp.wifi:type_name -> crabs.evening_detective_server.VenueWiFi - 246, // 101: crabs.evening_detective_server.VenueDevice.firstSeenAt:type_name -> google.protobuf.Timestamp - 246, // 102: crabs.evening_detective_server.VenueDevice.lastSeenAt:type_name -> google.protobuf.Timestamp - 241, // 103: crabs.evening_detective_server.VenueDevice.connections:type_name -> crabs.evening_detective_server.DeviceConnection - 246, // 104: crabs.evening_detective_server.DeviceConnection.firstSeenAt:type_name -> google.protobuf.Timestamp - 246, // 105: crabs.evening_detective_server.DeviceConnection.lastSeenAt:type_name -> google.protobuf.Timestamp - 246, // 106: crabs.evening_detective_server.VenueWiFi.collectedAt:type_name -> google.protobuf.Timestamp - 243, // 107: crabs.evening_detective_server.VenueWiFi.clients:type_name -> crabs.evening_detective_server.WiFiClient - 236, // 108: crabs.evening_detective_server.EveningDetectiveServer.DeviceHeartbeat:input_type -> crabs.evening_detective_server.DeviceHeartbeatReq - 238, // 109: crabs.evening_detective_server.EveningDetectiveServer.GetDevices:input_type -> crabs.evening_detective_server.GetDevicesReq - 223, // 110: crabs.evening_detective_server.EveningDetectiveServer.GetTasks:input_type -> crabs.evening_detective_server.GetTasksReq - 225, // 111: crabs.evening_detective_server.EveningDetectiveServer.GetTaskAssignees:input_type -> crabs.evening_detective_server.GetTaskAssigneesReq - 227, // 112: crabs.evening_detective_server.EveningDetectiveServer.CreateTask:input_type -> crabs.evening_detective_server.CreateTaskReq - 228, // 113: crabs.evening_detective_server.EveningDetectiveServer.UpdateTask:input_type -> crabs.evening_detective_server.UpdateTaskReq - 229, // 114: crabs.evening_detective_server.EveningDetectiveServer.SetTaskStatus:input_type -> crabs.evening_detective_server.SetTaskStatusReq - 230, // 115: crabs.evening_detective_server.EveningDetectiveServer.DeleteTask:input_type -> crabs.evening_detective_server.DeleteTaskReq - 155, // 116: crabs.evening_detective_server.EveningDetectiveServer.GetParticipation:input_type -> crabs.evening_detective_server.GetParticipationReq - 156, // 117: crabs.evening_detective_server.EveningDetectiveServer.AnswerParticipation:input_type -> crabs.evening_detective_server.AnswerParticipationReq + 217, // 86: crabs.evening_detective_server.IssueGameTicketsRsp.tickets:type_name -> crabs.evening_detective_server.Ticket + 222, // 87: crabs.evening_detective_server.GetTicketRsp.ticket:type_name -> crabs.evening_detective_server.TicketPage + 222, // 88: crabs.evening_detective_server.AcceptTicketRsp.ticket:type_name -> crabs.evening_detective_server.TicketPage + 248, // 89: crabs.evening_detective_server.TicketPage.start_at:type_name -> google.protobuf.Timestamp + 248, // 90: crabs.evening_detective_server.TicketPage.used_at:type_name -> google.protobuf.Timestamp + 248, // 91: crabs.evening_detective_server.DeveloperTask.createdAt:type_name -> google.protobuf.Timestamp + 248, // 92: crabs.evening_detective_server.DeveloperTask.updatedAt:type_name -> google.protobuf.Timestamp + 223, // 93: crabs.evening_detective_server.GetTasksRsp.tasks:type_name -> crabs.evening_detective_server.DeveloperTask + 224, // 94: crabs.evening_detective_server.GetTaskAssigneesRsp.assignees:type_name -> crabs.evening_detective_server.TaskAssignee + 223, // 95: crabs.evening_detective_server.TaskRsp.task:type_name -> crabs.evening_detective_server.DeveloperTask + 249, // 96: crabs.evening_detective_server.ApplyGameResultsPackageReq.package:type_name -> google.api.HttpBody + 248, // 97: crabs.evening_detective_server.DeviceHeartbeatRsp.serverTime:type_name -> google.protobuf.Timestamp + 242, // 98: crabs.evening_detective_server.GetDevicesRsp.devices:type_name -> crabs.evening_detective_server.VenueDevice + 248, // 99: crabs.evening_detective_server.GetDevicesRsp.serverTime:type_name -> google.protobuf.Timestamp + 244, // 100: crabs.evening_detective_server.GetDevicesRsp.wifi:type_name -> crabs.evening_detective_server.VenueWiFi + 248, // 101: crabs.evening_detective_server.VenueDevice.firstSeenAt:type_name -> google.protobuf.Timestamp + 248, // 102: crabs.evening_detective_server.VenueDevice.lastSeenAt:type_name -> google.protobuf.Timestamp + 243, // 103: crabs.evening_detective_server.VenueDevice.connections:type_name -> crabs.evening_detective_server.DeviceConnection + 248, // 104: crabs.evening_detective_server.DeviceConnection.firstSeenAt:type_name -> google.protobuf.Timestamp + 248, // 105: crabs.evening_detective_server.DeviceConnection.lastSeenAt:type_name -> google.protobuf.Timestamp + 248, // 106: crabs.evening_detective_server.VenueWiFi.collectedAt:type_name -> google.protobuf.Timestamp + 245, // 107: crabs.evening_detective_server.VenueWiFi.clients:type_name -> crabs.evening_detective_server.WiFiClient + 238, // 108: crabs.evening_detective_server.EveningDetectiveServer.DeviceHeartbeat:input_type -> crabs.evening_detective_server.DeviceHeartbeatReq + 240, // 109: crabs.evening_detective_server.EveningDetectiveServer.GetDevices:input_type -> crabs.evening_detective_server.GetDevicesReq + 225, // 110: crabs.evening_detective_server.EveningDetectiveServer.GetTasks:input_type -> crabs.evening_detective_server.GetTasksReq + 227, // 111: crabs.evening_detective_server.EveningDetectiveServer.GetTaskAssignees:input_type -> crabs.evening_detective_server.GetTaskAssigneesReq + 229, // 112: crabs.evening_detective_server.EveningDetectiveServer.CreateTask:input_type -> crabs.evening_detective_server.CreateTaskReq + 230, // 113: crabs.evening_detective_server.EveningDetectiveServer.UpdateTask:input_type -> crabs.evening_detective_server.UpdateTaskReq + 231, // 114: crabs.evening_detective_server.EveningDetectiveServer.SetTaskStatus:input_type -> crabs.evening_detective_server.SetTaskStatusReq + 232, // 115: crabs.evening_detective_server.EveningDetectiveServer.DeleteTask:input_type -> crabs.evening_detective_server.DeleteTaskReq + 157, // 116: crabs.evening_detective_server.EveningDetectiveServer.GetParticipation:input_type -> crabs.evening_detective_server.GetParticipationReq + 158, // 117: crabs.evening_detective_server.EveningDetectiveServer.AnswerParticipation:input_type -> crabs.evening_detective_server.AnswerParticipationReq 4, // 118: crabs.evening_detective_server.EveningDetectiveServer.Ping:input_type -> crabs.evening_detective_server.PingReq 6, // 119: crabs.evening_detective_server.EveningDetectiveServer.Echo:input_type -> crabs.evening_detective_server.EchoReq 8, // 120: crabs.evening_detective_server.EveningDetectiveServer.Signup:input_type -> crabs.evening_detective_server.SignupReq @@ -14474,185 +14569,187 @@ var file_main_proto_depIdxs = []int32{ 96, // 156: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioQuestion:input_type -> crabs.evening_detective_server.AddScenarioQuestionReq 98, // 157: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioQuestion:input_type -> crabs.evening_detective_server.UpdateScenarioQuestionReq 100, // 158: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioQuestion:input_type -> crabs.evening_detective_server.DeleteScenarioQuestionReq - 211, // 159: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioBackground:input_type -> crabs.evening_detective_server.UpdateScenarioBackgroundReq + 213, // 159: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioBackground:input_type -> crabs.evening_detective_server.UpdateScenarioBackgroundReq 94, // 160: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioIntro:input_type -> crabs.evening_detective_server.UpdateScenarioIntroReq 92, // 161: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioConclusion:input_type -> crabs.evening_detective_server.UpdateScenarioConclusionReq 102, // 162: crabs.evening_detective_server.EveningDetectiveServer.DownloadScenarioArchive:input_type -> crabs.evening_detective_server.DownloadScenarioArchiveReq - 247, // 163: crabs.evening_detective_server.EveningDetectiveServer.UploadScenarioArchive:input_type -> google.api.HttpBody + 249, // 163: crabs.evening_detective_server.EveningDetectiveServer.UploadScenarioArchive:input_type -> google.api.HttpBody 104, // 164: crabs.evening_detective_server.EveningDetectiveServer.AddGame:input_type -> crabs.evening_detective_server.AddGameReq 106, // 165: crabs.evening_detective_server.EveningDetectiveServer.GetGames:input_type -> crabs.evening_detective_server.GetGamesReq - 159, // 166: crabs.evening_detective_server.EveningDetectiveServer.GetGame:input_type -> crabs.evening_detective_server.GetGameReq - 247, // 167: crabs.evening_detective_server.EveningDetectiveServer.ImportGame:input_type -> google.api.HttpBody - 233, // 168: crabs.evening_detective_server.EveningDetectiveServer.DownloadGameResultsPackage:input_type -> crabs.evening_detective_server.GameResultsPackageReq - 234, // 169: crabs.evening_detective_server.EveningDetectiveServer.ApplyGameResultsPackage:input_type -> crabs.evening_detective_server.ApplyGameResultsPackageReq + 161, // 166: crabs.evening_detective_server.EveningDetectiveServer.GetGame:input_type -> crabs.evening_detective_server.GetGameReq + 249, // 167: crabs.evening_detective_server.EveningDetectiveServer.ImportGame:input_type -> google.api.HttpBody + 235, // 168: crabs.evening_detective_server.EveningDetectiveServer.DownloadGameResultsPackage:input_type -> crabs.evening_detective_server.GameResultsPackageReq + 236, // 169: crabs.evening_detective_server.EveningDetectiveServer.ApplyGameResultsPackage:input_type -> crabs.evening_detective_server.ApplyGameResultsPackageReq 111, // 170: crabs.evening_detective_server.EveningDetectiveServer.StartGameExport:input_type -> crabs.evening_detective_server.StartGameExportReq - 112, // 171: crabs.evening_detective_server.EveningDetectiveServer.GetGameExport:input_type -> crabs.evening_detective_server.GetGameExportReq - 213, // 172: crabs.evening_detective_server.EveningDetectiveServer.IssueGameTickets:input_type -> crabs.evening_detective_server.IssueGameTicketsReq - 216, // 173: crabs.evening_detective_server.EveningDetectiveServer.GetTicket:input_type -> crabs.evening_detective_server.GetTicketReq - 218, // 174: crabs.evening_detective_server.EveningDetectiveServer.AcceptTicket:input_type -> crabs.evening_detective_server.AcceptTicketReq - 115, // 175: crabs.evening_detective_server.EveningDetectiveServer.CreateScreenSession:input_type -> crabs.evening_detective_server.CreateScreenSessionReq - 117, // 176: crabs.evening_detective_server.EveningDetectiveServer.GetScreenState:input_type -> crabs.evening_detective_server.GetScreenStateReq - 119, // 177: crabs.evening_detective_server.EveningDetectiveServer.GetGameScreens:input_type -> crabs.evening_detective_server.GetGameScreensReq - 122, // 178: crabs.evening_detective_server.EveningDetectiveServer.GetGameMusic:input_type -> crabs.evening_detective_server.GetGameMusicReq - 124, // 179: crabs.evening_detective_server.EveningDetectiveServer.SetGameMusic:input_type -> crabs.evening_detective_server.SetGameMusicReq - 126, // 180: crabs.evening_detective_server.EveningDetectiveServer.AdvanceScreenMusic:input_type -> crabs.evening_detective_server.AdvanceScreenMusicReq - 128, // 181: crabs.evening_detective_server.EveningDetectiveServer.BindScreen:input_type -> crabs.evening_detective_server.BindScreenReq - 130, // 182: crabs.evening_detective_server.EveningDetectiveServer.UnbindScreen:input_type -> crabs.evening_detective_server.UnbindScreenReq - 132, // 183: crabs.evening_detective_server.EveningDetectiveServer.SetScreenSound:input_type -> crabs.evening_detective_server.SetScreenSoundReq - 135, // 184: crabs.evening_detective_server.EveningDetectiveServer.GetGameMap:input_type -> crabs.evening_detective_server.GetGameMapReq - 137, // 185: crabs.evening_detective_server.EveningDetectiveServer.UpdateGameMapItem:input_type -> crabs.evening_detective_server.UpdateGameMapItemReq - 139, // 186: crabs.evening_detective_server.EveningDetectiveServer.SetScreenMode:input_type -> crabs.evening_detective_server.SetScreenModeReq - 141, // 187: crabs.evening_detective_server.EveningDetectiveServer.SetScreenTimer:input_type -> crabs.evening_detective_server.SetScreenTimerReq - 143, // 188: crabs.evening_detective_server.EveningDetectiveServer.SendScreenCommand:input_type -> crabs.evening_detective_server.SendScreenCommandReq - 147, // 189: crabs.evening_detective_server.EveningDetectiveServer.GetScreenPlan:input_type -> crabs.evening_detective_server.GetScreenPlanReq - 149, // 190: crabs.evening_detective_server.EveningDetectiveServer.SaveScreenPlan:input_type -> crabs.evening_detective_server.SaveScreenPlanReq - 151, // 191: crabs.evening_detective_server.EveningDetectiveServer.SetScreenPlanStep:input_type -> crabs.evening_detective_server.SetScreenPlanStepReq - 153, // 192: crabs.evening_detective_server.EveningDetectiveServer.GetScreenResults:input_type -> crabs.evening_detective_server.GetScreenResultsReq - 159, // 193: crabs.evening_detective_server.EveningDetectiveServer.DownloadGamePrintMaterials:input_type -> crabs.evening_detective_server.GetGameReq - 244, // 194: crabs.evening_detective_server.EveningDetectiveServer.PreviewTeamReceipt:input_type -> crabs.evening_detective_server.TeamReceiptReq - 244, // 195: crabs.evening_detective_server.EveningDetectiveServer.PrintTeamReceipt:input_type -> crabs.evening_detective_server.TeamReceiptReq - 159, // 196: crabs.evening_detective_server.EveningDetectiveServer.DownloadTeamQR:input_type -> crabs.evening_detective_server.GetGameReq - 161, // 197: crabs.evening_detective_server.EveningDetectiveServer.GetGameAnswers:input_type -> crabs.evening_detective_server.GetGameAnswersReq - 163, // 198: crabs.evening_detective_server.EveningDetectiveServer.GetGameResults:input_type -> crabs.evening_detective_server.GetGameResultsReq - 168, // 199: crabs.evening_detective_server.EveningDetectiveServer.CreateGameReview:input_type -> crabs.evening_detective_server.CreateGameReviewReq - 170, // 200: crabs.evening_detective_server.EveningDetectiveServer.GetGameReviews:input_type -> crabs.evening_detective_server.GetGameReviewsReq - 171, // 201: crabs.evening_detective_server.EveningDetectiveServer.GetScenarioReviews:input_type -> crabs.evening_detective_server.GetScenarioReviewsReq - 170, // 202: crabs.evening_detective_server.EveningDetectiveServer.GetGameReviewsForModeration:input_type -> crabs.evening_detective_server.GetGameReviewsReq - 172, // 203: crabs.evening_detective_server.EveningDetectiveServer.GetReviewsForModeration:input_type -> crabs.evening_detective_server.GetReviewsForModerationReq - 174, // 204: crabs.evening_detective_server.EveningDetectiveServer.ModerateGameReview:input_type -> crabs.evening_detective_server.ModerateGameReviewReq - 176, // 205: crabs.evening_detective_server.EveningDetectiveServer.UpdateGame:input_type -> crabs.evening_detective_server.UpdateGameReq - 178, // 206: crabs.evening_detective_server.EveningDetectiveServer.StartGame:input_type -> crabs.evening_detective_server.StartGameReq - 180, // 207: crabs.evening_detective_server.EveningDetectiveServer.PauseGame:input_type -> crabs.evening_detective_server.PauseGameReq - 182, // 208: crabs.evening_detective_server.EveningDetectiveServer.PlayGame:input_type -> crabs.evening_detective_server.PlayGameReq - 184, // 209: crabs.evening_detective_server.EveningDetectiveServer.FinishGame:input_type -> crabs.evening_detective_server.FinishGameReq - 186, // 210: crabs.evening_detective_server.EveningDetectiveServer.ResetGame:input_type -> crabs.evening_detective_server.ResetGameReq - 188, // 211: crabs.evening_detective_server.EveningDetectiveServer.DeleteGame:input_type -> crabs.evening_detective_server.DeleteGameReq - 190, // 212: crabs.evening_detective_server.EveningDetectiveServer.AddTeam:input_type -> crabs.evening_detective_server.AddTeamReq - 192, // 213: crabs.evening_detective_server.EveningDetectiveServer.UpdateTeam:input_type -> crabs.evening_detective_server.UpdateTeamReq - 194, // 214: crabs.evening_detective_server.EveningDetectiveServer.DeleteTeam:input_type -> crabs.evening_detective_server.DeleteTeamReq - 196, // 215: crabs.evening_detective_server.EveningDetectiveServer.GiveTeamApplications:input_type -> crabs.evening_detective_server.GiveTeamApplicationsReq - 198, // 216: crabs.evening_detective_server.EveningDetectiveServer.GetTeamStory:input_type -> crabs.evening_detective_server.GetTeamStoryReq - 201, // 217: crabs.evening_detective_server.EveningDetectiveServer.AddTeamAction:input_type -> crabs.evening_detective_server.AddTeamActionReq - 203, // 218: crabs.evening_detective_server.EveningDetectiveServer.DeleteLastTeamAction:input_type -> crabs.evening_detective_server.DeleteLastTeamActionReq - 205, // 219: crabs.evening_detective_server.EveningDetectiveServer.GetTeamAnswers:input_type -> crabs.evening_detective_server.GetTeamAnswersReq - 207, // 220: crabs.evening_detective_server.EveningDetectiveServer.SubmitTeamAnswers:input_type -> crabs.evening_detective_server.SubmitTeamAnswersReq - 209, // 221: crabs.evening_detective_server.EveningDetectiveServer.SetTeamAnswerScore:input_type -> crabs.evening_detective_server.SetTeamAnswerScoreReq - 237, // 222: crabs.evening_detective_server.EveningDetectiveServer.DeviceHeartbeat:output_type -> crabs.evening_detective_server.DeviceHeartbeatRsp - 239, // 223: crabs.evening_detective_server.EveningDetectiveServer.GetDevices:output_type -> crabs.evening_detective_server.GetDevicesRsp - 224, // 224: crabs.evening_detective_server.EveningDetectiveServer.GetTasks:output_type -> crabs.evening_detective_server.GetTasksRsp - 226, // 225: crabs.evening_detective_server.EveningDetectiveServer.GetTaskAssignees:output_type -> crabs.evening_detective_server.GetTaskAssigneesRsp - 231, // 226: crabs.evening_detective_server.EveningDetectiveServer.CreateTask:output_type -> crabs.evening_detective_server.TaskRsp - 231, // 227: crabs.evening_detective_server.EveningDetectiveServer.UpdateTask:output_type -> crabs.evening_detective_server.TaskRsp - 231, // 228: crabs.evening_detective_server.EveningDetectiveServer.SetTaskStatus:output_type -> crabs.evening_detective_server.TaskRsp - 232, // 229: crabs.evening_detective_server.EveningDetectiveServer.DeleteTask:output_type -> crabs.evening_detective_server.DeleteTaskRsp - 157, // 230: crabs.evening_detective_server.EveningDetectiveServer.GetParticipation:output_type -> crabs.evening_detective_server.ParticipationRsp - 157, // 231: crabs.evening_detective_server.EveningDetectiveServer.AnswerParticipation:output_type -> crabs.evening_detective_server.ParticipationRsp - 5, // 232: crabs.evening_detective_server.EveningDetectiveServer.Ping:output_type -> crabs.evening_detective_server.PingRsp - 7, // 233: crabs.evening_detective_server.EveningDetectiveServer.Echo:output_type -> crabs.evening_detective_server.EchoRsp - 9, // 234: crabs.evening_detective_server.EveningDetectiveServer.Signup:output_type -> crabs.evening_detective_server.SignupRsp - 11, // 235: crabs.evening_detective_server.EveningDetectiveServer.RefreshPassword:output_type -> crabs.evening_detective_server.RefreshPasswordRsp - 13, // 236: crabs.evening_detective_server.EveningDetectiveServer.Login:output_type -> crabs.evening_detective_server.LoginRsp - 15, // 237: crabs.evening_detective_server.EveningDetectiveServer.Refresh:output_type -> crabs.evening_detective_server.RefreshRsp - 17, // 238: crabs.evening_detective_server.EveningDetectiveServer.DeleteAccount:output_type -> crabs.evening_detective_server.DeleteAccountRsp - 19, // 239: crabs.evening_detective_server.EveningDetectiveServer.GetTerms:output_type -> crabs.evening_detective_server.GetTermsRsp - 21, // 240: crabs.evening_detective_server.EveningDetectiveServer.GetPrivacy:output_type -> crabs.evening_detective_server.GetPrivacyRsp - 23, // 241: crabs.evening_detective_server.EveningDetectiveServer.GetConsent:output_type -> crabs.evening_detective_server.GetConsentRsp - 25, // 242: crabs.evening_detective_server.EveningDetectiveServer.GetUsers:output_type -> crabs.evening_detective_server.GetUsersRsp - 28, // 243: crabs.evening_detective_server.EveningDetectiveServer.GetUserByID:output_type -> crabs.evening_detective_server.GetUserByIDRsp - 30, // 244: crabs.evening_detective_server.EveningDetectiveServer.GetMe:output_type -> crabs.evening_detective_server.GetMeRsp - 32, // 245: crabs.evening_detective_server.EveningDetectiveServer.ChangeUserPassword:output_type -> crabs.evening_detective_server.ChangeUserPasswordRsp - 34, // 246: crabs.evening_detective_server.EveningDetectiveServer.AddUserRole:output_type -> crabs.evening_detective_server.AddUserRoleRsp - 36, // 247: crabs.evening_detective_server.EveningDetectiveServer.DeleteUserRole:output_type -> crabs.evening_detective_server.DeleteUserRoleRsp - 38, // 248: crabs.evening_detective_server.EveningDetectiveServer.GetPermissions:output_type -> crabs.evening_detective_server.GetPermissionsRsp - 40, // 249: crabs.evening_detective_server.EveningDetectiveServer.UploadFile:output_type -> crabs.evening_detective_server.UploadFileRsp - 247, // 250: crabs.evening_detective_server.EveningDetectiveServer.DownloadFile:output_type -> google.api.HttpBody - 45, // 251: crabs.evening_detective_server.EveningDetectiveServer.GetPlaylists:output_type -> crabs.evening_detective_server.GetPlaylistsRsp - 47, // 252: crabs.evening_detective_server.EveningDetectiveServer.CreatePlaylist:output_type -> crabs.evening_detective_server.CreatePlaylistRsp - 49, // 253: crabs.evening_detective_server.EveningDetectiveServer.UpdatePlaylist:output_type -> crabs.evening_detective_server.UpdatePlaylistRsp - 51, // 254: crabs.evening_detective_server.EveningDetectiveServer.DeletePlaylist:output_type -> crabs.evening_detective_server.DeletePlaylistRsp - 53, // 255: crabs.evening_detective_server.EveningDetectiveServer.UploadPlaylistTrack:output_type -> crabs.evening_detective_server.UploadPlaylistTrackRsp - 55, // 256: crabs.evening_detective_server.EveningDetectiveServer.DeletePlaylistTrack:output_type -> crabs.evening_detective_server.DeletePlaylistTrackRsp - 57, // 257: crabs.evening_detective_server.EveningDetectiveServer.SetScenarioPlaylist:output_type -> crabs.evening_detective_server.SetScenarioPlaylistRsp - 59, // 258: crabs.evening_detective_server.EveningDetectiveServer.AddScenario:output_type -> crabs.evening_detective_server.AddScenarioRsp - 61, // 259: crabs.evening_detective_server.EveningDetectiveServer.GetMyScenarios:output_type -> crabs.evening_detective_server.GetMyScenariosRsp - 63, // 260: crabs.evening_detective_server.EveningDetectiveServer.GetScenariosCatalog:output_type -> crabs.evening_detective_server.GetScenariosCatalogRsp - 65, // 261: crabs.evening_detective_server.EveningDetectiveServer.GetFullScenario:output_type -> crabs.evening_detective_server.GetScenarioRsp - 65, // 262: crabs.evening_detective_server.EveningDetectiveServer.GetScenario:output_type -> crabs.evening_detective_server.GetScenarioRsp - 79, // 263: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenario:output_type -> crabs.evening_detective_server.UpdateScenarioRsp - 81, // 264: crabs.evening_detective_server.EveningDetectiveServer.PublicScenario:output_type -> crabs.evening_detective_server.PublicScenarioRsp - 83, // 265: crabs.evening_detective_server.EveningDetectiveServer.DraftScenario:output_type -> crabs.evening_detective_server.DraftScenarioRsp - 85, // 266: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenario:output_type -> crabs.evening_detective_server.DeleteScenarioRsp - 87, // 267: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioPlace:output_type -> crabs.evening_detective_server.AddScenarioPlaceRsp - 89, // 268: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioPlace:output_type -> crabs.evening_detective_server.UpdateScenarioPlaceRsp - 91, // 269: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioPlace:output_type -> crabs.evening_detective_server.DeleteScenarioPlaceRsp - 97, // 270: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioQuestion:output_type -> crabs.evening_detective_server.AddScenarioQuestionRsp - 99, // 271: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioQuestion:output_type -> crabs.evening_detective_server.UpdateScenarioQuestionRsp - 101, // 272: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioQuestion:output_type -> crabs.evening_detective_server.DeleteScenarioQuestionRsp - 212, // 273: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioBackground:output_type -> crabs.evening_detective_server.UpdateScenarioBackgroundRsp - 95, // 274: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioIntro:output_type -> crabs.evening_detective_server.UpdateScenarioIntroRsp - 93, // 275: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioConclusion:output_type -> crabs.evening_detective_server.UpdateScenarioConclusionRsp - 247, // 276: crabs.evening_detective_server.EveningDetectiveServer.DownloadScenarioArchive:output_type -> google.api.HttpBody - 103, // 277: crabs.evening_detective_server.EveningDetectiveServer.UploadScenarioArchive:output_type -> crabs.evening_detective_server.UploadScenarioArchiveRsp - 105, // 278: crabs.evening_detective_server.EveningDetectiveServer.AddGame:output_type -> crabs.evening_detective_server.AddGameRsp - 107, // 279: crabs.evening_detective_server.EveningDetectiveServer.GetGames:output_type -> crabs.evening_detective_server.GetGamesRsp - 160, // 280: crabs.evening_detective_server.EveningDetectiveServer.GetGame:output_type -> crabs.evening_detective_server.GetGameRsp - 110, // 281: crabs.evening_detective_server.EveningDetectiveServer.ImportGame:output_type -> crabs.evening_detective_server.GameImportRsp - 247, // 282: crabs.evening_detective_server.EveningDetectiveServer.DownloadGameResultsPackage:output_type -> google.api.HttpBody - 235, // 283: crabs.evening_detective_server.EveningDetectiveServer.ApplyGameResultsPackage:output_type -> crabs.evening_detective_server.GameResultsPackageRsp - 113, // 284: crabs.evening_detective_server.EveningDetectiveServer.StartGameExport:output_type -> crabs.evening_detective_server.GameExportRsp - 113, // 285: crabs.evening_detective_server.EveningDetectiveServer.GetGameExport:output_type -> crabs.evening_detective_server.GameExportRsp - 214, // 286: crabs.evening_detective_server.EveningDetectiveServer.IssueGameTickets:output_type -> crabs.evening_detective_server.IssueGameTicketsRsp - 217, // 287: crabs.evening_detective_server.EveningDetectiveServer.GetTicket:output_type -> crabs.evening_detective_server.GetTicketRsp - 219, // 288: crabs.evening_detective_server.EveningDetectiveServer.AcceptTicket:output_type -> crabs.evening_detective_server.AcceptTicketRsp - 116, // 289: crabs.evening_detective_server.EveningDetectiveServer.CreateScreenSession:output_type -> crabs.evening_detective_server.CreateScreenSessionRsp - 118, // 290: crabs.evening_detective_server.EveningDetectiveServer.GetScreenState:output_type -> crabs.evening_detective_server.GetScreenStateRsp - 120, // 291: crabs.evening_detective_server.EveningDetectiveServer.GetGameScreens:output_type -> crabs.evening_detective_server.GetGameScreensRsp - 123, // 292: crabs.evening_detective_server.EveningDetectiveServer.GetGameMusic:output_type -> crabs.evening_detective_server.GetGameMusicRsp - 125, // 293: crabs.evening_detective_server.EveningDetectiveServer.SetGameMusic:output_type -> crabs.evening_detective_server.SetGameMusicRsp - 127, // 294: crabs.evening_detective_server.EveningDetectiveServer.AdvanceScreenMusic:output_type -> crabs.evening_detective_server.AdvanceScreenMusicRsp - 129, // 295: crabs.evening_detective_server.EveningDetectiveServer.BindScreen:output_type -> crabs.evening_detective_server.BindScreenRsp - 131, // 296: crabs.evening_detective_server.EveningDetectiveServer.UnbindScreen:output_type -> crabs.evening_detective_server.UnbindScreenRsp - 133, // 297: crabs.evening_detective_server.EveningDetectiveServer.SetScreenSound:output_type -> crabs.evening_detective_server.SetScreenSoundRsp - 136, // 298: crabs.evening_detective_server.EveningDetectiveServer.GetGameMap:output_type -> crabs.evening_detective_server.GetGameMapRsp - 138, // 299: crabs.evening_detective_server.EveningDetectiveServer.UpdateGameMapItem:output_type -> crabs.evening_detective_server.UpdateGameMapItemRsp - 140, // 300: crabs.evening_detective_server.EveningDetectiveServer.SetScreenMode:output_type -> crabs.evening_detective_server.SetScreenModeRsp - 142, // 301: crabs.evening_detective_server.EveningDetectiveServer.SetScreenTimer:output_type -> crabs.evening_detective_server.SetScreenTimerRsp - 144, // 302: crabs.evening_detective_server.EveningDetectiveServer.SendScreenCommand:output_type -> crabs.evening_detective_server.SendScreenCommandRsp - 148, // 303: crabs.evening_detective_server.EveningDetectiveServer.GetScreenPlan:output_type -> crabs.evening_detective_server.GetScreenPlanRsp - 150, // 304: crabs.evening_detective_server.EveningDetectiveServer.SaveScreenPlan:output_type -> crabs.evening_detective_server.SaveScreenPlanRsp - 152, // 305: crabs.evening_detective_server.EveningDetectiveServer.SetScreenPlanStep:output_type -> crabs.evening_detective_server.SetScreenPlanStepRsp - 154, // 306: crabs.evening_detective_server.EveningDetectiveServer.GetScreenResults:output_type -> crabs.evening_detective_server.GetScreenResultsRsp - 247, // 307: crabs.evening_detective_server.EveningDetectiveServer.DownloadGamePrintMaterials:output_type -> google.api.HttpBody - 247, // 308: crabs.evening_detective_server.EveningDetectiveServer.PreviewTeamReceipt:output_type -> google.api.HttpBody - 245, // 309: crabs.evening_detective_server.EveningDetectiveServer.PrintTeamReceipt:output_type -> crabs.evening_detective_server.PrintTeamReceiptRsp - 247, // 310: crabs.evening_detective_server.EveningDetectiveServer.DownloadTeamQR:output_type -> google.api.HttpBody - 162, // 311: crabs.evening_detective_server.EveningDetectiveServer.GetGameAnswers:output_type -> crabs.evening_detective_server.GetGameAnswersRsp - 166, // 312: crabs.evening_detective_server.EveningDetectiveServer.GetGameResults:output_type -> crabs.evening_detective_server.GetGameResultsRsp - 169, // 313: crabs.evening_detective_server.EveningDetectiveServer.CreateGameReview:output_type -> crabs.evening_detective_server.CreateGameReviewRsp - 173, // 314: crabs.evening_detective_server.EveningDetectiveServer.GetGameReviews:output_type -> crabs.evening_detective_server.GetGameReviewsRsp - 173, // 315: crabs.evening_detective_server.EveningDetectiveServer.GetScenarioReviews:output_type -> crabs.evening_detective_server.GetGameReviewsRsp - 173, // 316: crabs.evening_detective_server.EveningDetectiveServer.GetGameReviewsForModeration:output_type -> crabs.evening_detective_server.GetGameReviewsRsp - 173, // 317: crabs.evening_detective_server.EveningDetectiveServer.GetReviewsForModeration:output_type -> crabs.evening_detective_server.GetGameReviewsRsp - 175, // 318: crabs.evening_detective_server.EveningDetectiveServer.ModerateGameReview:output_type -> crabs.evening_detective_server.ModerateGameReviewRsp - 177, // 319: crabs.evening_detective_server.EveningDetectiveServer.UpdateGame:output_type -> crabs.evening_detective_server.UpdateGameRsp - 179, // 320: crabs.evening_detective_server.EveningDetectiveServer.StartGame:output_type -> crabs.evening_detective_server.StartGameRsp - 181, // 321: crabs.evening_detective_server.EveningDetectiveServer.PauseGame:output_type -> crabs.evening_detective_server.PauseGameRsp - 183, // 322: crabs.evening_detective_server.EveningDetectiveServer.PlayGame:output_type -> crabs.evening_detective_server.PlayGameRsp - 185, // 323: crabs.evening_detective_server.EveningDetectiveServer.FinishGame:output_type -> crabs.evening_detective_server.FinishGameRsp - 187, // 324: crabs.evening_detective_server.EveningDetectiveServer.ResetGame:output_type -> crabs.evening_detective_server.ResetGameRsp - 189, // 325: crabs.evening_detective_server.EveningDetectiveServer.DeleteGame:output_type -> crabs.evening_detective_server.DeleteGameRsp - 191, // 326: crabs.evening_detective_server.EveningDetectiveServer.AddTeam:output_type -> crabs.evening_detective_server.AddTeamRsp - 193, // 327: crabs.evening_detective_server.EveningDetectiveServer.UpdateTeam:output_type -> crabs.evening_detective_server.UpdateTeamRsp - 195, // 328: crabs.evening_detective_server.EveningDetectiveServer.DeleteTeam:output_type -> crabs.evening_detective_server.DeleteTeamRsp - 197, // 329: crabs.evening_detective_server.EveningDetectiveServer.GiveTeamApplications:output_type -> crabs.evening_detective_server.GiveTeamApplicationsRsp - 199, // 330: crabs.evening_detective_server.EveningDetectiveServer.GetTeamStory:output_type -> crabs.evening_detective_server.GetTeamStoryRsp - 202, // 331: crabs.evening_detective_server.EveningDetectiveServer.AddTeamAction:output_type -> crabs.evening_detective_server.AddTeamActionRsp - 204, // 332: crabs.evening_detective_server.EveningDetectiveServer.DeleteLastTeamAction:output_type -> crabs.evening_detective_server.DeleteLastTeamActionRsp - 206, // 333: crabs.evening_detective_server.EveningDetectiveServer.GetTeamAnswers:output_type -> crabs.evening_detective_server.GetTeamAnswersRsp - 208, // 334: crabs.evening_detective_server.EveningDetectiveServer.SubmitTeamAnswers:output_type -> crabs.evening_detective_server.SubmitTeamAnswersRsp - 210, // 335: crabs.evening_detective_server.EveningDetectiveServer.SetTeamAnswerScore:output_type -> crabs.evening_detective_server.SetTeamAnswerScoreRsp - 222, // [222:336] is the sub-list for method output_type - 108, // [108:222] is the sub-list for method input_type + 113, // 171: crabs.evening_detective_server.EveningDetectiveServer.ResetGameLocalMode:input_type -> crabs.evening_detective_server.ResetGameLocalModeReq + 112, // 172: crabs.evening_detective_server.EveningDetectiveServer.GetGameExport:input_type -> crabs.evening_detective_server.GetGameExportReq + 215, // 173: crabs.evening_detective_server.EveningDetectiveServer.IssueGameTickets:input_type -> crabs.evening_detective_server.IssueGameTicketsReq + 218, // 174: crabs.evening_detective_server.EveningDetectiveServer.GetTicket:input_type -> crabs.evening_detective_server.GetTicketReq + 220, // 175: crabs.evening_detective_server.EveningDetectiveServer.AcceptTicket:input_type -> crabs.evening_detective_server.AcceptTicketReq + 117, // 176: crabs.evening_detective_server.EveningDetectiveServer.CreateScreenSession:input_type -> crabs.evening_detective_server.CreateScreenSessionReq + 119, // 177: crabs.evening_detective_server.EveningDetectiveServer.GetScreenState:input_type -> crabs.evening_detective_server.GetScreenStateReq + 121, // 178: crabs.evening_detective_server.EveningDetectiveServer.GetGameScreens:input_type -> crabs.evening_detective_server.GetGameScreensReq + 124, // 179: crabs.evening_detective_server.EveningDetectiveServer.GetGameMusic:input_type -> crabs.evening_detective_server.GetGameMusicReq + 126, // 180: crabs.evening_detective_server.EveningDetectiveServer.SetGameMusic:input_type -> crabs.evening_detective_server.SetGameMusicReq + 128, // 181: crabs.evening_detective_server.EveningDetectiveServer.AdvanceScreenMusic:input_type -> crabs.evening_detective_server.AdvanceScreenMusicReq + 130, // 182: crabs.evening_detective_server.EveningDetectiveServer.BindScreen:input_type -> crabs.evening_detective_server.BindScreenReq + 132, // 183: crabs.evening_detective_server.EveningDetectiveServer.UnbindScreen:input_type -> crabs.evening_detective_server.UnbindScreenReq + 134, // 184: crabs.evening_detective_server.EveningDetectiveServer.SetScreenSound:input_type -> crabs.evening_detective_server.SetScreenSoundReq + 137, // 185: crabs.evening_detective_server.EveningDetectiveServer.GetGameMap:input_type -> crabs.evening_detective_server.GetGameMapReq + 139, // 186: crabs.evening_detective_server.EveningDetectiveServer.UpdateGameMapItem:input_type -> crabs.evening_detective_server.UpdateGameMapItemReq + 141, // 187: crabs.evening_detective_server.EveningDetectiveServer.SetScreenMode:input_type -> crabs.evening_detective_server.SetScreenModeReq + 143, // 188: crabs.evening_detective_server.EveningDetectiveServer.SetScreenTimer:input_type -> crabs.evening_detective_server.SetScreenTimerReq + 145, // 189: crabs.evening_detective_server.EveningDetectiveServer.SendScreenCommand:input_type -> crabs.evening_detective_server.SendScreenCommandReq + 149, // 190: crabs.evening_detective_server.EveningDetectiveServer.GetScreenPlan:input_type -> crabs.evening_detective_server.GetScreenPlanReq + 151, // 191: crabs.evening_detective_server.EveningDetectiveServer.SaveScreenPlan:input_type -> crabs.evening_detective_server.SaveScreenPlanReq + 153, // 192: crabs.evening_detective_server.EveningDetectiveServer.SetScreenPlanStep:input_type -> crabs.evening_detective_server.SetScreenPlanStepReq + 155, // 193: crabs.evening_detective_server.EveningDetectiveServer.GetScreenResults:input_type -> crabs.evening_detective_server.GetScreenResultsReq + 161, // 194: crabs.evening_detective_server.EveningDetectiveServer.DownloadGamePrintMaterials:input_type -> crabs.evening_detective_server.GetGameReq + 246, // 195: crabs.evening_detective_server.EveningDetectiveServer.PreviewTeamReceipt:input_type -> crabs.evening_detective_server.TeamReceiptReq + 246, // 196: crabs.evening_detective_server.EveningDetectiveServer.PrintTeamReceipt:input_type -> crabs.evening_detective_server.TeamReceiptReq + 161, // 197: crabs.evening_detective_server.EveningDetectiveServer.DownloadTeamQR:input_type -> crabs.evening_detective_server.GetGameReq + 163, // 198: crabs.evening_detective_server.EveningDetectiveServer.GetGameAnswers:input_type -> crabs.evening_detective_server.GetGameAnswersReq + 165, // 199: crabs.evening_detective_server.EveningDetectiveServer.GetGameResults:input_type -> crabs.evening_detective_server.GetGameResultsReq + 170, // 200: crabs.evening_detective_server.EveningDetectiveServer.CreateGameReview:input_type -> crabs.evening_detective_server.CreateGameReviewReq + 172, // 201: crabs.evening_detective_server.EveningDetectiveServer.GetGameReviews:input_type -> crabs.evening_detective_server.GetGameReviewsReq + 173, // 202: crabs.evening_detective_server.EveningDetectiveServer.GetScenarioReviews:input_type -> crabs.evening_detective_server.GetScenarioReviewsReq + 172, // 203: crabs.evening_detective_server.EveningDetectiveServer.GetGameReviewsForModeration:input_type -> crabs.evening_detective_server.GetGameReviewsReq + 174, // 204: crabs.evening_detective_server.EveningDetectiveServer.GetReviewsForModeration:input_type -> crabs.evening_detective_server.GetReviewsForModerationReq + 176, // 205: crabs.evening_detective_server.EveningDetectiveServer.ModerateGameReview:input_type -> crabs.evening_detective_server.ModerateGameReviewReq + 178, // 206: crabs.evening_detective_server.EveningDetectiveServer.UpdateGame:input_type -> crabs.evening_detective_server.UpdateGameReq + 180, // 207: crabs.evening_detective_server.EveningDetectiveServer.StartGame:input_type -> crabs.evening_detective_server.StartGameReq + 182, // 208: crabs.evening_detective_server.EveningDetectiveServer.PauseGame:input_type -> crabs.evening_detective_server.PauseGameReq + 184, // 209: crabs.evening_detective_server.EveningDetectiveServer.PlayGame:input_type -> crabs.evening_detective_server.PlayGameReq + 186, // 210: crabs.evening_detective_server.EveningDetectiveServer.FinishGame:input_type -> crabs.evening_detective_server.FinishGameReq + 188, // 211: crabs.evening_detective_server.EveningDetectiveServer.ResetGame:input_type -> crabs.evening_detective_server.ResetGameReq + 190, // 212: crabs.evening_detective_server.EveningDetectiveServer.DeleteGame:input_type -> crabs.evening_detective_server.DeleteGameReq + 192, // 213: crabs.evening_detective_server.EveningDetectiveServer.AddTeam:input_type -> crabs.evening_detective_server.AddTeamReq + 194, // 214: crabs.evening_detective_server.EveningDetectiveServer.UpdateTeam:input_type -> crabs.evening_detective_server.UpdateTeamReq + 196, // 215: crabs.evening_detective_server.EveningDetectiveServer.DeleteTeam:input_type -> crabs.evening_detective_server.DeleteTeamReq + 198, // 216: crabs.evening_detective_server.EveningDetectiveServer.GiveTeamApplications:input_type -> crabs.evening_detective_server.GiveTeamApplicationsReq + 200, // 217: crabs.evening_detective_server.EveningDetectiveServer.GetTeamStory:input_type -> crabs.evening_detective_server.GetTeamStoryReq + 203, // 218: crabs.evening_detective_server.EveningDetectiveServer.AddTeamAction:input_type -> crabs.evening_detective_server.AddTeamActionReq + 205, // 219: crabs.evening_detective_server.EveningDetectiveServer.DeleteLastTeamAction:input_type -> crabs.evening_detective_server.DeleteLastTeamActionReq + 207, // 220: crabs.evening_detective_server.EveningDetectiveServer.GetTeamAnswers:input_type -> crabs.evening_detective_server.GetTeamAnswersReq + 209, // 221: crabs.evening_detective_server.EveningDetectiveServer.SubmitTeamAnswers:input_type -> crabs.evening_detective_server.SubmitTeamAnswersReq + 211, // 222: crabs.evening_detective_server.EveningDetectiveServer.SetTeamAnswerScore:input_type -> crabs.evening_detective_server.SetTeamAnswerScoreReq + 239, // 223: crabs.evening_detective_server.EveningDetectiveServer.DeviceHeartbeat:output_type -> crabs.evening_detective_server.DeviceHeartbeatRsp + 241, // 224: crabs.evening_detective_server.EveningDetectiveServer.GetDevices:output_type -> crabs.evening_detective_server.GetDevicesRsp + 226, // 225: crabs.evening_detective_server.EveningDetectiveServer.GetTasks:output_type -> crabs.evening_detective_server.GetTasksRsp + 228, // 226: crabs.evening_detective_server.EveningDetectiveServer.GetTaskAssignees:output_type -> crabs.evening_detective_server.GetTaskAssigneesRsp + 233, // 227: crabs.evening_detective_server.EveningDetectiveServer.CreateTask:output_type -> crabs.evening_detective_server.TaskRsp + 233, // 228: crabs.evening_detective_server.EveningDetectiveServer.UpdateTask:output_type -> crabs.evening_detective_server.TaskRsp + 233, // 229: crabs.evening_detective_server.EveningDetectiveServer.SetTaskStatus:output_type -> crabs.evening_detective_server.TaskRsp + 234, // 230: crabs.evening_detective_server.EveningDetectiveServer.DeleteTask:output_type -> crabs.evening_detective_server.DeleteTaskRsp + 159, // 231: crabs.evening_detective_server.EveningDetectiveServer.GetParticipation:output_type -> crabs.evening_detective_server.ParticipationRsp + 159, // 232: crabs.evening_detective_server.EveningDetectiveServer.AnswerParticipation:output_type -> crabs.evening_detective_server.ParticipationRsp + 5, // 233: crabs.evening_detective_server.EveningDetectiveServer.Ping:output_type -> crabs.evening_detective_server.PingRsp + 7, // 234: crabs.evening_detective_server.EveningDetectiveServer.Echo:output_type -> crabs.evening_detective_server.EchoRsp + 9, // 235: crabs.evening_detective_server.EveningDetectiveServer.Signup:output_type -> crabs.evening_detective_server.SignupRsp + 11, // 236: crabs.evening_detective_server.EveningDetectiveServer.RefreshPassword:output_type -> crabs.evening_detective_server.RefreshPasswordRsp + 13, // 237: crabs.evening_detective_server.EveningDetectiveServer.Login:output_type -> crabs.evening_detective_server.LoginRsp + 15, // 238: crabs.evening_detective_server.EveningDetectiveServer.Refresh:output_type -> crabs.evening_detective_server.RefreshRsp + 17, // 239: crabs.evening_detective_server.EveningDetectiveServer.DeleteAccount:output_type -> crabs.evening_detective_server.DeleteAccountRsp + 19, // 240: crabs.evening_detective_server.EveningDetectiveServer.GetTerms:output_type -> crabs.evening_detective_server.GetTermsRsp + 21, // 241: crabs.evening_detective_server.EveningDetectiveServer.GetPrivacy:output_type -> crabs.evening_detective_server.GetPrivacyRsp + 23, // 242: crabs.evening_detective_server.EveningDetectiveServer.GetConsent:output_type -> crabs.evening_detective_server.GetConsentRsp + 25, // 243: crabs.evening_detective_server.EveningDetectiveServer.GetUsers:output_type -> crabs.evening_detective_server.GetUsersRsp + 28, // 244: crabs.evening_detective_server.EveningDetectiveServer.GetUserByID:output_type -> crabs.evening_detective_server.GetUserByIDRsp + 30, // 245: crabs.evening_detective_server.EveningDetectiveServer.GetMe:output_type -> crabs.evening_detective_server.GetMeRsp + 32, // 246: crabs.evening_detective_server.EveningDetectiveServer.ChangeUserPassword:output_type -> crabs.evening_detective_server.ChangeUserPasswordRsp + 34, // 247: crabs.evening_detective_server.EveningDetectiveServer.AddUserRole:output_type -> crabs.evening_detective_server.AddUserRoleRsp + 36, // 248: crabs.evening_detective_server.EveningDetectiveServer.DeleteUserRole:output_type -> crabs.evening_detective_server.DeleteUserRoleRsp + 38, // 249: crabs.evening_detective_server.EveningDetectiveServer.GetPermissions:output_type -> crabs.evening_detective_server.GetPermissionsRsp + 40, // 250: crabs.evening_detective_server.EveningDetectiveServer.UploadFile:output_type -> crabs.evening_detective_server.UploadFileRsp + 249, // 251: crabs.evening_detective_server.EveningDetectiveServer.DownloadFile:output_type -> google.api.HttpBody + 45, // 252: crabs.evening_detective_server.EveningDetectiveServer.GetPlaylists:output_type -> crabs.evening_detective_server.GetPlaylistsRsp + 47, // 253: crabs.evening_detective_server.EveningDetectiveServer.CreatePlaylist:output_type -> crabs.evening_detective_server.CreatePlaylistRsp + 49, // 254: crabs.evening_detective_server.EveningDetectiveServer.UpdatePlaylist:output_type -> crabs.evening_detective_server.UpdatePlaylistRsp + 51, // 255: crabs.evening_detective_server.EveningDetectiveServer.DeletePlaylist:output_type -> crabs.evening_detective_server.DeletePlaylistRsp + 53, // 256: crabs.evening_detective_server.EveningDetectiveServer.UploadPlaylistTrack:output_type -> crabs.evening_detective_server.UploadPlaylistTrackRsp + 55, // 257: crabs.evening_detective_server.EveningDetectiveServer.DeletePlaylistTrack:output_type -> crabs.evening_detective_server.DeletePlaylistTrackRsp + 57, // 258: crabs.evening_detective_server.EveningDetectiveServer.SetScenarioPlaylist:output_type -> crabs.evening_detective_server.SetScenarioPlaylistRsp + 59, // 259: crabs.evening_detective_server.EveningDetectiveServer.AddScenario:output_type -> crabs.evening_detective_server.AddScenarioRsp + 61, // 260: crabs.evening_detective_server.EveningDetectiveServer.GetMyScenarios:output_type -> crabs.evening_detective_server.GetMyScenariosRsp + 63, // 261: crabs.evening_detective_server.EveningDetectiveServer.GetScenariosCatalog:output_type -> crabs.evening_detective_server.GetScenariosCatalogRsp + 65, // 262: crabs.evening_detective_server.EveningDetectiveServer.GetFullScenario:output_type -> crabs.evening_detective_server.GetScenarioRsp + 65, // 263: crabs.evening_detective_server.EveningDetectiveServer.GetScenario:output_type -> crabs.evening_detective_server.GetScenarioRsp + 79, // 264: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenario:output_type -> crabs.evening_detective_server.UpdateScenarioRsp + 81, // 265: crabs.evening_detective_server.EveningDetectiveServer.PublicScenario:output_type -> crabs.evening_detective_server.PublicScenarioRsp + 83, // 266: crabs.evening_detective_server.EveningDetectiveServer.DraftScenario:output_type -> crabs.evening_detective_server.DraftScenarioRsp + 85, // 267: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenario:output_type -> crabs.evening_detective_server.DeleteScenarioRsp + 87, // 268: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioPlace:output_type -> crabs.evening_detective_server.AddScenarioPlaceRsp + 89, // 269: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioPlace:output_type -> crabs.evening_detective_server.UpdateScenarioPlaceRsp + 91, // 270: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioPlace:output_type -> crabs.evening_detective_server.DeleteScenarioPlaceRsp + 97, // 271: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioQuestion:output_type -> crabs.evening_detective_server.AddScenarioQuestionRsp + 99, // 272: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioQuestion:output_type -> crabs.evening_detective_server.UpdateScenarioQuestionRsp + 101, // 273: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioQuestion:output_type -> crabs.evening_detective_server.DeleteScenarioQuestionRsp + 214, // 274: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioBackground:output_type -> crabs.evening_detective_server.UpdateScenarioBackgroundRsp + 95, // 275: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioIntro:output_type -> crabs.evening_detective_server.UpdateScenarioIntroRsp + 93, // 276: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioConclusion:output_type -> crabs.evening_detective_server.UpdateScenarioConclusionRsp + 249, // 277: crabs.evening_detective_server.EveningDetectiveServer.DownloadScenarioArchive:output_type -> google.api.HttpBody + 103, // 278: crabs.evening_detective_server.EveningDetectiveServer.UploadScenarioArchive:output_type -> crabs.evening_detective_server.UploadScenarioArchiveRsp + 105, // 279: crabs.evening_detective_server.EveningDetectiveServer.AddGame:output_type -> crabs.evening_detective_server.AddGameRsp + 107, // 280: crabs.evening_detective_server.EveningDetectiveServer.GetGames:output_type -> crabs.evening_detective_server.GetGamesRsp + 162, // 281: crabs.evening_detective_server.EveningDetectiveServer.GetGame:output_type -> crabs.evening_detective_server.GetGameRsp + 110, // 282: crabs.evening_detective_server.EveningDetectiveServer.ImportGame:output_type -> crabs.evening_detective_server.GameImportRsp + 249, // 283: crabs.evening_detective_server.EveningDetectiveServer.DownloadGameResultsPackage:output_type -> google.api.HttpBody + 237, // 284: crabs.evening_detective_server.EveningDetectiveServer.ApplyGameResultsPackage:output_type -> crabs.evening_detective_server.GameResultsPackageRsp + 115, // 285: crabs.evening_detective_server.EveningDetectiveServer.StartGameExport:output_type -> crabs.evening_detective_server.GameExportRsp + 114, // 286: crabs.evening_detective_server.EveningDetectiveServer.ResetGameLocalMode:output_type -> crabs.evening_detective_server.ResetGameLocalModeRsp + 115, // 287: crabs.evening_detective_server.EveningDetectiveServer.GetGameExport:output_type -> crabs.evening_detective_server.GameExportRsp + 216, // 288: crabs.evening_detective_server.EveningDetectiveServer.IssueGameTickets:output_type -> crabs.evening_detective_server.IssueGameTicketsRsp + 219, // 289: crabs.evening_detective_server.EveningDetectiveServer.GetTicket:output_type -> crabs.evening_detective_server.GetTicketRsp + 221, // 290: crabs.evening_detective_server.EveningDetectiveServer.AcceptTicket:output_type -> crabs.evening_detective_server.AcceptTicketRsp + 118, // 291: crabs.evening_detective_server.EveningDetectiveServer.CreateScreenSession:output_type -> crabs.evening_detective_server.CreateScreenSessionRsp + 120, // 292: crabs.evening_detective_server.EveningDetectiveServer.GetScreenState:output_type -> crabs.evening_detective_server.GetScreenStateRsp + 122, // 293: crabs.evening_detective_server.EveningDetectiveServer.GetGameScreens:output_type -> crabs.evening_detective_server.GetGameScreensRsp + 125, // 294: crabs.evening_detective_server.EveningDetectiveServer.GetGameMusic:output_type -> crabs.evening_detective_server.GetGameMusicRsp + 127, // 295: crabs.evening_detective_server.EveningDetectiveServer.SetGameMusic:output_type -> crabs.evening_detective_server.SetGameMusicRsp + 129, // 296: crabs.evening_detective_server.EveningDetectiveServer.AdvanceScreenMusic:output_type -> crabs.evening_detective_server.AdvanceScreenMusicRsp + 131, // 297: crabs.evening_detective_server.EveningDetectiveServer.BindScreen:output_type -> crabs.evening_detective_server.BindScreenRsp + 133, // 298: crabs.evening_detective_server.EveningDetectiveServer.UnbindScreen:output_type -> crabs.evening_detective_server.UnbindScreenRsp + 135, // 299: crabs.evening_detective_server.EveningDetectiveServer.SetScreenSound:output_type -> crabs.evening_detective_server.SetScreenSoundRsp + 138, // 300: crabs.evening_detective_server.EveningDetectiveServer.GetGameMap:output_type -> crabs.evening_detective_server.GetGameMapRsp + 140, // 301: crabs.evening_detective_server.EveningDetectiveServer.UpdateGameMapItem:output_type -> crabs.evening_detective_server.UpdateGameMapItemRsp + 142, // 302: crabs.evening_detective_server.EveningDetectiveServer.SetScreenMode:output_type -> crabs.evening_detective_server.SetScreenModeRsp + 144, // 303: crabs.evening_detective_server.EveningDetectiveServer.SetScreenTimer:output_type -> crabs.evening_detective_server.SetScreenTimerRsp + 146, // 304: crabs.evening_detective_server.EveningDetectiveServer.SendScreenCommand:output_type -> crabs.evening_detective_server.SendScreenCommandRsp + 150, // 305: crabs.evening_detective_server.EveningDetectiveServer.GetScreenPlan:output_type -> crabs.evening_detective_server.GetScreenPlanRsp + 152, // 306: crabs.evening_detective_server.EveningDetectiveServer.SaveScreenPlan:output_type -> crabs.evening_detective_server.SaveScreenPlanRsp + 154, // 307: crabs.evening_detective_server.EveningDetectiveServer.SetScreenPlanStep:output_type -> crabs.evening_detective_server.SetScreenPlanStepRsp + 156, // 308: crabs.evening_detective_server.EveningDetectiveServer.GetScreenResults:output_type -> crabs.evening_detective_server.GetScreenResultsRsp + 249, // 309: crabs.evening_detective_server.EveningDetectiveServer.DownloadGamePrintMaterials:output_type -> google.api.HttpBody + 249, // 310: crabs.evening_detective_server.EveningDetectiveServer.PreviewTeamReceipt:output_type -> google.api.HttpBody + 247, // 311: crabs.evening_detective_server.EveningDetectiveServer.PrintTeamReceipt:output_type -> crabs.evening_detective_server.PrintTeamReceiptRsp + 249, // 312: crabs.evening_detective_server.EveningDetectiveServer.DownloadTeamQR:output_type -> google.api.HttpBody + 164, // 313: crabs.evening_detective_server.EveningDetectiveServer.GetGameAnswers:output_type -> crabs.evening_detective_server.GetGameAnswersRsp + 168, // 314: crabs.evening_detective_server.EveningDetectiveServer.GetGameResults:output_type -> crabs.evening_detective_server.GetGameResultsRsp + 171, // 315: crabs.evening_detective_server.EveningDetectiveServer.CreateGameReview:output_type -> crabs.evening_detective_server.CreateGameReviewRsp + 175, // 316: crabs.evening_detective_server.EveningDetectiveServer.GetGameReviews:output_type -> crabs.evening_detective_server.GetGameReviewsRsp + 175, // 317: crabs.evening_detective_server.EveningDetectiveServer.GetScenarioReviews:output_type -> crabs.evening_detective_server.GetGameReviewsRsp + 175, // 318: crabs.evening_detective_server.EveningDetectiveServer.GetGameReviewsForModeration:output_type -> crabs.evening_detective_server.GetGameReviewsRsp + 175, // 319: crabs.evening_detective_server.EveningDetectiveServer.GetReviewsForModeration:output_type -> crabs.evening_detective_server.GetGameReviewsRsp + 177, // 320: crabs.evening_detective_server.EveningDetectiveServer.ModerateGameReview:output_type -> crabs.evening_detective_server.ModerateGameReviewRsp + 179, // 321: crabs.evening_detective_server.EveningDetectiveServer.UpdateGame:output_type -> crabs.evening_detective_server.UpdateGameRsp + 181, // 322: crabs.evening_detective_server.EveningDetectiveServer.StartGame:output_type -> crabs.evening_detective_server.StartGameRsp + 183, // 323: crabs.evening_detective_server.EveningDetectiveServer.PauseGame:output_type -> crabs.evening_detective_server.PauseGameRsp + 185, // 324: crabs.evening_detective_server.EveningDetectiveServer.PlayGame:output_type -> crabs.evening_detective_server.PlayGameRsp + 187, // 325: crabs.evening_detective_server.EveningDetectiveServer.FinishGame:output_type -> crabs.evening_detective_server.FinishGameRsp + 189, // 326: crabs.evening_detective_server.EveningDetectiveServer.ResetGame:output_type -> crabs.evening_detective_server.ResetGameRsp + 191, // 327: crabs.evening_detective_server.EveningDetectiveServer.DeleteGame:output_type -> crabs.evening_detective_server.DeleteGameRsp + 193, // 328: crabs.evening_detective_server.EveningDetectiveServer.AddTeam:output_type -> crabs.evening_detective_server.AddTeamRsp + 195, // 329: crabs.evening_detective_server.EveningDetectiveServer.UpdateTeam:output_type -> crabs.evening_detective_server.UpdateTeamRsp + 197, // 330: crabs.evening_detective_server.EveningDetectiveServer.DeleteTeam:output_type -> crabs.evening_detective_server.DeleteTeamRsp + 199, // 331: crabs.evening_detective_server.EveningDetectiveServer.GiveTeamApplications:output_type -> crabs.evening_detective_server.GiveTeamApplicationsRsp + 201, // 332: crabs.evening_detective_server.EveningDetectiveServer.GetTeamStory:output_type -> crabs.evening_detective_server.GetTeamStoryRsp + 204, // 333: crabs.evening_detective_server.EveningDetectiveServer.AddTeamAction:output_type -> crabs.evening_detective_server.AddTeamActionRsp + 206, // 334: crabs.evening_detective_server.EveningDetectiveServer.DeleteLastTeamAction:output_type -> crabs.evening_detective_server.DeleteLastTeamActionRsp + 208, // 335: crabs.evening_detective_server.EveningDetectiveServer.GetTeamAnswers:output_type -> crabs.evening_detective_server.GetTeamAnswersRsp + 210, // 336: crabs.evening_detective_server.EveningDetectiveServer.SubmitTeamAnswers:output_type -> crabs.evening_detective_server.SubmitTeamAnswersRsp + 212, // 337: crabs.evening_detective_server.EveningDetectiveServer.SetTeamAnswerScore:output_type -> crabs.evening_detective_server.SetTeamAnswerScoreRsp + 223, // [223:338] is the sub-list for method output_type + 108, // [108:223] is the sub-list for method input_type 108, // [108:108] is the sub-list for extension type_name 108, // [108:108] is the sub-list for extension extendee 0, // [0:108] is the sub-list for field type_name @@ -14666,24 +14763,24 @@ func file_main_proto_init() { 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[110].OneofWrappers = []any{} - file_main_proto_msgTypes[205].OneofWrappers = []any{} - file_main_proto_msgTypes[216].OneofWrappers = []any{} - file_main_proto_msgTypes[217].OneofWrappers = []any{} - file_main_proto_msgTypes[223].OneofWrappers = []any{} - file_main_proto_msgTypes[224].OneofWrappers = []any{} - file_main_proto_msgTypes[232].OneofWrappers = []any{} - file_main_proto_msgTypes[233].OneofWrappers = []any{} + file_main_proto_msgTypes[112].OneofWrappers = []any{} + file_main_proto_msgTypes[207].OneofWrappers = []any{} + file_main_proto_msgTypes[218].OneofWrappers = []any{} + file_main_proto_msgTypes[219].OneofWrappers = []any{} + file_main_proto_msgTypes[225].OneofWrappers = []any{} + file_main_proto_msgTypes[226].OneofWrappers = []any{} file_main_proto_msgTypes[234].OneofWrappers = []any{} - file_main_proto_msgTypes[237].OneofWrappers = []any{} + file_main_proto_msgTypes[235].OneofWrappers = []any{} + file_main_proto_msgTypes[236].OneofWrappers = []any{} file_main_proto_msgTypes[239].OneofWrappers = []any{} + file_main_proto_msgTypes[241].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: 4, - NumMessages: 242, + NumMessages: 244, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/main.pb.gw.go b/proto/main.pb.gw.go index f81cf5a..31bba58 100644 --- a/proto/main.pb.gw.go +++ b/proto/main.pb.gw.go @@ -2271,6 +2271,51 @@ func local_request_EveningDetectiveServer_StartGameExport_0(ctx context.Context, return msg, metadata, err } +func request_EveningDetectiveServer_ResetGameLocalMode_0(ctx context.Context, marshaler runtime.Marshaler, client EveningDetectiveServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq ResetGameLocalModeReq + 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.ResetGameLocalMode(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_EveningDetectiveServer_ResetGameLocalMode_0(ctx context.Context, marshaler runtime.Marshaler, server EveningDetectiveServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq ResetGameLocalModeReq + 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.ResetGameLocalMode(ctx, &protoReq) + return msg, metadata, err +} + func request_EveningDetectiveServer_GetGameExport_0(ctx context.Context, marshaler runtime.Marshaler, client EveningDetectiveServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var ( protoReq GetGameExportReq @@ -5712,6 +5757,26 @@ func RegisterEveningDetectiveServerHandlerServer(ctx context.Context, mux *runti } forward_EveningDetectiveServer_StartGameExport_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) + mux.Handle(http.MethodPost, pattern_EveningDetectiveServer_ResetGameLocalMode_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/ResetGameLocalMode", runtime.WithHTTPPathPattern("/api/games/{ID}/local-mode/reset")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EveningDetectiveServer_ResetGameLocalMode_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_ResetGameLocalMode_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) mux.Handle(http.MethodGet, pattern_EveningDetectiveServer_GetGameExport_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -7843,6 +7908,23 @@ func RegisterEveningDetectiveServerHandlerClient(ctx context.Context, mux *runti } forward_EveningDetectiveServer_StartGameExport_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) + mux.Handle(http.MethodPost, pattern_EveningDetectiveServer_ResetGameLocalMode_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/ResetGameLocalMode", runtime.WithHTTPPathPattern("/api/games/{ID}/local-mode/reset")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EveningDetectiveServer_ResetGameLocalMode_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_ResetGameLocalMode_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) mux.Handle(http.MethodGet, pattern_EveningDetectiveServer_GetGameExport_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -8777,6 +8859,7 @@ var ( pattern_EveningDetectiveServer_DownloadGameResultsPackage_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"api", "games", "ID", "results-package", "download"}, "")) pattern_EveningDetectiveServer_ApplyGameResultsPackage_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"api", "games", "ID", "results-package", "apply"}, "")) pattern_EveningDetectiveServer_StartGameExport_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "ID", "export"}, "")) + pattern_EveningDetectiveServer_ResetGameLocalMode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"api", "games", "ID", "local-mode", "reset"}, "")) pattern_EveningDetectiveServer_GetGameExport_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "ID", "export"}, "")) pattern_EveningDetectiveServer_IssueGameTickets_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "games", "gameID", "tickets"}, "")) pattern_EveningDetectiveServer_GetTicket_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"api", "tickets", "token"}, "")) @@ -8894,6 +8977,7 @@ var ( forward_EveningDetectiveServer_DownloadGameResultsPackage_0 = runtime.ForwardResponseMessage forward_EveningDetectiveServer_ApplyGameResultsPackage_0 = runtime.ForwardResponseMessage forward_EveningDetectiveServer_StartGameExport_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_ResetGameLocalMode_0 = runtime.ForwardResponseMessage forward_EveningDetectiveServer_GetGameExport_0 = runtime.ForwardResponseMessage forward_EveningDetectiveServer_IssueGameTickets_0 = runtime.ForwardResponseMessage forward_EveningDetectiveServer_GetTicket_0 = runtime.ForwardResponseMessage diff --git a/proto/main_grpc.pb.go b/proto/main_grpc.pb.go index de1e1af..3d9ad93 100644 --- a/proto/main_grpc.pb.go +++ b/proto/main_grpc.pb.go @@ -89,6 +89,7 @@ const ( EveningDetectiveServer_DownloadGameResultsPackage_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DownloadGameResultsPackage" EveningDetectiveServer_ApplyGameResultsPackage_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/ApplyGameResultsPackage" EveningDetectiveServer_StartGameExport_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/StartGameExport" + EveningDetectiveServer_ResetGameLocalMode_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/ResetGameLocalMode" EveningDetectiveServer_GetGameExport_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetGameExport" EveningDetectiveServer_IssueGameTickets_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/IssueGameTickets" EveningDetectiveServer_GetTicket_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/GetTicket" @@ -214,7 +215,10 @@ type EveningDetectiveServerClient interface { // Dedicated HTTP handlers stream ZIPs; gRPC retains its message size limit. DownloadGameResultsPackage(ctx context.Context, in *GameResultsPackageReq, opts ...grpc.CallOption) (*httpbody.HttpBody, error) ApplyGameResultsPackage(ctx context.Context, in *ApplyGameResultsPackageReq, opts ...grpc.CallOption) (*GameResultsPackageRsp, error) + // Each request creates a fresh setup package, replacing any unfinished preparation. StartGameExport(ctx context.Context, in *StartGameExportReq, opts ...grpc.CallOption) (*GameExportRsp, error) + // Release the transfer without discarding ready packages or their future results. + ResetGameLocalMode(ctx context.Context, in *ResetGameLocalModeReq, opts ...grpc.CallOption) (*ResetGameLocalModeRsp, error) GetGameExport(ctx context.Context, in *GetGameExportReq, opts ...grpc.CallOption) (*GameExportRsp, error) IssueGameTickets(ctx context.Context, in *IssueGameTicketsReq, opts ...grpc.CallOption) (*IssueGameTicketsRsp, error) GetTicket(ctx context.Context, in *GetTicketReq, opts ...grpc.CallOption) (*GetTicketRsp, error) @@ -912,6 +916,16 @@ func (c *eveningDetectiveServerClient) StartGameExport(ctx context.Context, in * return out, nil } +func (c *eveningDetectiveServerClient) ResetGameLocalMode(ctx context.Context, in *ResetGameLocalModeReq, opts ...grpc.CallOption) (*ResetGameLocalModeRsp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ResetGameLocalModeRsp) + err := c.cc.Invoke(ctx, EveningDetectiveServer_ResetGameLocalMode_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *eveningDetectiveServerClient) GetGameExport(ctx context.Context, in *GetGameExportReq, opts ...grpc.CallOption) (*GameExportRsp, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GameExportRsp) @@ -1494,7 +1508,10 @@ type EveningDetectiveServerServer interface { // Dedicated HTTP handlers stream ZIPs; gRPC retains its message size limit. DownloadGameResultsPackage(context.Context, *GameResultsPackageReq) (*httpbody.HttpBody, error) ApplyGameResultsPackage(context.Context, *ApplyGameResultsPackageReq) (*GameResultsPackageRsp, error) + // Each request creates a fresh setup package, replacing any unfinished preparation. StartGameExport(context.Context, *StartGameExportReq) (*GameExportRsp, error) + // Release the transfer without discarding ready packages or their future results. + ResetGameLocalMode(context.Context, *ResetGameLocalModeReq) (*ResetGameLocalModeRsp, error) GetGameExport(context.Context, *GetGameExportReq) (*GameExportRsp, error) IssueGameTickets(context.Context, *IssueGameTicketsReq) (*IssueGameTicketsRsp, error) GetTicket(context.Context, *GetTicketReq) (*GetTicketRsp, error) @@ -1751,6 +1768,9 @@ func (UnimplementedEveningDetectiveServerServer) ApplyGameResultsPackage(context func (UnimplementedEveningDetectiveServerServer) StartGameExport(context.Context, *StartGameExportReq) (*GameExportRsp, error) { return nil, status.Error(codes.Unimplemented, "method StartGameExport not implemented") } +func (UnimplementedEveningDetectiveServerServer) ResetGameLocalMode(context.Context, *ResetGameLocalModeReq) (*ResetGameLocalModeRsp, error) { + return nil, status.Error(codes.Unimplemented, "method ResetGameLocalMode not implemented") +} func (UnimplementedEveningDetectiveServerServer) GetGameExport(context.Context, *GetGameExportReq) (*GameExportRsp, error) { return nil, status.Error(codes.Unimplemented, "method GetGameExport not implemented") } @@ -3060,6 +3080,24 @@ func _EveningDetectiveServer_StartGameExport_Handler(srv interface{}, ctx contex return interceptor(ctx, in, info, handler) } +func _EveningDetectiveServer_ResetGameLocalMode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ResetGameLocalModeReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EveningDetectiveServerServer).ResetGameLocalMode(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: EveningDetectiveServer_ResetGameLocalMode_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EveningDetectiveServerServer).ResetGameLocalMode(ctx, req.(*ResetGameLocalModeReq)) + } + return interceptor(ctx, in, info, handler) +} + func _EveningDetectiveServer_GetGameExport_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetGameExportReq) if err := dec(in); err != nil { @@ -4237,6 +4275,10 @@ var EveningDetectiveServer_ServiceDesc = grpc.ServiceDesc{ MethodName: "StartGameExport", Handler: _EveningDetectiveServer_StartGameExport_Handler, }, + { + MethodName: "ResetGameLocalMode", + Handler: _EveningDetectiveServer_ResetGameLocalMode_Handler, + }, { MethodName: "GetGameExport", Handler: _EveningDetectiveServer_GetGameExport_Handler,