generated from VLADIMIR/template
99 lines
3.5 KiB
Go
99 lines
3.5 KiB
Go
package storytelling
|
|
|
|
type IStory interface {
|
|
GetStory(scenario *Story, codes []string) *Story
|
|
}
|
|
|
|
// История - это введение, набор точек и вопросы дела
|
|
type Story struct {
|
|
Background string `json:"background,omitempty"`
|
|
|
|
Introduction *Introduction `json:"introduction,omitempty"`
|
|
|
|
// Закрывашка доступна в редакторе сценария, игрокам не передаётся.
|
|
Conclusion *Conclusion `json:"conclusion,omitempty"`
|
|
|
|
Places []*Place `json:"places"`
|
|
|
|
// Вопросы дела - список вопросов, на которые команда должна ответить
|
|
Questions []*Question `json:"questions,omitempty"`
|
|
}
|
|
|
|
// Вопрос дела - вопрос, который автор сценария добавляет вместе с
|
|
// правильным ответом; команда отвечает на вопросы в конце игры
|
|
type Question struct {
|
|
Code string `json:"code"`
|
|
|
|
Text string `json:"text"`
|
|
|
|
// Правильный ответ - виден только автору и организаторам,
|
|
// команде не передаётся
|
|
Answer string `json:"answer"`
|
|
}
|
|
|
|
// Закрывашка - текст и видео для редактора сценария.
|
|
type Conclusion struct {
|
|
Text string `json:"text"`
|
|
Video string `json:"video,omitempty"`
|
|
}
|
|
|
|
// Введение - текст и аудио, которые игрок получает в начале игры.
|
|
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"`
|
|
|
|
// Тип файла улики: image | pdf | audio.
|
|
FileType string `json:"file_type,omitempty"`
|
|
}
|
|
|
|
// Дверь - действие или диалог
|
|
type Door struct {
|
|
Code string `json:"code"`
|
|
|
|
Name string `json:"name"`
|
|
|
|
// Некоторые двери изначально не доступны
|
|
// Ключи требуемые для получения доступа к скрытым дверям
|
|
// Если указаны ключи то дверь считается скрытой
|
|
Keys []*Key `json:"keys"`
|
|
}
|
|
|
|
// Аналог карт допуска в "Тайны Аркхема"
|
|
type Key struct {
|
|
Name string `json:"name"`
|
|
}
|