generated from VLADIMIR/template
add dialogs
This commit is contained in:
parent
856f12f2e3
commit
edd3db35ae
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@ -3,6 +3,7 @@
|
||||
"ввода",
|
||||
"внимательно",
|
||||
"Детективы",
|
||||
"диалога",
|
||||
"диалогом",
|
||||
"корректный",
|
||||
"Можно",
|
||||
@ -14,10 +15,12 @@
|
||||
"открытую",
|
||||
"открыть",
|
||||
"получение",
|
||||
"после",
|
||||
"правила",
|
||||
"Приложение",
|
||||
"приложением",
|
||||
"проходами",
|
||||
"проходом",
|
||||
"скрытой",
|
||||
"скрытую",
|
||||
"существует",
|
||||
|
||||
@ -79,7 +79,7 @@ func (s *StoryService) GetPlace(code string) *models.Place {
|
||||
func (s *StoryService) GetPlaces(codes []string) []*models.Place {
|
||||
places := make([]*models.Place, 0, 100)
|
||||
m := map[string]any{}
|
||||
for _, code := range codes {
|
||||
for i, code := range codes {
|
||||
place := s.GetPlace(code)
|
||||
_, ok := m[place.Code]
|
||||
if place.Hidden && !ok {
|
||||
@ -89,6 +89,17 @@ func (s *StoryService) GetPlaces(codes []string) []*models.Place {
|
||||
for _, door := range place.Doors {
|
||||
m[door.Code] = struct{}{}
|
||||
}
|
||||
|
||||
if i > 0 {
|
||||
for j := range places[i-1].Doors {
|
||||
if places[i-1].Doors[j].Code != place.Code {
|
||||
if places[i-1].Doors[j].Show {
|
||||
places[i-1].Doors[j].Show = false
|
||||
delete(m, places[i-1].Doors[j].Code)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return places
|
||||
}
|
||||
|
||||
@ -203,6 +203,7 @@ func TestStoryService_GetPlaces(t *testing.T) {
|
||||
"Текст",
|
||||
models.WithPlaceDoors(
|
||||
models.NewDoor("Ы-2", "Название"),
|
||||
models.NewDoor("Ы-3", "Название"),
|
||||
),
|
||||
),
|
||||
models.NewPlace(
|
||||
@ -211,9 +212,15 @@ func TestStoryService_GetPlaces(t *testing.T) {
|
||||
"Текст",
|
||||
models.WithPlaceHidden(true),
|
||||
),
|
||||
models.NewPlace(
|
||||
"Ы-3",
|
||||
"Название",
|
||||
"Текст",
|
||||
models.WithPlaceHidden(true),
|
||||
),
|
||||
},
|
||||
},
|
||||
codes: []string{"Ы-1", "Ы-2"},
|
||||
codes: []string{"Ы-1", "Ы-2", "Ы-3"},
|
||||
want: []*models.Place{
|
||||
models.NewPlace(
|
||||
"Ы-1",
|
||||
@ -221,6 +228,7 @@ func TestStoryService_GetPlaces(t *testing.T) {
|
||||
"Текст",
|
||||
models.WithPlaceDoors(
|
||||
models.NewDoor("Ы-2", "Название"),
|
||||
models.NewDoor("Ы-3", "Название"),
|
||||
),
|
||||
),
|
||||
models.NewPlace(
|
||||
@ -229,6 +237,163 @@ func TestStoryService_GetPlaces(t *testing.T) {
|
||||
"Текст",
|
||||
models.WithPlaceHidden(true),
|
||||
),
|
||||
models.NewPlace(
|
||||
"Ы-3",
|
||||
"Название",
|
||||
"Текст",
|
||||
models.WithPlaceHidden(true),
|
||||
),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Открываем скрытую точку диалога",
|
||||
story: &models.Story{
|
||||
Places: []*models.Place{
|
||||
models.NewPlace(
|
||||
"Ы-1",
|
||||
"Название",
|
||||
"Текст",
|
||||
models.WithPlaceDoors(
|
||||
models.NewDoor("Ы-2", "Название", models.WithDoorShow(true)),
|
||||
),
|
||||
),
|
||||
models.NewPlace(
|
||||
"Ы-2",
|
||||
"Название",
|
||||
"Текст",
|
||||
models.WithPlaceHidden(true),
|
||||
),
|
||||
models.NewPlace(
|
||||
"Ы-3",
|
||||
"Название",
|
||||
"Текст",
|
||||
),
|
||||
},
|
||||
},
|
||||
codes: []string{"Ы-1", "Ы-3", "Ы-2"},
|
||||
want: []*models.Place{
|
||||
models.NewPlace(
|
||||
"Ы-1",
|
||||
"Название",
|
||||
"Текст",
|
||||
models.WithPlaceDoors(
|
||||
models.NewDoor("Ы-2", "Название", models.WithDoorShow(false)),
|
||||
),
|
||||
),
|
||||
models.NewPlace(
|
||||
"Ы-3",
|
||||
"Название",
|
||||
"Текст",
|
||||
),
|
||||
models.NewNotFoundPlace("Ы-2"),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Открываем скрытую точку диалога",
|
||||
story: &models.Story{
|
||||
Places: []*models.Place{
|
||||
models.NewPlace(
|
||||
"Ы-1",
|
||||
"Название",
|
||||
"Текст",
|
||||
models.WithPlaceDoors(
|
||||
models.NewDoor("Ы-2", "Название", models.WithDoorShow(true)),
|
||||
models.NewDoor("Ы-3", "Название", models.WithDoorShow(true)),
|
||||
),
|
||||
),
|
||||
models.NewPlace(
|
||||
"Ы-2",
|
||||
"Название",
|
||||
"Текст",
|
||||
models.WithPlaceHidden(true),
|
||||
),
|
||||
models.NewPlace(
|
||||
"Ы-3",
|
||||
"Название",
|
||||
"Текст",
|
||||
models.WithPlaceHidden(true),
|
||||
),
|
||||
},
|
||||
},
|
||||
codes: []string{"Ы-1", "Ы-2", "Ы-3"},
|
||||
want: []*models.Place{
|
||||
models.NewPlace(
|
||||
"Ы-1",
|
||||
"Название",
|
||||
"Текст",
|
||||
models.WithPlaceDoors(
|
||||
models.NewDoor("Ы-2", "Название", models.WithDoorShow(true)),
|
||||
models.NewDoor("Ы-3", "Название", models.WithDoorShow(false)),
|
||||
),
|
||||
),
|
||||
models.NewPlace(
|
||||
"Ы-2",
|
||||
"Название",
|
||||
"Текст",
|
||||
models.WithPlaceHidden(true),
|
||||
),
|
||||
models.NewNotFoundPlace("Ы-3"),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Открываем скрытую точку после диалога",
|
||||
story: &models.Story{
|
||||
Places: []*models.Place{
|
||||
models.NewPlace(
|
||||
"Ы-1",
|
||||
"Название",
|
||||
"Текст",
|
||||
models.WithPlaceDoors(
|
||||
models.NewDoor("Ы-2", "Название", models.WithDoorShow(true)),
|
||||
models.NewDoor("Ы-3", "Название", models.WithDoorShow(true)),
|
||||
models.NewDoor("Ы-4", "Название"),
|
||||
),
|
||||
),
|
||||
models.NewPlace(
|
||||
"Ы-2",
|
||||
"Название",
|
||||
"Текст",
|
||||
models.WithPlaceHidden(true),
|
||||
),
|
||||
models.NewPlace(
|
||||
"Ы-3",
|
||||
"Название",
|
||||
"Текст",
|
||||
models.WithPlaceHidden(true),
|
||||
),
|
||||
models.NewPlace(
|
||||
"Ы-4",
|
||||
"Название",
|
||||
"Текст",
|
||||
models.WithPlaceHidden(true),
|
||||
),
|
||||
},
|
||||
},
|
||||
codes: []string{"Ы-1", "Ы-2", "Ы-3", "Ы-4"},
|
||||
want: []*models.Place{
|
||||
models.NewPlace(
|
||||
"Ы-1",
|
||||
"Название",
|
||||
"Текст",
|
||||
models.WithPlaceDoors(
|
||||
models.NewDoor("Ы-2", "Название", models.WithDoorShow(true)),
|
||||
models.NewDoor("Ы-3", "Название", models.WithDoorShow(false)),
|
||||
models.NewDoor("Ы-4", "Название"),
|
||||
),
|
||||
),
|
||||
models.NewPlace(
|
||||
"Ы-2",
|
||||
"Название",
|
||||
"Текст",
|
||||
models.WithPlaceHidden(true),
|
||||
),
|
||||
models.NewNotFoundPlace("Ы-3"),
|
||||
models.NewPlace(
|
||||
"Ы-4",
|
||||
"Название",
|
||||
"Текст",
|
||||
models.WithPlaceHidden(true),
|
||||
),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user