bf_ammo_stat.go 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. // package bf_ammo_stat -- бизнес-функция статистики снарядов
  2. package bf_ammo_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/cons"
  9. . "wartank/app/lev0/types"
  10. )
  11. // СнарядыСтат -- получает статистику снарядов
  12. func СнарядыСтат(конт ILocalCtx) {
  13. арсенал_ := конт.Get("арсенал")
  14. if арсенал_ == nil { // Может быть не построен
  15. return
  16. }
  17. арсенал := арсенал_.Val().(ИАренаАрсенал)
  18. if арсенал.АренаСостояние().Получ() != cons.РежимОжидание {
  19. return
  20. }
  21. фугасыНайти(конт)
  22. бронейбойкиНайти(конт)
  23. кумульНайти(конт)
  24. ремкаНайти(конт)
  25. }
  26. func ремкаНайти(конт ILocalCtx) {
  27. арсенал := конт.Get("арсенал").Val().(ИАренаАрсенал)
  28. lstArsenal := арсенал.СписПолучить()
  29. if len(lstArsenal) == 0 {
  30. арсенал.Обновить()
  31. lstArsenal = арсенал.СписПолучить()
  32. }
  33. strOut := ""
  34. isFind := false
  35. // <span class="nwr"><img class="rico vm" src="/images/shells/repairkit.gif"/> 282</span>
  36. for _, стрСнаряд := range lstArsenal {
  37. if strings.Contains(стрСнаряд, `<span class="nwr"><img class="rico vm" src="/images/shells/repairkit.gif"/> `) {
  38. strOut = стрСнаряд
  39. isFind = true
  40. break
  41. }
  42. }
  43. Hassert(isFind, "ремкаНайти(): не найдена контрольная строка")
  44. strOut = strings.TrimPrefix(strOut, `<span class="nwr"><img class="rico vm" src="/images/shells/repairkit.gif"/> `)
  45. strOut = strings.TrimSuffix(strOut, `</span>`)
  46. целФугас, err := strconv.Atoi(strOut)
  47. Hassert(err == nil, "ремкаНайти(): strOut(%v), err=\n\t%v", strOut, err)
  48. арсенал.Ремки().Уст(целФугас)
  49. }
  50. func кумульНайти(конт ILocalCtx) {
  51. арсенал := конт.Get("арсенал").Val().(ИАренаАрсенал)
  52. lstArsenal := арсенал.СписПолучить()
  53. if len(lstArsenal) == 0 {
  54. арсенал.Обновить()
  55. lstArsenal = арсенал.СписПолучить()
  56. }
  57. strOut := ""
  58. isFind := false
  59. // <span class="nwr"><img class="rico vm" src="/images/shells/HollowCharge.png" alt="Кумулятивный снаряд" title="Кумулятивный снаряд"/> 7340 &nbsp;&nbsp;</span>
  60. for _, стрСнаряд := range lstArsenal {
  61. if strings.Contains(стрСнаряд, `<span class="nwr"><img class="rico vm" src="/images/shells/HollowCharge.png" alt="Кумулятивный снаряд" title="Кумулятивный снаряд"/> `) {
  62. strOut = стрСнаряд
  63. isFind = true
  64. break
  65. }
  66. }
  67. Hassert(isFind, "кумульНайти(): не найдена контрольная строка")
  68. strOut = strings.TrimPrefix(strOut, `<span class="nwr"><img class="rico vm" src="/images/shells/HollowCharge.png" alt="Кумулятивный снаряд" title="Кумулятивный снаряд"/> `)
  69. strOut = strings.TrimSuffix(strOut, ` &nbsp;&nbsp;</span>`)
  70. целФугас, err := strconv.Atoi(strOut)
  71. Hassert(err == nil, "кумульНайти(): strOut(%v), err=\n\t%v", strOut, err)
  72. арсенал.Кумулятивы().Уст(целФугас)
  73. }
  74. func бронейбойкиНайти(конт ILocalCtx) {
  75. арсенал := конт.Get("арсенал").Val().(ИАренаАрсенал)
  76. lstArsenal := арсенал.СписПолучить()
  77. if len(lstArsenal) == 0 {
  78. арсенал.Обновить()
  79. lstArsenal = арсенал.СписПолучить()
  80. }
  81. strOut := ""
  82. isFind := false
  83. // <span class="nwr"><img class="rico vm" src="/images/shells/ArmorPiercing.png" alt="Бронебойный снаряд" title="Бронебойный снаряд"/> 7335 &nbsp;&nbsp;</span>
  84. for _, стрСнаряд := range lstArsenal {
  85. if strings.Contains(стрСнаряд, `<span class="nwr"><img class="rico vm" src="/images/shells/ArmorPiercing.png" alt="Бронебойный снаряд" title="Бронебойный снаряд"/> `) {
  86. strOut = стрСнаряд
  87. isFind = true
  88. break
  89. }
  90. }
  91. Hassert(isFind, "бронейбойкиНайти(): не найдена контрольная строка")
  92. strOut = strings.TrimPrefix(strOut, `<span class="nwr"><img class="rico vm" src="/images/shells/ArmorPiercing.png" alt="Бронебойный снаряд" title="Бронебойный снаряд"/> `)
  93. strOut = strings.TrimSuffix(strOut, ` &nbsp;&nbsp;</span>`)
  94. целФугас, err := strconv.Atoi(strOut)
  95. Hassert(err == nil, "бронейбойкиНайти(): strOut(%v), err=\n\t%v", strOut, err)
  96. арсенал.Бронебойки().Уст(целФугас)
  97. }
  98. func фугасыНайти(конт ILocalCtx) {
  99. арсенал := конт.Get("арсенал").Val().(ИАренаАрсенал)
  100. lstArsenal := арсенал.СписПолучить()
  101. if len(lstArsenal) == 0 {
  102. арсенал.Обновить()
  103. lstArsenal = арсенал.СписПолучить()
  104. }
  105. strOut := ""
  106. isFind := false
  107. // <span class="nwr"><img class="rico vm" src="/images/shells/HighExplosive.png" alt="Фугасный снаряд" title="Фугасный снаряд"/> 7343 &nbsp;&nbsp;</span>
  108. for _, стрФугас := range lstArsenal {
  109. if strings.Contains(стрФугас, `<span class="nwr"><img class="rico vm" src="/images/shells/HighExplosive.png" alt="Фугасный снаряд" title="Фугасный снаряд"/> `) {
  110. strOut = стрФугас
  111. isFind = true
  112. break
  113. }
  114. }
  115. Hassert(isFind, "фугасыНайти(): не найдена контрольная строка")
  116. strOut = strings.TrimPrefix(strOut, `<span class="nwr"><img class="rico vm" src="/images/shells/HighExplosive.png" alt="Фугасный снаряд" title="Фугасный снаряд"/> `)
  117. strOut = strings.TrimSuffix(strOut, ` &nbsp;&nbsp;</span>`)
  118. целФугас, err := strconv.Atoi(strOut)
  119. Hassert(err == nil, "фугасыНайти(): strOut(%v), err=\n\t%v", strOut, err)
  120. арсенал.Фугасы().Уст(целФугас)
  121. }