diff --git a/api/main.proto b/api/main.proto index 10f37e7..944aa3c 100644 --- a/api/main.proto +++ b/api/main.proto @@ -365,6 +365,17 @@ service EveningDetectiveServer { }; } + rpc UpdateScenarioIntro(UpdateScenarioIntroReq) returns (UpdateScenarioIntroRsp) { + option (google.api.http) = { + put : "/api/scenarios/{id}/introduction" + body: "*" + }; + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { + tags : "Сценарии"; + summary: "Обновить введение сценария"; + }; + } + rpc DownloadScenarioArchive(DownloadScenarioArchiveReq) returns (google.api.HttpBody) { option (google.api.http) = { get: "/api/scenarios/{id}/archive" @@ -776,7 +787,13 @@ message Scenario { } message Story { - repeated Place places = 1; + Introduction introduction = 2; + repeated Place places = 1; +} + +message Introduction { + string text = 1; + string audio = 2; } message Place { @@ -868,6 +885,15 @@ message DeleteScenarioPlaceRsp { string error = 1; } +message UpdateScenarioIntroReq { + int32 id = 1; + Introduction introduction = 2; +} + +message UpdateScenarioIntroRsp { + string error = 1; +} + message DownloadScenarioArchiveReq { int32 id = 1; } diff --git a/cmd/evening_detective_server/main.swagger.json b/cmd/evening_detective_server/main.swagger.json index ce61ad3..5b86754 100644 --- a/cmd/evening_detective_server/main.swagger.json +++ b/cmd/evening_detective_server/main.swagger.json @@ -973,6 +973,46 @@ ] } }, + "/api/scenarios/{id}/introduction": { + "put": { + "summary": "Обновить введение сценария", + "operationId": "EveningDetectiveServer_UpdateScenarioIntro", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/evening_detective_serverUpdateScenarioIntroRsp" + } + }, + "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/EveningDetectiveServerUpdateScenarioIntroBody" + } + } + ], + "tags": [ + "Сценарии" + ] + } + }, "/api/scenarios/{id}/places": { "post": { "summary": "Создать точку сценария", @@ -1765,6 +1805,14 @@ } } }, + "EveningDetectiveServerUpdateScenarioIntroBody": { + "type": "object", + "properties": { + "introduction": { + "$ref": "#/definitions/evening_detective_serverIntroduction" + } + } + }, "EveningDetectiveServerUpdateScenarioPlaceBody": { "type": "object", "properties": { @@ -2228,6 +2276,17 @@ } } }, + "evening_detective_serverIntroduction": { + "type": "object", + "properties": { + "text": { + "type": "string" + }, + "audio": { + "type": "string" + } + } + }, "evening_detective_serverKey": { "type": "object", "properties": { @@ -2450,6 +2509,9 @@ "evening_detective_serverStory": { "type": "object", "properties": { + "introduction": { + "$ref": "#/definitions/evening_detective_serverIntroduction" + }, "places": { "type": "array", "items": { @@ -2496,6 +2558,14 @@ } } }, + "evening_detective_serverUpdateScenarioIntroRsp": { + "type": "object", + "properties": { + "error": { + "type": "string" + } + } + }, "evening_detective_serverUpdateScenarioPlaceRsp": { "type": "object", "properties": { diff --git a/internal/app/server.go b/internal/app/server.go index 4703dea..ef8f68f 100644 --- a/internal/app/server.go +++ b/internal/app/server.go @@ -580,6 +580,28 @@ func (s *server) DeleteScenarioPlace(ctx context.Context, req *proto.DeleteScena return &proto.DeleteScenarioPlaceRsp{}, nil } +func (s *server) UpdateScenarioIntro(ctx context.Context, req *proto.UpdateScenarioIntroReq) (*proto.UpdateScenarioIntroRsp, error) { + claims := ctx.Value("claims").(*processor_jwt.JWTClaims) + if !roles.HasRole(claims, roles.Author) { + return nil, status.Errorf(codes.PermissionDenied, "permission denied") + } + + err := s.scenarioService.UpdateScenarioIntro( + ctx, + int(req.Id), + convertIntroduction(req.Introduction), + claims.UserID, + roles.HasRole(claims, roles.Admin), + ) + if err != nil { + return &proto.UpdateScenarioIntroRsp{ + Error: err.Error(), + }, nil + } + + return &proto.UpdateScenarioIntroRsp{}, nil +} + // DownloadScenarioArchive отдаёт ZIP-архив сценария; ошибки — gRPC-статусами. func (s *server) DownloadScenarioArchive(ctx context.Context, req *proto.DownloadScenarioArchiveReq) (*httpbody.HttpBody, error) { claims := ctx.Value("claims").(*processor_jwt.JWTClaims) diff --git a/internal/app/story_mapper.go b/internal/app/story_mapper.go index 865b958..bbac023 100644 --- a/internal/app/story_mapper.go +++ b/internal/app/story_mapper.go @@ -47,7 +47,18 @@ func mapStory(o *storytelling.Story) *proto.Story { return nil } return &proto.Story{ - Places: mapPlaces(o.Places), + Introduction: mapIntroduction(o.Introduction), + Places: mapPlaces(o.Places), + } +} + +func mapIntroduction(o *storytelling.Introduction) *proto.Introduction { + if o == nil { + return nil + } + return &proto.Introduction{ + Text: o.Text, + Audio: o.Audio, } } @@ -174,3 +185,13 @@ func convertKey(o *proto.Key) *storytelling.Key { Name: textFormatter.FormatString(o.Name), } } + +func convertIntroduction(o *proto.Introduction) *storytelling.Introduction { + if o == nil || (o.Text == "" && o.Audio == "") { + return nil + } + return &storytelling.Introduction{ + Text: textFormatter.FormatText(o.Text), + Audio: o.Audio, + } +} diff --git a/internal/modules/scenario_archive/archive.go b/internal/modules/scenario_archive/archive.go index 7d60b7a..8d51bd4 100644 --- a/internal/modules/scenario_archive/archive.go +++ b/internal/modules/scenario_archive/archive.go @@ -104,6 +104,11 @@ func (a *scenarioArchive) Pack( return nil, err } } + if story.Introduction != nil { + if err := addRef(story.Introduction.Audio); err != nil { + return nil, err + } + } for _, place := range story.Places { if err := addRef(place.Image); err != nil { return nil, err @@ -137,6 +142,9 @@ func (a *scenarioArchive) Pack( application.Image = rewriteRef(application.Image, archivePathOf) } } + if story.Introduction != nil { + story.Introduction.Audio = rewriteRef(story.Introduction.Audio, archivePathOf) + } doc := ScenarioJSON{ Version: Version, diff --git a/internal/modules/scenario_archive/archive_test.go b/internal/modules/scenario_archive/archive_test.go index 30841aa..4781019 100644 --- a/internal/modules/scenario_archive/archive_test.go +++ b/internal/modules/scenario_archive/archive_test.go @@ -101,6 +101,48 @@ func TestPackUnpackRoundTrip(t *testing.T) { } } +func TestPackUnpackIntroAudioRoundTrip(t *testing.T) { + description := "desc" + image := "cover.png" + scenario := &repos.Scenario{ + ID: 1, + Name: "С введением", + Description: &description, + Image: &image, + Scenario: `{"introduction":{"text":"Введение","audio":"intro.mp3"},"places":[ + {"code":"club","name":"Клуб","text":"Тёмный зал","image":"club.png"} + ]}`, + } + files := memoryFiles{ + "cover.png": []byte("cover-bytes"), + "club.png": []byte("club-bytes"), + "intro.mp3": []byte("intro-audio-bytes"), + } + + data, err := testArchive.Pack(context.Background(), scenario, testDomain, files.get) + if err != nil { + t.Fatalf("Pack: %v", err) + } + + bundle, err := testArchive.Unpack(data) + if err != nil { + t.Fatalf("Unpack: %v", err) + } + + if bundle.Scenario.Story.Introduction == nil { + t.Fatal("Story.Introduction = nil, want введение") + } + if bundle.Scenario.Story.Introduction.Text != "Введение" { + t.Errorf("Introduction.Text = %q, want %q", bundle.Scenario.Story.Introduction.Text, "Введение") + } + if bundle.Scenario.Story.Introduction.Audio != "images/intro.mp3" { + t.Errorf("Introduction.Audio = %q, want %q", bundle.Scenario.Story.Introduction.Audio, "images/intro.mp3") + } + if _, ok := bundle.Files["images/intro.mp3"]; !ok { + t.Errorf("в архиве нет аудиофайла %q", "images/intro.mp3") + } +} + func TestPackExternalURLsKeptAndNotFetched(t *testing.T) { description := "desc" scenario := &repos.Scenario{ diff --git a/internal/modules/storytelling/interface.go b/internal/modules/storytelling/interface.go index 419b4a6..07bffb2 100644 --- a/internal/modules/storytelling/interface.go +++ b/internal/modules/storytelling/interface.go @@ -4,13 +4,26 @@ type IStory interface { GetStory(scenario *Story, codes []string) *Story } -// История - это набор точек +// История - это введение и набор точек type Story struct { + // Введение - то, что игрок получает в начале игры + Introduction *Introduction `json:"introduction,omitempty"` + // Список точек Places []*Place `json:"places"` } +// Введение - текст и аудио, которые игрок получает в начале игры +type Introduction struct { + + // Текст введения + Text string `json:"text"` + + // Аудио введения + Audio string `json:"audio,omitempty"` +} + // Точка - что-то куда можно сходить // Это может быть место - аптека, остановка, площадь... // Это может быть персонаж - пострадавший, продавец, полицейский... diff --git a/internal/modules/storytelling/story.go b/internal/modules/storytelling/story.go index 7df6b4a..ad72c52 100644 --- a/internal/modules/storytelling/story.go +++ b/internal/modules/storytelling/story.go @@ -21,6 +21,14 @@ func (s *story) GetStory( codesWithUseActions := map[string]struct{}{} codesHidden := map[string]struct{}{} givenApplications := map[string]struct{}{} + // Введение передаётся игроку всегда — и до первого хода (начало игры), + // и в дальнейшем (как заголовок истории). + if scenario.Introduction != nil { + story.Introduction = &Introduction{ + Text: s.cleaner.ClearText(scenario.Introduction.Text), + Audio: scenario.Introduction.Audio, + } + } for i, code := range codes { var prevPlace *Place if i > 0 { diff --git a/internal/modules/storytelling/story_test.go b/internal/modules/storytelling/story_test.go index fb89107..ad25617 100644 --- a/internal/modules/storytelling/story_test.go +++ b/internal/modules/storytelling/story_test.go @@ -28,6 +28,52 @@ func Test_story_GetStory(t *testing.T) { }, }, }, + { + name: "Введение передаётся в начале игры (без действий)", + scenario: &Story{ + Introduction: &Introduction{ + Text: "Текст введения.([Ы])", + Audio: "intro.mp3", + }, + }, + codes: []string{}, + want: &Story{ + Introduction: &Introduction{ + Text: "Текст введения.", + Audio: "intro.mp3", + }, + }, + }, + { + name: "Введение передаётся вместе с точками", + scenario: &Story{ + Introduction: &Introduction{ + Text: "Текст введения.", + Audio: "intro.mp3", + }, + Places: []*Place{ + { + Code: "Ы", + Name: "Название точки", + Text: "Текст точки.", + }, + }, + }, + codes: []string{"Ы"}, + want: &Story{ + Introduction: &Introduction{ + Text: "Текст введения.", + Audio: "intro.mp3", + }, + Places: []*Place{ + { + Code: "Ы", + Name: "Название точки", + Text: "Текст точки.", + }, + }, + }, + }, { name: "Получение точки", scenario: &Story{ diff --git a/internal/services/mcp_service/service.go b/internal/services/mcp_service/service.go index 7b053e5..43fd018 100644 --- a/internal/services/mcp_service/service.go +++ b/internal/services/mcp_service/service.go @@ -67,7 +67,7 @@ func (s *MCPService) Server() *server.MCPServer { srv.AddTool( mcp.NewTool( "get_team_story", - mcp.WithDescription("Получить текущую историю команды: видимые точки сценария (текст, двери, улики) и информацию об игре. Команда идентифицируется паролем."), + mcp.WithDescription("Получить текущую историю команды: введение сценария (текст и аудио), видимые точки сценария (текст, двери, улики) и информацию об игре. Команда идентифицируется паролем."), mcp.WithNumber("team_id", mcp.Required(), mcp.Description("ID команды")), mcp.WithString("password", mcp.Required(), mcp.Description("Пароль команды")), ), diff --git a/internal/services/mcp_service/service_test.go b/internal/services/mcp_service/service_test.go index 35c24ca..7146c8c 100644 --- a/internal/services/mcp_service/service_test.go +++ b/internal/services/mcp_service/service_test.go @@ -38,6 +38,10 @@ func (f *fakeGamePlayer) AddTeamAction(_ context.Context, teamID int, password, func defaultStory() *storytelling.Story { return &storytelling.Story{ + Introduction: &storytelling.Introduction{ + Text: "Добро пожаловать в особняк.", + Audio: "http://storage.test/api/files/intro.mp3", + }, Places: []*storytelling.Place{ { Code: "entrance", @@ -254,6 +258,9 @@ func TestGetTeamStory(t *testing.T) { if !strings.Contains(got, "entrance") { t.Fatalf("get_team_story: %q; want story JSON", got) } + if !strings.Contains(got, `"introduction"`) || !strings.Contains(got, "Добро пожаловать в особняк.") { + t.Fatalf("get_team_story: %q; want introduction in story JSON", got) + } } func TestGetTeamStoryBusinessError(t *testing.T) { diff --git a/internal/services/scenarios_service/scenario_mapper.go b/internal/services/scenarios_service/scenario_mapper.go index 22247f5..bad11b0 100644 --- a/internal/services/scenarios_service/scenario_mapper.go +++ b/internal/services/scenarios_service/scenario_mapper.go @@ -77,6 +77,9 @@ func mapStory(o string, domain string) (*storytelling.Story, error) { place.Image = domain + place.Image } } + if res.Introduction != nil && res.Introduction.Audio != "" { + res.Introduction.Audio = domain + res.Introduction.Audio + } return res, nil } diff --git a/internal/services/scenarios_service/service.go b/internal/services/scenarios_service/service.go index 57ddfd2..4df06df 100644 --- a/internal/services/scenarios_service/service.go +++ b/internal/services/scenarios_service/service.go @@ -278,6 +278,25 @@ func (s *ScenarioService) DeleteScenarioPlace( return s.updateStory(ctx, id, story) } +// UpdateScenarioIntro сохраняет введение сценария (текст и аудио). +func (s *ScenarioService) UpdateScenarioIntro( + ctx context.Context, + id int, + introduction *storytelling.Introduction, + actorId int, + isAdmin bool, +) error { + if _, err := s.getScenarioForChange(ctx, id, actorId, isAdmin); err != nil { + return err + } + story, err := s.getStory(ctx, id) + if err != nil { + return err + } + story.Introduction = introduction + return s.updateStory(ctx, id, story) +} + func (s *ScenarioService) getStory(ctx context.Context, id int) (*storytelling.Story, error) { storyString, err := s.scenariosRepo.GetStoryByScenarioID(ctx, id) if err != nil { @@ -385,6 +404,12 @@ func (s *ScenarioService) UploadArchive( } } } + if scenario.Story.Introduction != nil { + scenario.Story.Introduction.Audio, err = rewrite(scenario.Story.Introduction.Audio) + if err != nil { + return 0, err + } + } storyJSON, err := normalizeStory(scenario.Story) if err != nil { @@ -423,6 +448,9 @@ func (s *ScenarioService) updateStory(ctx context.Context, id int, story *storyt for _, place := range story.Places { place.Image = strings.TrimPrefix(place.Image, s.domain) } + if story.Introduction != nil { + story.Introduction.Audio = strings.TrimPrefix(story.Introduction.Audio, s.domain) + } storyString, err := normalizeStory(story) if err != nil { return err diff --git a/internal/services/scenarios_service/service_test.go b/internal/services/scenarios_service/service_test.go index 1e047dd..199fec4 100644 --- a/internal/services/scenarios_service/service_test.go +++ b/internal/services/scenarios_service/service_test.go @@ -338,6 +338,76 @@ func TestUploadArchive(t *testing.T) { } } +func TestUploadArchiveWithIntro(t *testing.T) { + repo := newFakeScenariosRepo() + srcStorage := newFakeStorage() + description := "Детективная история" + image := "cover.png" + scenario := &repos.Scenario{ + ID: 1, + Name: "Ночной клуб", + Description: &description, + Image: &image, + Author: &repos.User{ID: 7}, + Status: "draft", + Scenario: `{"introduction":{"text":"Введение","audio":"intro.mp3"},"places":[ + {"code":"club","name":"Клуб","text":"Тёмный зал","image":"club.png"} + ]}`, + } + repo.byID[scenario.ID] = scenario + _ = srcStorage.Put(context.Background(), &file_storage.File{Name: "cover.png", Data: []byte("cover-bytes")}) + _ = srcStorage.Put(context.Background(), &file_storage.File{Name: "club.png", Data: []byte("club-bytes")}) + _ = srcStorage.Put(context.Background(), &file_storage.File{Name: "intro.mp3", Data: []byte("intro-audio-bytes")}) + + // Экспорт (Pack кладёт аудио введения в архив), затем импорт в «чистые» + // repo и storage: ссылки должны быть переписаны на новые имена. + svc := newTestService(repo, srcStorage) + archive, _, err := svc.DownloadArchive(context.Background(), 1, 7, false) + if err != nil { + t.Fatalf("DownloadArchive: %v", err) + } + + importRepo := newFakeScenariosRepo() + importStorage := newFakeStorage() + importSvc := newTestService(importRepo, importStorage) + + id, err := importSvc.UploadArchive(context.Background(), archive, 42) + if err != nil { + t.Fatalf("UploadArchive: %v", err) + } + + saved := importRepo.get(id) + story := &storytelling.Story{} + if err := json.Unmarshal([]byte(saved.Scenario), story); err != nil { + t.Fatalf("story не разобрался: %v", err) + } + if story.Introduction == nil { + t.Fatal("Introduction = nil, want введение после импорта") + } + if story.Introduction.Text != "Введение" { + t.Errorf("Introduction.Text = %q, want %q", story.Introduction.Text, "Введение") + } + if story.Introduction.Audio == "" || strings.HasPrefix(story.Introduction.Audio, "images/") || story.Introduction.Audio == "intro.mp3" { + t.Errorf("Introduction.Audio = %q, want новое случайное имя без images/", story.Introduction.Audio) + } + + // Аудио введения загружено в storage под новым именем. + files := importStorage.names() + found := false + for _, name := range files { + file, err := importStorage.Get(context.Background(), name) + if err != nil { + t.Fatalf("Get(%q): %v", name, err) + } + if string(file.Data) == "intro-audio-bytes" { + found = true + } + } + if !found { + t.Errorf("аудио введения не загружено в storage; файлы: %v", files) + } +} + func TestUploadArchiveMissingImage(t *testing.T) { repo := newFakeScenariosRepo() storage := newFakeStorage() @@ -509,6 +579,85 @@ func TestDownloadArchiveMissingImage(t *testing.T) { } } +func TestUpdateScenarioIntro(t *testing.T) { + repo := newFakeScenariosRepo() + storage := newFakeStorage() + seedScenario(t, repo, storage) + svc := newTestService(repo, storage) + + // Установка введения автором. + err := svc.UpdateScenarioIntro(context.Background(), 1, &storytelling.Introduction{ + Text: "Введение", + Audio: "intro.mp3", + }, 7, false) + if err != nil { + t.Fatalf("UpdateScenarioIntro: %v", err) + } + + // В хранилище — голое имя аудио, без домена. + parsed := &storytelling.Story{} + if err := json.Unmarshal([]byte(repo.get(1).Scenario), parsed); err != nil { + t.Fatalf("json.Unmarshal: %v", err) + } + if parsed.Introduction == nil { + t.Fatal("Introduction = nil, want введение в сохранённой истории") + } + if parsed.Introduction.Text != "Введение" { + t.Errorf("Introduction.Text = %q, want %q", parsed.Introduction.Text, "Введение") + } + if parsed.Introduction.Audio != "intro.mp3" { + t.Errorf("Introduction.Audio = %q, want %q (без домена)", parsed.Introduction.Audio, "intro.mp3") + } + + // Наружу — аудио с доменом. + full, err := svc.GetFullScenarioByID(context.Background(), 1) + if err != nil { + t.Fatalf("GetFullScenarioByID: %v", err) + } + if full.Story.Introduction == nil { + t.Fatal("Story.Introduction = nil, want введение в полном сценарии") + } + if full.Story.Introduction.Audio != testDomain+"intro.mp3" { + t.Errorf("Introduction.Audio = %q, want %q", full.Story.Introduction.Audio, testDomain+"intro.mp3") + } + + // Редактирование точки не должно затрагивать введение и голое имя аудио. + err = svc.UpdateScenarioPlace(context.Background(), 1, "club", &storytelling.Place{ + Code: "club", + Name: "Клуб", + Text: "Обновлённый текст.", + }, 7, false) + if err != nil { + t.Fatalf("UpdateScenarioPlace: %v", err) + } + parsed = &storytelling.Story{} + if err := json.Unmarshal([]byte(repo.get(1).Scenario), parsed); err != nil { + t.Fatalf("json.Unmarshal: %v", err) + } + if parsed.Introduction == nil || parsed.Introduction.Text != "Введение" || parsed.Introduction.Audio != "intro.mp3" { + t.Errorf("введение повреждено после UpdateScenarioPlace: %+v", parsed.Introduction) + } + + // Очистка введения (nil) — поле исчезает из истории. + err = svc.UpdateScenarioIntro(context.Background(), 1, nil, 7, false) + if err != nil { + t.Fatalf("UpdateScenarioIntro(nil): %v", err) + } + parsed = &storytelling.Story{} + if err := json.Unmarshal([]byte(repo.get(1).Scenario), parsed); err != nil { + t.Fatalf("json.Unmarshal: %v", err) + } + if parsed.Introduction != nil { + t.Errorf("Introduction = %+v, want nil после очистки", parsed.Introduction) + } + + // Чужой автор не может менять введение. + err = svc.UpdateScenarioIntro(context.Background(), 1, &storytelling.Introduction{Text: "x"}, 99, false) + if !errors.Is(err, ErrScenarioNotOwner) { + t.Errorf("err = %v, want ErrScenarioNotOwner", err) + } +} + // buildRawArchive собирает zip из произвольных записей (для тестов импорта). func buildRawArchive(t *testing.T, entries map[string][]byte) []byte { t.Helper() diff --git a/proto/main.pb.go b/proto/main.pb.go index 24e9a3d..e648c47 100644 --- a/proto/main.pb.go +++ b/proto/main.pb.go @@ -2221,6 +2221,7 @@ func (x *Scenario) GetPublishedAt() *timestamppb.Timestamp { type Story struct { state protoimpl.MessageState `protogen:"open.v1"` + Introduction *Introduction `protobuf:"bytes,2,opt,name=introduction,proto3" json:"introduction,omitempty"` Places []*Place `protobuf:"bytes,1,rep,name=places,proto3" json:"places,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -2256,6 +2257,13 @@ func (*Story) Descriptor() ([]byte, []int) { return file_main_proto_rawDescGZIP(), []int{45} } +func (x *Story) GetIntroduction() *Introduction { + if x != nil { + return x.Introduction + } + return nil +} + func (x *Story) GetPlaces() []*Place { if x != nil { return x.Places @@ -2263,6 +2271,58 @@ func (x *Story) GetPlaces() []*Place { return nil } +type Introduction struct { + state protoimpl.MessageState `protogen:"open.v1"` + Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` + Audio string `protobuf:"bytes,2,opt,name=audio,proto3" json:"audio,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Introduction) Reset() { + *x = Introduction{} + mi := &file_main_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Introduction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Introduction) ProtoMessage() {} + +func (x *Introduction) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[46] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Introduction.ProtoReflect.Descriptor instead. +func (*Introduction) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{46} +} + +func (x *Introduction) GetText() string { + if x != nil { + return x.Text + } + return "" +} + +func (x *Introduction) GetAudio() string { + if x != nil { + return x.Audio + } + return "" +} + type Place struct { state protoimpl.MessageState `protogen:"open.v1"` Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` @@ -2279,7 +2339,7 @@ type Place struct { func (x *Place) Reset() { *x = Place{} - mi := &file_main_proto_msgTypes[46] + mi := &file_main_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2291,7 +2351,7 @@ func (x *Place) String() string { func (*Place) ProtoMessage() {} func (x *Place) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[46] + mi := &file_main_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2304,7 +2364,7 @@ func (x *Place) ProtoReflect() protoreflect.Message { // Deprecated: Use Place.ProtoReflect.Descriptor instead. func (*Place) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{46} + return file_main_proto_rawDescGZIP(), []int{47} } func (x *Place) GetCode() string { @@ -2373,7 +2433,7 @@ type Application struct { func (x *Application) Reset() { *x = Application{} - mi := &file_main_proto_msgTypes[47] + mi := &file_main_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2385,7 +2445,7 @@ func (x *Application) String() string { func (*Application) ProtoMessage() {} func (x *Application) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[47] + mi := &file_main_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2398,7 +2458,7 @@ func (x *Application) ProtoReflect() protoreflect.Message { // Deprecated: Use Application.ProtoReflect.Descriptor instead. func (*Application) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{47} + return file_main_proto_rawDescGZIP(), []int{48} } func (x *Application) GetName() string { @@ -2426,7 +2486,7 @@ type Door struct { func (x *Door) Reset() { *x = Door{} - mi := &file_main_proto_msgTypes[48] + mi := &file_main_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2438,7 +2498,7 @@ func (x *Door) String() string { func (*Door) ProtoMessage() {} func (x *Door) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[48] + mi := &file_main_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2451,7 +2511,7 @@ func (x *Door) ProtoReflect() protoreflect.Message { // Deprecated: Use Door.ProtoReflect.Descriptor instead. func (*Door) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{48} + return file_main_proto_rawDescGZIP(), []int{49} } func (x *Door) GetCode() string { @@ -2484,7 +2544,7 @@ type Key struct { func (x *Key) Reset() { *x = Key{} - mi := &file_main_proto_msgTypes[49] + mi := &file_main_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2496,7 +2556,7 @@ func (x *Key) String() string { func (*Key) ProtoMessage() {} func (x *Key) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[49] + mi := &file_main_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2509,7 +2569,7 @@ func (x *Key) ProtoReflect() protoreflect.Message { // Deprecated: Use Key.ProtoReflect.Descriptor instead. func (*Key) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{49} + return file_main_proto_rawDescGZIP(), []int{50} } func (x *Key) GetName() string { @@ -2531,7 +2591,7 @@ type UpdateScenarioReq struct { func (x *UpdateScenarioReq) Reset() { *x = UpdateScenarioReq{} - mi := &file_main_proto_msgTypes[50] + mi := &file_main_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2543,7 +2603,7 @@ func (x *UpdateScenarioReq) String() string { func (*UpdateScenarioReq) ProtoMessage() {} func (x *UpdateScenarioReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[50] + mi := &file_main_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2556,7 +2616,7 @@ func (x *UpdateScenarioReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateScenarioReq.ProtoReflect.Descriptor instead. func (*UpdateScenarioReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{50} + return file_main_proto_rawDescGZIP(), []int{51} } func (x *UpdateScenarioReq) GetId() int32 { @@ -2596,7 +2656,7 @@ type UpdateScenarioRsp struct { func (x *UpdateScenarioRsp) Reset() { *x = UpdateScenarioRsp{} - mi := &file_main_proto_msgTypes[51] + mi := &file_main_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2608,7 +2668,7 @@ func (x *UpdateScenarioRsp) String() string { func (*UpdateScenarioRsp) ProtoMessage() {} func (x *UpdateScenarioRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[51] + mi := &file_main_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2621,7 +2681,7 @@ func (x *UpdateScenarioRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateScenarioRsp.ProtoReflect.Descriptor instead. func (*UpdateScenarioRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{51} + return file_main_proto_rawDescGZIP(), []int{52} } func (x *UpdateScenarioRsp) GetError() string { @@ -2640,7 +2700,7 @@ type PublicScenarioReq struct { func (x *PublicScenarioReq) Reset() { *x = PublicScenarioReq{} - mi := &file_main_proto_msgTypes[52] + mi := &file_main_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2652,7 +2712,7 @@ func (x *PublicScenarioReq) String() string { func (*PublicScenarioReq) ProtoMessage() {} func (x *PublicScenarioReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[52] + mi := &file_main_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2665,7 +2725,7 @@ func (x *PublicScenarioReq) ProtoReflect() protoreflect.Message { // Deprecated: Use PublicScenarioReq.ProtoReflect.Descriptor instead. func (*PublicScenarioReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{52} + return file_main_proto_rawDescGZIP(), []int{53} } func (x *PublicScenarioReq) GetId() int32 { @@ -2684,7 +2744,7 @@ type PublicScenarioRsp struct { func (x *PublicScenarioRsp) Reset() { *x = PublicScenarioRsp{} - mi := &file_main_proto_msgTypes[53] + mi := &file_main_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2696,7 +2756,7 @@ func (x *PublicScenarioRsp) String() string { func (*PublicScenarioRsp) ProtoMessage() {} func (x *PublicScenarioRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[53] + mi := &file_main_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2709,7 +2769,7 @@ func (x *PublicScenarioRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use PublicScenarioRsp.ProtoReflect.Descriptor instead. func (*PublicScenarioRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{53} + return file_main_proto_rawDescGZIP(), []int{54} } func (x *PublicScenarioRsp) GetError() string { @@ -2728,7 +2788,7 @@ type DraftScenarioReq struct { func (x *DraftScenarioReq) Reset() { *x = DraftScenarioReq{} - mi := &file_main_proto_msgTypes[54] + mi := &file_main_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2740,7 +2800,7 @@ func (x *DraftScenarioReq) String() string { func (*DraftScenarioReq) ProtoMessage() {} func (x *DraftScenarioReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[54] + mi := &file_main_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2753,7 +2813,7 @@ func (x *DraftScenarioReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DraftScenarioReq.ProtoReflect.Descriptor instead. func (*DraftScenarioReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{54} + return file_main_proto_rawDescGZIP(), []int{55} } func (x *DraftScenarioReq) GetId() int32 { @@ -2772,7 +2832,7 @@ type DraftScenarioRsp struct { func (x *DraftScenarioRsp) Reset() { *x = DraftScenarioRsp{} - mi := &file_main_proto_msgTypes[55] + mi := &file_main_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2784,7 +2844,7 @@ func (x *DraftScenarioRsp) String() string { func (*DraftScenarioRsp) ProtoMessage() {} func (x *DraftScenarioRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[55] + mi := &file_main_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2797,7 +2857,7 @@ func (x *DraftScenarioRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use DraftScenarioRsp.ProtoReflect.Descriptor instead. func (*DraftScenarioRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{55} + return file_main_proto_rawDescGZIP(), []int{56} } func (x *DraftScenarioRsp) GetError() string { @@ -2816,7 +2876,7 @@ type DeleteScenarioReq struct { func (x *DeleteScenarioReq) Reset() { *x = DeleteScenarioReq{} - mi := &file_main_proto_msgTypes[56] + mi := &file_main_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2828,7 +2888,7 @@ func (x *DeleteScenarioReq) String() string { func (*DeleteScenarioReq) ProtoMessage() {} func (x *DeleteScenarioReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[56] + mi := &file_main_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2841,7 +2901,7 @@ func (x *DeleteScenarioReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteScenarioReq.ProtoReflect.Descriptor instead. func (*DeleteScenarioReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{56} + return file_main_proto_rawDescGZIP(), []int{57} } func (x *DeleteScenarioReq) GetId() int32 { @@ -2860,7 +2920,7 @@ type DeleteScenarioRsp struct { func (x *DeleteScenarioRsp) Reset() { *x = DeleteScenarioRsp{} - mi := &file_main_proto_msgTypes[57] + mi := &file_main_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2872,7 +2932,7 @@ func (x *DeleteScenarioRsp) String() string { func (*DeleteScenarioRsp) ProtoMessage() {} func (x *DeleteScenarioRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[57] + mi := &file_main_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2885,7 +2945,7 @@ func (x *DeleteScenarioRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteScenarioRsp.ProtoReflect.Descriptor instead. func (*DeleteScenarioRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{57} + return file_main_proto_rawDescGZIP(), []int{58} } func (x *DeleteScenarioRsp) GetError() string { @@ -2905,7 +2965,7 @@ type AddScenarioPlaceReq struct { func (x *AddScenarioPlaceReq) Reset() { *x = AddScenarioPlaceReq{} - mi := &file_main_proto_msgTypes[58] + mi := &file_main_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2917,7 +2977,7 @@ func (x *AddScenarioPlaceReq) String() string { func (*AddScenarioPlaceReq) ProtoMessage() {} func (x *AddScenarioPlaceReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[58] + mi := &file_main_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2930,7 +2990,7 @@ func (x *AddScenarioPlaceReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddScenarioPlaceReq.ProtoReflect.Descriptor instead. func (*AddScenarioPlaceReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{58} + return file_main_proto_rawDescGZIP(), []int{59} } func (x *AddScenarioPlaceReq) GetId() int32 { @@ -2956,7 +3016,7 @@ type AddScenarioPlaceRsp struct { func (x *AddScenarioPlaceRsp) Reset() { *x = AddScenarioPlaceRsp{} - mi := &file_main_proto_msgTypes[59] + mi := &file_main_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2968,7 +3028,7 @@ func (x *AddScenarioPlaceRsp) String() string { func (*AddScenarioPlaceRsp) ProtoMessage() {} func (x *AddScenarioPlaceRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[59] + mi := &file_main_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2981,7 +3041,7 @@ func (x *AddScenarioPlaceRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddScenarioPlaceRsp.ProtoReflect.Descriptor instead. func (*AddScenarioPlaceRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{59} + return file_main_proto_rawDescGZIP(), []int{60} } func (x *AddScenarioPlaceRsp) GetError() string { @@ -3002,7 +3062,7 @@ type UpdateScenarioPlaceReq struct { func (x *UpdateScenarioPlaceReq) Reset() { *x = UpdateScenarioPlaceReq{} - mi := &file_main_proto_msgTypes[60] + mi := &file_main_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3014,7 +3074,7 @@ func (x *UpdateScenarioPlaceReq) String() string { func (*UpdateScenarioPlaceReq) ProtoMessage() {} func (x *UpdateScenarioPlaceReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[60] + mi := &file_main_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3027,7 +3087,7 @@ func (x *UpdateScenarioPlaceReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateScenarioPlaceReq.ProtoReflect.Descriptor instead. func (*UpdateScenarioPlaceReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{60} + return file_main_proto_rawDescGZIP(), []int{61} } func (x *UpdateScenarioPlaceReq) GetId() int32 { @@ -3060,7 +3120,7 @@ type UpdateScenarioPlaceRsp struct { func (x *UpdateScenarioPlaceRsp) Reset() { *x = UpdateScenarioPlaceRsp{} - mi := &file_main_proto_msgTypes[61] + mi := &file_main_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3072,7 +3132,7 @@ func (x *UpdateScenarioPlaceRsp) String() string { func (*UpdateScenarioPlaceRsp) ProtoMessage() {} func (x *UpdateScenarioPlaceRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[61] + mi := &file_main_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3085,7 +3145,7 @@ func (x *UpdateScenarioPlaceRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateScenarioPlaceRsp.ProtoReflect.Descriptor instead. func (*UpdateScenarioPlaceRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{61} + return file_main_proto_rawDescGZIP(), []int{62} } func (x *UpdateScenarioPlaceRsp) GetError() string { @@ -3105,7 +3165,7 @@ type DeleteScenarioPlaceReq struct { func (x *DeleteScenarioPlaceReq) Reset() { *x = DeleteScenarioPlaceReq{} - mi := &file_main_proto_msgTypes[62] + mi := &file_main_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3117,7 +3177,7 @@ func (x *DeleteScenarioPlaceReq) String() string { func (*DeleteScenarioPlaceReq) ProtoMessage() {} func (x *DeleteScenarioPlaceReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[62] + mi := &file_main_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3130,7 +3190,7 @@ func (x *DeleteScenarioPlaceReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteScenarioPlaceReq.ProtoReflect.Descriptor instead. func (*DeleteScenarioPlaceReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{62} + return file_main_proto_rawDescGZIP(), []int{63} } func (x *DeleteScenarioPlaceReq) GetId() int32 { @@ -3156,7 +3216,7 @@ type DeleteScenarioPlaceRsp struct { func (x *DeleteScenarioPlaceRsp) Reset() { *x = DeleteScenarioPlaceRsp{} - mi := &file_main_proto_msgTypes[63] + mi := &file_main_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3168,7 +3228,7 @@ func (x *DeleteScenarioPlaceRsp) String() string { func (*DeleteScenarioPlaceRsp) ProtoMessage() {} func (x *DeleteScenarioPlaceRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[63] + mi := &file_main_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3181,7 +3241,7 @@ func (x *DeleteScenarioPlaceRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteScenarioPlaceRsp.ProtoReflect.Descriptor instead. func (*DeleteScenarioPlaceRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{63} + return file_main_proto_rawDescGZIP(), []int{64} } func (x *DeleteScenarioPlaceRsp) GetError() string { @@ -3191,6 +3251,102 @@ func (x *DeleteScenarioPlaceRsp) GetError() string { return "" } +type UpdateScenarioIntroReq struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Introduction *Introduction `protobuf:"bytes,2,opt,name=introduction,proto3" json:"introduction,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateScenarioIntroReq) Reset() { + *x = UpdateScenarioIntroReq{} + mi := &file_main_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateScenarioIntroReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateScenarioIntroReq) ProtoMessage() {} + +func (x *UpdateScenarioIntroReq) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[65] + 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 UpdateScenarioIntroReq.ProtoReflect.Descriptor instead. +func (*UpdateScenarioIntroReq) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{65} +} + +func (x *UpdateScenarioIntroReq) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *UpdateScenarioIntroReq) GetIntroduction() *Introduction { + if x != nil { + return x.Introduction + } + return nil +} + +type UpdateScenarioIntroRsp struct { + state protoimpl.MessageState `protogen:"open.v1"` + Error string `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateScenarioIntroRsp) Reset() { + *x = UpdateScenarioIntroRsp{} + mi := &file_main_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateScenarioIntroRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateScenarioIntroRsp) ProtoMessage() {} + +func (x *UpdateScenarioIntroRsp) ProtoReflect() protoreflect.Message { + mi := &file_main_proto_msgTypes[66] + 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 UpdateScenarioIntroRsp.ProtoReflect.Descriptor instead. +func (*UpdateScenarioIntroRsp) Descriptor() ([]byte, []int) { + return file_main_proto_rawDescGZIP(), []int{66} +} + +func (x *UpdateScenarioIntroRsp) GetError() string { + if x != nil { + return x.Error + } + return "" +} + type DownloadScenarioArchiveReq struct { state protoimpl.MessageState `protogen:"open.v1"` Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` @@ -3200,7 +3356,7 @@ type DownloadScenarioArchiveReq struct { func (x *DownloadScenarioArchiveReq) Reset() { *x = DownloadScenarioArchiveReq{} - mi := &file_main_proto_msgTypes[64] + mi := &file_main_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3212,7 +3368,7 @@ func (x *DownloadScenarioArchiveReq) String() string { func (*DownloadScenarioArchiveReq) ProtoMessage() {} func (x *DownloadScenarioArchiveReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[64] + mi := &file_main_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3225,7 +3381,7 @@ func (x *DownloadScenarioArchiveReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DownloadScenarioArchiveReq.ProtoReflect.Descriptor instead. func (*DownloadScenarioArchiveReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{64} + return file_main_proto_rawDescGZIP(), []int{67} } func (x *DownloadScenarioArchiveReq) GetId() int32 { @@ -3245,7 +3401,7 @@ type UploadScenarioArchiveRsp struct { func (x *UploadScenarioArchiveRsp) Reset() { *x = UploadScenarioArchiveRsp{} - mi := &file_main_proto_msgTypes[65] + mi := &file_main_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3257,7 +3413,7 @@ func (x *UploadScenarioArchiveRsp) String() string { func (*UploadScenarioArchiveRsp) ProtoMessage() {} func (x *UploadScenarioArchiveRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[65] + mi := &file_main_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3270,7 +3426,7 @@ func (x *UploadScenarioArchiveRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadScenarioArchiveRsp.ProtoReflect.Descriptor instead. func (*UploadScenarioArchiveRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{65} + return file_main_proto_rawDescGZIP(), []int{68} } func (x *UploadScenarioArchiveRsp) GetError() string { @@ -3299,7 +3455,7 @@ type AddGameReq struct { func (x *AddGameReq) Reset() { *x = AddGameReq{} - mi := &file_main_proto_msgTypes[66] + mi := &file_main_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3311,7 +3467,7 @@ func (x *AddGameReq) String() string { func (*AddGameReq) ProtoMessage() {} func (x *AddGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[66] + mi := &file_main_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3324,7 +3480,7 @@ func (x *AddGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddGameReq.ProtoReflect.Descriptor instead. func (*AddGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{66} + return file_main_proto_rawDescGZIP(), []int{69} } func (x *AddGameReq) GetName() string { @@ -3365,7 +3521,7 @@ type AddGameRsp struct { func (x *AddGameRsp) Reset() { *x = AddGameRsp{} - mi := &file_main_proto_msgTypes[67] + mi := &file_main_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3377,7 +3533,7 @@ func (x *AddGameRsp) String() string { func (*AddGameRsp) ProtoMessage() {} func (x *AddGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[67] + mi := &file_main_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3390,7 +3546,7 @@ func (x *AddGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddGameRsp.ProtoReflect.Descriptor instead. func (*AddGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{67} + return file_main_proto_rawDescGZIP(), []int{70} } func (x *AddGameRsp) GetError() string { @@ -3415,7 +3571,7 @@ type GetGamesReq struct { func (x *GetGamesReq) Reset() { *x = GetGamesReq{} - mi := &file_main_proto_msgTypes[68] + mi := &file_main_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3427,7 +3583,7 @@ func (x *GetGamesReq) String() string { func (*GetGamesReq) ProtoMessage() {} func (x *GetGamesReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[68] + mi := &file_main_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3440,7 +3596,7 @@ func (x *GetGamesReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGamesReq.ProtoReflect.Descriptor instead. func (*GetGamesReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{68} + return file_main_proto_rawDescGZIP(), []int{71} } type GetGamesRsp struct { @@ -3453,7 +3609,7 @@ type GetGamesRsp struct { func (x *GetGamesRsp) Reset() { *x = GetGamesRsp{} - mi := &file_main_proto_msgTypes[69] + mi := &file_main_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3465,7 +3621,7 @@ func (x *GetGamesRsp) String() string { func (*GetGamesRsp) ProtoMessage() {} func (x *GetGamesRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[69] + mi := &file_main_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3478,7 +3634,7 @@ func (x *GetGamesRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGamesRsp.ProtoReflect.Descriptor instead. func (*GetGamesRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{69} + return file_main_proto_rawDescGZIP(), []int{72} } func (x *GetGamesRsp) GetError() string { @@ -3512,7 +3668,7 @@ type Game struct { func (x *Game) Reset() { *x = Game{} - mi := &file_main_proto_msgTypes[70] + mi := &file_main_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3524,7 +3680,7 @@ func (x *Game) String() string { func (*Game) ProtoMessage() {} func (x *Game) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[70] + mi := &file_main_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3537,7 +3693,7 @@ func (x *Game) ProtoReflect() protoreflect.Message { // Deprecated: Use Game.ProtoReflect.Descriptor instead. func (*Game) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{70} + return file_main_proto_rawDescGZIP(), []int{73} } func (x *Game) GetId() int32 { @@ -3617,7 +3773,7 @@ type Team struct { func (x *Team) Reset() { *x = Team{} - mi := &file_main_proto_msgTypes[71] + mi := &file_main_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3629,7 +3785,7 @@ func (x *Team) String() string { func (*Team) ProtoMessage() {} func (x *Team) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[71] + mi := &file_main_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3642,7 +3798,7 @@ func (x *Team) ProtoReflect() protoreflect.Message { // Deprecated: Use Team.ProtoReflect.Descriptor instead. func (*Team) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{71} + return file_main_proto_rawDescGZIP(), []int{74} } func (x *Team) GetId() int32 { @@ -3696,7 +3852,7 @@ type GetGameReq struct { func (x *GetGameReq) Reset() { *x = GetGameReq{} - mi := &file_main_proto_msgTypes[72] + mi := &file_main_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3708,7 +3864,7 @@ func (x *GetGameReq) String() string { func (*GetGameReq) ProtoMessage() {} func (x *GetGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[72] + mi := &file_main_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3721,7 +3877,7 @@ func (x *GetGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameReq.ProtoReflect.Descriptor instead. func (*GetGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{72} + return file_main_proto_rawDescGZIP(), []int{75} } func (x *GetGameReq) GetId() int32 { @@ -3741,7 +3897,7 @@ type GetGameRsp struct { func (x *GetGameRsp) Reset() { *x = GetGameRsp{} - mi := &file_main_proto_msgTypes[73] + mi := &file_main_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3753,7 +3909,7 @@ func (x *GetGameRsp) String() string { func (*GetGameRsp) ProtoMessage() {} func (x *GetGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[73] + mi := &file_main_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3766,7 +3922,7 @@ func (x *GetGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGameRsp.ProtoReflect.Descriptor instead. func (*GetGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{73} + return file_main_proto_rawDescGZIP(), []int{76} } func (x *GetGameRsp) GetError() string { @@ -3796,7 +3952,7 @@ type UpdateGameReq struct { func (x *UpdateGameReq) Reset() { *x = UpdateGameReq{} - mi := &file_main_proto_msgTypes[74] + mi := &file_main_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3808,7 +3964,7 @@ func (x *UpdateGameReq) String() string { func (*UpdateGameReq) ProtoMessage() {} func (x *UpdateGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[74] + mi := &file_main_proto_msgTypes[77] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3821,7 +3977,7 @@ func (x *UpdateGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGameReq.ProtoReflect.Descriptor instead. func (*UpdateGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{74} + return file_main_proto_rawDescGZIP(), []int{77} } func (x *UpdateGameReq) GetId() int32 { @@ -3868,7 +4024,7 @@ type UpdateGameRsp struct { func (x *UpdateGameRsp) Reset() { *x = UpdateGameRsp{} - mi := &file_main_proto_msgTypes[75] + mi := &file_main_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3880,7 +4036,7 @@ func (x *UpdateGameRsp) String() string { func (*UpdateGameRsp) ProtoMessage() {} func (x *UpdateGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[75] + mi := &file_main_proto_msgTypes[78] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3893,7 +4049,7 @@ func (x *UpdateGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateGameRsp.ProtoReflect.Descriptor instead. func (*UpdateGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{75} + return file_main_proto_rawDescGZIP(), []int{78} } func (x *UpdateGameRsp) GetError() string { @@ -3912,7 +4068,7 @@ type StartGameReq struct { func (x *StartGameReq) Reset() { *x = StartGameReq{} - mi := &file_main_proto_msgTypes[76] + mi := &file_main_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3924,7 +4080,7 @@ func (x *StartGameReq) String() string { func (*StartGameReq) ProtoMessage() {} func (x *StartGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[76] + mi := &file_main_proto_msgTypes[79] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3937,7 +4093,7 @@ func (x *StartGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use StartGameReq.ProtoReflect.Descriptor instead. func (*StartGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{76} + return file_main_proto_rawDescGZIP(), []int{79} } func (x *StartGameReq) GetId() int32 { @@ -3956,7 +4112,7 @@ type StartGameRsp struct { func (x *StartGameRsp) Reset() { *x = StartGameRsp{} - mi := &file_main_proto_msgTypes[77] + mi := &file_main_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3968,7 +4124,7 @@ func (x *StartGameRsp) String() string { func (*StartGameRsp) ProtoMessage() {} func (x *StartGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[77] + mi := &file_main_proto_msgTypes[80] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3981,7 +4137,7 @@ func (x *StartGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use StartGameRsp.ProtoReflect.Descriptor instead. func (*StartGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{77} + return file_main_proto_rawDescGZIP(), []int{80} } func (x *StartGameRsp) GetError() string { @@ -4000,7 +4156,7 @@ type PauseGameReq struct { func (x *PauseGameReq) Reset() { *x = PauseGameReq{} - mi := &file_main_proto_msgTypes[78] + mi := &file_main_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4012,7 +4168,7 @@ func (x *PauseGameReq) String() string { func (*PauseGameReq) ProtoMessage() {} func (x *PauseGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[78] + mi := &file_main_proto_msgTypes[81] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4025,7 +4181,7 @@ func (x *PauseGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use PauseGameReq.ProtoReflect.Descriptor instead. func (*PauseGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{78} + return file_main_proto_rawDescGZIP(), []int{81} } func (x *PauseGameReq) GetId() int32 { @@ -4044,7 +4200,7 @@ type PauseGameRsp struct { func (x *PauseGameRsp) Reset() { *x = PauseGameRsp{} - mi := &file_main_proto_msgTypes[79] + mi := &file_main_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4056,7 +4212,7 @@ func (x *PauseGameRsp) String() string { func (*PauseGameRsp) ProtoMessage() {} func (x *PauseGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[79] + mi := &file_main_proto_msgTypes[82] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4069,7 +4225,7 @@ func (x *PauseGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use PauseGameRsp.ProtoReflect.Descriptor instead. func (*PauseGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{79} + return file_main_proto_rawDescGZIP(), []int{82} } func (x *PauseGameRsp) GetError() string { @@ -4088,7 +4244,7 @@ type PlayGameReq struct { func (x *PlayGameReq) Reset() { *x = PlayGameReq{} - mi := &file_main_proto_msgTypes[80] + mi := &file_main_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4100,7 +4256,7 @@ func (x *PlayGameReq) String() string { func (*PlayGameReq) ProtoMessage() {} func (x *PlayGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[80] + mi := &file_main_proto_msgTypes[83] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4113,7 +4269,7 @@ func (x *PlayGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayGameReq.ProtoReflect.Descriptor instead. func (*PlayGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{80} + return file_main_proto_rawDescGZIP(), []int{83} } func (x *PlayGameReq) GetId() int32 { @@ -4132,7 +4288,7 @@ type PlayGameRsp struct { func (x *PlayGameRsp) Reset() { *x = PlayGameRsp{} - mi := &file_main_proto_msgTypes[81] + mi := &file_main_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4144,7 +4300,7 @@ func (x *PlayGameRsp) String() string { func (*PlayGameRsp) ProtoMessage() {} func (x *PlayGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[81] + mi := &file_main_proto_msgTypes[84] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4157,7 +4313,7 @@ func (x *PlayGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayGameRsp.ProtoReflect.Descriptor instead. func (*PlayGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{81} + return file_main_proto_rawDescGZIP(), []int{84} } func (x *PlayGameRsp) GetError() string { @@ -4176,7 +4332,7 @@ type FinishGameReq struct { func (x *FinishGameReq) Reset() { *x = FinishGameReq{} - mi := &file_main_proto_msgTypes[82] + mi := &file_main_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4188,7 +4344,7 @@ func (x *FinishGameReq) String() string { func (*FinishGameReq) ProtoMessage() {} func (x *FinishGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[82] + mi := &file_main_proto_msgTypes[85] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4201,7 +4357,7 @@ func (x *FinishGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use FinishGameReq.ProtoReflect.Descriptor instead. func (*FinishGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{82} + return file_main_proto_rawDescGZIP(), []int{85} } func (x *FinishGameReq) GetId() int32 { @@ -4220,7 +4376,7 @@ type FinishGameRsp struct { func (x *FinishGameRsp) Reset() { *x = FinishGameRsp{} - mi := &file_main_proto_msgTypes[83] + mi := &file_main_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4232,7 +4388,7 @@ func (x *FinishGameRsp) String() string { func (*FinishGameRsp) ProtoMessage() {} func (x *FinishGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[83] + mi := &file_main_proto_msgTypes[86] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4245,7 +4401,7 @@ func (x *FinishGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use FinishGameRsp.ProtoReflect.Descriptor instead. func (*FinishGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{83} + return file_main_proto_rawDescGZIP(), []int{86} } func (x *FinishGameRsp) GetError() string { @@ -4264,7 +4420,7 @@ type ResetGameReq struct { func (x *ResetGameReq) Reset() { *x = ResetGameReq{} - mi := &file_main_proto_msgTypes[84] + mi := &file_main_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4276,7 +4432,7 @@ func (x *ResetGameReq) String() string { func (*ResetGameReq) ProtoMessage() {} func (x *ResetGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[84] + mi := &file_main_proto_msgTypes[87] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4289,7 +4445,7 @@ func (x *ResetGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use ResetGameReq.ProtoReflect.Descriptor instead. func (*ResetGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{84} + return file_main_proto_rawDescGZIP(), []int{87} } func (x *ResetGameReq) GetId() int32 { @@ -4308,7 +4464,7 @@ type ResetGameRsp struct { func (x *ResetGameRsp) Reset() { *x = ResetGameRsp{} - mi := &file_main_proto_msgTypes[85] + mi := &file_main_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4320,7 +4476,7 @@ func (x *ResetGameRsp) String() string { func (*ResetGameRsp) ProtoMessage() {} func (x *ResetGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[85] + mi := &file_main_proto_msgTypes[88] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4333,7 +4489,7 @@ func (x *ResetGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use ResetGameRsp.ProtoReflect.Descriptor instead. func (*ResetGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{85} + return file_main_proto_rawDescGZIP(), []int{88} } func (x *ResetGameRsp) GetError() string { @@ -4352,7 +4508,7 @@ type DeleteGameReq struct { func (x *DeleteGameReq) Reset() { *x = DeleteGameReq{} - mi := &file_main_proto_msgTypes[86] + mi := &file_main_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4364,7 +4520,7 @@ func (x *DeleteGameReq) String() string { func (*DeleteGameReq) ProtoMessage() {} func (x *DeleteGameReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[86] + mi := &file_main_proto_msgTypes[89] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4377,7 +4533,7 @@ func (x *DeleteGameReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteGameReq.ProtoReflect.Descriptor instead. func (*DeleteGameReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{86} + return file_main_proto_rawDescGZIP(), []int{89} } func (x *DeleteGameReq) GetId() int32 { @@ -4396,7 +4552,7 @@ type DeleteGameRsp struct { func (x *DeleteGameRsp) Reset() { *x = DeleteGameRsp{} - mi := &file_main_proto_msgTypes[87] + mi := &file_main_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4408,7 +4564,7 @@ func (x *DeleteGameRsp) String() string { func (*DeleteGameRsp) ProtoMessage() {} func (x *DeleteGameRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[87] + mi := &file_main_proto_msgTypes[90] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4421,7 +4577,7 @@ func (x *DeleteGameRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteGameRsp.ProtoReflect.Descriptor instead. func (*DeleteGameRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{87} + return file_main_proto_rawDescGZIP(), []int{90} } func (x *DeleteGameRsp) GetError() string { @@ -4441,7 +4597,7 @@ type AddTeamReq struct { func (x *AddTeamReq) Reset() { *x = AddTeamReq{} - mi := &file_main_proto_msgTypes[88] + mi := &file_main_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4453,7 +4609,7 @@ func (x *AddTeamReq) String() string { func (*AddTeamReq) ProtoMessage() {} func (x *AddTeamReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[88] + mi := &file_main_proto_msgTypes[91] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4466,7 +4622,7 @@ func (x *AddTeamReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddTeamReq.ProtoReflect.Descriptor instead. func (*AddTeamReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{88} + return file_main_proto_rawDescGZIP(), []int{91} } func (x *AddTeamReq) GetGameId() int32 { @@ -4494,7 +4650,7 @@ type AddTeamRsp struct { func (x *AddTeamRsp) Reset() { *x = AddTeamRsp{} - mi := &file_main_proto_msgTypes[89] + mi := &file_main_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4506,7 +4662,7 @@ func (x *AddTeamRsp) String() string { func (*AddTeamRsp) ProtoMessage() {} func (x *AddTeamRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[89] + mi := &file_main_proto_msgTypes[92] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4519,7 +4675,7 @@ func (x *AddTeamRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddTeamRsp.ProtoReflect.Descriptor instead. func (*AddTeamRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{89} + return file_main_proto_rawDescGZIP(), []int{92} } func (x *AddTeamRsp) GetError() string { @@ -4553,7 +4709,7 @@ type UpdateTeamReq struct { func (x *UpdateTeamReq) Reset() { *x = UpdateTeamReq{} - mi := &file_main_proto_msgTypes[90] + mi := &file_main_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4565,7 +4721,7 @@ func (x *UpdateTeamReq) String() string { func (*UpdateTeamReq) ProtoMessage() {} func (x *UpdateTeamReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[90] + mi := &file_main_proto_msgTypes[93] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4578,7 +4734,7 @@ func (x *UpdateTeamReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTeamReq.ProtoReflect.Descriptor instead. func (*UpdateTeamReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{90} + return file_main_proto_rawDescGZIP(), []int{93} } func (x *UpdateTeamReq) GetId() int32 { @@ -4604,7 +4760,7 @@ type UpdateTeamRsp struct { func (x *UpdateTeamRsp) Reset() { *x = UpdateTeamRsp{} - mi := &file_main_proto_msgTypes[91] + mi := &file_main_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4616,7 +4772,7 @@ func (x *UpdateTeamRsp) String() string { func (*UpdateTeamRsp) ProtoMessage() {} func (x *UpdateTeamRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[91] + mi := &file_main_proto_msgTypes[94] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4629,7 +4785,7 @@ func (x *UpdateTeamRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateTeamRsp.ProtoReflect.Descriptor instead. func (*UpdateTeamRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{91} + return file_main_proto_rawDescGZIP(), []int{94} } func (x *UpdateTeamRsp) GetError() string { @@ -4648,7 +4804,7 @@ type DeleteTeamReq struct { func (x *DeleteTeamReq) Reset() { *x = DeleteTeamReq{} - mi := &file_main_proto_msgTypes[92] + mi := &file_main_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4660,7 +4816,7 @@ func (x *DeleteTeamReq) String() string { func (*DeleteTeamReq) ProtoMessage() {} func (x *DeleteTeamReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[92] + mi := &file_main_proto_msgTypes[95] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4673,7 +4829,7 @@ func (x *DeleteTeamReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTeamReq.ProtoReflect.Descriptor instead. func (*DeleteTeamReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{92} + return file_main_proto_rawDescGZIP(), []int{95} } func (x *DeleteTeamReq) GetId() int64 { @@ -4692,7 +4848,7 @@ type DeleteTeamRsp struct { func (x *DeleteTeamRsp) Reset() { *x = DeleteTeamRsp{} - mi := &file_main_proto_msgTypes[93] + mi := &file_main_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4704,7 +4860,7 @@ func (x *DeleteTeamRsp) String() string { func (*DeleteTeamRsp) ProtoMessage() {} func (x *DeleteTeamRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[93] + mi := &file_main_proto_msgTypes[96] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4717,7 +4873,7 @@ func (x *DeleteTeamRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTeamRsp.ProtoReflect.Descriptor instead. func (*DeleteTeamRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{93} + return file_main_proto_rawDescGZIP(), []int{96} } func (x *DeleteTeamRsp) GetError() string { @@ -4737,7 +4893,7 @@ type GiveTeamApplicationsReq struct { func (x *GiveTeamApplicationsReq) Reset() { *x = GiveTeamApplicationsReq{} - mi := &file_main_proto_msgTypes[94] + mi := &file_main_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4749,7 +4905,7 @@ func (x *GiveTeamApplicationsReq) String() string { func (*GiveTeamApplicationsReq) ProtoMessage() {} func (x *GiveTeamApplicationsReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[94] + mi := &file_main_proto_msgTypes[97] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4762,7 +4918,7 @@ func (x *GiveTeamApplicationsReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GiveTeamApplicationsReq.ProtoReflect.Descriptor instead. func (*GiveTeamApplicationsReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{94} + return file_main_proto_rawDescGZIP(), []int{97} } func (x *GiveTeamApplicationsReq) GetId() int64 { @@ -4788,7 +4944,7 @@ type GiveTeamApplicationsRsp struct { func (x *GiveTeamApplicationsRsp) Reset() { *x = GiveTeamApplicationsRsp{} - mi := &file_main_proto_msgTypes[95] + mi := &file_main_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4800,7 +4956,7 @@ func (x *GiveTeamApplicationsRsp) String() string { func (*GiveTeamApplicationsRsp) ProtoMessage() {} func (x *GiveTeamApplicationsRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[95] + mi := &file_main_proto_msgTypes[98] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4813,7 +4969,7 @@ func (x *GiveTeamApplicationsRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GiveTeamApplicationsRsp.ProtoReflect.Descriptor instead. func (*GiveTeamApplicationsRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{95} + return file_main_proto_rawDescGZIP(), []int{98} } func (x *GiveTeamApplicationsRsp) GetError() string { @@ -4833,7 +4989,7 @@ type GetTeamStoryReq struct { func (x *GetTeamStoryReq) Reset() { *x = GetTeamStoryReq{} - mi := &file_main_proto_msgTypes[96] + mi := &file_main_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4845,7 +5001,7 @@ func (x *GetTeamStoryReq) String() string { func (*GetTeamStoryReq) ProtoMessage() {} func (x *GetTeamStoryReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[96] + mi := &file_main_proto_msgTypes[99] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4858,7 +5014,7 @@ func (x *GetTeamStoryReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTeamStoryReq.ProtoReflect.Descriptor instead. func (*GetTeamStoryReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{96} + return file_main_proto_rawDescGZIP(), []int{99} } func (x *GetTeamStoryReq) GetId() int64 { @@ -4886,7 +5042,7 @@ type GetTeamStoryRsp struct { func (x *GetTeamStoryRsp) Reset() { *x = GetTeamStoryRsp{} - mi := &file_main_proto_msgTypes[97] + mi := &file_main_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4898,7 +5054,7 @@ func (x *GetTeamStoryRsp) String() string { func (*GetTeamStoryRsp) ProtoMessage() {} func (x *GetTeamStoryRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[97] + mi := &file_main_proto_msgTypes[100] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4911,7 +5067,7 @@ func (x *GetTeamStoryRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTeamStoryRsp.ProtoReflect.Descriptor instead. func (*GetTeamStoryRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{97} + return file_main_proto_rawDescGZIP(), []int{100} } func (x *GetTeamStoryRsp) GetError() string { @@ -4946,7 +5102,7 @@ type AddTeamActionReq struct { func (x *AddTeamActionReq) Reset() { *x = AddTeamActionReq{} - mi := &file_main_proto_msgTypes[98] + mi := &file_main_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4958,7 +5114,7 @@ func (x *AddTeamActionReq) String() string { func (*AddTeamActionReq) ProtoMessage() {} func (x *AddTeamActionReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[98] + mi := &file_main_proto_msgTypes[101] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4971,7 +5127,7 @@ func (x *AddTeamActionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use AddTeamActionReq.ProtoReflect.Descriptor instead. func (*AddTeamActionReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{98} + return file_main_proto_rawDescGZIP(), []int{101} } func (x *AddTeamActionReq) GetId() int64 { @@ -5004,7 +5160,7 @@ type AddTeamActionRsp struct { func (x *AddTeamActionRsp) Reset() { *x = AddTeamActionRsp{} - mi := &file_main_proto_msgTypes[99] + mi := &file_main_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5016,7 +5172,7 @@ func (x *AddTeamActionRsp) String() string { func (*AddTeamActionRsp) ProtoMessage() {} func (x *AddTeamActionRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[99] + mi := &file_main_proto_msgTypes[102] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5029,7 +5185,7 @@ func (x *AddTeamActionRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use AddTeamActionRsp.ProtoReflect.Descriptor instead. func (*AddTeamActionRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{99} + return file_main_proto_rawDescGZIP(), []int{102} } func (x *AddTeamActionRsp) GetError() string { @@ -5048,7 +5204,7 @@ type DeleteLastTeamActionReq struct { func (x *DeleteLastTeamActionReq) Reset() { *x = DeleteLastTeamActionReq{} - mi := &file_main_proto_msgTypes[100] + mi := &file_main_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5060,7 +5216,7 @@ func (x *DeleteLastTeamActionReq) String() string { func (*DeleteLastTeamActionReq) ProtoMessage() {} func (x *DeleteLastTeamActionReq) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[100] + mi := &file_main_proto_msgTypes[103] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5073,7 +5229,7 @@ func (x *DeleteLastTeamActionReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteLastTeamActionReq.ProtoReflect.Descriptor instead. func (*DeleteLastTeamActionReq) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{100} + return file_main_proto_rawDescGZIP(), []int{103} } func (x *DeleteLastTeamActionReq) GetId() int64 { @@ -5092,7 +5248,7 @@ type DeleteLastTeamActionRsp struct { func (x *DeleteLastTeamActionRsp) Reset() { *x = DeleteLastTeamActionRsp{} - mi := &file_main_proto_msgTypes[101] + mi := &file_main_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5104,7 +5260,7 @@ func (x *DeleteLastTeamActionRsp) String() string { func (*DeleteLastTeamActionRsp) ProtoMessage() {} func (x *DeleteLastTeamActionRsp) ProtoReflect() protoreflect.Message { - mi := &file_main_proto_msgTypes[101] + mi := &file_main_proto_msgTypes[104] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5117,7 +5273,7 @@ func (x *DeleteLastTeamActionRsp) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteLastTeamActionRsp.ProtoReflect.Descriptor instead. func (*DeleteLastTeamActionRsp) Descriptor() ([]byte, []int) { - return file_main_proto_rawDescGZIP(), []int{101} + return file_main_proto_rawDescGZIP(), []int{104} } func (x *DeleteLastTeamActionRsp) GetError() string { @@ -5257,9 +5413,13 @@ const file_main_proto_rawDesc = "" + "\fpublished_at\x18\n" + " \x01(\v2\x1a.google.protobuf.TimestampR\vpublishedAtB\x0e\n" + "\f_descriptionB\b\n" + - "\x06_image\"F\n" + - "\x05Story\x12=\n" + - "\x06places\x18\x01 \x03(\v2%.crabs.evening_detective_server.PlaceR\x06places\"\xb7\x02\n" + + "\x06_image\"\x98\x01\n" + + "\x05Story\x12P\n" + + "\fintroduction\x18\x02 \x01(\v2,.crabs.evening_detective_server.IntroductionR\fintroduction\x12=\n" + + "\x06places\x18\x01 \x03(\v2%.crabs.evening_detective_server.PlaceR\x06places\"8\n" + + "\fIntroduction\x12\x12\n" + + "\x04text\x18\x01 \x01(\tR\x04text\x12\x14\n" + + "\x05audio\x18\x02 \x01(\tR\x05audio\"\xb7\x02\n" + "\x05Place\x12\x12\n" + "\x04code\x18\x01 \x01(\tR\x04code\x12\x12\n" + "\x04name\x18\x02 \x01(\tR\x04name\x12\x12\n" + @@ -5312,6 +5472,11 @@ const file_main_proto_rawDesc = "" + "\x02id\x18\x01 \x01(\x05R\x02id\x12\x12\n" + "\x04code\x18\x02 \x01(\tR\x04code\".\n" + "\x16DeleteScenarioPlaceRsp\x12\x14\n" + + "\x05error\x18\x01 \x01(\tR\x05error\"z\n" + + "\x16UpdateScenarioIntroReq\x12\x0e\n" + + "\x02id\x18\x01 \x01(\x05R\x02id\x12P\n" + + "\fintroduction\x18\x02 \x01(\v2,.crabs.evening_detective_server.IntroductionR\fintroduction\".\n" + + "\x16UpdateScenarioIntroRsp\x12\x14\n" + "\x05error\x18\x01 \x01(\tR\x05error\",\n" + "\x1aDownloadScenarioArchiveReq\x12\x0e\n" + "\x02id\x18\x01 \x01(\x05R\x02id\"@\n" + @@ -5432,7 +5597,7 @@ const file_main_proto_rawDesc = "" + "\x17DeleteLastTeamActionReq\x12\x0e\n" + "\x02id\x18\x01 \x01(\x03R\x02id\"/\n" + "\x17DeleteLastTeamActionRsp\x12\x14\n" + - "\x05error\x18\x01 \x01(\tR\x05error2\xc4S\n" + + "\x05error\x18\x01 \x01(\tR\x05error2\xc2U\n" + "\x16EveningDetectiveServer\x12\xa6\x01\n" + "\x04Ping\x12'.crabs.evening_detective_server.PingReq\x1a'.crabs.evening_detective_server.PingRsp\"L\x92A3\x12)Проверить доступностьb\x06\n" + "\x04\n" + @@ -5510,7 +5675,9 @@ const file_main_proto_rawDesc = "" + "\x13UpdateScenarioPlace\x126.crabs.evening_detective_server.UpdateScenarioPlaceReq\x1a6.crabs.evening_detective_server.UpdateScenarioPlaceRsp\"z\x92AK\n" + "\x1bТочки сценария\x12,Обновить точку сценария\x82\xd3\xe4\x93\x02&:\x01*\x1a!/api/scenarios/{id}/places/{code}\x12\xfc\x01\n" + "\x13DeleteScenarioPlace\x126.crabs.evening_detective_server.DeleteScenarioPlaceReq\x1a6.crabs.evening_detective_server.DeleteScenarioPlaceRsp\"u\x92AI\n" + - "\x1bТочки сценария\x12*Удалить точку сценария\x82\xd3\xe4\x93\x02#*!/api/scenarios/{id}/places/{code}\x12\x98\x02\n" + + "\x1bТочки сценария\x12*Удалить точку сценария\x82\xd3\xe4\x93\x02#*!/api/scenarios/{id}/places/{code}\x12\xfb\x01\n" + + "\x13UpdateScenarioIntro\x126.crabs.evening_detective_server.UpdateScenarioIntroReq\x1a6.crabs.evening_detective_server.UpdateScenarioIntroRsp\"t\x92AF\n" + + "\x10Сценарии\x122Обновить введение сценария\x82\xd3\xe4\x93\x02%:\x01*\x1a /api/scenarios/{id}/introduction\x12\x98\x02\n" + "\x17DownloadScenarioArchive\x12:.crabs.evening_detective_server.DownloadScenarioArchiveReq\x1a\x14.google.api.HttpBody\"\xaa\x01\x92A\x83\x01\n" + "\x10Сценарии\x12oСкачать сценарий архивом (со всеми материалами и картинками)\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/scenarios/{id}/archive\x12\xd2\x01\n" + "\x15UploadScenarioArchive\x12\x14.google.api.HttpBody\x1a8.crabs.evening_detective_server.UploadScenarioArchiveRsp\"i\x92AE\n" + @@ -5581,7 +5748,7 @@ func file_main_proto_rawDescGZIP() []byte { return file_main_proto_rawDescData } -var file_main_proto_msgTypes = make([]protoimpl.MessageInfo, 102) +var file_main_proto_msgTypes = make([]protoimpl.MessageInfo, 105) var file_main_proto_goTypes = []any{ (*PingReq)(nil), // 0: crabs.evening_detective_server.PingReq (*PingRsp)(nil), // 1: crabs.evening_detective_server.PingRsp @@ -5629,68 +5796,71 @@ var file_main_proto_goTypes = []any{ (*GetScenarioRsp)(nil), // 43: crabs.evening_detective_server.GetScenarioRsp (*Scenario)(nil), // 44: crabs.evening_detective_server.Scenario (*Story)(nil), // 45: crabs.evening_detective_server.Story - (*Place)(nil), // 46: crabs.evening_detective_server.Place - (*Application)(nil), // 47: crabs.evening_detective_server.Application - (*Door)(nil), // 48: crabs.evening_detective_server.Door - (*Key)(nil), // 49: crabs.evening_detective_server.Key - (*UpdateScenarioReq)(nil), // 50: crabs.evening_detective_server.UpdateScenarioReq - (*UpdateScenarioRsp)(nil), // 51: crabs.evening_detective_server.UpdateScenarioRsp - (*PublicScenarioReq)(nil), // 52: crabs.evening_detective_server.PublicScenarioReq - (*PublicScenarioRsp)(nil), // 53: crabs.evening_detective_server.PublicScenarioRsp - (*DraftScenarioReq)(nil), // 54: crabs.evening_detective_server.DraftScenarioReq - (*DraftScenarioRsp)(nil), // 55: crabs.evening_detective_server.DraftScenarioRsp - (*DeleteScenarioReq)(nil), // 56: crabs.evening_detective_server.DeleteScenarioReq - (*DeleteScenarioRsp)(nil), // 57: crabs.evening_detective_server.DeleteScenarioRsp - (*AddScenarioPlaceReq)(nil), // 58: crabs.evening_detective_server.AddScenarioPlaceReq - (*AddScenarioPlaceRsp)(nil), // 59: crabs.evening_detective_server.AddScenarioPlaceRsp - (*UpdateScenarioPlaceReq)(nil), // 60: crabs.evening_detective_server.UpdateScenarioPlaceReq - (*UpdateScenarioPlaceRsp)(nil), // 61: crabs.evening_detective_server.UpdateScenarioPlaceRsp - (*DeleteScenarioPlaceReq)(nil), // 62: crabs.evening_detective_server.DeleteScenarioPlaceReq - (*DeleteScenarioPlaceRsp)(nil), // 63: crabs.evening_detective_server.DeleteScenarioPlaceRsp - (*DownloadScenarioArchiveReq)(nil), // 64: crabs.evening_detective_server.DownloadScenarioArchiveReq - (*UploadScenarioArchiveRsp)(nil), // 65: crabs.evening_detective_server.UploadScenarioArchiveRsp - (*AddGameReq)(nil), // 66: crabs.evening_detective_server.AddGameReq - (*AddGameRsp)(nil), // 67: crabs.evening_detective_server.AddGameRsp - (*GetGamesReq)(nil), // 68: crabs.evening_detective_server.GetGamesReq - (*GetGamesRsp)(nil), // 69: crabs.evening_detective_server.GetGamesRsp - (*Game)(nil), // 70: crabs.evening_detective_server.Game - (*Team)(nil), // 71: crabs.evening_detective_server.Team - (*GetGameReq)(nil), // 72: crabs.evening_detective_server.GetGameReq - (*GetGameRsp)(nil), // 73: crabs.evening_detective_server.GetGameRsp - (*UpdateGameReq)(nil), // 74: crabs.evening_detective_server.UpdateGameReq - (*UpdateGameRsp)(nil), // 75: crabs.evening_detective_server.UpdateGameRsp - (*StartGameReq)(nil), // 76: crabs.evening_detective_server.StartGameReq - (*StartGameRsp)(nil), // 77: crabs.evening_detective_server.StartGameRsp - (*PauseGameReq)(nil), // 78: crabs.evening_detective_server.PauseGameReq - (*PauseGameRsp)(nil), // 79: crabs.evening_detective_server.PauseGameRsp - (*PlayGameReq)(nil), // 80: crabs.evening_detective_server.PlayGameReq - (*PlayGameRsp)(nil), // 81: crabs.evening_detective_server.PlayGameRsp - (*FinishGameReq)(nil), // 82: crabs.evening_detective_server.FinishGameReq - (*FinishGameRsp)(nil), // 83: crabs.evening_detective_server.FinishGameRsp - (*ResetGameReq)(nil), // 84: crabs.evening_detective_server.ResetGameReq - (*ResetGameRsp)(nil), // 85: crabs.evening_detective_server.ResetGameRsp - (*DeleteGameReq)(nil), // 86: crabs.evening_detective_server.DeleteGameReq - (*DeleteGameRsp)(nil), // 87: crabs.evening_detective_server.DeleteGameRsp - (*AddTeamReq)(nil), // 88: crabs.evening_detective_server.AddTeamReq - (*AddTeamRsp)(nil), // 89: crabs.evening_detective_server.AddTeamRsp - (*UpdateTeamReq)(nil), // 90: crabs.evening_detective_server.UpdateTeamReq - (*UpdateTeamRsp)(nil), // 91: crabs.evening_detective_server.UpdateTeamRsp - (*DeleteTeamReq)(nil), // 92: crabs.evening_detective_server.DeleteTeamReq - (*DeleteTeamRsp)(nil), // 93: crabs.evening_detective_server.DeleteTeamRsp - (*GiveTeamApplicationsReq)(nil), // 94: crabs.evening_detective_server.GiveTeamApplicationsReq - (*GiveTeamApplicationsRsp)(nil), // 95: crabs.evening_detective_server.GiveTeamApplicationsRsp - (*GetTeamStoryReq)(nil), // 96: crabs.evening_detective_server.GetTeamStoryReq - (*GetTeamStoryRsp)(nil), // 97: crabs.evening_detective_server.GetTeamStoryRsp - (*AddTeamActionReq)(nil), // 98: crabs.evening_detective_server.AddTeamActionReq - (*AddTeamActionRsp)(nil), // 99: crabs.evening_detective_server.AddTeamActionRsp - (*DeleteLastTeamActionReq)(nil), // 100: crabs.evening_detective_server.DeleteLastTeamActionReq - (*DeleteLastTeamActionRsp)(nil), // 101: crabs.evening_detective_server.DeleteLastTeamActionRsp - (*timestamppb.Timestamp)(nil), // 102: google.protobuf.Timestamp - (*httpbody.HttpBody)(nil), // 103: google.api.HttpBody + (*Introduction)(nil), // 46: crabs.evening_detective_server.Introduction + (*Place)(nil), // 47: crabs.evening_detective_server.Place + (*Application)(nil), // 48: crabs.evening_detective_server.Application + (*Door)(nil), // 49: crabs.evening_detective_server.Door + (*Key)(nil), // 50: crabs.evening_detective_server.Key + (*UpdateScenarioReq)(nil), // 51: crabs.evening_detective_server.UpdateScenarioReq + (*UpdateScenarioRsp)(nil), // 52: crabs.evening_detective_server.UpdateScenarioRsp + (*PublicScenarioReq)(nil), // 53: crabs.evening_detective_server.PublicScenarioReq + (*PublicScenarioRsp)(nil), // 54: crabs.evening_detective_server.PublicScenarioRsp + (*DraftScenarioReq)(nil), // 55: crabs.evening_detective_server.DraftScenarioReq + (*DraftScenarioRsp)(nil), // 56: crabs.evening_detective_server.DraftScenarioRsp + (*DeleteScenarioReq)(nil), // 57: crabs.evening_detective_server.DeleteScenarioReq + (*DeleteScenarioRsp)(nil), // 58: crabs.evening_detective_server.DeleteScenarioRsp + (*AddScenarioPlaceReq)(nil), // 59: crabs.evening_detective_server.AddScenarioPlaceReq + (*AddScenarioPlaceRsp)(nil), // 60: crabs.evening_detective_server.AddScenarioPlaceRsp + (*UpdateScenarioPlaceReq)(nil), // 61: crabs.evening_detective_server.UpdateScenarioPlaceReq + (*UpdateScenarioPlaceRsp)(nil), // 62: crabs.evening_detective_server.UpdateScenarioPlaceRsp + (*DeleteScenarioPlaceReq)(nil), // 63: crabs.evening_detective_server.DeleteScenarioPlaceReq + (*DeleteScenarioPlaceRsp)(nil), // 64: crabs.evening_detective_server.DeleteScenarioPlaceRsp + (*UpdateScenarioIntroReq)(nil), // 65: crabs.evening_detective_server.UpdateScenarioIntroReq + (*UpdateScenarioIntroRsp)(nil), // 66: crabs.evening_detective_server.UpdateScenarioIntroRsp + (*DownloadScenarioArchiveReq)(nil), // 67: crabs.evening_detective_server.DownloadScenarioArchiveReq + (*UploadScenarioArchiveRsp)(nil), // 68: crabs.evening_detective_server.UploadScenarioArchiveRsp + (*AddGameReq)(nil), // 69: crabs.evening_detective_server.AddGameReq + (*AddGameRsp)(nil), // 70: crabs.evening_detective_server.AddGameRsp + (*GetGamesReq)(nil), // 71: crabs.evening_detective_server.GetGamesReq + (*GetGamesRsp)(nil), // 72: crabs.evening_detective_server.GetGamesRsp + (*Game)(nil), // 73: crabs.evening_detective_server.Game + (*Team)(nil), // 74: crabs.evening_detective_server.Team + (*GetGameReq)(nil), // 75: crabs.evening_detective_server.GetGameReq + (*GetGameRsp)(nil), // 76: crabs.evening_detective_server.GetGameRsp + (*UpdateGameReq)(nil), // 77: crabs.evening_detective_server.UpdateGameReq + (*UpdateGameRsp)(nil), // 78: crabs.evening_detective_server.UpdateGameRsp + (*StartGameReq)(nil), // 79: crabs.evening_detective_server.StartGameReq + (*StartGameRsp)(nil), // 80: crabs.evening_detective_server.StartGameRsp + (*PauseGameReq)(nil), // 81: crabs.evening_detective_server.PauseGameReq + (*PauseGameRsp)(nil), // 82: crabs.evening_detective_server.PauseGameRsp + (*PlayGameReq)(nil), // 83: crabs.evening_detective_server.PlayGameReq + (*PlayGameRsp)(nil), // 84: crabs.evening_detective_server.PlayGameRsp + (*FinishGameReq)(nil), // 85: crabs.evening_detective_server.FinishGameReq + (*FinishGameRsp)(nil), // 86: crabs.evening_detective_server.FinishGameRsp + (*ResetGameReq)(nil), // 87: crabs.evening_detective_server.ResetGameReq + (*ResetGameRsp)(nil), // 88: crabs.evening_detective_server.ResetGameRsp + (*DeleteGameReq)(nil), // 89: crabs.evening_detective_server.DeleteGameReq + (*DeleteGameRsp)(nil), // 90: crabs.evening_detective_server.DeleteGameRsp + (*AddTeamReq)(nil), // 91: crabs.evening_detective_server.AddTeamReq + (*AddTeamRsp)(nil), // 92: crabs.evening_detective_server.AddTeamRsp + (*UpdateTeamReq)(nil), // 93: crabs.evening_detective_server.UpdateTeamReq + (*UpdateTeamRsp)(nil), // 94: crabs.evening_detective_server.UpdateTeamRsp + (*DeleteTeamReq)(nil), // 95: crabs.evening_detective_server.DeleteTeamReq + (*DeleteTeamRsp)(nil), // 96: crabs.evening_detective_server.DeleteTeamRsp + (*GiveTeamApplicationsReq)(nil), // 97: crabs.evening_detective_server.GiveTeamApplicationsReq + (*GiveTeamApplicationsRsp)(nil), // 98: crabs.evening_detective_server.GiveTeamApplicationsRsp + (*GetTeamStoryReq)(nil), // 99: crabs.evening_detective_server.GetTeamStoryReq + (*GetTeamStoryRsp)(nil), // 100: crabs.evening_detective_server.GetTeamStoryRsp + (*AddTeamActionReq)(nil), // 101: crabs.evening_detective_server.AddTeamActionReq + (*AddTeamActionRsp)(nil), // 102: crabs.evening_detective_server.AddTeamActionRsp + (*DeleteLastTeamActionReq)(nil), // 103: crabs.evening_detective_server.DeleteLastTeamActionReq + (*DeleteLastTeamActionRsp)(nil), // 104: crabs.evening_detective_server.DeleteLastTeamActionRsp + (*timestamppb.Timestamp)(nil), // 105: google.protobuf.Timestamp + (*httpbody.HttpBody)(nil), // 106: google.api.HttpBody } var file_main_proto_depIdxs = []int32{ 22, // 0: crabs.evening_detective_server.GetUsersRsp.users:type_name -> crabs.evening_detective_server.User - 102, // 1: crabs.evening_detective_server.User.created_at:type_name -> google.protobuf.Timestamp + 105, // 1: crabs.evening_detective_server.User.created_at:type_name -> google.protobuf.Timestamp 22, // 2: crabs.evening_detective_server.GetUserByIdRsp.user:type_name -> crabs.evening_detective_server.User 22, // 3: crabs.evening_detective_server.GetMeRsp.user:type_name -> crabs.evening_detective_server.User 44, // 4: crabs.evening_detective_server.GetMyScenariosRsp.scenarios:type_name -> crabs.evening_detective_server.Scenario @@ -5698,131 +5868,135 @@ var file_main_proto_depIdxs = []int32{ 44, // 6: crabs.evening_detective_server.GetScenarioRsp.scenario:type_name -> crabs.evening_detective_server.Scenario 45, // 7: crabs.evening_detective_server.Scenario.story:type_name -> crabs.evening_detective_server.Story 22, // 8: crabs.evening_detective_server.Scenario.author:type_name -> crabs.evening_detective_server.User - 102, // 9: crabs.evening_detective_server.Scenario.updated_at:type_name -> google.protobuf.Timestamp - 102, // 10: crabs.evening_detective_server.Scenario.created_at:type_name -> google.protobuf.Timestamp - 102, // 11: crabs.evening_detective_server.Scenario.published_at:type_name -> google.protobuf.Timestamp - 46, // 12: crabs.evening_detective_server.Story.places:type_name -> crabs.evening_detective_server.Place - 47, // 13: crabs.evening_detective_server.Place.applications:type_name -> crabs.evening_detective_server.Application - 48, // 14: crabs.evening_detective_server.Place.doors:type_name -> crabs.evening_detective_server.Door - 49, // 15: crabs.evening_detective_server.Place.keys:type_name -> crabs.evening_detective_server.Key - 49, // 16: crabs.evening_detective_server.Door.keys:type_name -> crabs.evening_detective_server.Key - 46, // 17: crabs.evening_detective_server.AddScenarioPlaceReq.place:type_name -> crabs.evening_detective_server.Place - 46, // 18: crabs.evening_detective_server.UpdateScenarioPlaceReq.place:type_name -> crabs.evening_detective_server.Place - 102, // 19: crabs.evening_detective_server.AddGameReq.start_at:type_name -> google.protobuf.Timestamp - 70, // 20: crabs.evening_detective_server.GetGamesRsp.games:type_name -> crabs.evening_detective_server.Game - 102, // 21: crabs.evening_detective_server.Game.start_at:type_name -> google.protobuf.Timestamp - 44, // 22: crabs.evening_detective_server.Game.scenario:type_name -> crabs.evening_detective_server.Scenario - 71, // 23: crabs.evening_detective_server.Game.teams:type_name -> crabs.evening_detective_server.Team - 102, // 24: crabs.evening_detective_server.Game.started_at:type_name -> google.protobuf.Timestamp - 102, // 25: crabs.evening_detective_server.Game.ended_at:type_name -> google.protobuf.Timestamp - 47, // 26: crabs.evening_detective_server.Team.applications:type_name -> crabs.evening_detective_server.Application - 70, // 27: crabs.evening_detective_server.GetGameRsp.game:type_name -> crabs.evening_detective_server.Game - 102, // 28: crabs.evening_detective_server.UpdateGameReq.start_at:type_name -> google.protobuf.Timestamp - 45, // 29: crabs.evening_detective_server.GetTeamStoryRsp.story:type_name -> crabs.evening_detective_server.Story - 70, // 30: crabs.evening_detective_server.GetTeamStoryRsp.game:type_name -> crabs.evening_detective_server.Game - 0, // 31: crabs.evening_detective_server.EveningDetectiveServer.Ping:input_type -> crabs.evening_detective_server.PingReq - 2, // 32: crabs.evening_detective_server.EveningDetectiveServer.Echo:input_type -> crabs.evening_detective_server.EchoReq - 4, // 33: crabs.evening_detective_server.EveningDetectiveServer.Signup:input_type -> crabs.evening_detective_server.SignupReq - 6, // 34: crabs.evening_detective_server.EveningDetectiveServer.RefreshPassword:input_type -> crabs.evening_detective_server.RefreshPasswordReq - 8, // 35: crabs.evening_detective_server.EveningDetectiveServer.Login:input_type -> crabs.evening_detective_server.LoginReq - 10, // 36: crabs.evening_detective_server.EveningDetectiveServer.Refresh:input_type -> crabs.evening_detective_server.RefreshReq - 12, // 37: crabs.evening_detective_server.EveningDetectiveServer.DeleteAccount:input_type -> crabs.evening_detective_server.DeleteAccountReq - 14, // 38: crabs.evening_detective_server.EveningDetectiveServer.GetTerms:input_type -> crabs.evening_detective_server.GetTermsReq - 16, // 39: crabs.evening_detective_server.EveningDetectiveServer.GetPrivacy:input_type -> crabs.evening_detective_server.GetPrivacyReq - 18, // 40: crabs.evening_detective_server.EveningDetectiveServer.GetConsent:input_type -> crabs.evening_detective_server.GetConsentReq - 20, // 41: crabs.evening_detective_server.EveningDetectiveServer.GetUsers:input_type -> crabs.evening_detective_server.GetUsersReq - 23, // 42: crabs.evening_detective_server.EveningDetectiveServer.GetUserById:input_type -> crabs.evening_detective_server.GetUserByIdReq - 25, // 43: crabs.evening_detective_server.EveningDetectiveServer.GetMe:input_type -> crabs.evening_detective_server.GetMeReq - 27, // 44: crabs.evening_detective_server.EveningDetectiveServer.AddUserRole:input_type -> crabs.evening_detective_server.AddUserRoleReq - 29, // 45: crabs.evening_detective_server.EveningDetectiveServer.DeleteUserRole:input_type -> crabs.evening_detective_server.DeleteUserRoleReq - 31, // 46: crabs.evening_detective_server.EveningDetectiveServer.GetPermissions:input_type -> crabs.evening_detective_server.GetPermissionsReq - 33, // 47: crabs.evening_detective_server.EveningDetectiveServer.UploadFile:input_type -> crabs.evening_detective_server.UploadFileReq - 35, // 48: crabs.evening_detective_server.EveningDetectiveServer.DownloadFile:input_type -> crabs.evening_detective_server.DownloadFileReq - 36, // 49: crabs.evening_detective_server.EveningDetectiveServer.AddScenario:input_type -> crabs.evening_detective_server.AddScenarioReq - 38, // 50: crabs.evening_detective_server.EveningDetectiveServer.GetMyScenarios:input_type -> crabs.evening_detective_server.GetMyScenariosReq - 40, // 51: crabs.evening_detective_server.EveningDetectiveServer.GetScenariosCatalog:input_type -> crabs.evening_detective_server.GetScenariosCatalogReq - 42, // 52: crabs.evening_detective_server.EveningDetectiveServer.GetFullScenario:input_type -> crabs.evening_detective_server.GetScenarioReq - 42, // 53: crabs.evening_detective_server.EveningDetectiveServer.GetScenario:input_type -> crabs.evening_detective_server.GetScenarioReq - 50, // 54: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenario:input_type -> crabs.evening_detective_server.UpdateScenarioReq - 52, // 55: crabs.evening_detective_server.EveningDetectiveServer.PublicScenario:input_type -> crabs.evening_detective_server.PublicScenarioReq - 54, // 56: crabs.evening_detective_server.EveningDetectiveServer.DraftScenario:input_type -> crabs.evening_detective_server.DraftScenarioReq - 56, // 57: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenario:input_type -> crabs.evening_detective_server.DeleteScenarioReq - 58, // 58: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioPlace:input_type -> crabs.evening_detective_server.AddScenarioPlaceReq - 60, // 59: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioPlace:input_type -> crabs.evening_detective_server.UpdateScenarioPlaceReq - 62, // 60: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioPlace:input_type -> crabs.evening_detective_server.DeleteScenarioPlaceReq - 64, // 61: crabs.evening_detective_server.EveningDetectiveServer.DownloadScenarioArchive:input_type -> crabs.evening_detective_server.DownloadScenarioArchiveReq - 103, // 62: crabs.evening_detective_server.EveningDetectiveServer.UploadScenarioArchive:input_type -> google.api.HttpBody - 66, // 63: crabs.evening_detective_server.EveningDetectiveServer.AddGame:input_type -> crabs.evening_detective_server.AddGameReq - 68, // 64: crabs.evening_detective_server.EveningDetectiveServer.GetGames:input_type -> crabs.evening_detective_server.GetGamesReq - 72, // 65: crabs.evening_detective_server.EveningDetectiveServer.GetGame:input_type -> crabs.evening_detective_server.GetGameReq - 74, // 66: crabs.evening_detective_server.EveningDetectiveServer.UpdateGame:input_type -> crabs.evening_detective_server.UpdateGameReq - 76, // 67: crabs.evening_detective_server.EveningDetectiveServer.StartGame:input_type -> crabs.evening_detective_server.StartGameReq - 78, // 68: crabs.evening_detective_server.EveningDetectiveServer.PauseGame:input_type -> crabs.evening_detective_server.PauseGameReq - 80, // 69: crabs.evening_detective_server.EveningDetectiveServer.PlayGame:input_type -> crabs.evening_detective_server.PlayGameReq - 82, // 70: crabs.evening_detective_server.EveningDetectiveServer.FinishGame:input_type -> crabs.evening_detective_server.FinishGameReq - 84, // 71: crabs.evening_detective_server.EveningDetectiveServer.ResetGame:input_type -> crabs.evening_detective_server.ResetGameReq - 86, // 72: crabs.evening_detective_server.EveningDetectiveServer.DeleteGame:input_type -> crabs.evening_detective_server.DeleteGameReq - 88, // 73: crabs.evening_detective_server.EveningDetectiveServer.AddTeam:input_type -> crabs.evening_detective_server.AddTeamReq - 90, // 74: crabs.evening_detective_server.EveningDetectiveServer.UpdateTeam:input_type -> crabs.evening_detective_server.UpdateTeamReq - 92, // 75: crabs.evening_detective_server.EveningDetectiveServer.DeleteTeam:input_type -> crabs.evening_detective_server.DeleteTeamReq - 94, // 76: crabs.evening_detective_server.EveningDetectiveServer.GiveTeamApplications:input_type -> crabs.evening_detective_server.GiveTeamApplicationsReq - 96, // 77: crabs.evening_detective_server.EveningDetectiveServer.GetTeamStory:input_type -> crabs.evening_detective_server.GetTeamStoryReq - 98, // 78: crabs.evening_detective_server.EveningDetectiveServer.AddTeamAction:input_type -> crabs.evening_detective_server.AddTeamActionReq - 100, // 79: crabs.evening_detective_server.EveningDetectiveServer.DeleteLastTeamAction:input_type -> crabs.evening_detective_server.DeleteLastTeamActionReq - 1, // 80: crabs.evening_detective_server.EveningDetectiveServer.Ping:output_type -> crabs.evening_detective_server.PingRsp - 3, // 81: crabs.evening_detective_server.EveningDetectiveServer.Echo:output_type -> crabs.evening_detective_server.EchoRsp - 5, // 82: crabs.evening_detective_server.EveningDetectiveServer.Signup:output_type -> crabs.evening_detective_server.SignupRsp - 7, // 83: crabs.evening_detective_server.EveningDetectiveServer.RefreshPassword:output_type -> crabs.evening_detective_server.RefreshPasswordRsp - 9, // 84: crabs.evening_detective_server.EveningDetectiveServer.Login:output_type -> crabs.evening_detective_server.LoginRsp - 11, // 85: crabs.evening_detective_server.EveningDetectiveServer.Refresh:output_type -> crabs.evening_detective_server.RefreshRsp - 13, // 86: crabs.evening_detective_server.EveningDetectiveServer.DeleteAccount:output_type -> crabs.evening_detective_server.DeleteAccountRsp - 15, // 87: crabs.evening_detective_server.EveningDetectiveServer.GetTerms:output_type -> crabs.evening_detective_server.GetTermsRsp - 17, // 88: crabs.evening_detective_server.EveningDetectiveServer.GetPrivacy:output_type -> crabs.evening_detective_server.GetPrivacyRsp - 19, // 89: crabs.evening_detective_server.EveningDetectiveServer.GetConsent:output_type -> crabs.evening_detective_server.GetConsentRsp - 21, // 90: crabs.evening_detective_server.EveningDetectiveServer.GetUsers:output_type -> crabs.evening_detective_server.GetUsersRsp - 24, // 91: crabs.evening_detective_server.EveningDetectiveServer.GetUserById:output_type -> crabs.evening_detective_server.GetUserByIdRsp - 26, // 92: crabs.evening_detective_server.EveningDetectiveServer.GetMe:output_type -> crabs.evening_detective_server.GetMeRsp - 28, // 93: crabs.evening_detective_server.EveningDetectiveServer.AddUserRole:output_type -> crabs.evening_detective_server.AddUserRoleRsp - 30, // 94: crabs.evening_detective_server.EveningDetectiveServer.DeleteUserRole:output_type -> crabs.evening_detective_server.DeleteUserRoleRsp - 32, // 95: crabs.evening_detective_server.EveningDetectiveServer.GetPermissions:output_type -> crabs.evening_detective_server.GetPermissionsRsp - 34, // 96: crabs.evening_detective_server.EveningDetectiveServer.UploadFile:output_type -> crabs.evening_detective_server.UploadFileRsp - 103, // 97: crabs.evening_detective_server.EveningDetectiveServer.DownloadFile:output_type -> google.api.HttpBody - 37, // 98: crabs.evening_detective_server.EveningDetectiveServer.AddScenario:output_type -> crabs.evening_detective_server.AddScenarioRsp - 39, // 99: crabs.evening_detective_server.EveningDetectiveServer.GetMyScenarios:output_type -> crabs.evening_detective_server.GetMyScenariosRsp - 41, // 100: crabs.evening_detective_server.EveningDetectiveServer.GetScenariosCatalog:output_type -> crabs.evening_detective_server.GetScenariosCatalogRsp - 43, // 101: crabs.evening_detective_server.EveningDetectiveServer.GetFullScenario:output_type -> crabs.evening_detective_server.GetScenarioRsp - 43, // 102: crabs.evening_detective_server.EveningDetectiveServer.GetScenario:output_type -> crabs.evening_detective_server.GetScenarioRsp - 51, // 103: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenario:output_type -> crabs.evening_detective_server.UpdateScenarioRsp - 53, // 104: crabs.evening_detective_server.EveningDetectiveServer.PublicScenario:output_type -> crabs.evening_detective_server.PublicScenarioRsp - 55, // 105: crabs.evening_detective_server.EveningDetectiveServer.DraftScenario:output_type -> crabs.evening_detective_server.DraftScenarioRsp - 57, // 106: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenario:output_type -> crabs.evening_detective_server.DeleteScenarioRsp - 59, // 107: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioPlace:output_type -> crabs.evening_detective_server.AddScenarioPlaceRsp - 61, // 108: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioPlace:output_type -> crabs.evening_detective_server.UpdateScenarioPlaceRsp - 63, // 109: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioPlace:output_type -> crabs.evening_detective_server.DeleteScenarioPlaceRsp - 103, // 110: crabs.evening_detective_server.EveningDetectiveServer.DownloadScenarioArchive:output_type -> google.api.HttpBody - 65, // 111: crabs.evening_detective_server.EveningDetectiveServer.UploadScenarioArchive:output_type -> crabs.evening_detective_server.UploadScenarioArchiveRsp - 67, // 112: crabs.evening_detective_server.EveningDetectiveServer.AddGame:output_type -> crabs.evening_detective_server.AddGameRsp - 69, // 113: crabs.evening_detective_server.EveningDetectiveServer.GetGames:output_type -> crabs.evening_detective_server.GetGamesRsp - 73, // 114: crabs.evening_detective_server.EveningDetectiveServer.GetGame:output_type -> crabs.evening_detective_server.GetGameRsp - 75, // 115: crabs.evening_detective_server.EveningDetectiveServer.UpdateGame:output_type -> crabs.evening_detective_server.UpdateGameRsp - 77, // 116: crabs.evening_detective_server.EveningDetectiveServer.StartGame:output_type -> crabs.evening_detective_server.StartGameRsp - 79, // 117: crabs.evening_detective_server.EveningDetectiveServer.PauseGame:output_type -> crabs.evening_detective_server.PauseGameRsp - 81, // 118: crabs.evening_detective_server.EveningDetectiveServer.PlayGame:output_type -> crabs.evening_detective_server.PlayGameRsp - 83, // 119: crabs.evening_detective_server.EveningDetectiveServer.FinishGame:output_type -> crabs.evening_detective_server.FinishGameRsp - 85, // 120: crabs.evening_detective_server.EveningDetectiveServer.ResetGame:output_type -> crabs.evening_detective_server.ResetGameRsp - 87, // 121: crabs.evening_detective_server.EveningDetectiveServer.DeleteGame:output_type -> crabs.evening_detective_server.DeleteGameRsp - 89, // 122: crabs.evening_detective_server.EveningDetectiveServer.AddTeam:output_type -> crabs.evening_detective_server.AddTeamRsp - 91, // 123: crabs.evening_detective_server.EveningDetectiveServer.UpdateTeam:output_type -> crabs.evening_detective_server.UpdateTeamRsp - 93, // 124: crabs.evening_detective_server.EveningDetectiveServer.DeleteTeam:output_type -> crabs.evening_detective_server.DeleteTeamRsp - 95, // 125: crabs.evening_detective_server.EveningDetectiveServer.GiveTeamApplications:output_type -> crabs.evening_detective_server.GiveTeamApplicationsRsp - 97, // 126: crabs.evening_detective_server.EveningDetectiveServer.GetTeamStory:output_type -> crabs.evening_detective_server.GetTeamStoryRsp - 99, // 127: crabs.evening_detective_server.EveningDetectiveServer.AddTeamAction:output_type -> crabs.evening_detective_server.AddTeamActionRsp - 101, // 128: crabs.evening_detective_server.EveningDetectiveServer.DeleteLastTeamAction:output_type -> crabs.evening_detective_server.DeleteLastTeamActionRsp - 80, // [80:129] is the sub-list for method output_type - 31, // [31:80] is the sub-list for method input_type - 31, // [31:31] is the sub-list for extension type_name - 31, // [31:31] is the sub-list for extension extendee - 0, // [0:31] is the sub-list for field type_name + 105, // 9: crabs.evening_detective_server.Scenario.updated_at:type_name -> google.protobuf.Timestamp + 105, // 10: crabs.evening_detective_server.Scenario.created_at:type_name -> google.protobuf.Timestamp + 105, // 11: crabs.evening_detective_server.Scenario.published_at:type_name -> google.protobuf.Timestamp + 46, // 12: crabs.evening_detective_server.Story.introduction:type_name -> crabs.evening_detective_server.Introduction + 47, // 13: crabs.evening_detective_server.Story.places:type_name -> crabs.evening_detective_server.Place + 48, // 14: crabs.evening_detective_server.Place.applications:type_name -> crabs.evening_detective_server.Application + 49, // 15: crabs.evening_detective_server.Place.doors:type_name -> crabs.evening_detective_server.Door + 50, // 16: crabs.evening_detective_server.Place.keys:type_name -> crabs.evening_detective_server.Key + 50, // 17: crabs.evening_detective_server.Door.keys:type_name -> crabs.evening_detective_server.Key + 47, // 18: crabs.evening_detective_server.AddScenarioPlaceReq.place:type_name -> crabs.evening_detective_server.Place + 47, // 19: crabs.evening_detective_server.UpdateScenarioPlaceReq.place:type_name -> crabs.evening_detective_server.Place + 46, // 20: crabs.evening_detective_server.UpdateScenarioIntroReq.introduction:type_name -> crabs.evening_detective_server.Introduction + 105, // 21: crabs.evening_detective_server.AddGameReq.start_at:type_name -> google.protobuf.Timestamp + 73, // 22: crabs.evening_detective_server.GetGamesRsp.games:type_name -> crabs.evening_detective_server.Game + 105, // 23: crabs.evening_detective_server.Game.start_at:type_name -> google.protobuf.Timestamp + 44, // 24: crabs.evening_detective_server.Game.scenario:type_name -> crabs.evening_detective_server.Scenario + 74, // 25: crabs.evening_detective_server.Game.teams:type_name -> crabs.evening_detective_server.Team + 105, // 26: crabs.evening_detective_server.Game.started_at:type_name -> google.protobuf.Timestamp + 105, // 27: crabs.evening_detective_server.Game.ended_at:type_name -> google.protobuf.Timestamp + 48, // 28: crabs.evening_detective_server.Team.applications:type_name -> crabs.evening_detective_server.Application + 73, // 29: crabs.evening_detective_server.GetGameRsp.game:type_name -> crabs.evening_detective_server.Game + 105, // 30: crabs.evening_detective_server.UpdateGameReq.start_at:type_name -> google.protobuf.Timestamp + 45, // 31: crabs.evening_detective_server.GetTeamStoryRsp.story:type_name -> crabs.evening_detective_server.Story + 73, // 32: crabs.evening_detective_server.GetTeamStoryRsp.game:type_name -> crabs.evening_detective_server.Game + 0, // 33: crabs.evening_detective_server.EveningDetectiveServer.Ping:input_type -> crabs.evening_detective_server.PingReq + 2, // 34: crabs.evening_detective_server.EveningDetectiveServer.Echo:input_type -> crabs.evening_detective_server.EchoReq + 4, // 35: crabs.evening_detective_server.EveningDetectiveServer.Signup:input_type -> crabs.evening_detective_server.SignupReq + 6, // 36: crabs.evening_detective_server.EveningDetectiveServer.RefreshPassword:input_type -> crabs.evening_detective_server.RefreshPasswordReq + 8, // 37: crabs.evening_detective_server.EveningDetectiveServer.Login:input_type -> crabs.evening_detective_server.LoginReq + 10, // 38: crabs.evening_detective_server.EveningDetectiveServer.Refresh:input_type -> crabs.evening_detective_server.RefreshReq + 12, // 39: crabs.evening_detective_server.EveningDetectiveServer.DeleteAccount:input_type -> crabs.evening_detective_server.DeleteAccountReq + 14, // 40: crabs.evening_detective_server.EveningDetectiveServer.GetTerms:input_type -> crabs.evening_detective_server.GetTermsReq + 16, // 41: crabs.evening_detective_server.EveningDetectiveServer.GetPrivacy:input_type -> crabs.evening_detective_server.GetPrivacyReq + 18, // 42: crabs.evening_detective_server.EveningDetectiveServer.GetConsent:input_type -> crabs.evening_detective_server.GetConsentReq + 20, // 43: crabs.evening_detective_server.EveningDetectiveServer.GetUsers:input_type -> crabs.evening_detective_server.GetUsersReq + 23, // 44: crabs.evening_detective_server.EveningDetectiveServer.GetUserById:input_type -> crabs.evening_detective_server.GetUserByIdReq + 25, // 45: crabs.evening_detective_server.EveningDetectiveServer.GetMe:input_type -> crabs.evening_detective_server.GetMeReq + 27, // 46: crabs.evening_detective_server.EveningDetectiveServer.AddUserRole:input_type -> crabs.evening_detective_server.AddUserRoleReq + 29, // 47: crabs.evening_detective_server.EveningDetectiveServer.DeleteUserRole:input_type -> crabs.evening_detective_server.DeleteUserRoleReq + 31, // 48: crabs.evening_detective_server.EveningDetectiveServer.GetPermissions:input_type -> crabs.evening_detective_server.GetPermissionsReq + 33, // 49: crabs.evening_detective_server.EveningDetectiveServer.UploadFile:input_type -> crabs.evening_detective_server.UploadFileReq + 35, // 50: crabs.evening_detective_server.EveningDetectiveServer.DownloadFile:input_type -> crabs.evening_detective_server.DownloadFileReq + 36, // 51: crabs.evening_detective_server.EveningDetectiveServer.AddScenario:input_type -> crabs.evening_detective_server.AddScenarioReq + 38, // 52: crabs.evening_detective_server.EveningDetectiveServer.GetMyScenarios:input_type -> crabs.evening_detective_server.GetMyScenariosReq + 40, // 53: crabs.evening_detective_server.EveningDetectiveServer.GetScenariosCatalog:input_type -> crabs.evening_detective_server.GetScenariosCatalogReq + 42, // 54: crabs.evening_detective_server.EveningDetectiveServer.GetFullScenario:input_type -> crabs.evening_detective_server.GetScenarioReq + 42, // 55: crabs.evening_detective_server.EveningDetectiveServer.GetScenario:input_type -> crabs.evening_detective_server.GetScenarioReq + 51, // 56: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenario:input_type -> crabs.evening_detective_server.UpdateScenarioReq + 53, // 57: crabs.evening_detective_server.EveningDetectiveServer.PublicScenario:input_type -> crabs.evening_detective_server.PublicScenarioReq + 55, // 58: crabs.evening_detective_server.EveningDetectiveServer.DraftScenario:input_type -> crabs.evening_detective_server.DraftScenarioReq + 57, // 59: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenario:input_type -> crabs.evening_detective_server.DeleteScenarioReq + 59, // 60: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioPlace:input_type -> crabs.evening_detective_server.AddScenarioPlaceReq + 61, // 61: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioPlace:input_type -> crabs.evening_detective_server.UpdateScenarioPlaceReq + 63, // 62: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioPlace:input_type -> crabs.evening_detective_server.DeleteScenarioPlaceReq + 65, // 63: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioIntro:input_type -> crabs.evening_detective_server.UpdateScenarioIntroReq + 67, // 64: crabs.evening_detective_server.EveningDetectiveServer.DownloadScenarioArchive:input_type -> crabs.evening_detective_server.DownloadScenarioArchiveReq + 106, // 65: crabs.evening_detective_server.EveningDetectiveServer.UploadScenarioArchive:input_type -> google.api.HttpBody + 69, // 66: crabs.evening_detective_server.EveningDetectiveServer.AddGame:input_type -> crabs.evening_detective_server.AddGameReq + 71, // 67: crabs.evening_detective_server.EveningDetectiveServer.GetGames:input_type -> crabs.evening_detective_server.GetGamesReq + 75, // 68: crabs.evening_detective_server.EveningDetectiveServer.GetGame:input_type -> crabs.evening_detective_server.GetGameReq + 77, // 69: crabs.evening_detective_server.EveningDetectiveServer.UpdateGame:input_type -> crabs.evening_detective_server.UpdateGameReq + 79, // 70: crabs.evening_detective_server.EveningDetectiveServer.StartGame:input_type -> crabs.evening_detective_server.StartGameReq + 81, // 71: crabs.evening_detective_server.EveningDetectiveServer.PauseGame:input_type -> crabs.evening_detective_server.PauseGameReq + 83, // 72: crabs.evening_detective_server.EveningDetectiveServer.PlayGame:input_type -> crabs.evening_detective_server.PlayGameReq + 85, // 73: crabs.evening_detective_server.EveningDetectiveServer.FinishGame:input_type -> crabs.evening_detective_server.FinishGameReq + 87, // 74: crabs.evening_detective_server.EveningDetectiveServer.ResetGame:input_type -> crabs.evening_detective_server.ResetGameReq + 89, // 75: crabs.evening_detective_server.EveningDetectiveServer.DeleteGame:input_type -> crabs.evening_detective_server.DeleteGameReq + 91, // 76: crabs.evening_detective_server.EveningDetectiveServer.AddTeam:input_type -> crabs.evening_detective_server.AddTeamReq + 93, // 77: crabs.evening_detective_server.EveningDetectiveServer.UpdateTeam:input_type -> crabs.evening_detective_server.UpdateTeamReq + 95, // 78: crabs.evening_detective_server.EveningDetectiveServer.DeleteTeam:input_type -> crabs.evening_detective_server.DeleteTeamReq + 97, // 79: crabs.evening_detective_server.EveningDetectiveServer.GiveTeamApplications:input_type -> crabs.evening_detective_server.GiveTeamApplicationsReq + 99, // 80: crabs.evening_detective_server.EveningDetectiveServer.GetTeamStory:input_type -> crabs.evening_detective_server.GetTeamStoryReq + 101, // 81: crabs.evening_detective_server.EveningDetectiveServer.AddTeamAction:input_type -> crabs.evening_detective_server.AddTeamActionReq + 103, // 82: crabs.evening_detective_server.EveningDetectiveServer.DeleteLastTeamAction:input_type -> crabs.evening_detective_server.DeleteLastTeamActionReq + 1, // 83: crabs.evening_detective_server.EveningDetectiveServer.Ping:output_type -> crabs.evening_detective_server.PingRsp + 3, // 84: crabs.evening_detective_server.EveningDetectiveServer.Echo:output_type -> crabs.evening_detective_server.EchoRsp + 5, // 85: crabs.evening_detective_server.EveningDetectiveServer.Signup:output_type -> crabs.evening_detective_server.SignupRsp + 7, // 86: crabs.evening_detective_server.EveningDetectiveServer.RefreshPassword:output_type -> crabs.evening_detective_server.RefreshPasswordRsp + 9, // 87: crabs.evening_detective_server.EveningDetectiveServer.Login:output_type -> crabs.evening_detective_server.LoginRsp + 11, // 88: crabs.evening_detective_server.EveningDetectiveServer.Refresh:output_type -> crabs.evening_detective_server.RefreshRsp + 13, // 89: crabs.evening_detective_server.EveningDetectiveServer.DeleteAccount:output_type -> crabs.evening_detective_server.DeleteAccountRsp + 15, // 90: crabs.evening_detective_server.EveningDetectiveServer.GetTerms:output_type -> crabs.evening_detective_server.GetTermsRsp + 17, // 91: crabs.evening_detective_server.EveningDetectiveServer.GetPrivacy:output_type -> crabs.evening_detective_server.GetPrivacyRsp + 19, // 92: crabs.evening_detective_server.EveningDetectiveServer.GetConsent:output_type -> crabs.evening_detective_server.GetConsentRsp + 21, // 93: crabs.evening_detective_server.EveningDetectiveServer.GetUsers:output_type -> crabs.evening_detective_server.GetUsersRsp + 24, // 94: crabs.evening_detective_server.EveningDetectiveServer.GetUserById:output_type -> crabs.evening_detective_server.GetUserByIdRsp + 26, // 95: crabs.evening_detective_server.EveningDetectiveServer.GetMe:output_type -> crabs.evening_detective_server.GetMeRsp + 28, // 96: crabs.evening_detective_server.EveningDetectiveServer.AddUserRole:output_type -> crabs.evening_detective_server.AddUserRoleRsp + 30, // 97: crabs.evening_detective_server.EveningDetectiveServer.DeleteUserRole:output_type -> crabs.evening_detective_server.DeleteUserRoleRsp + 32, // 98: crabs.evening_detective_server.EveningDetectiveServer.GetPermissions:output_type -> crabs.evening_detective_server.GetPermissionsRsp + 34, // 99: crabs.evening_detective_server.EveningDetectiveServer.UploadFile:output_type -> crabs.evening_detective_server.UploadFileRsp + 106, // 100: crabs.evening_detective_server.EveningDetectiveServer.DownloadFile:output_type -> google.api.HttpBody + 37, // 101: crabs.evening_detective_server.EveningDetectiveServer.AddScenario:output_type -> crabs.evening_detective_server.AddScenarioRsp + 39, // 102: crabs.evening_detective_server.EveningDetectiveServer.GetMyScenarios:output_type -> crabs.evening_detective_server.GetMyScenariosRsp + 41, // 103: crabs.evening_detective_server.EveningDetectiveServer.GetScenariosCatalog:output_type -> crabs.evening_detective_server.GetScenariosCatalogRsp + 43, // 104: crabs.evening_detective_server.EveningDetectiveServer.GetFullScenario:output_type -> crabs.evening_detective_server.GetScenarioRsp + 43, // 105: crabs.evening_detective_server.EveningDetectiveServer.GetScenario:output_type -> crabs.evening_detective_server.GetScenarioRsp + 52, // 106: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenario:output_type -> crabs.evening_detective_server.UpdateScenarioRsp + 54, // 107: crabs.evening_detective_server.EveningDetectiveServer.PublicScenario:output_type -> crabs.evening_detective_server.PublicScenarioRsp + 56, // 108: crabs.evening_detective_server.EveningDetectiveServer.DraftScenario:output_type -> crabs.evening_detective_server.DraftScenarioRsp + 58, // 109: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenario:output_type -> crabs.evening_detective_server.DeleteScenarioRsp + 60, // 110: crabs.evening_detective_server.EveningDetectiveServer.AddScenarioPlace:output_type -> crabs.evening_detective_server.AddScenarioPlaceRsp + 62, // 111: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioPlace:output_type -> crabs.evening_detective_server.UpdateScenarioPlaceRsp + 64, // 112: crabs.evening_detective_server.EveningDetectiveServer.DeleteScenarioPlace:output_type -> crabs.evening_detective_server.DeleteScenarioPlaceRsp + 66, // 113: crabs.evening_detective_server.EveningDetectiveServer.UpdateScenarioIntro:output_type -> crabs.evening_detective_server.UpdateScenarioIntroRsp + 106, // 114: crabs.evening_detective_server.EveningDetectiveServer.DownloadScenarioArchive:output_type -> google.api.HttpBody + 68, // 115: crabs.evening_detective_server.EveningDetectiveServer.UploadScenarioArchive:output_type -> crabs.evening_detective_server.UploadScenarioArchiveRsp + 70, // 116: crabs.evening_detective_server.EveningDetectiveServer.AddGame:output_type -> crabs.evening_detective_server.AddGameRsp + 72, // 117: crabs.evening_detective_server.EveningDetectiveServer.GetGames:output_type -> crabs.evening_detective_server.GetGamesRsp + 76, // 118: crabs.evening_detective_server.EveningDetectiveServer.GetGame:output_type -> crabs.evening_detective_server.GetGameRsp + 78, // 119: crabs.evening_detective_server.EveningDetectiveServer.UpdateGame:output_type -> crabs.evening_detective_server.UpdateGameRsp + 80, // 120: crabs.evening_detective_server.EveningDetectiveServer.StartGame:output_type -> crabs.evening_detective_server.StartGameRsp + 82, // 121: crabs.evening_detective_server.EveningDetectiveServer.PauseGame:output_type -> crabs.evening_detective_server.PauseGameRsp + 84, // 122: crabs.evening_detective_server.EveningDetectiveServer.PlayGame:output_type -> crabs.evening_detective_server.PlayGameRsp + 86, // 123: crabs.evening_detective_server.EveningDetectiveServer.FinishGame:output_type -> crabs.evening_detective_server.FinishGameRsp + 88, // 124: crabs.evening_detective_server.EveningDetectiveServer.ResetGame:output_type -> crabs.evening_detective_server.ResetGameRsp + 90, // 125: crabs.evening_detective_server.EveningDetectiveServer.DeleteGame:output_type -> crabs.evening_detective_server.DeleteGameRsp + 92, // 126: crabs.evening_detective_server.EveningDetectiveServer.AddTeam:output_type -> crabs.evening_detective_server.AddTeamRsp + 94, // 127: crabs.evening_detective_server.EveningDetectiveServer.UpdateTeam:output_type -> crabs.evening_detective_server.UpdateTeamRsp + 96, // 128: crabs.evening_detective_server.EveningDetectiveServer.DeleteTeam:output_type -> crabs.evening_detective_server.DeleteTeamRsp + 98, // 129: crabs.evening_detective_server.EveningDetectiveServer.GiveTeamApplications:output_type -> crabs.evening_detective_server.GiveTeamApplicationsRsp + 100, // 130: crabs.evening_detective_server.EveningDetectiveServer.GetTeamStory:output_type -> crabs.evening_detective_server.GetTeamStoryRsp + 102, // 131: crabs.evening_detective_server.EveningDetectiveServer.AddTeamAction:output_type -> crabs.evening_detective_server.AddTeamActionRsp + 104, // 132: crabs.evening_detective_server.EveningDetectiveServer.DeleteLastTeamAction:output_type -> crabs.evening_detective_server.DeleteLastTeamActionRsp + 83, // [83:133] is the sub-list for method output_type + 33, // [33:83] is the sub-list for method input_type + 33, // [33:33] is the sub-list for extension type_name + 33, // [33:33] is the sub-list for extension extendee + 0, // [0:33] is the sub-list for field type_name } func init() { file_main_proto_init() } @@ -5831,14 +6005,14 @@ func file_main_proto_init() { return } file_main_proto_msgTypes[44].OneofWrappers = []any{} - file_main_proto_msgTypes[70].OneofWrappers = []any{} + file_main_proto_msgTypes[73].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: 0, - NumMessages: 102, + NumMessages: 105, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/main.pb.gw.go b/proto/main.pb.gw.go index 717e817..d3d40a1 100644 --- a/proto/main.pb.gw.go +++ b/proto/main.pb.gw.go @@ -1024,6 +1024,51 @@ func local_request_EveningDetectiveServer_DeleteScenarioPlace_0(ctx context.Cont return msg, metadata, err } +func request_EveningDetectiveServer_UpdateScenarioIntro_0(ctx context.Context, marshaler runtime.Marshaler, client EveningDetectiveServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq UpdateScenarioIntroReq + 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.UpdateScenarioIntro(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_EveningDetectiveServer_UpdateScenarioIntro_0(ctx context.Context, marshaler runtime.Marshaler, server EveningDetectiveServerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq UpdateScenarioIntroReq + 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.UpdateScenarioIntro(ctx, &protoReq) + return msg, metadata, err +} + func request_EveningDetectiveServer_DownloadScenarioArchive_0(ctx context.Context, marshaler runtime.Marshaler, client EveningDetectiveServerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var ( protoReq DownloadScenarioArchiveReq @@ -2385,6 +2430,26 @@ func RegisterEveningDetectiveServerHandlerServer(ctx context.Context, mux *runti } forward_EveningDetectiveServer_DeleteScenarioPlace_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) + mux.Handle(http.MethodPut, pattern_EveningDetectiveServer_UpdateScenarioIntro_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/UpdateScenarioIntro", runtime.WithHTTPPathPattern("/api/scenarios/{id}/introduction")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_EveningDetectiveServer_UpdateScenarioIntro_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_UpdateScenarioIntro_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) mux.Handle(http.MethodGet, pattern_EveningDetectiveServer_DownloadScenarioArchive_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -3315,6 +3380,23 @@ func RegisterEveningDetectiveServerHandlerClient(ctx context.Context, mux *runti } forward_EveningDetectiveServer_DeleteScenarioPlace_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) + mux.Handle(http.MethodPut, pattern_EveningDetectiveServer_UpdateScenarioIntro_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/UpdateScenarioIntro", runtime.WithHTTPPathPattern("/api/scenarios/{id}/introduction")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_EveningDetectiveServer_UpdateScenarioIntro_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_UpdateScenarioIntro_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) mux.Handle(http.MethodGet, pattern_EveningDetectiveServer_DownloadScenarioArchive_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -3672,6 +3754,7 @@ var ( pattern_EveningDetectiveServer_AddScenarioPlace_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "scenarios", "id", "places"}, "")) pattern_EveningDetectiveServer_UpdateScenarioPlace_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "scenarios", "id", "places", "code"}, "")) pattern_EveningDetectiveServer_DeleteScenarioPlace_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "scenarios", "id", "places", "code"}, "")) + pattern_EveningDetectiveServer_UpdateScenarioIntro_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "scenarios", "id", "introduction"}, "")) pattern_EveningDetectiveServer_DownloadScenarioArchive_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3}, []string{"api", "scenarios", "id", "archive"}, "")) pattern_EveningDetectiveServer_UploadScenarioArchive_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "scenarios", "archive"}, "")) pattern_EveningDetectiveServer_AddGame_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"api", "games"}, "")) @@ -3724,6 +3807,7 @@ var ( forward_EveningDetectiveServer_AddScenarioPlace_0 = runtime.ForwardResponseMessage forward_EveningDetectiveServer_UpdateScenarioPlace_0 = runtime.ForwardResponseMessage forward_EveningDetectiveServer_DeleteScenarioPlace_0 = runtime.ForwardResponseMessage + forward_EveningDetectiveServer_UpdateScenarioIntro_0 = runtime.ForwardResponseMessage forward_EveningDetectiveServer_DownloadScenarioArchive_0 = runtime.ForwardResponseMessage forward_EveningDetectiveServer_UploadScenarioArchive_0 = runtime.ForwardResponseMessage forward_EveningDetectiveServer_AddGame_0 = runtime.ForwardResponseMessage diff --git a/proto/main_grpc.pb.go b/proto/main_grpc.pb.go index 65dfc67..c888749 100644 --- a/proto/main_grpc.pb.go +++ b/proto/main_grpc.pb.go @@ -50,6 +50,7 @@ const ( EveningDetectiveServer_AddScenarioPlace_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/AddScenarioPlace" EveningDetectiveServer_UpdateScenarioPlace_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UpdateScenarioPlace" EveningDetectiveServer_DeleteScenarioPlace_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DeleteScenarioPlace" + EveningDetectiveServer_UpdateScenarioIntro_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UpdateScenarioIntro" EveningDetectiveServer_DownloadScenarioArchive_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/DownloadScenarioArchive" EveningDetectiveServer_UploadScenarioArchive_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/UploadScenarioArchive" EveningDetectiveServer_AddGame_FullMethodName = "/crabs.evening_detective_server.EveningDetectiveServer/AddGame" @@ -105,6 +106,7 @@ type EveningDetectiveServerClient interface { AddScenarioPlace(ctx context.Context, in *AddScenarioPlaceReq, opts ...grpc.CallOption) (*AddScenarioPlaceRsp, error) UpdateScenarioPlace(ctx context.Context, in *UpdateScenarioPlaceReq, opts ...grpc.CallOption) (*UpdateScenarioPlaceRsp, error) DeleteScenarioPlace(ctx context.Context, in *DeleteScenarioPlaceReq, opts ...grpc.CallOption) (*DeleteScenarioPlaceRsp, error) + UpdateScenarioIntro(ctx context.Context, in *UpdateScenarioIntroReq, opts ...grpc.CallOption) (*UpdateScenarioIntroRsp, error) DownloadScenarioArchive(ctx context.Context, in *DownloadScenarioArchiveReq, opts ...grpc.CallOption) (*httpbody.HttpBody, error) UploadScenarioArchive(ctx context.Context, in *httpbody.HttpBody, opts ...grpc.CallOption) (*UploadScenarioArchiveRsp, error) AddGame(ctx context.Context, in *AddGameReq, opts ...grpc.CallOption) (*AddGameRsp, error) @@ -434,6 +436,16 @@ func (c *eveningDetectiveServerClient) DeleteScenarioPlace(ctx context.Context, return out, nil } +func (c *eveningDetectiveServerClient) UpdateScenarioIntro(ctx context.Context, in *UpdateScenarioIntroReq, opts ...grpc.CallOption) (*UpdateScenarioIntroRsp, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(UpdateScenarioIntroRsp) + err := c.cc.Invoke(ctx, EveningDetectiveServer_UpdateScenarioIntro_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *eveningDetectiveServerClient) DownloadScenarioArchive(ctx context.Context, in *DownloadScenarioArchiveReq, opts ...grpc.CallOption) (*httpbody.HttpBody, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(httpbody.HttpBody) @@ -658,6 +670,7 @@ type EveningDetectiveServerServer interface { AddScenarioPlace(context.Context, *AddScenarioPlaceReq) (*AddScenarioPlaceRsp, error) UpdateScenarioPlace(context.Context, *UpdateScenarioPlaceReq) (*UpdateScenarioPlaceRsp, error) DeleteScenarioPlace(context.Context, *DeleteScenarioPlaceReq) (*DeleteScenarioPlaceRsp, error) + UpdateScenarioIntro(context.Context, *UpdateScenarioIntroReq) (*UpdateScenarioIntroRsp, error) DownloadScenarioArchive(context.Context, *DownloadScenarioArchiveReq) (*httpbody.HttpBody, error) UploadScenarioArchive(context.Context, *httpbody.HttpBody) (*UploadScenarioArchiveRsp, error) AddGame(context.Context, *AddGameReq) (*AddGameRsp, error) @@ -777,6 +790,9 @@ func (UnimplementedEveningDetectiveServerServer) UpdateScenarioPlace(context.Con func (UnimplementedEveningDetectiveServerServer) DeleteScenarioPlace(context.Context, *DeleteScenarioPlaceReq) (*DeleteScenarioPlaceRsp, error) { return nil, status.Error(codes.Unimplemented, "method DeleteScenarioPlace not implemented") } +func (UnimplementedEveningDetectiveServerServer) UpdateScenarioIntro(context.Context, *UpdateScenarioIntroReq) (*UpdateScenarioIntroRsp, error) { + return nil, status.Error(codes.Unimplemented, "method UpdateScenarioIntro not implemented") +} func (UnimplementedEveningDetectiveServerServer) DownloadScenarioArchive(context.Context, *DownloadScenarioArchiveReq) (*httpbody.HttpBody, error) { return nil, status.Error(codes.Unimplemented, "method DownloadScenarioArchive not implemented") } @@ -1396,6 +1412,24 @@ func _EveningDetectiveServer_DeleteScenarioPlace_Handler(srv interface{}, ctx co return interceptor(ctx, in, info, handler) } +func _EveningDetectiveServer_UpdateScenarioIntro_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateScenarioIntroReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EveningDetectiveServerServer).UpdateScenarioIntro(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: EveningDetectiveServer_UpdateScenarioIntro_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EveningDetectiveServerServer).UpdateScenarioIntro(ctx, req.(*UpdateScenarioIntroReq)) + } + return interceptor(ctx, in, info, handler) +} + func _EveningDetectiveServer_DownloadScenarioArchive_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DownloadScenarioArchiveReq) if err := dec(in); err != nil { @@ -1865,6 +1899,10 @@ var EveningDetectiveServer_ServiceDesc = grpc.ServiceDesc{ MethodName: "DeleteScenarioPlace", Handler: _EveningDetectiveServer_DeleteScenarioPlace_Handler, }, + { + MethodName: "UpdateScenarioIntro", + Handler: _EveningDetectiveServer_UpdateScenarioIntro_Handler, + }, { MethodName: "DownloadScenarioArchive", Handler: _EveningDetectiveServer_DownloadScenarioArchive_Handler,