death_wait.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. // package death_wait -- заставляет ожидать начало битвы
  2. package death_wait
  3. import (
  4. "strings"
  5. "time"
  6. . "wartank/app/lev0/types"
  7. "wartank/app/lev2/arena"
  8. "wartank/app/lev2/arena/arena_build"
  9. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  10. )
  11. // СражениеОжидание -- ожидатель начала битвы
  12. type СражениеОжидание struct {
  13. ИАренаСтроение
  14. конт ILocalCtx
  15. }
  16. // НовСражениеОжидание -- возвращает новый ожидатель битвы
  17. func НовСражениеОжидание(конт IKernelCtx) *СражениеОжидание {
  18. сам := &СражениеОжидание{
  19. конт: конт,
  20. }
  21. аренаКонфиг := arena.АренаКонфиг{
  22. Конт_: конт,
  23. АренаИмя_: "Ожидание сражения",
  24. СтрКонтроль_: `<title>Сражения</title>`,
  25. СтрУрл_: "https://wartank.ru/pve",
  26. }
  27. сам.ИАренаСтроение = arena_build.НовАренаСтроение(конт, аренаКонфиг)
  28. return сам
  29. }
  30. // Ожидать -- ожидает начало сражения
  31. func (сам *СражениеОжидание) Ожидать() {
  32. // Зайти в цикл ожидания сражения
  33. for {
  34. // countTime := сам.ВремяОпрос().Получ()
  35. // if countTime > 0 {
  36. // time.Sleep(time.Millisecond * 500)
  37. // // log.Printf("BattleWait.Wait(): countTime=%v\n", сам.CountDown().String())
  38. // continue
  39. // }
  40. стрВрем := сам.ждать()
  41. if стрВрем == "" {
  42. return
  43. }
  44. лстВрем := strings.Split(стрВрем, ":")
  45. стрЧас := лстВрем[0]
  46. if стрЧас > "00" {
  47. time.Sleep(time.Hour * 1)
  48. continue
  49. }
  50. стрМин := лстВрем[1]
  51. if стрМин > "10" {
  52. time.Sleep(time.Minute * 10)
  53. continue
  54. }
  55. if стрМин > "01" {
  56. time.Sleep(time.Minute * 1)
  57. continue
  58. }
  59. if "00:00:05" < стрВрем && стрВрем < "00:00:59" {
  60. time.Sleep(time.Second * 5)
  61. continue
  62. }
  63. time.Sleep(time.Second * 1)
  64. }
  65. }
  66. // Ждёт пока время не обнулится
  67. func (сам *СражениеОжидание) ждать() string {
  68. сам.Обновить()
  69. var (
  70. strOut string
  71. lstBattle = сам.СписПолучить()
  72. еслиНайдено bool
  73. )
  74. for _, strOut = range lstBattle {
  75. if strings.Contains(strOut, `<span>до начала `) {
  76. еслиНайдено = true
  77. break
  78. }
  79. // if strings.Contains(strOut, `>ОБЫЧНЫЕ<`) { // Это уже битва
  80. // if len(сам.chBattle) == 0 {
  81. // сам.chBattle <- 1
  82. // }
  83. // return
  84. // }
  85. }
  86. if !еслиНайдено { // Сражение уже идёт
  87. return ""
  88. }
  89. // Найдена строка ожидания начала сражения
  90. lstTime := strings.Split(strOut, `<span>до начала `)
  91. strTime := lstTime[1]
  92. lstTime = strings.Split(strTime, ` (`)
  93. strTime = lstTime[0]
  94. сам.ПродуктВремяСейчас().Set(strTime)
  95. return strTime
  96. }