// package battle_worker -- исполнение битвы package battle_worker import ( "time" . "wartank/app/lev0/types" "wartank/app/lev1/stat_param" "wartank/app/lev2/arena" "wartank/app/lev2/arena_battle/battle_worker/battle_worker" "wartank/app/lev2/arena_battle/battle_worker/battle_worker/battle_sound" ) // СражениеДействие -- исполнение битвы type СхваткаИсполнитель struct { ИАрена конт ИБотКонтекст бот ИБот еслиНачало ИСтатПарам // Непосредственное сражение действие *battle_worker.СражениеДействие sound *battle_sound.BattleSound // Однопоточное проигрывание звука } // НовСражениеДействие -- возвращает новый исполнитель битвы func НовСражениеИсполнитель(конт ИБотКонтекст, bot ИБот) *СхваткаИсполнитель { сам := &СхваткаИсполнитель{ конт: конт, бот: bot, еслиНачало: stat_param.НовСтатПарам("тревога"), sound: battle_sound.NewBattleSound(), } аренаКонфиг := arena.АренаКонфиг{ Бот_: bot, АренаИмя_: "Ход сражения", СтрКонтроль_: `Сражения`, ФнПуск_: сам.пуск, СтрУрл_: "https://wartank.ru/pve", } сам.ИАрена = arena.НовАрена(конт, аренаКонфиг) return сам } // выполняет битву func (сам *СхваткаИсполнитель) пуск() { сам.действие = battle_worker.НовСражениеДействие(сам.конт, сам.бот) // IBattleOn (онлайн) сам.sound.Play() time.Sleep(time.Second * 10) // Задержка для звука на странице <-сам.действие.Контекст().Done() // log._rintf("Battle.runBaton(): сражение завершено\n") } // Тревога -- возвращает признак начала сражения (для браузера) func (сам *СхваткаИсполнитель) Тревога() ИСтатПарам { return сам.еслиНачало }