death_worker.go 2.7 KB

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