// package arena_context -- контекст арены package arena_context import ( "context" "wartank/pkg/alias" "wartank/pkg/arena/arena_context/arena_state" "wartank/pkg/components/kernel/logger" "wartank/pkg/components/web_log" "wartank/pkg/types" ) // АренаКонтекст -- контекст арены type АренаКонтекст struct { бот types.ИБот аренаИмя alias.АренаИмя кнт context.Context фнОтмена func() состояние types.ИАренаСостояние вЛог types.ИВебЛог лог types.ИЛоггер } // НовАренаКонтекст -- возвращает новый контекст арены func НовАренаКонтекст(бот types.ИБот, сценаИмя alias.АренаИмя) *АренаКонтекст { лог := logger.НовЛоггер("АренаКонтекст " + string(сценаИмя)) лог.Инфо("НовАренаКонтекст() " + string(сценаИмя) + "\n") лог.Проверить(бот != nil, "НовАренаКонтекст(): ИБот==nil") лог.Проверить(сценаИмя != "", "НовАренаКонтекст(): сценаИмя не задано") кнт, фнОтмена := context.WithCancel(бот.Контекст()) сам := &АренаКонтекст{ бот: бот, аренаИмя: сценаИмя, кнт: кнт, фнОтмена: фнОтмена, состояние: arena_state.НовАренаСостояние(), вЛог: web_log.НовВебЛог(true), лог: лог, } _ = types.ИАренаКонтекст(сам) return сам } // Лог -- возвращает лог арены func (сам *АренаКонтекст) ВебЛог() types.ИВебЛог { return сам.вЛог } // АренаСостояние -- состояние арены func (сам *АренаКонтекст) АренаСостояние() types.ИАренаСостояние { return сам.состояние } // Отмена -- отменяет контекст арены func (сам *АренаКонтекст) Отмена() { сам.фнОтмена() } // Кнт -- возвращает контекст арены func (сам *АренаКонтекст) Контекст() context.Context { return сам.кнт } // Имя -- возвращает имя арены func (сам *АренаКонтекст) Имя() alias.АренаИмя { return сам.аренаИмя } // Бот -- возвращает бота сцены func (сам *АренаКонтекст) Бот() types.ИБот { return сам.бот }