wrag.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package wrag
  2. import (
  3. "strconv"
  4. "strings"
  5. . "wartank/app/lev0/types"
  6. . "gitp78su.ipnodns.ru/svi/kern"
  7. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  8. )
  9. /*
  10. Танк враг на битве, сражении, дуэли, войне
  11. */
  12. // Враг -- объект врага
  13. type Враг struct {
  14. сервер ИПриложение
  15. лог ILogBuf
  16. здоровье int //
  17. }
  18. // НовВраг -- возвращает новый объект врага
  19. func НовВраг(конт IKernelCtx, app ИПриложение, lstBattle []string) *Враг {
  20. лог := NewLogBuf()
  21. лог.Debug("НовВраг()\n")
  22. сам := &Враг{
  23. сервер: app,
  24. лог: лог,
  25. }
  26. сам.update(lstBattle)
  27. return сам
  28. }
  29. // Обновляет вражину
  30. func (сам *Враг) update(lstBattleOn []string) {
  31. // <img class="tank-img" src="/tankimg?c=2&amp;k=1&amp;m=0-2,1-2,2-0,3-2,5-2,6-0&amp;t=png" alt="Тень Брата">
  32. var (
  33. ind int
  34. strOut string
  35. еслиНайдено bool
  36. )
  37. for ind, strOut = range lstBattleOn {
  38. if strings.Contains(strOut, `<img class="tank-img" src="/`) {
  39. // Убедиться, что это не свой танк
  40. if strings.Contains(strOut, "prospero tank") {
  41. continue
  42. }
  43. еслиНайдено = true
  44. break
  45. }
  46. }
  47. if !еслиНайдено { // Не нашёл метку врага
  48. сам.лог.Err("update(): не нашёл метку врага\n")
  49. сам.здоровье = 800
  50. return
  51. }
  52. // Вражина найдена, ищем настоящее здоровье
  53. ind += 13
  54. strOut = lstBattleOn[ind]
  55. lstHealth := strings.Split(strOut, `<span>`)
  56. strHealth := lstHealth[1]
  57. lstHealth = strings.Split(strHealth, `</span>`)
  58. strHealth = lstHealth[0]
  59. iHealth, err := strconv.Atoi(strHealth)
  60. if err != nil {
  61. сам.лог.Err("update(): здоровье(%v) не число, err=\n\t%v\n", strHealth, err)
  62. сам.здоровье = 800
  63. return
  64. }
  65. сам.здоровье = iHealth
  66. }