|
|
@@ -1,11 +1,9 @@
|
|
|
-package netstat
|
|
|
+package net_stat
|
|
|
|
|
|
import (
|
|
|
- "fmt"
|
|
|
- // "log"
|
|
|
"strconv"
|
|
|
"strings"
|
|
|
-
|
|
|
+ "wartank/pkg/components/kernel/logger"
|
|
|
"wartank/pkg/types"
|
|
|
)
|
|
|
|
|
|
@@ -17,50 +15,36 @@ import (
|
|
|
type NetStat struct {
|
|
|
server types.ИСервер
|
|
|
бот types.ИБот
|
|
|
+ лог types.ИЛоггер
|
|
|
}
|
|
|
|
|
|
// NewNetStat -- возвращает новый *NetStat
|
|
|
-func NewNetStat(bot types.ИБот) (*NetStat, error) {
|
|
|
- if bot == nil {
|
|
|
- return nil, fmt.Errorf("NewNetStat(): IBot == nil")
|
|
|
- }
|
|
|
+func NewNetStat(bot types.ИБот) *NetStat {
|
|
|
+ лог := logger.НовЛоггер("NetStat")
|
|
|
+ лог.Инфо("NewNetStat()\n")
|
|
|
+ лог.Паника(bot == nil, "NewNetStat(): ИБот == nil")
|
|
|
сам := &NetStat{
|
|
|
server: bot.Сервер(),
|
|
|
бот: bot,
|
|
|
+ лог: лог,
|
|
|
}
|
|
|
- return сам, nil
|
|
|
+ return сам
|
|
|
}
|
|
|
|
|
|
-func (сам *NetStat) Update() (err error) {
|
|
|
+func (сам *NetStat) Update() {
|
|
|
// _mt.Println("\n===NetStat.Update()===")
|
|
|
сам.findLevelTank()
|
|
|
- if err = сам.findLevelProgress(); err != nil {
|
|
|
- return fmt.Errorf("NetStat.Update(): in find level progress, err=\n\t%w", err)
|
|
|
- }
|
|
|
- if err = сам.findAtack(); err != nil {
|
|
|
- return fmt.Errorf("NetStat.Update(): in find atack, err=\n\t%w", err)
|
|
|
- }
|
|
|
- if err = сам.findArmor(); err != nil {
|
|
|
- return fmt.Errorf("NetStat.Update(): in find woll, err=\n\t%w", err)
|
|
|
- }
|
|
|
- if err = сам.findFyne(); err != nil {
|
|
|
- return fmt.Errorf("NetStat.Update(): in find woll, err=\n\t%w", err)
|
|
|
- }
|
|
|
- if err = сам.findHard(); err != nil {
|
|
|
- return fmt.Errorf("NetStat.Update(): in find body, err=\n\t%w", err)
|
|
|
- }
|
|
|
- if err = сам.findPower(); err != nil {
|
|
|
- return fmt.Errorf("NetStat.Update(): in find power, err=\n\t%w", err)
|
|
|
- }
|
|
|
- if err = сам.findOnline(); err != nil {
|
|
|
- return fmt.Errorf("NetStat.Update(): in find online, err=\n\t%w", err)
|
|
|
- }
|
|
|
- return nil
|
|
|
+ сам.findLevelProgress()
|
|
|
+ сам.атакаНайти()
|
|
|
+ сам.броняНайти()
|
|
|
+ сам.точностьНайти()
|
|
|
+ сам.прочностьНайти()
|
|
|
+ сам.мощностьНайти()
|
|
|
+ сам.игроковОнлайнНайти()
|
|
|
}
|
|
|
|
|
|
// Ищет в теле текста ангара мощность танка
|
|
|
-func (сам *NetStat) findPower() (err error) {
|
|
|
- // _mt.Println("\tNetStat.findPower()")
|
|
|
+func (сам *NetStat) мощностьНайти() {
|
|
|
lstAngar := сам.бот.Ангар().СписПолучить()
|
|
|
if len(lstAngar) == 0 {
|
|
|
// log._rintf("WARN NetStat.findPower(): lstAngar is empty\n")
|
|
|
@@ -78,16 +62,13 @@ func (сам *NetStat) findPower() (err error) {
|
|
|
strPower := lstPower[1]
|
|
|
lstPower = strings.Split(strPower, `</span>`)
|
|
|
strPower = lstPower[0]
|
|
|
- iPower, err := strconv.Atoi(strPower)
|
|
|
- if err != nil {
|
|
|
- return fmt.Errorf("NetStat.findPower(): power(%v) not number, err=\n\t%w", strPower, err)
|
|
|
- }
|
|
|
+ iPower, ош := strconv.Atoi(strPower)
|
|
|
+ сам.лог.Паника(ош != nil, "NetStat.мощностьНайти(): мощность(%v) не число, ош=\n\t%v\n", strPower, ош)
|
|
|
сам.бот.Стата().Мощь().Уст(iPower)
|
|
|
- return nil
|
|
|
}
|
|
|
|
|
|
// Ищет в теле текста ангара прочность танка
|
|
|
-func (сам *NetStat) findHard() (err error) {
|
|
|
+func (сам *NetStat) прочностьНайти() {
|
|
|
var (
|
|
|
strOut string
|
|
|
lstAngar = сам.бот.Ангар().СписПолучить()
|
|
|
@@ -111,17 +92,13 @@ func (сам *NetStat) findHard() (err error) {
|
|
|
strHard := lstHard[1]
|
|
|
lstHard = strings.Split(strHard, `</span><br/>`)
|
|
|
strHard = lstHard[0]
|
|
|
- iHard, err := strconv.Atoi(strHard)
|
|
|
- if err != nil {
|
|
|
- return fmt.Errorf("NetStat.findHard(): hard(%v) not number, err=\n\t%w", strHard, err)
|
|
|
- }
|
|
|
+ iHard, ош := strconv.Atoi(strHard)
|
|
|
+ сам.лог.Паника(ош != nil, "NetStat.прочностьНайти(): прочность(%v) не число, ош=\n\t%v\n", strHard, ош)
|
|
|
сам.бот.Стата().Прочность().Уст(iHard)
|
|
|
- return nil
|
|
|
}
|
|
|
|
|
|
// Ищет в теле текста ангара точность танка
|
|
|
-func (сам *NetStat) findFyne() (err error) {
|
|
|
- // _mt.Println("\tNetStat.findFyne()")
|
|
|
+func (сам *NetStat) точностьНайти() {
|
|
|
var (
|
|
|
strOut string
|
|
|
lstAngar = сам.бот.Ангар().СписПолучить()
|
|
|
@@ -138,32 +115,27 @@ func (сам *NetStat) findFyne() (err error) {
|
|
|
}
|
|
|
}
|
|
|
if !еслиНайдено {
|
|
|
- return nil
|
|
|
+ return
|
|
|
}
|
|
|
// Выделить броню
|
|
|
lstFyne := strings.Split(strOut, `<img width="14" height="14" src="/images/icons/accuracy.png?1" alt="Точность" title="Точность"/> Точность <span class="green2">`)
|
|
|
strFyne := lstFyne[1]
|
|
|
lstFyne = strings.Split(strFyne, `</span><br/>`)
|
|
|
strFyne = lstFyne[0]
|
|
|
- iFyne, err := strconv.Atoi(strFyne)
|
|
|
- if err != nil {
|
|
|
- return fmt.Errorf("NetStat.findFyne(): fyne(%v) not number, err=\n\t%w", strFyne, err)
|
|
|
- }
|
|
|
+ iFyne, ош := strconv.Atoi(strFyne)
|
|
|
+ сам.лог.Паника(ош != nil, "NetStat.точностьНайти(): точность(%v) не число, ош=\n\t%v\n", strFyne, ош)
|
|
|
сам.бот.Стата().Точность().Уст(iFyne)
|
|
|
- return nil
|
|
|
}
|
|
|
|
|
|
// Ищет в теле текста ангара броню танка
|
|
|
-func (сам *NetStat) findArmor() (err error) {
|
|
|
- // _mt.Println("\tNetStat.findArmor()")
|
|
|
-
|
|
|
+func (сам *NetStat) броняНайти() {
|
|
|
var (
|
|
|
strOut string
|
|
|
lstAngar = сам.бот.Ангар().СписПолучить()
|
|
|
еслиНайдено bool
|
|
|
)
|
|
|
if len(lstAngar) == 0 {
|
|
|
- return nil
|
|
|
+ return
|
|
|
}
|
|
|
for _, strOut = range lstAngar {
|
|
|
if strings.Contains(strOut, `/images/icons/armor.png?1`) {
|
|
|
@@ -179,17 +151,13 @@ func (сам *NetStat) findArmor() (err error) {
|
|
|
strArmor := lstArmor[1]
|
|
|
lstArmor = strings.Split(strArmor, `</span><br/>`)
|
|
|
strArmor = lstArmor[0]
|
|
|
- iArmor, err := strconv.Atoi(strArmor)
|
|
|
- if err != nil {
|
|
|
- return fmt.Errorf("NetStat.findArmor(): armor(%v) not number, err=\n\t%w", strArmor, err)
|
|
|
- }
|
|
|
+ iArmor, ош := strconv.Atoi(strArmor)
|
|
|
+ сам.лог.Паника(ош != nil, "NetStat.броняНайти(): броня(%v) не число, ош=\n\t%v\n", strArmor, ош)
|
|
|
сам.бот.Стата().Броня().Уст(iArmor)
|
|
|
- return nil
|
|
|
}
|
|
|
|
|
|
// Ищет в теле текста ангара уровень танка
|
|
|
func (сам *NetStat) findLevelTank() {
|
|
|
- // _mt.Println("\tNetStat.findLevelTank()")
|
|
|
lstAngar := сам.бот.Ангар().СписПолучить()
|
|
|
if len(lstAngar) == 0 {
|
|
|
// log._rintf("ERRO NetStat.findLevelTank(): пустой lstAngar")
|
|
|
@@ -207,22 +175,15 @@ func (сам *NetStat) findLevelTank() {
|
|
|
strLevel := lstLevel[1]
|
|
|
lstLevel = strings.Split(strLevel, `</span></span></div></td>`)
|
|
|
strLevel = lstLevel[0]
|
|
|
- iLevel, err := strconv.Atoi(strLevel)
|
|
|
- if err != nil {
|
|
|
- // log._rintf("ERRO NetStat.findLevelTank(): level(%v) не число, err=\n\t%v\n", strLevel, err)
|
|
|
- return
|
|
|
- }
|
|
|
+ iLevel, ош := strconv.Atoi(strLevel)
|
|
|
+ сам.лог.Паника(ош != nil, "NetStat.прочностьНайти(): уровень(%v) не число, ош=\n\t%v\n", strLevel, ош)
|
|
|
сам.бот.Ангар().Уровень().Уст(iLevel)
|
|
|
}
|
|
|
|
|
|
// Ищет в теле текста ангара прогресс уровня танка танка
|
|
|
-func (сам *NetStat) findLevelProgress() error {
|
|
|
- // _mt.Println("\tNetStat.findLevelProgress()")
|
|
|
+func (сам *NetStat) findLevelProgress() {
|
|
|
lstAngar := сам.бот.Ангар().СписПолучить()
|
|
|
- if len(lstAngar) == 0 {
|
|
|
- // log._rintf("WARN NetStat.findLevelProgress(): lstAngar пустой\n")
|
|
|
- return nil
|
|
|
- }
|
|
|
+ сам.лог.Паника(len(lstAngar) == 0, "lstAngar пустой")
|
|
|
var strOut string
|
|
|
for _, strProg := range lstAngar {
|
|
|
if strings.Contains(strProg, `class="progr"`) {
|
|
|
@@ -235,16 +196,13 @@ func (сам *NetStat) findLevelProgress() error {
|
|
|
strProg := lstProg[1]
|
|
|
lstProg = strings.Split(strProg, `%;"> </div></div></td>`)
|
|
|
strProg = lstProg[0]
|
|
|
- iProg, err := strconv.Atoi(strProg)
|
|
|
- if err != nil {
|
|
|
- return fmt.Errorf("NetStat.findLevelProgress(): progress(%v) not number, err=\n\t%w", strProg, err)
|
|
|
- }
|
|
|
+ iProg, ош := strconv.Atoi(strProg)
|
|
|
+ сам.лог.Паника(ош != nil, "NetStat.прогрессНайти(): прогресс(%v) не число, ош=\n\t%v\n", strProg, ош)
|
|
|
сам.бот.Ангар().Прогресс().Уст(iProg)
|
|
|
- return nil
|
|
|
}
|
|
|
|
|
|
// Ищет в теле текста ангара силу атаки танка
|
|
|
-func (сам *NetStat) findAtack() (err error) {
|
|
|
+func (сам *NetStat) атакаНайти() {
|
|
|
var (
|
|
|
strOut string
|
|
|
lstAngar = сам.бот.Ангар().СписПолучить()
|
|
|
@@ -257,29 +215,25 @@ func (сам *NetStat) findAtack() (err error) {
|
|
|
}
|
|
|
}
|
|
|
if !еслиНайдено {
|
|
|
- return nil
|
|
|
+ return
|
|
|
}
|
|
|
// Выделить атаку
|
|
|
- lstAtack := strings.Split(strOut, `<img width="14" height="14" src="/images/icons/attack.png?1" alt="Атака" title="Атака"/> Атака <span class="green2">`)
|
|
|
- strAtack := lstAtack[1]
|
|
|
- lstAtack = strings.Split(strAtack, `</span><br/>`)
|
|
|
- strAtack = lstAtack[0]
|
|
|
- iAtack, err := strconv.Atoi(strAtack)
|
|
|
- if err != nil {
|
|
|
- return fmt.Errorf("NetStat.findAtack(): atack(%v) not number, err=\n\t%w", strAtack, err)
|
|
|
- }
|
|
|
- сам.бот.Стата().Атака().Уст(iAtack)
|
|
|
- return nil
|
|
|
+ списАтака := strings.Split(strOut, `<img width="14" height="14" src="/images/icons/attack.png?1" alt="Атака" title="Атака"/> Атака <span class="green2">`)
|
|
|
+ стрАтака := списАтака[1]
|
|
|
+ списАтака = strings.Split(стрАтака, `</span><br/>`)
|
|
|
+ стрАтака = списАтака[0]
|
|
|
+ целАтака, ош := strconv.Atoi(стрАтака)
|
|
|
+ сам.лог.Паника(ош != nil, "NetStat.атакаНайти(): атака(%v) не число, ош=\n\t%v\n", стрАтака, ош)
|
|
|
+ сам.бот.Стата().Атака().Уст(целАтака)
|
|
|
}
|
|
|
|
|
|
// Ищет в теле текста ангара силу атаки танка
|
|
|
-func (сам *NetStat) findOnline() (err error) {
|
|
|
- // _mt.Println("\tNetStat.findOnline()")
|
|
|
+func (сам *NetStat) игроковОнлайнНайти() {
|
|
|
lstAngar := сам.бот.Ангар().СписПолучить()
|
|
|
var strOut string
|
|
|
- for _, strAtack := range lstAngar {
|
|
|
- if strings.Contains(strAtack, `>Онлайн</a>: `) {
|
|
|
- strOut = strAtack
|
|
|
+ for _, стрАтака := range lstAngar {
|
|
|
+ if strings.Contains(стрАтака, `>Онлайн</a>: `) {
|
|
|
+ strOut = стрАтака
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
@@ -292,10 +246,7 @@ func (сам *NetStat) findOnline() (err error) {
|
|
|
strOnline := lstAngar[1]
|
|
|
lstAngar = strings.Split(strOnline, `</span>`)
|
|
|
strOnline = lstAngar[0]
|
|
|
- iOnline, err := strconv.Atoi(strOnline)
|
|
|
- if err != nil {
|
|
|
- return fmt.Errorf("NetStat.findOnline(): online(%v) not number, err=\n\t%w", iOnline, err)
|
|
|
- }
|
|
|
+ iOnline, ош := strconv.Atoi(strOnline)
|
|
|
+ сам.лог.Паника(ош != nil, "NetStat.findOnline(): игроков онлайн(%v) не число, ош=\n\t%v\n", strOnline, ош)
|
|
|
сам.бот.Ангар().ИгрокиОнлайн().Уст(iOnline)
|
|
|
- return nil
|
|
|
}
|