generated from VLADIMIR/template
add intro
This commit is contained in:
@@ -4,13 +4,26 @@ 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"`
|
||||
}
|
||||
|
||||
// Точка - что-то куда можно сходить
|
||||
// Это может быть место - аптека, остановка, площадь...
|
||||
// Это может быть персонаж - пострадавший, продавец, полицейский...
|
||||
|
||||
@@ -21,6 +21,14 @@ func (s *story) GetStory(
|
||||
codesWithUseActions := map[string]struct{}{}
|
||||
codesHidden := map[string]struct{}{}
|
||||
givenApplications := map[string]struct{}{}
|
||||
// Введение передаётся игроку всегда — и до первого хода (начало игры),
|
||||
// и в дальнейшем (как заголовок истории).
|
||||
if scenario.Introduction != nil {
|
||||
story.Introduction = &Introduction{
|
||||
Text: s.cleaner.ClearText(scenario.Introduction.Text),
|
||||
Audio: scenario.Introduction.Audio,
|
||||
}
|
||||
}
|
||||
for i, code := range codes {
|
||||
var prevPlace *Place
|
||||
if i > 0 {
|
||||
|
||||
@@ -28,6 +28,52 @@ func Test_story_GetStory(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Введение передаётся в начале игры (без действий)",
|
||||
scenario: &Story{
|
||||
Introduction: &Introduction{
|
||||
Text: "Текст введения.([Ы])",
|
||||
Audio: "intro.mp3",
|
||||
},
|
||||
},
|
||||
codes: []string{},
|
||||
want: &Story{
|
||||
Introduction: &Introduction{
|
||||
Text: "Текст введения.",
|
||||
Audio: "intro.mp3",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Введение передаётся вместе с точками",
|
||||
scenario: &Story{
|
||||
Introduction: &Introduction{
|
||||
Text: "Текст введения.",
|
||||
Audio: "intro.mp3",
|
||||
},
|
||||
Places: []*Place{
|
||||
{
|
||||
Code: "Ы",
|
||||
Name: "Название точки",
|
||||
Text: "Текст точки.",
|
||||
},
|
||||
},
|
||||
},
|
||||
codes: []string{"Ы"},
|
||||
want: &Story{
|
||||
Introduction: &Introduction{
|
||||
Text: "Текст введения.",
|
||||
Audio: "intro.mp3",
|
||||
},
|
||||
Places: []*Place{
|
||||
{
|
||||
Code: "Ы",
|
||||
Name: "Название точки",
|
||||
Text: "Текст точки.",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "Получение точки",
|
||||
scenario: &Story{
|
||||
|
||||
Reference in New Issue
Block a user