|
|
@@ -92,35 +92,40 @@ func НовБаза(ангар types.ИАнгар) (*База, error) {
|
|
|
}
|
|
|
|
|
|
// Запускает базу в обработку
|
|
|
-func (sf *База) Run() error {
|
|
|
+func (sf *База) Пуск() error {
|
|
|
log.Printf("Base.Run()\n")
|
|
|
if err := sf.runComponent(); err != nil {
|
|
|
return fmt.Errorf("Base.Run(): run, err=\n\t%w", err)
|
|
|
}
|
|
|
- go sf.run()
|
|
|
+ go sf.пуск()
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
// Собственная работа
|
|
|
-func (sf *База) run() {
|
|
|
+func (sf *База) пуск() {
|
|
|
+ фнЦикл := func() {
|
|
|
+ if err := sf.сеть.UpdateLst(); err != nil { // Обновить состояние базы
|
|
|
+ log.Printf("ERRO Base.Run(): при обновлении базы, err=\n\t%v\n", err)
|
|
|
+ }
|
|
|
+ sf.проверитьПолигонУсиление() // Проверить усиление полигона
|
|
|
+ if err := sf.проверитьБанк(); err != nil { // Проверка режимов банка
|
|
|
+ log.Printf("ERRO Base.Run(): при проверке банка, err=\n\t%v\n", err)
|
|
|
+ }
|
|
|
+ sf.проверитьАрсенал() // Проверка арсенала
|
|
|
+ sf.проверитьШахту() // Проверка шахты
|
|
|
+ sf.setCountDown() // Установка счётчика времени
|
|
|
+ time.Sleep(time.Second * time.Duration(sf.времОстат))
|
|
|
+ }
|
|
|
for {
|
|
|
select {
|
|
|
case <-sf.Кнт().Done():
|
|
|
sf.ВремяОпрос().Стоп()
|
|
|
return
|
|
|
- case <-sf.ВремяОпрос().КаналСиг():
|
|
|
- if err := sf.сеть.UpdateLst(); err != nil { // Обновить состояние базы
|
|
|
- log.Printf("ERRO Base.Run(): при обновлении базы, err=\n\t%v\n", err)
|
|
|
- }
|
|
|
- sf.checkPolygonForce() // Проверить усиление полигона
|
|
|
- if err := sf.checkBank(); err != nil { // Проверка режимов банка
|
|
|
- log.Printf("ERRO Base.Run(): при проверке банка, err=\n\t%v\n", err)
|
|
|
- }
|
|
|
- sf.checkArsenal() // Проверка арсенала
|
|
|
- sf.checkMine() // Проверка шахты
|
|
|
- sf.setCountDown() // Установка счётчика времени
|
|
|
- time.Sleep(time.Second * time.Duration(sf.времОстат))
|
|
|
- // sf.CountDown().Set(45)
|
|
|
+ // case <-sf.ВремяОпрос().КаналСиг():
|
|
|
+ // фнЦикл()
|
|
|
+ default:
|
|
|
+ фнЦикл()
|
|
|
+ time.Sleep(time.Minute * 1)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -198,7 +203,7 @@ func (sf *База) Рынок() types.ИРынок {
|
|
|
}
|
|
|
|
|
|
// Проверяет на забрать шахту
|
|
|
-func (sf *База) checkMine() {
|
|
|
+func (sf *База) проверитьШахту() {
|
|
|
countTime := sf.шахта.ВремяОпрос().Получ()
|
|
|
if countTime > 3 {
|
|
|
return
|
|
|
@@ -274,7 +279,7 @@ func (sf *База) checkMineGet() {
|
|
|
lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
|
|
|
strLink := lstLink[1]
|
|
|
lstLink = strings.Split(strLink, `"><span><span>Забрать</span></span></a>`)
|
|
|
- strLink = "http://wartank.ru/" + lstLink[0]
|
|
|
+ strLink = "https://wartank.ru/" + lstLink[0]
|
|
|
lstBase1, err := sf.сеть.Get(strLink)
|
|
|
if err != nil {
|
|
|
// log._rintf("ERRO Base.checkMineGet(): при выполнении Get-запроса 'забрать', err=\n\t%v\n", err)
|
|
|
@@ -451,29 +456,29 @@ func (sf *База) checkMineProduct() {
|
|
|
}
|
|
|
|
|
|
// Проверяет режимы арсенала
|
|
|
-func (sf *База) checkArsenal() {
|
|
|
- countTime := sf.арсенал.ВремяОпрос().Получ()
|
|
|
- if countTime > 3 {
|
|
|
- return
|
|
|
- }
|
|
|
+func (sf *База) проверитьАрсенал() {
|
|
|
+ // countTime := sf.арсенал.ВремяОпрос().Получ()
|
|
|
+ // if countTime > 3 {
|
|
|
+ // return
|
|
|
+ // }
|
|
|
if err := sf.арсенал.UpdateArsenal(); err != nil {
|
|
|
// log._rintf("ERRO Base.checkArsenal(): при обновлении арсенала, err=\n\t%v\n", err)
|
|
|
return
|
|
|
}
|
|
|
if mode := sf.арсенал.РежимТекущ().Режим(); mode == "" {
|
|
|
- sf.checkArsenalMode()
|
|
|
+ sf.проверитьАрсеналРежим()
|
|
|
}
|
|
|
- sf.checkArsenalForce() // Нужно ли ускорить апгрейд арсенала
|
|
|
+ sf.проверитьАрсеналУскорение() // Нужно ли ускорить апгрейд арсенала
|
|
|
if sf.арсенал.РежимТекущ().Получ() == "upgrade" {
|
|
|
return
|
|
|
}
|
|
|
- sf.checkArsenalGet() // Нужно ли забрать оружие
|
|
|
- sf.checkArsenalTime()
|
|
|
- sf.checkArsenalMode()
|
|
|
+ sf.проверитьАрсеналЗабрать() // Нужно ли забрать оружие
|
|
|
+ sf.проверитьАрсеналВремя()
|
|
|
+ sf.проверитьАрсеналРежим()
|
|
|
}
|
|
|
|
|
|
// Проверяет время готовности арсенала
|
|
|
-func (sf *База) checkArsenalTime() {
|
|
|
+func (sf *База) проверитьАрсеналВремя() {
|
|
|
var (
|
|
|
lstBase = sf.СписПолучить()
|
|
|
ind int
|
|
|
@@ -508,22 +513,22 @@ func (sf *База) checkArsenalTime() {
|
|
|
}
|
|
|
|
|
|
// Проверяет на забрать оружейную
|
|
|
-func (sf *База) checkArsenalGet() {
|
|
|
+func (sf *База) проверитьАрсеналЗабрать() {
|
|
|
var (
|
|
|
- strOut string
|
|
|
- ind int
|
|
|
- isFind bool
|
|
|
- lstBase = sf.СписПолучить()
|
|
|
+ strOut string
|
|
|
+ ind int
|
|
|
+ еслиНайдено bool
|
|
|
+ lstBase = sf.СписПолучить()
|
|
|
)
|
|
|
for ind, strOut = range lstBase {
|
|
|
if strings.Contains(strOut, `Производит снаряды, ремкомплекты<br/>`) {
|
|
|
- isFind = true
|
|
|
+ еслиНайдено = true
|
|
|
ind += 17
|
|
|
strOut = lstBase[ind]
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
- if !isFind {
|
|
|
+ if !еслиНайдено {
|
|
|
return
|
|
|
}
|
|
|
if !strings.Contains(strOut, `"><span><span>Забрать</span></span></a>`) {
|
|
|
@@ -532,38 +537,43 @@ func (sf *База) checkArsenalGet() {
|
|
|
lstLink := strings.Split(strOut, `<a class="simple-but border" href="`)
|
|
|
strLink := lstLink[1]
|
|
|
lstLink = strings.Split(strLink, `"><span><span>Забрать</span></span></a>`)
|
|
|
- // http://wartank.ru/buildings?80-1.ILinkListener-buildings-0-building-rootBlock-actionPanel-takeProductionLink
|
|
|
- strLink = "http://wartank.ru/" + lstLink[0]
|
|
|
- lstBase, err := sf.сеть.Get(strLink)
|
|
|
- if err != nil {
|
|
|
- // log._rintf("ERRO Base.checkArsenalGet(): при выполнении Get-запроса 'забрать', err=\n\t%v\n", err)
|
|
|
- return
|
|
|
- }
|
|
|
- if len(lstBase) == 0 {
|
|
|
- // log._rintf("ERRO Base.checkArsenalGet(): len lstBase(%v)==0", len(lstBase))
|
|
|
- return
|
|
|
- }
|
|
|
- isFind = false
|
|
|
- for _, strOut = range lstBase {
|
|
|
- if strings.Contains(strOut, `<title>Производство</title>`) {
|
|
|
- isFind = true
|
|
|
- break
|
|
|
+ // https://wartank.ru/buildings?80-1.ILinkListener-buildings-0-building-rootBlock-actionPanel-takeProductionLink
|
|
|
+ strLink = "https://wartank.ru/" + lstLink[0]
|
|
|
+ var (
|
|
|
+ лстАрсенал []string
|
|
|
+ ош error
|
|
|
+ )
|
|
|
+ фнЗабрать := func() bool {
|
|
|
+ time.Sleep(time.Millisecond * 100)
|
|
|
+ лстАрсенал, ош = sf.сеть.Get(strLink)
|
|
|
+ if ош != nil {
|
|
|
+ // log._rintf("ERRO Base.checkArsenalGet(): при выполнении Get-запроса 'забрать', err=\n\t%v\n", err)
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ if len(лстАрсенал) == 0 {
|
|
|
+ // log._rintf("ERRO Base.checkArsenalGet(): len lstBase(%v)==0", len(lstBase))
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ for _, strOut = range лстАрсенал {
|
|
|
+ if strings.Contains(strOut, `<title>Производство</title>`) {
|
|
|
+ return false
|
|
|
+ }
|
|
|
}
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ for !фнЗабрать() {
|
|
|
}
|
|
|
sf.арсенал.SetCountDown(1)
|
|
|
- if isFind {
|
|
|
- if err = sf.арсенал.СтрОбновить(lstBase); err != nil {
|
|
|
- log.Printf("ERRO Base.checkArsenalGet(): при обновлении lstArsenal, err=\n\t%v\n", err)
|
|
|
- }
|
|
|
- return
|
|
|
+ if ош = sf.СтрОбновить(лстАрсенал); ош != nil {
|
|
|
+ log.Printf("ERRO Base.checkArsenalGet(): при обновлении lstBase, err=\n\t%v\n", ош)
|
|
|
}
|
|
|
- if err = sf.СтрОбновить(lstBase); err != nil {
|
|
|
- log.Printf("ERRO Base.checkArsenalGet(): при обновлении lstBase, err=\n\t%v\n", err)
|
|
|
+ if ош = sf.арсенал.СтрОбновить(лстАрсенал); ош != nil {
|
|
|
+ log.Printf("ERRO Base.checkArsenalGet(): при обновлении lstArsenal, err=\n\t%v\n", ош)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// Проверяетрежим производства арсенала
|
|
|
-func (sf *База) checkArsenalMode() {
|
|
|
+func (sf *База) проверитьАрсеналРежим() {
|
|
|
var (
|
|
|
strOut string
|
|
|
lstBase = sf.СписПолучить()
|
|
|
@@ -589,7 +599,7 @@ func (sf *База) checkArsenalMode() {
|
|
|
}
|
|
|
|
|
|
// Проверяет на ускорение апгрейда арсенала
|
|
|
-func (sf *База) checkArsenalForce() {
|
|
|
+func (sf *База) проверитьАрсеналУскорение() {
|
|
|
var (
|
|
|
ind int
|
|
|
strOut = ""
|
|
|
@@ -641,7 +651,7 @@ func (sf *База) checkArsenalForce() {
|
|
|
lstLink := strings.Split(strOut, `<td style="width:50%;padding-left:1px;"><a class="simple-but border" href="`)
|
|
|
strLink := lstLink[1]
|
|
|
lstLink = strings.Split(strLink, `"><span><span>Ускорение</span></span></a>`)
|
|
|
- strLink = "http://wartank.ru/" + lstLink[0]
|
|
|
+ strLink = "https://wartank.ru/" + lstLink[0]
|
|
|
lstBase, err := sf.сеть.Get(strLink)
|
|
|
if err != nil {
|
|
|
// log._rintf("ERRO NetBank.checkArsenalForce(): при GET-запросе на бесплатном ускорении апгрейда арсенала, err=\n\t%v\n", err)
|
|
|
@@ -663,7 +673,7 @@ func (sf *База) checkArsenalForce() {
|
|
|
}
|
|
|
|
|
|
// Проверяет режим банка
|
|
|
-func (sf *База) checkBank() error {
|
|
|
+func (sf *База) проверитьБанк() error {
|
|
|
if sf.банк.РежимТекущ().Режим() == "" {
|
|
|
sf.checkBankMode()
|
|
|
}
|
|
|
@@ -788,7 +798,7 @@ func (sf *База) checkBankTake() {
|
|
|
lstLink := strings.Split(strLink, `<a class="simple-but border" href="`)
|
|
|
strLink = lstLink[1]
|
|
|
lstLink = strings.Split(strLink, `"><span><span>Забрать</span></span></a>`)
|
|
|
- strLink = "http://wartank.ru/" + lstLink[0]
|
|
|
+ strLink = "https://wartank.ru/" + lstLink[0]
|
|
|
lstBank, err := sf.сеть.Get(strLink)
|
|
|
if err != nil {
|
|
|
// log._rintf("ERRO Base.checkBankTake(): при выполнении GET-запроса 'забрать серебро', err=\n\t%v\n", err)
|
|
|
@@ -858,7 +868,7 @@ func (sf *База) checkBankForce() {
|
|
|
lstLink := strings.Split(strOut, `<td style="width:50%;padding-left:1px;"><a class="simple-but border" href="`)
|
|
|
strLink := lstLink[1]
|
|
|
lstLink = strings.Split(strLink, `"><span><span>Ускорение</span></span></a>`)
|
|
|
- strLink = "http://wartank.ru/" + lstLink[0]
|
|
|
+ strLink = "https://wartank.ru/" + lstLink[0]
|
|
|
lstBase, err := sf.сеть.Get(strLink)
|
|
|
if err != nil {
|
|
|
// log._rintf("ERRO NetBank.checkBankForce(): при GET-запросе на бесплатном ускорении апгрейда банка, err=\n\t%v\n", err)
|
|
|
@@ -919,7 +929,7 @@ func (sf *База) checkMineForce() {
|
|
|
lstLink := strings.Split(strOut, `<td style="width:50%;padding-left:1px;"><a class="simple-but border" href="`)
|
|
|
strLink := lstLink[1]
|
|
|
lstLink = strings.Split(strLink, `"><span><span>Ускорение</span></span></a>`)
|
|
|
- strLink = "http://wartank.ru/" + lstLink[0]
|
|
|
+ strLink = "https://wartank.ru/" + lstLink[0]
|
|
|
lstBase, err := sf.сеть.Get(strLink)
|
|
|
if err != nil {
|
|
|
// log._rintf("ERRO NetBank.checkMineForce(): при GET-запросе на бесплатном ускорении апгрейда шахты, err=\n\t%v\n", err)
|
|
|
@@ -943,7 +953,7 @@ func (sf *База) checkMineForce() {
|
|
|
}
|
|
|
|
|
|
// Проверяет на ускорение апгрейда полигона
|
|
|
-func (sf *База) checkPolygonForce() {
|
|
|
+func (sf *База) проверитьПолигонУсиление() {
|
|
|
var (
|
|
|
ind int
|
|
|
strOut = ""
|
|
|
@@ -996,7 +1006,7 @@ func (sf *База) checkPolygonForce() {
|
|
|
lstLink := strings.Split(strOut, `<td style="width:50%;padding-left:1px;"><a class="simple-but border" href="`)
|
|
|
strLink := lstLink[1]
|
|
|
lstLink = strings.Split(strLink, `"><span><span>Ускорение</span></span></a>`)
|
|
|
- strLink = "http://wartank.ru/" + lstLink[0]
|
|
|
+ strLink = "https://wartank.ru/" + lstLink[0]
|
|
|
lstBase, err := sf.сеть.Get(strLink)
|
|
|
if err != nil {
|
|
|
// log._rintf("ERRO NetBank.checkPolygonForce(): при GET-запросе на бесплатном ускорении апгрейда полигона, err=\n\t%v\n", err)
|