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"` }