|
|
@@ -8,9 +8,13 @@ import (
|
|
|
"time"
|
|
|
|
|
|
"wartank/pkg/alias"
|
|
|
+ "wartank/pkg/components/safe_int"
|
|
|
+ "wartank/pkg/components/safe_string"
|
|
|
"wartank/pkg/components/section"
|
|
|
+ "wartank/pkg/components/section/down_time"
|
|
|
"wartank/pkg/types"
|
|
|
"wartank/server/serv_bots/warbot/angar/base/polygon/polygonnet"
|
|
|
+ "wartank/server/serv_bots/warbot/tank/tankstat/static_param"
|
|
|
)
|
|
|
|
|
|
/*
|
|
|
@@ -18,37 +22,70 @@ import (
|
|
|
*/
|
|
|
|
|
|
const (
|
|
|
- времОжидПлат = 60 // Время ожидания платного ускорения
|
|
|
- времОжидБесплат = 1810 // Время ожидания бесплатного ускорения
|
|
|
+ времОжидПлат = "05:00" // Время ожидания платного ускорения
|
|
|
+ времОжидБесплат = "30:00" // Время ожидания бесплатного ускорения
|
|
|
|
|
|
)
|
|
|
|
|
|
// Полигон -- объект полигона на базе
|
|
|
type Полигон struct {
|
|
|
*section.Секция
|
|
|
- бот types.ИБот
|
|
|
- танкСтат types.ИТанкСтат
|
|
|
- сеть *polygonnet.ПолигонСеть
|
|
|
+ бот types.ИБот
|
|
|
+ танкСтат types.ИТанкСтат
|
|
|
+ сеть *polygonnet.ПолигонСеть
|
|
|
+ времяОстат types.ИВремяОстат
|
|
|
+ продуктСейчас *safe_string.БезопСтрока
|
|
|
+ продуктКол *safe_int.БезопЦелое
|
|
|
+ уровень *static_param.СтатПарам
|
|
|
}
|
|
|
|
|
|
// НовПолигон -- возвращает новый *Polygon
|
|
|
-func НовПолигон(base types.ИБаза) (*Полигон, error) {
|
|
|
- секция, ош := section.НовСекция(base.Бот(), "Полигон", `<title>Полигон</title>`)
|
|
|
+func НовПолигон(база types.ИБаза) (*Полигон, error) {
|
|
|
+ секция, ош := section.НовСекция(база.Бот(), "Полигон", `<title>Полигон</title>`)
|
|
|
if ош != nil {
|
|
|
- return nil, fmt.Errorf("NewPolygon(): in create *Section, err=\n\t%w", ош)
|
|
|
+ return nil, fmt.Errorf("НовПолигон(): при создании ИСекция, ош=\n\t%w", ош)
|
|
|
+ }
|
|
|
+ уровень, ош := static_param.НовСтатПарам("уровень полигона")
|
|
|
+ if ош != nil {
|
|
|
+ return nil, fmt.Errorf("НовПолигон(): при создании уровня полигона, ош=\n\t%w", ош)
|
|
|
}
|
|
|
сам := &Полигон{
|
|
|
- Секция: секция,
|
|
|
- бот: base.Бот(),
|
|
|
- танкСтат: base.Бот().Танк().ТанкСтат(),
|
|
|
+ Секция: секция,
|
|
|
+ бот: база.Бот(),
|
|
|
+ танкСтат: база.Бот().Танк().ТанкСтат(),
|
|
|
+ времяОстат: down_time.НовВремОбрат(секция, 5_000),
|
|
|
+ продуктСейчас: safe_string.НовБезопСтрока(),
|
|
|
+ продуктКол: safe_int.НовБезопЦелое(),
|
|
|
+ уровень: уровень,
|
|
|
}
|
|
|
сам.сеть, ош = polygonnet.НовПолигонСеть(сам)
|
|
|
if ош != nil {
|
|
|
return nil, fmt.Errorf("NewPolygon(): in create NetPolygon, err=\n\t%w", ош)
|
|
|
}
|
|
|
+ _ = types.ИБазаПолигон(сам)
|
|
|
return сам, nil
|
|
|
}
|
|
|
|
|
|
+// Уровень -- возвращает уровень полигона
|
|
|
+func (сам *Полигон) Уровень() types.ИСтатПарам {
|
|
|
+ return сам.уровень
|
|
|
+}
|
|
|
+
|
|
|
+// ПродуктКолСейчас -- количество продукта, что именно сейчас производится на полигоне
|
|
|
+func (сам *Полигон) ПродуктКолСейчас() int {
|
|
|
+ return сам.продуктКол.Получ()
|
|
|
+}
|
|
|
+
|
|
|
+// ПродуктИмяСейчас -- что именно сейчас производится на полигоне
|
|
|
+func (сам *Полигон) ПродуктИмяСейчас() string {
|
|
|
+ return сам.продуктСейчас.Получ()
|
|
|
+}
|
|
|
+
|
|
|
+// ПродуктВремяСейчас -- сколько осталось времени до обновы полигона
|
|
|
+func (сам *Полигон) ПродуктВремяСейчас() string {
|
|
|
+ return сам.времяОстат.String()
|
|
|
+}
|
|
|
+
|
|
|
// Пуск -- запускает работу полигона в отдельном потоке
|
|
|
func (sf *Полигон) Пуск() error {
|
|
|
go sf.пуск()
|
|
|
@@ -57,10 +94,10 @@ func (sf *Полигон) Пуск() error {
|
|
|
|
|
|
// выполняет опрос полигона базы.
|
|
|
func (сам *Полигон) пуск() {
|
|
|
- сам.ОбратВремяУст(2_000)
|
|
|
+ сам.ОбратВремяУст("02")
|
|
|
for {
|
|
|
select {
|
|
|
- case <-сам.бот.Кнт().Done():
|
|
|
+ case <-сам.Кнт().Done():
|
|
|
return
|
|
|
case <-сам.ВремяОпрос().КаналСиг():
|
|
|
default:
|
|
|
@@ -228,7 +265,7 @@ func (сам *Полигон) времяОбнов() {
|
|
|
)
|
|
|
defer func() {
|
|
|
if !isSet {
|
|
|
- сам.ОбратВремяУст(5_000)
|
|
|
+ сам.ОбратВремяУст("05")
|
|
|
}
|
|
|
}()
|
|
|
for _, lastTime := range lstPolygon {
|
|
|
@@ -245,7 +282,7 @@ func (сам *Полигон) времяОбнов() {
|
|
|
strLastTime = lstTime[1]
|
|
|
lstTime = strings.Split(strLastTime, `</span>`)
|
|
|
strLastTime = lstTime[0]
|
|
|
- if err := сам.ParseCountDown(alias.Время(strLastTime)); err != nil {
|
|
|
+ if err := сам.Уст(alias.Время(strLastTime)); err != nil {
|
|
|
// log._rintf("ERRO Polygon.updateTime(): при установке времени ожидания полигона(%v)\n\terr=%v\n", strLastTime, err)
|
|
|
return
|
|
|
}
|
|
|
@@ -301,7 +338,7 @@ func (сам *Полигон) усилениеПровер() {
|
|
|
func (сам *Полигон) усилениеДобавить() {
|
|
|
if err := сам.сеть.UpdateLst(); err != nil {
|
|
|
// log._rintf("Polygon.checkPolygon(): при принудительном обновлении lstPlygon, mode=%s\terr=\n\t%v\n", sf.ModeCurrent().Get(), err)
|
|
|
- сам.ОбратВремяУст(5_000)
|
|
|
+ сам.ОбратВремяУст("05")
|
|
|
return
|
|
|
}
|
|
|
lstPoligon := сам.СписПолучить()
|