arena_convoy.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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. ВремОстат_: 1,
  33. }
  34. сам.ИАренаСтроение = arena_build.НовАренаСтроение(конт, аренаКонфиг)
  35. конт.Set("конвой", сам, "Арена конвоя бота")
  36. _ = ИАренаКонвой(сам)
  37. return сам
  38. }
  39. func (сам *АренаКонвой) Пуск() {
  40. сам.ИАренаСтроение.Пуск()
  41. if сам.Состояние().Получ() == cons.РежимНеСуществует {
  42. сам.Состояние().Уст(cons.РежимПостроено)
  43. }
  44. bf_glory_find.СлаваНайти(сам.конт)
  45. bf_glory_make.СлаваБой(сам.конт)
  46. bf_glory_take.СлаваВзять(сам.конт)
  47. сам.обновитьВремя()
  48. }
  49. // Обновляет оставшееся время конвоя
  50. func (сам *АренаКонвой) обновитьВремя() {
  51. // Время подходит надо обновляться
  52. сам.Обновить()
  53. сам.ОбратВремяУст("20")
  54. // Найти строку с упоминанием оставшегося времени конвоя
  55. lstConvoy := сам.СписПолучить()
  56. var (
  57. strLastTime string
  58. еслиНайдено bool
  59. isMask bool
  60. )
  61. for _, lastTime := range lstConvoy {
  62. if strings.Contains(lastTime, `До следующего конвоя: `) {
  63. strLastTime = lastTime
  64. еслиНайдено = true
  65. break
  66. }
  67. if strings.Contains(lastTime, `Полная маскировка через `) {
  68. strLastTime = lastTime
  69. isMask = true
  70. break
  71. }
  72. // <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>
  73. if strings.Contains(lastTime, `ILinkListener-root-startFight`) {
  74. return
  75. }
  76. if strings.Contains(lastTime, `ILinkListener-root-findEnemy`) {
  77. return
  78. }
  79. // <div class="bot"><a class="simple-but border" w:id="startMasking" href="convoy?12-1.ILinkListener-root-startMasking"><span><span>В БОЙ!</span></span></a></div>
  80. if strings.Contains(lastTime, `ILinkListener-root-startMasking`) {
  81. return
  82. }
  83. }
  84. switch {
  85. case еслиНайдено: // Большая пауза между конвоями
  86. // Ждём окончания ожидания конвоя
  87. lstTime := strings.Split(strLastTime, `До следующего конвоя: `)
  88. strLastTime = lstTime[1]
  89. сам.ОбратВремяУст(АВремя(strLastTime))
  90. case isMask: // Если маскировка между конвоями
  91. // Ждём окончания ожидания конвоя
  92. lstTime := strings.Split(strLastTime, `Полная маскировка через `)
  93. strLastTime = lstTime[1]
  94. сам.ОбратВремяУст(АВремя(strLastTime))
  95. }
  96. }