Files
evening_detective_server/internal/modules/storytelling/interface.go
T
2026-07-10 01:30:09 +07:00

77 lines
2.6 KiB
Go

package storytelling
type IStory interface {
GetStory(scenario *Story, codes []string) *Story
}
// История - это набор точек
type Story struct {
// Список точек
Places []*Place `json:"places"`
}
// Точка - что-то куда можно сходить
// Это может быть место - аптека, остановка, площадь...
// Это может быть персонаж - пострадавший, продавец, полицейский...
// Это может быть описание действия игрока - ответ на вопрос, реакция на выбитую дверь...
type Place struct {
// Код - то что вбивает игрок
Code string `json:"code"`
// Название места, имя персонажа, заданный игроком вопрос...
Name string `json:"name"`
// Текст - получаемая текстовая информация
Text string `json:"text"`
// Картинка - получаемая визуальная информация
Image string `json:"image"`
// Признак скрытой карточки - некоторые места изначально не доступны
Hidden bool `json:"hidden"`
// Приложения - получаемые улики
Applications []*Application `json:"applications,omitempty"`
// Двери к другим точкам - действия или диалоги, открывающие другие точки
Doors []*Door `json:"doors"`
// Получаемые ключи - ключи используются для получения доступа к скрытым дверям
Keys []*Key `json:"keys"`
}
// Приложение - улика
// Это может быть оружие, отпечатки, фотография...
type Application struct {
// Название улики
Name string `json:"name"`
// Картинка
Image string `json:"image"`
}
// Дверь - действие или диалог
type Door struct {
// Код
Code string `json:"code"`
// Название - заданный вопрос, проделанное действие...
Name string `json:"name"`
// Некоторые двери изначально не доступны
// Ключи требуемые для получения доступа к скрытым дверям
// Если указаны ключи то дверь считается скрытой
Keys []*Key `json:"keys"`
}
// Аналог карт допуска в "Тайны Аркхема"
type Key struct {
// Название
Name string `json:"name"`
}