package battle_worker import ( "context" "time" . "wartank/app/lev0/types" "wartank/app/lev2/arena" "wartank/app/lev2/arena_battle/battle_worker/battle_worker/health" "wartank/app/lev2/arena_battle/battle_worker/battle_worker/manevr" "wartank/app/lev2/arena_battle/battle_worker/battle_worker/shot" "wartank/app/lev2/arena_battle/battle_worker/battle_worker/shot/is_shot" . "wartank/pkg/kernel/kernel_types" ) /* Предоставляет сетевой компонент при непосредственном сражении */ // СражениеДействие -- непосредственно танкует в сражении type СражениеДействие struct { ИАрена бот ИБот кнт context.Context // Контекст сражения фнОтменить func() // Функция отмены сражения выстрел *shot.Выстрел // Объект выстрела здоровье *health.Здоровье // Текущее здоровье танка манёвр *manevr.Манёвр // Возможность маневрирования логин string еслиВыстрел *is_shot.IsShot // Признак необходимости маскирования (запрет стрельбы, когда слабое здоровье) } // НовСражениеДействие -- возвращает новый *BattleOn func НовСражениеДействие(конт ИЯдроКонтекст, бот ИБот) *СражениеДействие { // Ограничить время сражения бота кнтСражение, фнОтменить := context.WithTimeout(бот.Контекст(), time.Second*305) сам := &СражениеДействие{ бот: бот, кнт: кнтСражение, фнОтменить: фнОтменить, логин: бот.Имя(), еслиВыстрел: is_shot.NewIsShot(), } аренаКонфиг := arena.АренаКонфиг{ Бот_: сам.бот, АренаИмя_: "Исполнитель сражения", СтрКонтроль_: `