arena_duel.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // package arena_duel -- арена дуэли за топливо
  2. package arena_duel
  3. import (
  4. "time"
  5. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  6. . "wartank/app/lev0/types"
  7. "wartank/app/lev2/arena"
  8. )
  9. // АренаДуэль -- арена дуэли за топливо
  10. type АренаДуэль struct {
  11. ИАрена
  12. бот ИБот
  13. клиент ИХттпВоркер
  14. }
  15. // НовСражение -- возвращает новую арену дуэли
  16. func НовАренаДуэль(конт ILocalCtx, бот ИБот) *АренаДуэль {
  17. сам := &АренаДуэль{
  18. бот: бот,
  19. клиент: бот.Сеть().ВебВоркер(),
  20. }
  21. аренаКонфиг := arena.АренаКонфиг{
  22. Бот_: бот,
  23. АренаИмя_: "Арена дуэли",
  24. СтрКонтроль_: "<span>до начала ",
  25. ФнПуск_: сам.пуск,
  26. СтрУрл_: "https://wartank.ru/battle",
  27. }
  28. сам.ИАрена = arena.НовАрена(конт, аренаКонфиг)
  29. // сам.shotTimeFull.Set(8000) // 8000 msec
  30. return сам
  31. }
  32. func (сам *АренаДуэль) Пуск() {
  33. go сам.пуск()
  34. }
  35. // запускает в работу дуэль
  36. func (сам *АренаДуэль) пуск() {
  37. for {
  38. select {
  39. case <-сам.бот.КонтБот().Ctx().Done():
  40. return
  41. default:
  42. time.Sleep(time.Second * 2) // Пауза между циклами, чтобы сервер не долбить запросами
  43. }
  44. }
  45. }