// package arena_context -- контекст арены package arena_context import ( "context" . "gitp78su.ipnodns.ru/svi/kern" . "gitp78su.ipnodns.ru/svi/kern/kc/helpers" . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes" "wartank/app/lev0/alias" . "wartank/app/lev0/types" "wartank/app/lev1/web_log" "wartank/app/lev2/arena/arena_context/arena_state" ) // АренаКонтекст -- контекст арены type АренаКонтекст struct { бот ИБот аренаИмя alias.ААренаИмя кнт context.Context фнОтмена func() состояние ИАренаСостояние вЛог ИВебЛог лог ILogBuf } // НовАренаКонтекст -- возвращает новый контекст арены func НовАренаКонтекст(конт ILocalCtx, бот ИБот, сценаИмя alias.ААренаИмя) *АренаКонтекст { Hassert(бот != nil, "НовАренаКонтекст(): ИБот==nil") Hassert(сценаИмя != "", "НовАренаКонтекст(): сценаИмя не задано") Hassert(конт != nil, "НовАренаКонтекст(): ИЯдроКонтекст==пусто") лог := NewLogBuf() лог.Info("НовАренаКонтекст() " + string(сценаИмя) + "\n") кнт, фнОтмена := context.WithCancel(бот.КонтБот().Ctx()) сам := &АренаКонтекст{ бот: бот, аренаИмя: сценаИмя, кнт: кнт, фнОтмена: фнОтмена, состояние: arena_state.НовАренаСостояние(), вЛог: web_log.НовВебЛог(true), лог: лог, } _ = ИАренаКонтекст(сам) return сам } // Лог -- возвращает лог арены func (сам *АренаКонтекст) ВебЛог() ИВебЛог { return сам.вЛог } // АренаСостояние -- состояние арены func (сам *АренаКонтекст) АренаСостояние() ИАренаСостояние { return сам.состояние } // Отменить -- отменяет контекст арены func (сам *АренаКонтекст) Отменить() { сам.фнОтмена() } // Кнт -- возвращает контекст арены func (сам *АренаКонтекст) Контекст() context.Context { return сам.кнт } // Имя -- возвращает имя арены func (сам *АренаКонтекст) Имя() alias.ААренаИмя { return сам.аренаИмя } // Бот -- возвращает бота сцены func (сам *АренаКонтекст) Бот() ИБот { return сам.бот }