|
|
@@ -1,6 +1,7 @@
|
|
|
package arsenal
|
|
|
|
|
|
import (
|
|
|
+ "context"
|
|
|
"fmt"
|
|
|
"log"
|
|
|
"strconv"
|
|
|
@@ -27,18 +28,24 @@ const (
|
|
|
// Оружейная -- объект оружейной на базе
|
|
|
type Оружейная struct {
|
|
|
*section.Секция
|
|
|
- бот types.ИБот
|
|
|
- база types.ИБаза
|
|
|
- сеть *arsenalnet.ArsenalNet
|
|
|
- фугас types.ИСтатПарам
|
|
|
- бронебойка types.ИСтатПарам
|
|
|
- кумулятив types.ИСтатПарам
|
|
|
- ремка types.ИСтатПарам
|
|
|
+ бот types.ИБот
|
|
|
+ база types.ИБаза
|
|
|
+ сеть *arsenalnet.ArsenalNet
|
|
|
+ фугас types.ИСтатПарам
|
|
|
+ бронебойка types.ИСтатПарам
|
|
|
+ кумулятив types.ИСтатПарам
|
|
|
+ ремка types.ИСтатПарам
|
|
|
+ уровень types.ИСтатПарам
|
|
|
+ продуктИмя string // Что сейчас делается
|
|
|
+ продуктКол types.ИСтатПарам // Сколько делается прямо сейчас
|
|
|
+ продуктВремя string // Сколько осталось времени прямо сейчас
|
|
|
+ кнт context.Context // контекст шахты
|
|
|
+ фнОтмена func() // Функция отмены шахты
|
|
|
}
|
|
|
|
|
|
// НовОружейная -- возвращает новый *Arsenal
|
|
|
-func НовОружейная(base types.ИБаза) (*Оружейная, error) {
|
|
|
- section, err := section.НовСекция(base.Бот(), "Арсенал", `<span class="green2">Ремкомплект</span><br/>`)
|
|
|
+func НовОружейная(база 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)
|
|
|
}
|
|
|
@@ -59,14 +66,27 @@ func НовОружейная(base types.ИБаза) (*Оружейная, error
|
|
|
if ош != nil {
|
|
|
return nil, fmt.Errorf("НовОружейная(): при создании статистики ремок, ош=\n\t%w", ош)
|
|
|
}
|
|
|
+ уровень, ош := static_param.НовСтатПарам("уровень")
|
|
|
+ if ош != nil {
|
|
|
+ return nil, fmt.Errorf("НовОружейная(): при создании статистики числа добычи, ош=\n\t%w", ош)
|
|
|
+ }
|
|
|
+ продуктКол, ош := static_param.НовСтатПарам("свинец")
|
|
|
+ if ош != nil {
|
|
|
+ return nil, fmt.Errorf("НовШахта(): при создании статистики числа добычи, ош=\n\t%w", ош)
|
|
|
+ }
|
|
|
+ кнт, фнОтмена := context.WithCancel(база.Кнт())
|
|
|
сам := &Оружейная{
|
|
|
Секция: section,
|
|
|
- бот: base.Бот(),
|
|
|
- база: base,
|
|
|
+ бот: база.Бот(),
|
|
|
+ база: база,
|
|
|
фугас: фугас,
|
|
|
бронебойка: бронейбойки,
|
|
|
кумулятив: кумулятив,
|
|
|
ремка: ремка,
|
|
|
+ уровень: уровень,
|
|
|
+ продуктКол: продуктКол,
|
|
|
+ кнт: кнт,
|
|
|
+ фнОтмена: фнОтмена,
|
|
|
}
|
|
|
{ // ArsenalNet
|
|
|
сам.сеть, err = arsenalnet.НовАрсеналСеть(сам)
|
|
|
@@ -74,10 +94,31 @@ func НовОружейная(base types.ИБаза) (*Оружейная, error
|
|
|
return nil, fmt.Errorf("НовОружейная(): in create NetArsenal, err=\n\t%w", err)
|
|
|
}
|
|
|
}
|
|
|
- _ = types.ИАрсенал(сам)
|
|
|
+ _ = types.ИОружейная(сам)
|
|
|
return сам, nil
|
|
|
}
|
|
|
|
|
|
+// Уровень -- возвращает уровень шахты
|
|
|
+func (сам *Оружейная) Уровень() types.ИСтатПарам {
|
|
|
+ return сам.уровень
|
|
|
+}
|
|
|
+
|
|
|
+// ПродуктКолСейчас -- возвращает количество прозводимого продукта
|
|
|
+func (сам *Оружейная) ПродуктКолСейчас() int {
|
|
|
+ return сам.продуктКол.Получ()
|
|
|
+}
|
|
|
+
|
|
|
+// ПродуктИмяСейчас -- возвращает имя прозводимого продукта
|
|
|
+func (сам *Оружейная) ПродуктИмяСейчас() string {
|
|
|
+ return сам.продуктИмя
|
|
|
+}
|
|
|
+
|
|
|
+// ПродуктВремяСейчас -- сколько осталось времени до производства продукта
|
|
|
+func (сам *Оружейная) ПродуктВремяСейчас() string {
|
|
|
+ return сам.продуктВремя
|
|
|
+ // return сам.Секция.ВремяОпрос().Стр()
|
|
|
+}
|
|
|
+
|
|
|
func (сам *Оружейная) Пуск() error {
|
|
|
go сам.пуск()
|
|
|
return nil
|
|
|
@@ -88,9 +129,12 @@ func (сам *Оружейная) пуск() {
|
|
|
// сам.getTime()
|
|
|
time.Sleep(time.Second * 3)
|
|
|
фнРабота := func() {
|
|
|
- defer time.Sleep(time.Minute * 5) // Интервал 5 минут (кратно интервалу производства -- от 40 минут до 1 часа)
|
|
|
- if сам.построитьУлучшить() {
|
|
|
- time.Sleep(time.Minute * 25)
|
|
|
+ defer func() {
|
|
|
+ for сам.ВремяОстат().ПолучМилСек() > 0 {
|
|
|
+ time.Sleep(time.Second * 5)
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ if сам.уровеньОбновить() {
|
|
|
return
|
|
|
}
|
|
|
сам.СтатаОбновить()
|
|
|
@@ -99,7 +143,7 @@ func (сам *Оружейная) пуск() {
|
|
|
}
|
|
|
for {
|
|
|
select {
|
|
|
- case <-сам.Кнт().Done():
|
|
|
+ case <-сам.кнт.Done():
|
|
|
return
|
|
|
// case <-сам.ВремяОпрос().КаналСиг():
|
|
|
// if сам.РежимТекущ().Получ() == "upgrade" {
|
|
|
@@ -115,6 +159,199 @@ func (сам *Оружейная) пуск() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+// Обновляет текущий уровень оружейки (может быть не построена)
|
|
|
+func (сам *Оружейная) уровеньОбновить() bool {
|
|
|
+ списСтр, ош := сам.сеть.Клиент().Get("http://wartank.ru/buildings")
|
|
|
+ if ош != nil {
|
|
|
+ log.Printf("Оружейная.уровеньОбновить(): in make request, err=\n\t%v\n", ош)
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ // <span class="green2">Оружейная - 0</span><br/>
|
|
|
+ var (
|
|
|
+ еслиНайти = false
|
|
|
+ стр = ""
|
|
|
+ )
|
|
|
+ for _, стр = range списСтр {
|
|
|
+ if strings.Contains(стр, `<span class="green2">Оружейная - `) {
|
|
|
+ еслиНайти = true
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if !еслиНайти {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ _стр := strings.TrimPrefix(стр, `<span class="green2">Оружейная - `)
|
|
|
+ _стр = strings.TrimSuffix(_стр, `</span><br/>`)
|
|
|
+ иУровень, ош := strconv.Atoi(_стр)
|
|
|
+ if ош != nil {
|
|
|
+ log.Printf("Оружейная.уровеньОбновить(): строка уровня сбойная, стр=%q, ош=\n\t%v\n", стр, ош)
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ сам.уровень.Уст(иУровень)
|
|
|
+ switch иУровень {
|
|
|
+ case 0: // оружейку надо построить
|
|
|
+ счёт := 5
|
|
|
+ for счёт > 0 {
|
|
|
+ if сам.построить(списСтр) {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ счёт--
|
|
|
+ }
|
|
|
+ default: // Пробуем проапгрейдить
|
|
|
+ счёт := 5
|
|
|
+ for счёт > 0 {
|
|
|
+ if сам.проапгрейдить() {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ счёт--
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true
|
|
|
+}
|
|
|
+
|
|
|
+// Строит оружейку при нулевом уровне
|
|
|
+func (сам *Оружейная) построить(списСтр []string) bool {
|
|
|
+ // <td style="width:50%;padding-left:1px;"><a class="simple-but border mb5" href="building-upgrade/Armory"><span><span>Построить</span></span></a></td>
|
|
|
+ var (
|
|
|
+ еслиНайти = false
|
|
|
+ стр = ""
|
|
|
+ )
|
|
|
+ for _, стр = range списСтр {
|
|
|
+ if strings.Contains(стр, `href="building-upgrade/Armory"><span><span>Построить</span></span>`) {
|
|
|
+ еслиНайти = true
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if !еслиНайти {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ // Пробуем построить оружейку
|
|
|
+ _стр := strings.TrimPrefix(стр, `<td style="width:50%;padding-left:1px;"><a class="simple-but border mb5" href="`)
|
|
|
+ _стр = strings.TrimSuffix(_стр, `"><span><span>Построить</span></span></a></td>`)
|
|
|
+ ссылка := "https://wartank.ru/" + _стр
|
|
|
+ списСтр, ош := сам.сеть.Клиент().Get(ссылка)
|
|
|
+ if ош != nil {
|
|
|
+ log.Printf("ERRO Оружейная.построить(): при GET-команде 'построить оружейку', err=\n\t%v\n", ош)
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ еслиНайти = false
|
|
|
+ // "<a class=\"simple-but border mb5\" href=\"Armory?14-1.ILinkListener-upgradeLink-link\">"
|
|
|
+ for _, стр = range списСтр {
|
|
|
+ if strings.Contains(стр, `ILinkListener-upgradeLink-link`) {
|
|
|
+ еслиНайти = true
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if !еслиНайти {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ _стр = strings.TrimPrefix(стр, "<a class=\"simple-but border mb5\" href=\"")
|
|
|
+ _стр = strings.TrimSuffix(_стр, "\">")
|
|
|
+ // http://wartank.ru/building-upgrade/Armory?16-1.ILinkListener-upgradeLink-link
|
|
|
+ ссылка = "https://wartank.ru/building-upgrade/" + _стр
|
|
|
+ _, ош = сам.сеть.Клиент().Get(ссылка)
|
|
|
+ if ош != nil {
|
|
|
+ log.Printf("ERRO Оружейная.построить(): при GET-команде 'купить постройку оружейки', err=\n\t%v\n", ош)
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ return true
|
|
|
+}
|
|
|
+
|
|
|
+// Пытается проапгрейдить оружейку
|
|
|
+func (сам *Оружейная) проапгрейдить() bool {
|
|
|
+ time.Sleep(time.Millisecond * 1000)
|
|
|
+ var (
|
|
|
+ еслиНайти = false
|
|
|
+ списСтр []string
|
|
|
+ стр = ""
|
|
|
+ ош error
|
|
|
+ )
|
|
|
+ фнКупить := func() bool {
|
|
|
+ defer time.Sleep(time.Millisecond * 1000)
|
|
|
+ списСтр, ош = сам.сеть.Клиент().Get("https://wartank.ru/building-upgrade/Armory")
|
|
|
+ if ош != nil {
|
|
|
+ log.Printf("Оружейная.проапгрейдить().фнКупить(): при GET-команде 'купить постройку оружейки', err=\n\t%v\n", ош)
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ for _, стр = range списСтр {
|
|
|
+ // <a class="simple-but border mb5" href="Armory?5-1.ILinkListener-upgradeLink-link">
|
|
|
+ if strings.Contains(стр, `ILinkListener-upgradeLink-link`) {
|
|
|
+ еслиНайти = true
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if !еслиНайти {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ // Пробуем улучшить шахту
|
|
|
+ _стр := strings.TrimPrefix(стр, "<a class=\"simple-but border mb5\" href=\"")
|
|
|
+ _стр = strings.TrimSuffix(_стр, "\">")
|
|
|
+ // https://wartank.ru/building-upgrade/Armory?4-1.ILinkListener-upgradeLink-link
|
|
|
+ // <a class="simple-but border mb5" href="Armory?50-1.ILinkListener-upgradeLink-link">
|
|
|
+ ссылка := "https://wartank.ru/building-upgrade/" + _стр
|
|
|
+ списСтр, ош = сам.сеть.Клиент().Get(ссылка)
|
|
|
+ if ош != nil {
|
|
|
+ log.Printf("Оружейная.проапгрейдить().фнКупить(): при GET-команде 'купить постройку оружейки', err=\n\t%v\n", ош)
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ // Проверить, что постройка состоялась
|
|
|
+ for _, стр := range списСтр {
|
|
|
+ if strings.Contains(стр, "ILinkListener-upgradeLink-link") {
|
|
|
+ log.Printf("Оружейная.проапгрейдить().фнКупить(): покупка оружейкине прошла\n\tlink=%v\n\tстр=\n\t%v\n", ссылка, стр)
|
|
|
+ return false // Покупка не оплачена
|
|
|
+ }
|
|
|
+ }
|
|
|
+ log.Printf("!!!!! Оружейная.проапгрейдить().фнКупить(): покупка оружейки прошла\n")
|
|
|
+ return true
|
|
|
+ }
|
|
|
+
|
|
|
+ фнПодтверждение := func() bool {
|
|
|
+ for _, стр = range списСтр {
|
|
|
+ // <a class="simple-but border w50 mXa mb10" w:id="confirmLink" href="../wicket/page?7-1.ILinkListener-confirmLink"><span><span>да, подтверждаю</span></span></a>
|
|
|
+ if strings.Contains(стр, `ILinkListener-confirmLink`) {
|
|
|
+ еслиНайти = true
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if !еслиНайти {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ // Пробуем построить шахту
|
|
|
+ _стр := strings.TrimPrefix(стр, `<a class="simple-but border w50 mXa mb10" w:id="confirmLink" href="..`)
|
|
|
+ _стр = strings.TrimSuffix(_стр, `"><span><span>да, подтверждаю</span></span></a>`)
|
|
|
+ // https://wartank.ru/wicket/page?6-1.ILinkListener-confirmLink
|
|
|
+ ссылка := "https://wartank.ru" + _стр
|
|
|
+ списСтр, ош = сам.сеть.Клиент().Get(ссылка)
|
|
|
+ if ош != nil {
|
|
|
+ log.Printf("Оружейная.проапгрейдить().фнПодтверждение(): при GET-команде 'подтвердить постройку склада топлива', err=\n\t%v\n", ош)
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ // Проверить, что постройка состоялась
|
|
|
+ for _, стр := range списСтр {
|
|
|
+ if strings.Contains(стр, "<title>Вы сделали слишком большую паузу</title>") {
|
|
|
+ log.Printf("Оружейная.проапгрейдить().фнПодтверждение(): подтверждение покупка склада топлива не прошла\n\tlink=%v\n\tстр=\n\t%v\n", ссылка, стр)
|
|
|
+ return false // Покупка не оплачена
|
|
|
+ }
|
|
|
+ }
|
|
|
+ log.Printf("+++++Оружейная.проапгрейдить().фнПодтверждение(): подтверждение покупка склада топлива прошла\n")
|
|
|
+ return true
|
|
|
+ }
|
|
|
+
|
|
|
+ фнКомплекс := func() {
|
|
|
+ count := 5
|
|
|
+ for count > 0 {
|
|
|
+ if фнКупить() {
|
|
|
+ if фнПодтверждение() {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ count--
|
|
|
+ }
|
|
|
+ }
|
|
|
+ фнКомплекс()
|
|
|
+ return true
|
|
|
+}
|
|
|
+
|
|
|
// Проверяет на забрать оружейную
|
|
|
func (сам *Оружейная) забрать() bool {
|
|
|
var (
|
|
|
@@ -170,91 +407,6 @@ func (сам *Оружейная) забрать() bool {
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
-// Проверяет необходимость постройки оружейной
|
|
|
-func (сам *Оружейная) построитьУлучшить() bool {
|
|
|
- var (
|
|
|
- списПолигон []string
|
|
|
- ош error
|
|
|
- )
|
|
|
- { // Зайти на страницу постройки
|
|
|
- // https://wartank.ru/building-upgrade/Armory
|
|
|
- списПолигон, ош = сам.сеть.Клиент().Get("https://wartank.ru/building-upgrade/Armory")
|
|
|
- if ош != nil {
|
|
|
- log.Printf("Оружейная.построитьУлучшить(): при чтении страницы строительства оружейки, ош=\n\t%v\n", ош)
|
|
|
- return false
|
|
|
- }
|
|
|
- стрСсылка := ""
|
|
|
- еслиНайти := false
|
|
|
- // <a class="simple-but border mb5" href="Armory?163-1.ILinkListener-upgradeLink-link">
|
|
|
- for _, стрСсылка = range списПолигон {
|
|
|
- if strings.Contains(стрСсылка, `href="Armory?`) {
|
|
|
- еслиНайти = true
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- if !еслиНайти { // Ссылка на постройку оружейной не найдена
|
|
|
- return false
|
|
|
- }
|
|
|
- _ссылка := strings.TrimPrefix(стрСсылка, `<a class="simple-but border mb5" href="`)
|
|
|
- _ссылка = strings.TrimSuffix(_ссылка, `">`)
|
|
|
- ссылка := "https://wartank.ru/building-upgrade/" + _ссылка
|
|
|
- // https://wartank.ru/building-upgrade/Armory?162-1.ILinkListener-upgradeLink-link
|
|
|
- списПолигон, ош = сам.сеть.Клиент().Get(ссылка)
|
|
|
- if ош != nil {
|
|
|
- log.Printf("Оружейная.построитьУлучшить(): при выполнении запроса на строительство, ош=\n\t%v\n", ош)
|
|
|
- return false
|
|
|
- }
|
|
|
- }
|
|
|
- { // Заказать постройку
|
|
|
- // https://wartank.ru/building-upgrade/Armory
|
|
|
- стрСсылка := ""
|
|
|
- еслиНайти := false
|
|
|
- // <a class="simple-but border mb5" href="Armory?163-1.ILinkListener-upgradeLink-link">
|
|
|
- for _, стрСсылка = range списПолигон {
|
|
|
- if strings.Contains(стрСсылка, `href="Armory?`) {
|
|
|
- еслиНайти = true
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- if еслиНайти {
|
|
|
- _ссылка := strings.TrimPrefix(стрСсылка, `<a class="simple-but border mb5" href="`)
|
|
|
- _ссылка = strings.TrimSuffix(_ссылка, `">`)
|
|
|
- ссылка := "https://wartank.ru/building-upgrade/" + _ссылка
|
|
|
- // https://wartank.ru/building-upgrade/Armory?162-1.ILinkListener-upgradeLink-link
|
|
|
- списПолигон, ош = сам.сеть.Клиент().Get(ссылка)
|
|
|
- if ош != nil {
|
|
|
- log.Printf("Оружейная.построитьУлучшить(): при выполнении запроса на строительство, ош=\n\t%v\n", ош)
|
|
|
- return false
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- { // подтверждение постройки
|
|
|
- // <a class="simple-but border w50 mXa mb10" w:id="confirmLink" href="../wicket/page?165-1.ILinkListener-confirmLink"><span><span>да, подтверждаю</span></span></a>
|
|
|
- стрСсылка := ""
|
|
|
- еслиНайти := false
|
|
|
- for _, стрСсылка = range списПолигон {
|
|
|
- if strings.Contains(стрСсылка, `.ILinkListener-confirmLink`) {
|
|
|
- еслиНайти = true
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- if !еслиНайти { // Время полигона вышло
|
|
|
- return false
|
|
|
- }
|
|
|
- _ссылка := strings.TrimPrefix(стрСсылка, "<a class=\"simple-but border w50 mXa mb10\" w:id=\"confirmLink\" href=\"../")
|
|
|
- _ссылка = strings.TrimSuffix(_ссылка, "\"><span><span>да, подтверждаю</span></span></a>")
|
|
|
- ссылка := "https://wartank.ru/" + _ссылка
|
|
|
- // https://wartank.ru/wicket/page?135-1.ILinkListener-confirmLink
|
|
|
- _, ош = сам.сеть.Клиент().Get(ссылка)
|
|
|
- if ош != nil {
|
|
|
- log.Printf("Оружейная.построитьУлучшить(): при выполнении запроса на строительство, ош=\n\t%v\n", ош)
|
|
|
- return false
|
|
|
- }
|
|
|
- }
|
|
|
- log.Printf("Оружейная.построитьУлучшить(): построен упешно\n")
|
|
|
- return true
|
|
|
-}
|
|
|
-
|
|
|
// Фугасы -- возвращает объект числа фугасов
|
|
|
func (сам *Оружейная) Фугасы() types.ИСтатПарам {
|
|
|
return сам.фугас
|
|
|
@@ -364,31 +516,31 @@ func (сам *Оружейная) сделать() bool {
|
|
|
return false
|
|
|
}
|
|
|
// _mt.Println("\tArsenalNet.сделать()")
|
|
|
- { // Контроль ремки по времени суток и минимальному количеству
|
|
|
- iRemka := сам.Ремки().Получ()
|
|
|
- if iRemka < 70 {
|
|
|
- for !сам.сделатьРемку() {
|
|
|
- }
|
|
|
- return true
|
|
|
+ var (
|
|
|
+ ремкаКол = сам.Ремки().Получ()
|
|
|
+ фугасКол = сам.Фугасы().Получ()
|
|
|
+ кумульКол = сам.Кумулятивы().Получ()
|
|
|
+ ббКол = сам.Бронебойки().Получ()
|
|
|
+ снарядТип = ""
|
|
|
+ )
|
|
|
+ if ремкаКол < 70 { // Контроль ремки по времени суток и минимальному количеству ремок
|
|
|
+ for !сам.сделатьРемку() {
|
|
|
}
|
|
|
+ сам.продуктИмя = стрРемки
|
|
|
+ return true
|
|
|
}
|
|
|
{ // Контроль по числу снарядов. В равных долях без приоритетов
|
|
|
- iFugas := сам.Фугасы().Получ()
|
|
|
- iKumul := сам.Кумулятивы().Получ()
|
|
|
- iArmor := сам.Бронебойки().Получ()
|
|
|
-
|
|
|
- typeArmor := стрФугасы
|
|
|
- typeVal := iFugas
|
|
|
-
|
|
|
- if iKumul < typeVal {
|
|
|
- typeArmor = стрКумулятивы
|
|
|
- typeVal = iKumul
|
|
|
+ // снарядТип = стрФугасы
|
|
|
+ снарядТип = стрБронебойки
|
|
|
+ if ббКол > фугасКол {
|
|
|
+ снарядТип = стрФугасы
|
|
|
}
|
|
|
|
|
|
- if iArmor < typeVal {
|
|
|
- typeArmor = стрБронебойки
|
|
|
+ if фугасКол > кумульКол {
|
|
|
+ снарядТип = стрКумулятивы
|
|
|
}
|
|
|
- switch typeArmor {
|
|
|
+
|
|
|
+ switch снарядТип {
|
|
|
case стрФугасы: // Мало фугасов
|
|
|
for !сам.сделатьФугасы() {
|
|
|
}
|
|
|
@@ -401,6 +553,7 @@ func (сам *Оружейная) сделать() bool {
|
|
|
default:
|
|
|
// log._rintf("ERRO Оружейная.сделать(): неизвестный тип арсенала(%v)", typeArmor)
|
|
|
}
|
|
|
+ сам.продуктИмя = снарядТип
|
|
|
}
|
|
|
return true
|
|
|
}
|
|
|
@@ -425,7 +578,7 @@ func (сам *Оружейная) сделатьБронебойки() bool {
|
|
|
стрВых = lstArsenal[инд+10]
|
|
|
// Получить ссылку на бронебойные
|
|
|
lstArmor := strings.Split(стрВых, `<a class="simple-but border" href="`)
|
|
|
- if len(lstArmor) == 0 {
|
|
|
+ if len(lstArmor) <= 1 { // Тут возможно есть пустая строка
|
|
|
return true // Считаем, что производство уже запущено
|
|
|
}
|
|
|
strLink := lstArmor[1]
|