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