battle_worker.go 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. // package battle_worker -- исполнение битвы
  2. package battle_worker
  3. import (
  4. "time"
  5. . "wartank/app/lev0/types"
  6. "wartank/app/lev2/arena"
  7. "wartank/app/lev2/arena/arena_net"
  8. "wartank/app/lev2/arena_battle/battle_worker/battle_worker"
  9. "wartank/app/lev2/arena_battle/battle_worker/battle_worker/battle_sound"
  10. "wartank/app/lev1/stat_param"
  11. )
  12. // СражениеДействие -- исполнение битвы
  13. type СхваткаИсполнитель struct {
  14. ИАрена
  15. конт ИБотКонтекст
  16. бот ИБот
  17. сеть ИАренаСеть
  18. еслиНачало ИСтатПарам
  19. // Непосредственное сражение
  20. действие *battle_worker.СражениеДействие
  21. sound *battle_sound.BattleSound // Однопоточное проигрывание звука
  22. }
  23. // НовСражениеДействие -- возвращает новый исполнитель битвы
  24. func НовСражениеИсполнитель(конт ИБотКонтекст, bot ИБот) *СхваткаИсполнитель {
  25. сам := &СхваткаИсполнитель{
  26. конт: конт,
  27. бот: bot,
  28. еслиНачало: stat_param.НовСтатПарам("тревога"),
  29. sound: battle_sound.NewBattleSound(),
  30. }
  31. аренаКонфиг := arena.АренаКонфиг{
  32. Бот_: bot,
  33. АренаИмя_: "Ход сражения",
  34. СтрКонтроль_: `<title>Сражения</title>`,
  35. ФнПуск_: сам.пуск,
  36. СтрУрл_: "https://wartank.ru/pve",
  37. }
  38. сам.ИАрена = arena.НовАрена(конт, аренаКонфиг)
  39. сам.сеть = arena_net.НовАренаСеть(конт, сам, "https://wartank.ru/pve")
  40. return сам
  41. }
  42. // выполняет битву
  43. func (сам *СхваткаИсполнитель) пуск() {
  44. сам.действие = battle_worker.НовСражениеДействие(сам.конт, сам.бот) // IBattleOn (онлайн)
  45. сам.sound.Play()
  46. time.Sleep(time.Second * 10) // Задержка для звука на странице
  47. <-сам.действие.Контекст().Done()
  48. // log._rintf("Battle.runBaton(): сражение завершено\n")
  49. }
  50. // Тревога -- возвращает признак начала сражения (для браузера)
  51. func (сам *СхваткаИсполнитель) Тревога() ИСтатПарам {
  52. return сам.еслиНачало
  53. }