generated from VLADIMIR/template
add dialogs
This commit is contained in:
@@ -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),
|
||||
),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user