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