| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- // 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,
- АренаИмя_: "Ход сражения",
- СтрКонтроль_: `<title>Сражения</title>`,
- ФнПуск_: сам.пуск,
- СтрУрл_: "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 сам.еслиНачало
- }
|