bf_tank_stat.go 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. // package bf_tank_stat -- бизнес-функция поиска статы танка
  2. package bf_tank_stat
  3. import (
  4. "strconv"
  5. "strings"
  6. . "gitp78su.ipnodns.ru/svi/kern/kc/helpers"
  7. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  8. . "wartank/app/lev0/types"
  9. )
  10. // ТанкСтатПолучить -- получает стату танка
  11. func ТанкСтатПолучить(конт ILocalCtx) {
  12. найтиАтаку(конт)
  13. найтиБроню(конт)
  14. найтиТочность(конт)
  15. найтиПрочность(конт)
  16. найтиМощь(конт)
  17. }
  18. func найтиМощь(конт ILocalCtx) {
  19. ангар := конт.Get("ангар").Val().(ИАренаАнгар)
  20. списАнгар := ангар.СписПолучить()
  21. if len(списАнгар) == 0 {
  22. ангар.Обновить()
  23. списАнгар = ангар.СписПолучить()
  24. }
  25. var (
  26. стрМощь string
  27. еслиЕсть bool
  28. )
  29. // alt="Точность" title="Точность"/> Точность <span class="green2">
  30. for _, стр := range списАнгар {
  31. if strings.Contains(стр, `<img src="/images/icons/power.png?2" height="14" width="14"> <span class="green2">Танковая мощь: `) {
  32. стрМощь = стр
  33. еслиЕсть = true
  34. break
  35. }
  36. }
  37. Hassert(еслиЕсть, "найтиМощь(): не найдена строка мощи")
  38. // Вырезать ссылку на атаку
  39. // <img src="/images/icons/power.png?2" height="14" width="14"> <span class="green2">Танковая мощь: 3115</span>
  40. стрМощь = strings.TrimPrefix(стрМощь, `<img src="/images/icons/power.png?2" height="14" width="14"> <span class="green2">Танковая мощь: `)
  41. стрМощь = strings.TrimSuffix(стрМощь, `</span>`)
  42. Hassert(стрМощь != "", "стрПрочность(): строк для мощи нет")
  43. цМощь, ош := strconv.Atoi(стрМощь)
  44. Hassert(ош == nil, "найтиМощь(): стрМощь(%v) не число, ош=\n\t%v", стрМощь, ош)
  45. танкСтата := конт.Get("танкСтат").Val().(ИТанкСтат)
  46. танкСтата.Мощь().Уст(цМощь)
  47. }
  48. func найтиПрочность(конт ILocalCtx) {
  49. ангар := конт.Get("ангар").Val().(ИАренаАнгар)
  50. списАнгар := ангар.СписПолучить()
  51. if len(списАнгар) == 0 {
  52. ангар.Обновить()
  53. списАнгар = ангар.СписПолучить()
  54. }
  55. var (
  56. стрПрочность string
  57. еслиЕсть bool
  58. )
  59. // alt="Точность" title="Точность"/> Точность <span class="green2">
  60. for _, стр := range списАнгар {
  61. if strings.Contains(стр, `alt="Прочность" title="Прочность"/> Прочность <span class="green2">`) {
  62. стрПрочность = стр
  63. еслиЕсть = true
  64. break
  65. }
  66. }
  67. Hassert(еслиЕсть, "найтиПрочность(): не найдена строка прочности")
  68. // Вырезать ссылку на атаку
  69. // <img width="14" height="14" src="/images/icons/durability.png?1" alt="Прочность" title="Прочность"/> Прочность <span class="green2">797</span><br/>
  70. стрПрочность = strings.TrimPrefix(стрПрочность, `<img width="14" height="14" src="/images/icons/durability.png?1" alt="Прочность" title="Прочность"/> Прочность <span class="green2">`)
  71. стрПрочность = strings.TrimSuffix(стрПрочность, `</span><br/>`)
  72. Hassert(стрПрочность != "", "стрПрочность(): строк для прочности нет")
  73. цПрочность, ош := strconv.Atoi(стрПрочность)
  74. Hassert(ош == nil, "найтиПрочность(): стрТочность(%v) не число, ош=\n\t%v", стрПрочность, ош)
  75. танкСтата := конт.Get("танкСтат").Val().(ИТанкСтат)
  76. танкСтата.Прочность().Уст(цПрочность)
  77. }
  78. func найтиТочность(конт ILocalCtx) {
  79. ангар := конт.Get("ангар").Val().(ИАренаАнгар)
  80. списАнгар := ангар.СписПолучить()
  81. if len(списАнгар) == 0 {
  82. ангар.Обновить()
  83. списАнгар = ангар.СписПолучить()
  84. }
  85. var (
  86. стрТочность string
  87. еслиЕсть bool
  88. )
  89. // alt="Точность" title="Точность"/> Точность <span class="green2">
  90. for _, стр := range списАнгар {
  91. if strings.Contains(стр, `alt="Точность" title="Точность"/> Точность <span class="green2">`) {
  92. стрТочность = стр
  93. еслиЕсть = true
  94. break
  95. }
  96. }
  97. Hassert(еслиЕсть, "найтиТочность(): не найдена строка точности")
  98. // Вырезать ссылку на атаку
  99. // <img width="14" height="14" src="/images/icons/accuracy.png?1" alt="Точность" title="Точность"/> Точность <span class="green2">833</span><br/>
  100. стрТочность = strings.TrimPrefix(стрТочность, `<img width="14" height="14" src="/images/icons/accuracy.png?1" alt="Точность" title="Точность"/> Точность <span class="green2">`)
  101. стрТочность = strings.TrimSuffix(стрТочность, `</span><br/>`)
  102. Hassert(стрТочность != "", "найтиТочность(): строк для точности нет")
  103. цТочность, ош := strconv.Atoi(стрТочность)
  104. Hassert(ош == nil, "найтиТочность(): стрТочность(%v) не число, ош=\n\t%v", стрТочность, ош)
  105. танкСтата := конт.Get("танкСтат").Val().(ИТанкСтат)
  106. танкСтата.Точность().Уст(цТочность)
  107. }
  108. func найтиБроню(конт ILocalCtx) {
  109. ангар := конт.Get("ангар").Val().(ИАренаАнгар)
  110. списАнгар := ангар.СписПолучить()
  111. if len(списАнгар) == 0 {
  112. ангар.Обновить()
  113. списАнгар = ангар.СписПолучить()
  114. }
  115. var (
  116. стрБроня string
  117. еслиЕсть bool
  118. )
  119. // alt="Броня" title="Броня"/> Броня <span class="green2">
  120. for _, стр := range списАнгар {
  121. if strings.Contains(стр, `alt="Броня" title="Броня"/> Броня <span class="green2">`) {
  122. стрБроня = стр
  123. еслиЕсть = true
  124. break
  125. }
  126. }
  127. Hassert(еслиЕсть, "найтиБроню(): не найдена строка брони")
  128. // Вырезать ссылку на атаку
  129. // <img width="14" height="14" src="/images/icons/armor.png?1" alt="Броня" title="Броня"/> Броня <span class="green2">787</span><br/>
  130. стрБроня = strings.TrimPrefix(стрБроня, `<img width="14" height="14" src="/images/icons/armor.png?1" alt="Броня" title="Броня"/> Броня <span class="green2">`)
  131. стрБроня = strings.TrimSuffix(стрБроня, `</span><br/>`)
  132. Hassert(стрБроня != "", "найтиБроню(): строк для брони нет")
  133. цБроня, ош := strconv.Atoi(стрБроня)
  134. Hassert(ош == nil, "найтиБроню(): стрБроня(%v) не число, ош=\n\t%v", стрБроня, ош)
  135. танкСтата := конт.Get("танкСтат").Val().(ИТанкСтат)
  136. танкСтата.Броня().Уст(цБроня)
  137. }
  138. func найтиАтаку(конт ILocalCtx) {
  139. ангар := конт.Get("ангар").Val().(ИАренаАнгар)
  140. списАнгар := ангар.СписПолучить()
  141. if len(списАнгар) == 0 {
  142. ангар.Обновить()
  143. списАнгар = ангар.СписПолучить()
  144. }
  145. var (
  146. стрАтака string
  147. еслиЕсть bool
  148. )
  149. // alt="Атака" title="Атака"/> Атака <span class="green2">
  150. for _, стр := range списАнгар {
  151. if strings.Contains(стр, `alt="Атака" title="Атака"/> Атака <span class="green2">`) {
  152. стрАтака = стр
  153. еслиЕсть = true
  154. break
  155. }
  156. }
  157. Hassert(еслиЕсть, "найтиАтаку(): не найдена строка атаки")
  158. // Вырезать ссылку на атаку
  159. // <img width="14" height="14" src="/images/icons/attack.png?1" alt="Атака" title="Атака"/> Атака <span class="green2">698</span><br/>
  160. стрАтака = strings.TrimPrefix(стрАтака, `<img width="14" height="14" src="/images/icons/attack.png?1" alt="Атака" title="Атака"/> Атака <span class="green2">`)
  161. стрАтака = strings.TrimSuffix(стрАтака, `</span><br/>`)
  162. Hassert(стрАтака != "", "найтиАтаку(): строк для атаки пустая")
  163. цАтака, ош := strconv.Atoi(стрАтака)
  164. Hassert(ош == nil, "найтиАтаку(): стрАтака(%v) не число, ош=\n\t%v", стрАтака, ош)
  165. танкСтата := конт.Get("танкСтат").Val().(ИТанкСтат)
  166. танкСтата.Атака().Уст(цАтака)
  167. }