// package bf_mine_accelerate -- бизнес-функция ускорения строительства или апгрейда package bf_mine_accelerate import ( "fmt" "strings" . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes" "wartank/app/lev0/cons" . "wartank/app/lev0/types" ) // ШахтаУскорить -- пробует ускорить строительство шахты или апгрейда func ШахтаУскорить(конт ILocalCtx) { шахта := конт.Get("шахта").Val().(ИАренаШахта) еслиАпгрейд := шахта.АренаСостояние().Получ() == cons.РежимАпгрейд еслиПлатный := шахта.АренаСостояние().Получ() == cons.РежимАпгрейдПлатный if !(еслиАпгрейд || еслиПлатный) { return } шахтаАпгрейд(конт) } func шахтаАпгрейд(конт ILocalCtx) { база := конт.Get("база").Val().(ИАренаБаза) шахта := конт.Get("шахта").Val().(ИАренаШахта) var ( еслиНайти = false списСтр []string стр = "" ) фнКупитьАпгрейд := func() (bool, error) { списСтр = база.Сеть().ВебВоркер().Получ("https://wartank.ru/building-upgrade/Mine") for _, стр = range списСтр { // if strings.Contains(стр, `ILinkListener-upgradeLink-link`) { еслиНайти = true break } } if !еслиНайти { return false, nil } // Пробуем улучшить шахту _стр := strings.TrimPrefix(стр, "") // https://wartank.ru/building-upgrade/Mine?4-1.ILinkListener-upgradeLink-link // ссылка := "https://wartank.ru/building-upgrade/" + _стр списСтр = база.Сеть().ВебВоркер().Получ(ссылка) // Проверить, что постройка состоялась for _, стр := range списСтр { if strings.Contains(стр, "ILinkListener-upgradeLink-link") { return false, fmt.Errorf("покупка шахты не прошла") // Покупка не оплачена } } return true, nil } фнПодтверждение := func() bool { for _, стр = range списСтр { // да, подтверждаю if strings.Contains(стр, `ILinkListener-confirmLink`) { еслиНайти = true break } } if !еслиНайти { return true } // Пробуем построить шахту _стр := strings.TrimPrefix(стр, `да, подтверждаю`) // https://wartank.ru/wicket/page?6-1.ILinkListener-confirmLink ссылка := "https://wartank.ru" + _стр списСтр = база.Сеть().ВебВоркер().Получ(ссылка) // Проверить, что постройка состоялась for _, стр := range списСтр { if strings.Contains(стр, "Вы сделали слишком большую паузу") { return false // Покупка не оплачена } } return true } фнКомплекс := func() { еслиОк, ош := фнКупитьАпгрейд() switch { case ош == nil && еслиОк: // покупка апгрейда шахты прошла if фнПодтверждение() { шахта.АренаСостояние().Уст(cons.РежимАпгрейдПлатный) return } case ош == nil && !еслиОк: // покупка шахты не нужна шахта.АренаСостояние().Уст(cons.РежимОжидание) return case ош != nil: // ошибка при работе с сетью шахта.АренаСостояние().Уст(cons.РежимАпгрейд) return } } фнКомплекс() }