arena_duel.go 1.4 KB

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