Files
evening_detective_server/internal/modules/storytelling/interface.go
T
2026-08-28 22:02:58 +07:00

90 lines
3.1 KiB
Go

package storytelling
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"`
}
// Точка - что-то куда можно сходить
// Это может быть место - аптека, остановка, площадь...
// Это может быть персонаж - пострадавший, продавец, полицейский...
// Это может быть описание действия игрока - ответ на вопрос, реакция на выбитую дверь...
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"`
}