arena_bank.go 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  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. }
  42. сам.ИАренаСтроение = arena_build.НовАренаСтроение(конт, аренаКонфиг)
  43. конт.Set("банк", сам, "Арена банка бота")
  44. return сам
  45. }
  46. func (сам *АренаБанк) Пуск() {
  47. сам.ИАренаСтроение.Пуск()
  48. bf_bank_build.БанкПостроить(сам.конт)
  49. bf_bank_upgrade.БанкАпгрейд(сам.конт)
  50. bf_bank_upgrade_fast.БанкАпгрейдБесплатно(сам.конт)
  51. bf_bank_take.БанкЗабрать(сам.конт)
  52. bf_bank_prod.СереброПроизводить(сам.конт)
  53. }
  54. // Проверяет необходимость постройки полигона
  55. func (сам *АренаБанк) построитьУлучшить() bool {
  56. var списБанк []string
  57. { // Зайти на страницу постройки
  58. // https://wartank.ru/building-upgrade/Bank
  59. списБанк = сам.Сеть().ВебВоркер().Получ("https://wartank.ru/building-upgrade/Bank")
  60. стрСсылка := ""
  61. еслиНайти := false
  62. // <a class="simple-but border mb5" href="Bank?192-1.ILinkListener-upgradeLink-link">
  63. for _, стрСсылка = range списБанк {
  64. if strings.Contains(стрСсылка, `href="Bank?`) {
  65. еслиНайти = true
  66. break
  67. }
  68. }
  69. if !еслиНайти { // Время полигона вышло
  70. return false
  71. }
  72. _ссылка := strings.TrimPrefix(стрСсылка, `<a class="simple-but border mb5" href="`)
  73. _ссылка = strings.TrimSuffix(_ссылка, `">`)
  74. ссылка := "https://wartank.ru/building-upgrade/" + _ссылка
  75. // https://wartank.ru/building-upgrade/Bank?162-1.ILinkListener-upgradeLink-link
  76. списБанк = сам.Сеть().ВебВоркер().Получ(ссылка)
  77. }
  78. { // Заказать постройку
  79. // https://wartank.ru/building-upgrade/Bank
  80. стрСсылка := ""
  81. еслиНайти := false
  82. // <a class="simple-but border mb5" href="Bank?163-1.ILinkListener-upgradeLink-link">
  83. for _, стрСсылка = range списБанк {
  84. if strings.Contains(стрСсылка, `href="Bank?`) {
  85. еслиНайти = true
  86. break
  87. }
  88. }
  89. if еслиНайти { // Время полигона вышло
  90. _ссылка := strings.TrimPrefix(стрСсылка, `<a class="simple-but border mb5" href="`)
  91. _ссылка = strings.TrimSuffix(_ссылка, `">`)
  92. ссылка := "https://wartank.ru/building-upgrade/" + _ссылка
  93. // https://wartank.ru/building-upgrade/Bank?162-1.ILinkListener-upgradeLink-link
  94. списБанк = сам.Сеть().ВебВоркер().Получ(ссылка)
  95. }
  96. }
  97. { // подтверждение постройки
  98. // <a class="simple-but border w50 mXa mb10" w:id="confirmLink" href="../wicket/page?187-1.ILinkListener-confirmLink"><span><span>да, подтверждаю</span></span></a>
  99. стрСсылка := ""
  100. еслиНайти := false
  101. for _, стрСсылка = range списБанк {
  102. if strings.Contains(стрСсылка, `.ILinkListener-confirmLink`) {
  103. еслиНайти = true
  104. break
  105. }
  106. }
  107. if !еслиНайти { // Время полигона вышло
  108. return false
  109. }
  110. _ссылка := strings.TrimPrefix(стрСсылка, `<a class="simple-but border w50 mXa mb10" w:id="confirmLink" href="../`)
  111. _ссылка = strings.TrimSuffix(_ссылка, "\"><span><span>да, подтверждаю</span></span></a>")
  112. ссылка := "https://wartank.ru/" + _ссылка
  113. // https://wartank.ru/wicket/page?135-1.ILinkListener-confirmLink
  114. _ = сам.Сеть().ВебВоркер().Получ(ссылка)
  115. }
  116. log.Printf("Банк.построитьПровер(): построен успешно\n")
  117. return true
  118. }
  119. // РежимРаботы2 -- возвращает объект режима2
  120. func (сам *АренаБанк) РежимРаботы2() ИБанкРежим {
  121. return сам.режим2
  122. }
  123. // РежимРаботы1 -- возвращает объект режима1
  124. func (сам *АренаБанк) РежимРаботы1() ИБанкРежим {
  125. return сам.режим1
  126. }
  127. // СереброБот -- возвращает серебро от бота
  128. func (сам *АренаБанк) СереброБот() ИСтатПарам {
  129. return сам.сереброБот
  130. }