Browse Source

d04 Исправление глюка с полигоном

SVI 2 years ago
parent
commit
1f00aea8b0

+ 1 - 1
pakApp/pakGui/pakWinState/modWinState.py

@@ -162,7 +162,7 @@ class WinState(Toplevel):
         self.lbl_prochnost["text"] = "Прочность: " + res["прочность"]
         self.lbl_mosh["text"] = "Танковая мощь: " + res["мощь"]
         self.frm_shahta.upstat(res)
-        self.frm_poligon(res)
+        self.frm_poligon.upstat(res)
 
     def close(self):
         """Закрывает окно по требованию"""

+ 1 - 1
pakApp/pakGui/pakWinState/pakFrmPolygon/modFrmPolygon.py

@@ -46,6 +46,6 @@ class FrmPolygon(LabelFrame):
     def upstat(self, src) -> None:
         """Обновляет состояние шахты на базе"""
         self.lbl_level["text"] = "Уровень: " + src["полигон_уровень"]
-        self.lbl_kol["text"] = "Режим: " + src["полигон_сделать_кол"]
+        self.lbl_kol["text"] = "Режим: " + src["полигон_режим"]
         self.lbl_nazv["text"] = "Название: " + src["полигон_сделать_назв"]
         self.lbl_vrema["text"] = "Время: " + src["полигон_сделать_время"]

+ 2 - 2
pkg/components/section/section.go

@@ -75,8 +75,8 @@ func (сам *Секция) Уст(времяСек alias.Время) error {
 	return nil
 }
 
-// ВремяОпрос -- объект оставшегося времени
-func (сам *Секция) ВремяОпрос() types.ИВремяОстат {
+// ВремяОстат -- объект оставшегося времени
+func (сам *Секция) ВремяОстат() types.ИВремяОстат {
 	сам.блок.RLock()
 	defer сам.блок.RUnlock()
 	return сам.времяОстат

+ 2 - 2
pkg/types/isection.go

@@ -11,8 +11,8 @@ type ИСценаСтр interface {
 	СтрОбновить(lstString []string) error
 	// СписПолучить -- возвращает список строк сцены
 	СписПолучить() []string
-	// ВремяОпрос -- объект оставшегося времени до опроса сцены
-	ВремяОпрос() ИВремяОстат
+	// ВремяОстат -- объект оставшегося времени до опроса сцены
+	ВремяОстат() ИВремяОстат
 	// РежимТекущ -- текущий режим работы
 	РежимТекущ() ИРежимРаботы
 }

+ 2 - 1
server/serv_bots/warbot/angar/angar.go

@@ -151,6 +151,7 @@ func НовАнгар(bot types.ИБот) (*Ангар, error) {
 			return nil, fmt.Errorf("НовАнгар(): in make *Missions, err=\n\t%w", err)
 		}
 	}
+	_ = types.ИАнгар(сам)
 	return сам, nil
 }
 
@@ -201,7 +202,7 @@ func (sf *Ангар) Пуск() error {
 			select {
 			case <-sf.бот.Кнт().Done(): // Отмена контекста
 				return
-			case <-sf.ВремяОпрос().КаналСиг(): // Метка времени
+			case <-sf.ВремяОстат().КаналСиг(): // Метка времени
 				if !фнЦикл() {
 					return
 				}

+ 1 - 1
server/serv_bots/warbot/angar/base/bank/bank.go

@@ -239,7 +239,7 @@ func (sf *Банк) сделатьСеребро() (alias.МилСек, error) {
 			log.Printf("WARN Банк.makeProduct(): при установке времени производства банка(%v)\n\terr=%v\n", time1, err)
 		}
 	}
-	return sf.ВремяОпрос().ПолучМилСек(), nil
+	return sf.ВремяОстат().ПолучМилСек(), nil
 }
 
 // Получает все режимы банка

+ 5 - 5
server/serv_bots/warbot/angar/base/base.go

@@ -154,10 +154,10 @@ func (sf *База) runComponent() error {
 
 // Выбирает время обновления базы по компонентам
 func (sf *База) setCountDown() {
-	timeBase := sf.банк.ВремяОпрос().String()
+	timeBase := sf.банк.ВремяОстат().String()
 	timeCount := timeBase
-	timeArsenal := sf.арсенал.ВремяОпрос().String()
-	timeMine := sf.шахта.ВремяОпрос().String()
+	timeArsenal := sf.арсенал.ВремяОстат().String()
+	timeMine := sf.шахта.ВремяОстат().String()
 	if timeArsenal < timeCount {
 		timeCount = timeArsenal
 	}
@@ -545,7 +545,7 @@ func (sf *База) проверитьБанк() error {
 		sf.checkBankMode()
 	}
 	sf.checkBankTime() // Проверка времени ожидания
-	countTime := sf.банк.ВремяОпрос().ПолучМилСек()
+	countTime := sf.банк.ВремяОстат().ПолучМилСек()
 	if countTime > 5_000 {
 		return nil
 	}
@@ -827,7 +827,7 @@ func (sf *База) проверитьПолигонУсиление() {
 		isOut   bool
 		lstBase = sf.СписПолучить()
 	)
-	countTime := sf.полигон.ВремяОпрос().ПолучМилСек()
+	countTime := sf.полигон.ВремяОстат().ПолучМилСек()
 	if countTime > 3_000 {
 		return
 	}

+ 2 - 2
server/serv_bots/warbot/angar/base/market/market.go

@@ -55,8 +55,8 @@ func (сам *Рынок) пуск() {
 		select {
 		case <-сам.бот.Кнт().Done():
 			return
-		case <-сам.ВремяОпрос().КаналСиг():
-			log.Printf("Market.run(): timeCount=%v\n", сам.ВремяОпрос().ПолучМилСек())
+		case <-сам.ВремяОстат().КаналСиг():
+			log.Printf("Market.run(): timeCount=%v\n", сам.ВремяОстат().ПолучМилСек())
 			_ = сам.купитьЗолото()
 			// Если золото не куплено -- обновить время ожидания
 			сам.Секция.ОбратВремяУст("02:00")

+ 1 - 1
server/serv_bots/warbot/angar/base/mine/mine.go

@@ -102,7 +102,7 @@ func (сам *Шахта) пуск() {
 		select {
 		case <-сам.кнт.Done():
 			return
-		case <-сам.ВремяОпрос().КаналСиг():
+		case <-сам.ВремяОстат().КаналСиг():
 
 		default:
 			log.Printf("Шахта.пуск()\n")

+ 28 - 31
server/serv_bots/warbot/angar/base/polygon/polygon.go

@@ -95,22 +95,24 @@ func (sf *Полигон) Пуск() error {
 // выполняет опрос полигона базы.
 func (сам *Полигон) пуск() {
 	сам.ОбратВремяУст("02")
+	фнРабота := func() {
+		сам.усилениеДобавить()
+		сам.усилениеПровер()
+		сам.времяОбнов()
+		сам.построитьПровер()
+		сам.проверитьУскорение()
+		if сам.ВремяОстат().String() == "00:00:00" {
+			time.Sleep(time.Minute * 5)
+		}
+	}
 	for {
 		select {
 		case <-сам.Кнт().Done():
 			return
-		case <-сам.ВремяОпрос().КаналСиг():
-		default:
-			mode := сам.РежимТекущ().Получ()
-			if mode == "upgrade" {
-				continue
-			}
-			сам.усилениеДобавить()
-			сам.усилениеПровер()
-			сам.времяОбнов()
-			сам.построитьПровер()
-			сам.проверитьУскорение()
-			time.Sleep(time.Minute * 20)
+		case <-сам.ВремяОстат().КаналСиг():
+			фнРабота()
+			// default:
+			// 	time.Sleep(time.Minute * 20)
 		}
 	}
 }
@@ -126,28 +128,18 @@ func (сам *Полигон) проверитьУскорение() {
 		log.Printf("Полигон.проверитьУскорение(): при обновлении строк базы, err=\n\t%v\n", err)
 		return
 	}
-	{ // Проверка на платное ускорение апгрейда + время
-
-		for _, strOut = range lstBase {
-			if strings.Contains(strOut, `Производит снаряды, ремкомплекты<br/>`) {
-				// Убедиться что есть строка платного ускорения
-				isFind = true
-				break
+	// Проверка на платное ускорение апгрейда + время
+	{ // Платное ускорение
+		if strings.Contains(strOut, `Ускорить за`) {
+			if err := сам.ОбратВремяУст(времОжидПлат); err != nil {
+				log.Printf("WARN Base.checkArsenalForce(): при установке платного времени ускорения апгрейда арсенала(%v)\n\terr=%v\n", времОжидПлат, err)
 			}
-		}
-		if !isFind {
+			сам.РежимТекущ().Уст("upgrade")
+			сам.РежимТекущ().РежимУст("апгрейд")
+			сам.продуктСейчас.Уст("апгрейд")
+			сам.продуктКол.Уст(0)
 			return
 		}
-		{ // Платное ускорение
-			if strings.Contains(strOut, `Ускорить за`) {
-				if err := сам.ОбратВремяУст(времОжидПлат); err != nil {
-					log.Printf("WARN Base.checkArsenalForce(): при установке платного времени ускорения апгрейда арсенала(%v)\n\terr=%v\n", времОжидПлат, err)
-				}
-				сам.РежимТекущ().Уст("upgrade")
-				сам.РежимТекущ().РежимУст("апгрейд")
-				return
-			}
-		}
 	}
 	{ // Проверка на бесплатное ускорение апгрейда
 		isFind = false
@@ -165,6 +157,8 @@ func (сам *Полигон) проверитьУскорение() {
 			return
 		}
 		сам.РежимТекущ().Уст("upgrade")
+		сам.продуктСейчас.Уст("апгрейд")
+		сам.продуктКол.Уст(0)
 		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>`)
@@ -181,6 +175,7 @@ func (сам *Полигон) проверитьУскорение() {
 		}
 		сам.РежимТекущ().Уст("upgrade")
 		сам.РежимТекущ().РежимУст("апгрейд")
+		сам.продуктКол.Уст(0)
 		if err := сам.ОбратВремяУст(времОжидБесплат); err != nil {
 			log.Printf("WARN Base.checkArsenalForce(): при установке бесплатного времени ускорения апгрейда арсенала(%v)\n\terr=%v\n", времОжидБесплат, err)
 		}
@@ -332,6 +327,8 @@ func (сам *Полигон) усилениеПровер() {
 		return
 	}
 	сам.танкСтат.ФорсажОбнов(форсажИмя, iForce)
+	сам.продуктСейчас.Уст("усиление-" + форсажИмя)
+	сам.продуктКол.Уст(iForce)
 }
 
 // Выбирает самый слабый параметр и усиливает его

+ 3 - 3
server/serv_bots/warbot/angar/division/divwar/divwar.go

@@ -81,9 +81,9 @@ func (sf *DivWar) reservTick() {
 		case <-sf.bot.Кнт().Done():
 			return
 		default:
-			ct0 := sf.ВремяОпрос().ПолучМилСек()
+			ct0 := sf.ВремяОстат().ПолучМилСек()
 			time.Sleep(time.Second * 7)
-			ct1 := sf.ВремяОпрос().ПолучМилСек()
+			ct1 := sf.ВремяОстат().ПолучМилСек()
 			if ct1.Сек() != ct0.Сек() {
 				continue
 			}
@@ -102,7 +102,7 @@ func (sf *DivWar) run() {
 		select {
 		case <-sf.bot.Кнт().Done():
 			return
-		case <-sf.ВремяОпрос().КаналСиг(): // Время обновить данные по сражению
+		case <-sf.ВремяОстат().КаналСиг(): // Время обновить данные по сражению
 			sf.findTimeCount()
 			sf.upDivWar()
 		case <-sf.chDivWar: // Сигнал к началу сражения

+ 1 - 1
server/serv_bots/warbot/angar/division/divwar/divwaron/divwaron.go

@@ -115,7 +115,7 @@ func (sf *DivWarOn) run() {
 		select {
 		case <-sf.ctxDivWar.Done():
 			return
-		case <-sf.ВремяОпрос().КаналСиг():
+		case <-sf.ВремяОстат().КаналСиг():
 			if sf.checkEnd() {
 				return
 			}

+ 2 - 2
server/serv_bots/warbot/angar/masters/bat_masters.go

@@ -59,7 +59,7 @@ func (sf *БитваМастеров) Run() error {
 			select {
 			case <-sf.бот.Кнт().Done():
 				return
-			case <-sf.ВремяОпрос().КаналСиг():
+			case <-sf.ВремяОстат().КаналСиг():
 				if !sf.goBatMas() { // Проверка на начало сражения
 					continue
 				}
@@ -77,7 +77,7 @@ func (sf *БитваМастеров) goBatMas() bool {
 	if !sf.upBattle() {
 		return false
 	}
-	countTime := sf.ВремяОпрос().String()
+	countTime := sf.ВремяОстат().String()
 	if countTime > "00:25:00" {
 		if err := sf.ОбратВремяУст(alias.Время(countTime)); err != nil {
 			log.Printf("ERRO BatMas.goBatMas(): при установке времени ожидания битвы мастеров(%v)\n\terr=%v\n", countTime, err)