bf_ammo_stat.go 6.0 KB

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