|
|
@@ -8,10 +8,11 @@ import (
|
|
|
"strconv"
|
|
|
"strings"
|
|
|
"time"
|
|
|
-
|
|
|
- "wartank/pkg/section"
|
|
|
+ "wartank/pkg/arena"
|
|
|
+ "wartank/pkg/components/arena_net"
|
|
|
+ "wartank/pkg/components/kernel/logger"
|
|
|
+ "wartank/pkg/components/web_log"
|
|
|
"wartank/pkg/types"
|
|
|
- "wartank/server/serv_bots/warbot/angar/base/arsenal/arsenalnet"
|
|
|
"wartank/server/serv_bots/warbot/tank_stat/static_param"
|
|
|
)
|
|
|
|
|
|
@@ -24,11 +25,12 @@ const (
|
|
|
|
|
|
// Арсенал -- объект оружейной на базе
|
|
|
type Арсенал struct {
|
|
|
- *section.Секция
|
|
|
- лог types.ИВебЛог
|
|
|
+ types.ИАрена
|
|
|
+ вЛог types.ИВебЛог
|
|
|
+ лог types.ИЛоггер
|
|
|
бот types.ИБот
|
|
|
база types.ИБаза
|
|
|
- сеть *arsenalnet.ArsenalNet
|
|
|
+ сеть types.ИАренаСеть
|
|
|
фугас types.ИСтатПарам
|
|
|
бронебойка types.ИСтатПарам
|
|
|
кумулятив types.ИСтатПарам
|
|
|
@@ -43,10 +45,9 @@ type Арсенал struct {
|
|
|
|
|
|
// НовАрсенал -- возвращает новый *Arsenal
|
|
|
func НовАрсенал(база types.ИБаза) (types.ИАрсенал, error) {
|
|
|
- section, err := section.НовСекция(база.Бот(), "Арсенал", `<span class="green2">Ремкомплект</span><br/>`)
|
|
|
- if err != nil {
|
|
|
- return nil, fmt.Errorf("НовАрсенал(): in create ISection, err=\n\t%w", err)
|
|
|
- }
|
|
|
+ лог := logger.НовЛоггер("Арсенал")
|
|
|
+ лог.Инфо("НовАрсенал()\n")
|
|
|
+ арена := arena.НовАрена(база.Бот(), "Арсенал", `<span class="green2">Ремкомплект</span><br/>`)
|
|
|
|
|
|
фугас, ош := static_param.НовСтатПарам(стрФугасы)
|
|
|
if ош != nil {
|
|
|
@@ -74,7 +75,7 @@ func НовАрсенал(база types.ИБаза) (types.ИАрсенал, er
|
|
|
}
|
|
|
кнт, фнОтмена := context.WithCancel(база.Контекст())
|
|
|
сам := &Арсенал{
|
|
|
- Секция: section,
|
|
|
+ ИАрена: арена,
|
|
|
бот: база.Бот(),
|
|
|
база: база,
|
|
|
фугас: фугас,
|
|
|
@@ -85,16 +86,14 @@ func НовАрсенал(база types.ИБаза) (types.ИАрсенал, er
|
|
|
продуктКол: продуктКол,
|
|
|
кнт: кнт,
|
|
|
фнОтмена: фнОтмена,
|
|
|
+
|
|
|
+ лог: лог,
|
|
|
}
|
|
|
- сам.лог = сам.Лог()
|
|
|
- { // ArsenalNet
|
|
|
- сам.сеть, err = arsenalnet.НовАрсеналСеть(сам)
|
|
|
- if err != nil {
|
|
|
- return nil, fmt.Errorf("НовАрсенал(): in create NetArsenal, err=\n\t%w", err)
|
|
|
- }
|
|
|
- }
|
|
|
+ сам.вЛог = web_log.НовВебЛог(true)
|
|
|
+ сам.сеть = arena_net.НовАренаСеть(сам, "https://wartank.ru/production/Armory")
|
|
|
+ // сам.сеть = arsenalnet.НовАрсеналСеть(сам)
|
|
|
go сам.пуск()
|
|
|
- сам.лог.Добавить("НовАрсенал(): Арсенал создан")
|
|
|
+ сам.вЛог.Добавить("НовАрсенал(): Арсенал создан")
|
|
|
return сам, nil
|
|
|
}
|
|
|
|
|
|
@@ -128,7 +127,7 @@ func (сам *Арсенал) пуск() {
|
|
|
time.Sleep(time.Second * 5)
|
|
|
}
|
|
|
}()
|
|
|
- сам.лог.Добавить("Арсенал.пуск().фнРабота()\n")
|
|
|
+ сам.вЛог.Добавить("Арсенал.пуск().фнРабота()\n")
|
|
|
if еслиПостроить {
|
|
|
счёт := 5
|
|
|
for счёт > 0 {
|
|
|
@@ -155,11 +154,12 @@ func (сам *Арсенал) пуск() {
|
|
|
_ = сам.уровеньОбновить()
|
|
|
ош := сам.СтатаОбновить()
|
|
|
if ош != nil {
|
|
|
- сам.лог.Добавить("ОШИБКА ArsenalNet.Run(): in update stat, err=\n\t%w", ош)
|
|
|
+ сам.лог.Ошибка("пуск(): при обновлении статы, ош=\n\t%v\n", ош)
|
|
|
+ сам.вЛог.Добавить("пуск(): при обновлении статы, ош=\n\t%w", ош)
|
|
|
}
|
|
|
сам.забрать()
|
|
|
сам.сделать()
|
|
|
- log.Printf("Арсенал.пуск(): бот=%q, цикл завершён\n", сам.бот.Имя())
|
|
|
+ сам.лог.Инфо("пуск(): бот=%q, цикл завершён\n", сам.бот.Имя())
|
|
|
}
|
|
|
for {
|
|
|
select {
|
|
|
@@ -181,10 +181,11 @@ func (сам *Арсенал) пуск() {
|
|
|
|
|
|
// Обновляет текущий уровень оружейки (может быть не построена)
|
|
|
func (сам *Арсенал) уровеньОбновить() bool {
|
|
|
- сам.лог.Добавить("Арсенал.уровеньОбновить()\n")
|
|
|
+ сам.вЛог.Добавить("Арсенал.уровеньОбновить()\n")
|
|
|
списСтр, ош := сам.сеть.ВебВоркер().Получ("http://wartank.ru/buildings")
|
|
|
if ош != nil {
|
|
|
- сам.лог.Добавить("ОШИБКА Арсенал.уровеньОбновить(): in make request, err=\n\t%v\n", ош)
|
|
|
+ сам.лог.Ошибка("уровеньОбновить(): при выполнении запроса, ош=\n\t%v\n", ош)
|
|
|
+ сам.вЛог.Добавить("ОШИБКА Арсенал.уровеньОбновить(): in make request, err=\n\t%v\n", ош)
|
|
|
return false
|
|
|
}
|
|
|
// <span class="green2">Оружейная - 0</span><br/>
|
|
|
@@ -199,27 +200,30 @@ func (сам *Арсенал) уровеньОбновить() bool {
|
|
|
}
|
|
|
}
|
|
|
if !еслиНайти {
|
|
|
- сам.лог.Добавить("Арсенал.уровеньОбновить(): не надо\n")
|
|
|
+ сам.вЛог.Добавить("Арсенал.уровеньОбновить(): не надо\n")
|
|
|
return false
|
|
|
}
|
|
|
_стр := strings.TrimPrefix(стр, `<span class="green2">Оружейная - `)
|
|
|
_стр = strings.TrimSuffix(_стр, `</span><br/>`)
|
|
|
иУровень, ош := strconv.Atoi(_стр)
|
|
|
if ош != nil {
|
|
|
- сам.лог.Добавить("ОШИБКА Арсенал.уровеньОбновить(): строка уровня сбойная, стр=%q, ош=\n\t%v\n", стр, ош)
|
|
|
+ сам.лог.Ошибка("уровеньОбновить(): строка уровня сбойная, стр=%q, ош=\n\t%v\n", стр, ош)
|
|
|
+ сам.вЛог.Добавить("ОШИБКА Арсенал.уровеньОбновить(): строка уровня сбойная, стр=%q, ош=\n\t%v\n", стр, ош)
|
|
|
return false
|
|
|
}
|
|
|
сам.уровень.Уст(иУровень)
|
|
|
- сам.лог.Добавить("Арсенал.уровеньОбновить(): уровень=%d\n", иУровень)
|
|
|
+ сам.лог.Инфо("уровеньОбновить(): уровень=%d\n", иУровень)
|
|
|
+ сам.вЛог.Добавить("Арсенал.уровеньОбновить(): уровень=%d\n", иУровень)
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
// Строит оружейку при нулевом уровне
|
|
|
func (сам *Арсенал) построить() (bool, error) {
|
|
|
- сам.лог.Добавить("Арсенал.построить()\n")
|
|
|
+ сам.вЛог.Добавить("Арсенал.построить()\n")
|
|
|
списСтр, ош := сам.сеть.ВебВоркер().Получ("http://wartank.ru/buildings")
|
|
|
if ош != nil {
|
|
|
- сам.лог.Добавить("Арсенал.построить(): in make request, err=\n\t%v\n", ош)
|
|
|
+ сам.лог.Ошибка("построить(): при выполнении запроса, ош=\n\t%v\n", ош)
|
|
|
+ сам.вЛог.Добавить("Арсенал.построить(): при выполнении запроса, err=\n\t%v\n", ош)
|
|
|
return false, fmt.Errorf("")
|
|
|
}
|
|
|
// <span class="green2">Арсенал - 0</span><br/>
|
|
|
@@ -234,14 +238,15 @@ func (сам *Арсенал) построить() (bool, error) {
|
|
|
}
|
|
|
}
|
|
|
if !еслиНайти {
|
|
|
- сам.лог.Добавить("Арсенал.построить(): не надо\n")
|
|
|
+ сам.вЛог.Добавить("Арсенал.построить(): не надо\n")
|
|
|
return true, nil
|
|
|
}
|
|
|
_стр := strings.TrimPrefix(стр, `<span class="green2">Арсенал - `)
|
|
|
_стр = strings.TrimSuffix(_стр, `</span><br/>`)
|
|
|
иУровень, ош := strconv.Atoi(_стр)
|
|
|
if ош != nil {
|
|
|
- сам.лог.Добавить("ОШИБКА Арсенал.построить(): строка уровня сбойная, стр=%q, ош=\n\t%v\n", стр, ош)
|
|
|
+ сам.лог.Ошибка("построить(): строка уровня сбойная, стр=%q, ош=\n\t%v\n", стр, ош)
|
|
|
+ сам.вЛог.Добавить("ОШИБКА Арсенал.построить(): строка уровня сбойная, стр=%q, ош=\n\t%v\n", стр, ош)
|
|
|
return false, fmt.Errorf("")
|
|
|
}
|
|
|
сам.уровень.Уст(иУровень)
|
|
|
@@ -255,7 +260,7 @@ func (сам *Арсенал) построить() (bool, error) {
|
|
|
}
|
|
|
}
|
|
|
if !еслиНайти {
|
|
|
- сам.лог.Добавить("Арсенал.построить(): не надо\n")
|
|
|
+ сам.вЛог.Добавить("Арсенал.построить(): не надо\n")
|
|
|
return true, nil
|
|
|
}
|
|
|
// Пробуем построить оружейку
|
|
|
@@ -264,7 +269,8 @@ func (сам *Арсенал) построить() (bool, error) {
|
|
|
ссылка := "https://wartank.ru/" + _стр
|
|
|
списСтр, ош = сам.сеть.ВебВоркер().Получ(ссылка)
|
|
|
if ош != nil {
|
|
|
- сам.лог.Добавить("ОШИБКА Арсенал.построить(): при GET-команде 'построить оружейку', err=\n\t%v\n", ош)
|
|
|
+ сам.лог.Ошибка("построить(): при GET-команде 'построить оружейку', ош=\n\t%v\n", ош)
|
|
|
+ сам.вЛог.Добавить("ОШИБКА Арсенал.построить(): при GET-команде 'построить оружейку', err=\n\t%v\n", ош)
|
|
|
return false, fmt.Errorf("")
|
|
|
}
|
|
|
еслиНайти = false
|
|
|
@@ -276,7 +282,7 @@ func (сам *Арсенал) построить() (bool, error) {
|
|
|
}
|
|
|
}
|
|
|
if !еслиНайти {
|
|
|
- сам.лог.Добавить("Арсенал.построить(): не надо\n")
|
|
|
+ сам.вЛог.Добавить("Арсенал.построить(): не надо\n")
|
|
|
return true, nil
|
|
|
}
|
|
|
_стр = strings.TrimPrefix(стр, "<a class=\"simple-but border mb5\" href=\"")
|
|
|
@@ -285,16 +291,18 @@ func (сам *Арсенал) построить() (bool, error) {
|
|
|
ссылка = "https://wartank.ru/building-upgrade/" + _стр
|
|
|
_, ош = сам.сеть.ВебВоркер().Получ(ссылка)
|
|
|
if ош != nil {
|
|
|
- сам.лог.Добавить("ОШИБКА Арсенал.построить(): при GET-команде 'купить постройку оружейки', err=\n\t%v\n", ош)
|
|
|
+ сам.лог.Ошибка("построить(): при GET-команде 'купить постройку оружейки', ош=\n\t%v\n", ош)
|
|
|
+ сам.вЛог.Добавить("ОШИБКА Арсенал.построить(): при GET-команде 'купить постройку оружейки', err=\n\t%v\n", ош)
|
|
|
return false, fmt.Errorf("")
|
|
|
}
|
|
|
- сам.лог.Добавить("Арсенал.построить(): ок\n")
|
|
|
+ сам.лог.Инфо("построить(): ок\n")
|
|
|
+ сам.вЛог.Добавить("Арсенал.построить(): ок\n")
|
|
|
return true, nil
|
|
|
}
|
|
|
|
|
|
// Пытается проапгрейдить оружейку
|
|
|
func (сам *Арсенал) проапгрейдить() bool {
|
|
|
- сам.лог.Добавить("Арсенал.проапгрейдить()\n")
|
|
|
+ сам.вЛог.Добавить("Арсенал.проапгрейдить()\n")
|
|
|
var (
|
|
|
еслиНайти = false
|
|
|
списСтр []string
|
|
|
@@ -305,7 +313,7 @@ func (сам *Арсенал) проапгрейдить() bool {
|
|
|
defer time.Sleep(time.Millisecond * 1000)
|
|
|
списСтр, ош = сам.сеть.ВебВоркер().Получ("https://wartank.ru/building-upgrade/Armory")
|
|
|
if ош != nil {
|
|
|
- сам.лог.Добавить("ОШИБКА Арсенал.проапгрейдить().фнКупить(): при GET-команде 'купить постройку оружейки', err=\n\t%v\n", ош)
|
|
|
+ сам.вЛог.Добавить("ОШИБКА Арсенал.проапгрейдить().фнКупить(): при GET-команде 'купить постройку оружейки', err=\n\t%v\n", ош)
|
|
|
return false
|
|
|
}
|
|
|
for _, стр = range списСтр {
|
|
|
@@ -316,7 +324,7 @@ func (сам *Арсенал) проапгрейдить() bool {
|
|
|
}
|
|
|
}
|
|
|
if !еслиНайти {
|
|
|
- сам.лог.Добавить("Арсенал.проапгрейдить(): не надо\n")
|
|
|
+ сам.вЛог.Добавить("Арсенал.проапгрейдить(): не надо\n")
|
|
|
return true
|
|
|
}
|
|
|
// Пробуем улучшить шахту
|
|
|
@@ -327,7 +335,7 @@ func (сам *Арсенал) проапгрейдить() bool {
|
|
|
ссылка := "https://wartank.ru/building-upgrade/" + _стр
|
|
|
списСтр, ош = сам.сеть.ВебВоркер().Получ(ссылка)
|
|
|
if ош != nil {
|
|
|
- сам.лог.Добавить("ОШИБКА Арсенал.проапгрейдить().фнКупить(): при GET-команде 'купить постройку оружейки', err=\n\t%v\n", ош)
|
|
|
+ сам.вЛог.Добавить("ОШИБКА Арсенал.проапгрейдить().фнКупить(): при GET-команде 'купить постройку оружейки', err=\n\t%v\n", ош)
|
|
|
return false
|
|
|
}
|
|
|
// Проверить, что постройка состоялась
|
|
|
@@ -337,7 +345,7 @@ func (сам *Арсенал) проапгрейдить() bool {
|
|
|
return false // Покупка не оплачена
|
|
|
}
|
|
|
}
|
|
|
- сам.лог.Добавить("Арсенал.проапгрейдить().фнКупить(): ок\n")
|
|
|
+ сам.вЛог.Добавить("Арсенал.проапгрейдить().фнКупить(): ок\n")
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
@@ -350,7 +358,7 @@ func (сам *Арсенал) проапгрейдить() bool {
|
|
|
}
|
|
|
}
|
|
|
if !еслиНайти {
|
|
|
- сам.лог.Добавить("Арсенал.проапгрейдить().фнПодтверждение(): не надо\n")
|
|
|
+ сам.вЛог.Добавить("Арсенал.проапгрейдить().фнПодтверждение(): не надо\n")
|
|
|
return true
|
|
|
}
|
|
|
// Пробуем построить шахту
|
|
|
@@ -360,17 +368,17 @@ func (сам *Арсенал) проапгрейдить() bool {
|
|
|
ссылка := "https://wartank.ru" + _стр
|
|
|
списСтр, ош = сам.сеть.ВебВоркер().Получ(ссылка)
|
|
|
if ош != nil {
|
|
|
- сам.лог.Добавить("ОШИБКА Арсенал.проапгрейдить().фнПодтверждение(): при GET-команде 'подтвердить постройку склада топлива', err=\n\t%v\n", ош)
|
|
|
+ сам.вЛог.Добавить("ОШИБКА Арсенал.проапгрейдить().фнПодтверждение(): при GET-команде 'подтвердить постройку склада топлива', err=\n\t%v\n", ош)
|
|
|
return false
|
|
|
}
|
|
|
// Проверить, что постройка состоялась
|
|
|
for _, стр := range списСтр {
|
|
|
if strings.Contains(стр, "<title>Вы сделали слишком большую паузу</title>") {
|
|
|
- сам.лог.Добавить("ОШИБКА Арсенал.проапгрейдить().фнПодтверждение(): подтверждение покупка склада топлива не прошла\n\tlink=%v\n\tстр=\n\t%v\n", ссылка, стр)
|
|
|
+ сам.вЛог.Добавить("ОШИБКА Арсенал.проапгрейдить().фнПодтверждение(): подтверждение покупка склада топлива не прошла\n\tlink=%v\n\tстр=\n\t%v\n", ссылка, стр)
|
|
|
return false // Покупка не оплачена
|
|
|
}
|
|
|
}
|
|
|
- сам.лог.Добавить("Арсенал.проапгрейдить().фнПодтверждение(): ок\n")
|
|
|
+ сам.вЛог.Добавить("Арсенал.проапгрейдить().фнПодтверждение(): ок\n")
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
@@ -466,12 +474,8 @@ func (сам *Арсенал) Ремки() types.ИСтатПарам {
|
|
|
|
|
|
// Обновляет состояние арсенала по требованию
|
|
|
func (сам *Арсенал) СтатаОбновить() (err error) {
|
|
|
- сам.лог.Добавить("Арсенал.СтатаОбновить()\n")
|
|
|
- if ош := сам.сеть.Обновить(); ош != nil {
|
|
|
- err := fmt.Errorf("ОШИБКА Арсенал.СтатаОбновить(): при обновлении lstArsenal, err=%w", ош)
|
|
|
- сам.лог.Добавить("%v\n", err)
|
|
|
- return err
|
|
|
- }
|
|
|
+ сам.вЛог.Добавить("Арсенал.СтатаОбновить()\n")
|
|
|
+ сам.сеть.Обновить()
|
|
|
var (
|
|
|
strOut string
|
|
|
lstArsenal = сам.СписПолучить()
|
|
|
@@ -490,7 +494,7 @@ func (сам *Арсенал) СтатаОбновить() (err error) {
|
|
|
iFugas, err := strconv.Atoi(strFugas)
|
|
|
if err != nil {
|
|
|
ош := fmt.Errorf("ОШИБКА Арсенал.СтатаОбновить(): fugas(%v) not number, err=\n\t%w", strFugas, err)
|
|
|
- сам.лог.Добавить("%v\n", ош)
|
|
|
+ сам.вЛог.Добавить("%v\n", ош)
|
|
|
return ош
|
|
|
}
|
|
|
сам.Фугасы().Уст(iFugas)
|
|
|
@@ -509,11 +513,11 @@ func (сам *Арсенал) СтатаОбновить() (err error) {
|
|
|
iArmor, err := strconv.Atoi(strArmor)
|
|
|
if err != nil {
|
|
|
ош := fmt.Errorf("Арсенал.СтатаОбновить(): armor(%v) not number, err=\n\t%w", strArmor, err)
|
|
|
- сам.лог.Добавить("%v\n", ош)
|
|
|
+ сам.вЛог.Добавить("%v\n", ош)
|
|
|
return ош
|
|
|
}
|
|
|
сам.Бронебойки().Уст(iArmor)
|
|
|
- сам.лог.Добавить("Арсенал.СтатаОбновить(): бронебойки=%v\n", iArmor)
|
|
|
+ сам.вЛог.Добавить("Арсенал.СтатаОбновить(): бронебойки=%v\n", iArmor)
|
|
|
}
|
|
|
{ // Найти маркер кумулятивного снаряда
|
|
|
for _, strKumul := range lstArsenal {
|
|
|
@@ -554,11 +558,7 @@ func (сам *Арсенал) СтатаОбновить() (err error) {
|
|
|
|
|
|
// Выбирает что надо делать, запускает процесс изготовления
|
|
|
func (сам *Арсенал) сделать() bool {
|
|
|
- ош := сам.сеть.Обновить()
|
|
|
- if ош != nil {
|
|
|
- // log._rintf("ERRO Арсенал.сделать(): при обновлении lstArsenal, err=\n\t%v\n", err)
|
|
|
- return false
|
|
|
- }
|
|
|
+ сам.сеть.Обновить()
|
|
|
// _mt.Println("\tArsenalNet.сделать()")
|
|
|
var (
|
|
|
ремкаКол = сам.Ремки().Получ()
|
|
|
@@ -633,7 +633,7 @@ func (сам *Арсенал) сделатьБронебойки() bool {
|
|
|
// log._rintf("ERRO ArsenalNet.makeArmor(): in update lstArsenal, err=\n\t%v\n", err)
|
|
|
return false
|
|
|
}
|
|
|
- сам.СценаРежим().РежимУст(стрБронебойки)
|
|
|
+ сам.АренаСостояние().СостояниеУст(стрБронебойки)
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
@@ -668,7 +668,7 @@ func (сам *Арсенал) сделатьКумули() bool {
|
|
|
// log._rintf("ERRO ArsenalNet.makeKumul(): in make product arsenal kumul , err=\n\t%v\n", err)
|
|
|
return false
|
|
|
}
|
|
|
- сам.СценаРежим().РежимУст(стрКумулятивы)
|
|
|
+ сам.АренаСостояние().СостояниеУст(стрКумулятивы)
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
@@ -704,7 +704,7 @@ func (сам *Арсенал) сделатьФугасы() bool {
|
|
|
// log._rintf("ERRO ArsenalNet.makeFugas(): in make request arsenal product, err=\n\t%v\n", err)
|
|
|
return false
|
|
|
}
|
|
|
- сам.СценаРежим().РежимУст(стрФугасы)
|
|
|
+ сам.АренаСостояние().СостояниеУст(стрФугасы)
|
|
|
// log._rintf("INFO Арсенал.makeFugas()\n")
|
|
|
return true
|
|
|
}
|
|
|
@@ -747,6 +747,6 @@ func (сам *Арсенал) сделатьРемку() bool {
|
|
|
log.Printf("Арсенал.сделатьРемку(): при отдаче команды сделать ремку, err=\n\t%v\n", err)
|
|
|
return false
|
|
|
}
|
|
|
- сам.СценаРежим().РежимУст(стрРемки)
|
|
|
+ сам.АренаСостояние().СостояниеУст(стрРемки)
|
|
|
return true
|
|
|
}
|