arena_convoy.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package arena_convoy
  2. import (
  3. "strings"
  4. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  5. . "wartank/app/lev0/alias"
  6. "wartank/app/lev0/cons"
  7. . "wartank/app/lev0/types"
  8. "wartank/app/lev2/arena"
  9. "wartank/app/lev2/arena/arena_build"
  10. "wartank/app/lev2/arena/arena_convoy/bf_glory_find"
  11. "wartank/app/lev2/arena/arena_convoy/bf_glory_make"
  12. "wartank/app/lev2/arena/arena_convoy/bf_glory_take"
  13. )
  14. /*
  15. Объект конвоя в ангаре
  16. */
  17. // АренаКонвой -- объект конвоя в ангаре
  18. type АренаКонвой struct {
  19. ИАренаСтроение
  20. конт ILocalCtx
  21. }
  22. // НовКонвой -- возвращает новый *Convoy
  23. func НовКонвой(конт ILocalCtx) *АренаКонвой {
  24. сам := &АренаКонвой{
  25. конт: конт,
  26. }
  27. аренаКонфиг := arena.АренаКонфиг{
  28. Конт_: конт,
  29. АренаИмя_: "Конвой",
  30. СтрКонтроль_: `<title>Конвой</title>`,
  31. СтрУрл_: "https://wartank.ru/convoy",
  32. }
  33. сам.ИАренаСтроение = arena_build.НовАренаСтроение(конт, аренаКонфиг)
  34. конт.Set("конвой", сам, "Арена конвоя бота")
  35. _ = ИАренаКонвой(сам)
  36. return сам
  37. }
  38. func (сам *АренаКонвой) Пуск() {
  39. сам.ИАренаСтроение.Пуск()
  40. if сам.Состояние().Получ() == cons.РежимНеСуществует {
  41. сам.Состояние().Уст(cons.РежимПостроено)
  42. }
  43. bf_glory_find.СлаваНайти(сам.конт)
  44. bf_glory_make.СлаваБой(сам.конт)
  45. bf_glory_take.СлаваВзять(сам.конт)
  46. сам.обновитьВремя()
  47. }
  48. // Обновляет оставшееся время конвоя
  49. func (сам *АренаКонвой) обновитьВремя() {
  50. // Время подходит надо обновляться
  51. сам.Обновить()
  52. сам.ОбратВремяУст("20")
  53. // Найти строку с упоминанием оставшегося времени конвоя
  54. lstConvoy := сам.СписПолучить()
  55. var (
  56. strLastTime string
  57. еслиНайдено bool
  58. isMask bool
  59. )
  60. for _, lastTime := range lstConvoy {
  61. if strings.Contains(lastTime, `До следующего конвоя: `) {
  62. strLastTime = lastTime
  63. еслиНайдено = true
  64. break
  65. }
  66. if strings.Contains(lastTime, `Полная маскировка через `) {
  67. strLastTime = lastTime
  68. isMask = true
  69. break
  70. }
  71. // <div class="bot"><a class="simple-but border red" w:id="startFight" href="convoy?7-1.ILinkListener-root-startFight"><span><span>В БОЙ!</span></span></a></div>
  72. if strings.Contains(lastTime, `ILinkListener-root-startFight`) {
  73. return
  74. }
  75. if strings.Contains(lastTime, `ILinkListener-root-findEnemy`) {
  76. return
  77. }
  78. // <div class="bot"><a class="simple-but border" w:id="startMasking" href="convoy?12-1.ILinkListener-root-startMasking"><span><span>В БОЙ!</span></span></a></div>
  79. if strings.Contains(lastTime, `ILinkListener-root-startMasking`) {
  80. return
  81. }
  82. }
  83. switch {
  84. case еслиНайдено: // Большая пауза между конвоями
  85. // Ждём окончания ожидания конвоя
  86. lstTime := strings.Split(strLastTime, `До следующего конвоя: `)
  87. strLastTime = lstTime[1]
  88. сам.ОбратВремяУст(АВремя(strLastTime))
  89. case isMask: // Если маскировка между конвоями
  90. // Ждём окончания ожидания конвоя
  91. lstTime := strings.Split(strLastTime, `Полная маскировка через `)
  92. strLastTime = lstTime[1]
  93. сам.ОбратВремяУст(АВремя(strLastTime))
  94. }
  95. }