arena_bank.go 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package arena_bank
  2. import (
  3. "log"
  4. "strings"
  5. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  6. . "wartank/app/lev0/types"
  7. "wartank/app/lev1"
  8. "wartank/app/lev2/arena"
  9. "wartank/app/lev2/arena/arena_bank/bank_mode"
  10. "wartank/app/lev2/arena/arena_bank/bf_bank_build"
  11. "wartank/app/lev2/arena/arena_bank/bf_bank_prod"
  12. "wartank/app/lev2/arena/arena_bank/bf_bank_take"
  13. "wartank/app/lev2/arena/arena_bank/bf_bank_upgrade"
  14. "wartank/app/lev2/arena/arena_bank/bf_bank_upgrade_fast"
  15. "wartank/app/lev2/arena/arena_build"
  16. )
  17. /*
  18. Предоставляет объект банка на базе
  19. */
  20. // Банк -- объект банка на базе
  21. type АренаБанк struct {
  22. ИАренаСтроение
  23. конт ILocalCtx
  24. сереброБот ИСтатПарам
  25. режим1 *bank_mode.BankMode // 1 режим работы на выбор
  26. режим2 *bank_mode.BankMode // 2 режим работы на выбор
  27. }
  28. // НовБанк -- возвращает новый арену банка
  29. func НовБанк(конт ILocalCtx) ИАренаБанк {
  30. сам := &АренаБанк{
  31. конт: конт,
  32. сереброБот: lev1.НовСтатПарам("серебро бота"),
  33. режим1: bank_mode.NewBankMode(конт),
  34. режим2: bank_mode.NewBankMode(конт),
  35. }
  36. аренаКонфиг := arena.АренаКонфиг{
  37. Конт_: конт,
  38. АренаИмя_: "Банк",
  39. СтрКонтроль_: `<span class="green2">Серебро</span><br/>`,
  40. СтрУрл_: "https://wartank.ru/production/Bank",
  41. ВремОстат_: 1,
  42. }
  43. сам.ИАренаСтроение = arena_build.НовАренаСтроение(конт, аренаКонфиг)
  44. конт.Set("банк", сам, "Арена банка бота")
  45. return сам
  46. }
  47. func (сам *АренаБанк) Пуск() {
  48. сам.ИАренаСтроение.Пуск()
  49. bf_bank_build.БанкПостроить(сам.конт)
  50. bf_bank_upgrade.БанкАпгрейд(сам.конт)
  51. bf_bank_upgrade_fast.БанкАпгрейдБесплатно(сам.конт)
  52. bf_bank_take.БанкЗабрать(сам.конт)
  53. bf_bank_prod.СереброПроизводить(сам.конт)
  54. select {
  55. case <-сам.ВремяОстат().КаналСиг(): // Надо обновить время
  56. сам.Бот().СигРабота("банк")
  57. default: // Ничего не делать
  58. }
  59. }
  60. // Проверяет необходимость постройки полигона
  61. func (сам *АренаБанк) построитьУлучшить() bool {
  62. var списБанк []string
  63. { // Зайти на страницу постройки
  64. // https://wartank.ru/building-upgrade/Bank
  65. списБанк = сам.Сеть().ВебВоркер().Получ("https://wartank.ru/building-upgrade/Bank")
  66. стрСсылка := ""
  67. еслиНайти := false
  68. // <a class="simple-but border mb5" href="Bank?192-1.ILinkListener-upgradeLink-link">
  69. for _, стрСсылка = range списБанк {
  70. if strings.Contains(стрСсылка, `href="Bank?`) {
  71. еслиНайти = true
  72. break
  73. }
  74. }
  75. if !еслиНайти { // Время полигона вышло
  76. return false
  77. }
  78. _ссылка := strings.TrimPrefix(стрСсылка, `<a class="simple-but border mb5" href="`)
  79. _ссылка = strings.TrimSuffix(_ссылка, `">`)
  80. ссылка := "https://wartank.ru/building-upgrade/" + _ссылка
  81. // https://wartank.ru/building-upgrade/Bank?162-1.ILinkListener-upgradeLink-link
  82. списБанк = сам.Сеть().ВебВоркер().Получ(ссылка)
  83. }
  84. { // Заказать постройку
  85. // https://wartank.ru/building-upgrade/Bank
  86. стрСсылка := ""
  87. еслиНайти := false
  88. // <a class="simple-but border mb5" href="Bank?163-1.ILinkListener-upgradeLink-link">
  89. for _, стрСсылка = range списБанк {
  90. if strings.Contains(стрСсылка, `href="Bank?`) {
  91. еслиНайти = true
  92. break
  93. }
  94. }
  95. if еслиНайти { // Время полигона вышло
  96. _ссылка := strings.TrimPrefix(стрСсылка, `<a class="simple-but border mb5" href="`)
  97. _ссылка = strings.TrimSuffix(_ссылка, `">`)
  98. ссылка := "https://wartank.ru/building-upgrade/" + _ссылка
  99. // https://wartank.ru/building-upgrade/Bank?162-1.ILinkListener-upgradeLink-link
  100. списБанк = сам.Сеть().ВебВоркер().Получ(ссылка)
  101. }
  102. }
  103. { // подтверждение постройки
  104. // <a class="simple-but border w50 mXa mb10" w:id="confirmLink" href="../wicket/page?187-1.ILinkListener-confirmLink"><span><span>да, подтверждаю</span></span></a>
  105. стрСсылка := ""
  106. еслиНайти := false
  107. for _, стрСсылка = range списБанк {
  108. if strings.Contains(стрСсылка, `.ILinkListener-confirmLink`) {
  109. еслиНайти = true
  110. break
  111. }
  112. }
  113. if !еслиНайти { // Время полигона вышло
  114. return false
  115. }
  116. _ссылка := strings.TrimPrefix(стрСсылка, `<a class="simple-but border w50 mXa mb10" w:id="confirmLink" href="../`)
  117. _ссылка = strings.TrimSuffix(_ссылка, "\"><span><span>да, подтверждаю</span></span></a>")
  118. ссылка := "https://wartank.ru/" + _ссылка
  119. // https://wartank.ru/wicket/page?135-1.ILinkListener-confirmLink
  120. _ = сам.Сеть().ВебВоркер().Получ(ссылка)
  121. }
  122. log.Printf("Банк.построитьПровер(): построен успешно\n")
  123. return true
  124. }
  125. // РежимРаботы2 -- возвращает объект режима2
  126. func (сам *АренаБанк) РежимРаботы2() ИБанкРежим {
  127. return сам.режим2
  128. }
  129. // РежимРаботы1 -- возвращает объект режима1
  130. func (сам *АренаБанк) РежимРаботы1() ИБанкРежим {
  131. return сам.режим1
  132. }
  133. // СереброБот -- возвращает серебро от бота
  134. func (сам *АренаБанк) СереброБот() ИСтатПарам {
  135. return сам.сереброБот
  136. }