package battle_worker import ( "context" "time" . "gitp78su.ipnodns.ru/svi/kern" . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes" . "wartank/app/lev0/types" "wartank/app/lev1/health" "wartank/app/lev1/manevr" "wartank/app/lev1/shot" "wartank/app/lev2/arena" ) /* Предоставляет сетевой компонент при непосредственном сражении */ // СражениеДействие -- непосредственно танкует в сражении type СражениеДействие struct { ИАрена бот ИБот кнт context.Context // Контекст сражения фнОтменить func() // Функция отмены сражения выстрел ИВыстрел // Объект выстрела здоровье ИЗдоровье // Текущее здоровье танка манёвр ИМанёвр // Возможность маневрирования логин string еслиКонец ISafeBool } // НовСражениеДействие -- возвращает новый *BattleOn func НовСражениеДействие(конт ILocalCtx) ИСражениеПроцесс { // Ограничить время сражения бота бот := конт.Get("бот").Val().(ИБот) кнтСражение, фнОтменить := context.WithTimeout(бот.КонтБот().Ctx(), time.Second*305) сам := &СражениеДействие{ бот: бот, кнт: кнтСражение, фнОтменить: фнОтменить, логин: бот.Имя(), еслиКонец: NewSafeBool(), } аренаКонфиг := arena.АренаКонфиг{ Бот_: сам.бот, АренаИмя_: "Исполнитель сражения", СтрКонтроль_: `