// package scene -- базовая сцена для любой сцены package scene import ( "context" "fmt" "wartank/pkg/alias" "wartank/pkg/scene/scene_mode" "wartank/pkg/types" ) type Сцена struct { бот types.ИБот сценаИмя alias.СценаИмя кнт context.Context фнОтмена func() режим types.ИСценаРежим } // НовСцена -- возвращает новую сцену func НовСцена(бот types.ИБот, сценаИмя alias.СценаИмя) (*Сцена, error) { if бот == nil { return nil, fmt.Errorf("НовСцена(): ИБот==nil") } if сценаИмя == "" { return nil, fmt.Errorf("НовСцена(): сценаИмя не задано") } кнт, фнОтмена := context.WithCancel(бот.Кнт()) сам := &Сцена{ бот: бот, сценаИмя: сценаИмя, кнт: кнт, фнОтмена: фнОтмена, режим: scene_mode.НовСценаРежим(), } _ = types.ИСцена(сам) return сам, nil } // СценаРежим -- текущий режим работы func (сам *Сцена) СценаРежим() types.ИСценаРежим { return сам.режим } // Отмена -- отменяет контекст сцены func (сам *Сцена) Отмена() { сам.фнОтмена() } // Кнт -- возвращает контекст сцены func (сам *Сцена) Контекст() context.Context { return сам.кнт } // Имя -- возвращает имя сцены func (сам *Сцена) Имя() alias.СценаИмя { return сам.сценаИмя } // Бот -- возвращает бота сцены func (сам *Сцена) Бот() types.ИБот { return сам.бот }