death_worker.go 2.5 KB

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