|
|
@@ -10,6 +10,7 @@ import (
|
|
|
. "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
|
|
|
|
|
|
. "wartank/app/lev0/alias"
|
|
|
+ "wartank/app/lev0/cons"
|
|
|
. "wartank/app/lev0/types"
|
|
|
"wartank/app/lev1"
|
|
|
"wartank/app/lev2/arena"
|
|
|
@@ -90,16 +91,6 @@ func (сам *АренаШахта) пуск() {
|
|
|
}
|
|
|
}
|
|
|
сам.уровеньОбновить()
|
|
|
- сам.ускорениеПровер()
|
|
|
- { // Проапгрейдить
|
|
|
- счёт := 5
|
|
|
- for счёт > 0 {
|
|
|
- if сам.проапгрейдить() {
|
|
|
- break
|
|
|
- }
|
|
|
- счёт--
|
|
|
- }
|
|
|
- }
|
|
|
{ // Получить продукцию
|
|
|
счёт := 5
|
|
|
for счёт > 0 {
|
|
|
@@ -233,9 +224,7 @@ func (сам *АренаШахта) количествоПолучить() (bool
|
|
|
strTime = strings.TrimPrefix(strTime, `<td><div class="value-block lh1"><span><span>`)
|
|
|
strTime = strings.TrimSuffix(strTime, `</span></span></div></td>`)
|
|
|
сам.продуктВремя = strTime
|
|
|
- if err := сам.ОбратВремяУст(АВремя(strTime)); err != nil {
|
|
|
- сам.лог.Добавить("ОШИБКА Шахта.количествоПолучить(): при установке времени производства(%v), err=\n\t%v\n", strTime, err)
|
|
|
- }
|
|
|
+ сам.ОбратВремяУст(АВремя(strTime))
|
|
|
сам.лог.Добавить("Шахта.количествоПолучить(): время=%q\n", strTime)
|
|
|
return true, nil
|
|
|
}
|
|
|
@@ -264,35 +253,33 @@ func (сам *АренаШахта) шахтаЗабрать() bool {
|
|
|
ссылка := "https://wartank.ru/" + _ссылка
|
|
|
// http://wartank.ru/buildings?5-1.ILinkListener-buildings-0-building-rootBlock-actionPanel-takeProductionLink
|
|
|
lstBase1 := сам.Сеть().ВебВоркер().Получ(ссылка)
|
|
|
- if err := сам.СтрОбновить(lstBase1); err != nil {
|
|
|
- сам.лог.Добавить("Шахта.шахтаЗабрать(): при обновлении lstMine, err=\n\t%v\n", err)
|
|
|
- return false
|
|
|
- }
|
|
|
+ сам.СтрОбновить(lstBase1)
|
|
|
сам.лог.Добавить("Шахта.шахтаЗабрать(): ОК\n")
|
|
|
+ сам.АренаСостояние().Уст(cons.РежимОжидание)
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
-// Проверяет ускорение строительства FIXME: не работает
|
|
|
-func (сам *АренаШахта) ускорениеПровер() {
|
|
|
- сам.лог.Добавить("")
|
|
|
- списСтр := сам.Сеть().ВебВоркер().Получ("http://wartank.ru/buildings")
|
|
|
- // <span class="green2">Шахта - 0</span><br/>
|
|
|
- var (
|
|
|
- еслиНайти bool
|
|
|
- стр string
|
|
|
- )
|
|
|
- for _, стр = range списСтр {
|
|
|
- if strings.Contains(стр, `<span class="green2">Шахта - `) {
|
|
|
- еслиНайти = true
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- if !еслиНайти {
|
|
|
- сам.лог.Добавить("Шахта.ускорениеПровер(): не надо\n")
|
|
|
- return
|
|
|
- }
|
|
|
- сам.лог.Добавить("Шахта.ускорениеПровер(): надо\n")
|
|
|
-}
|
|
|
+// // Проверяет ускорение строительства FIXME: не работает
|
|
|
+// func (сам *АренаШахта) ускорениеПровер() {
|
|
|
+// сам.лог.Добавить("")
|
|
|
+// списСтр := сам.Сеть().ВебВоркер().Получ("http://wartank.ru/buildings")
|
|
|
+// // <span class="green2">Шахта - 0</span><br/>
|
|
|
+// var (
|
|
|
+// еслиНайти bool
|
|
|
+// стр string
|
|
|
+// )
|
|
|
+// for _, стр = range списСтр {
|
|
|
+// if strings.Contains(стр, `<span class="green2">Шахта - `) {
|
|
|
+// еслиНайти = true
|
|
|
+// break
|
|
|
+// }
|
|
|
+// }
|
|
|
+// if !еслиНайти {
|
|
|
+// сам.лог.Добавить("Шахта.ускорениеПровер(): не надо\n")
|
|
|
+// return
|
|
|
+// }
|
|
|
+// сам.лог.Добавить("Шахта.ускорениеПровер(): надо\n")
|
|
|
+// }
|
|
|
|
|
|
// Уровень -- возвращает уровень шахты
|
|
|
func (сам *АренаШахта) Уровень() ИСтатПарам {
|
|
|
@@ -330,142 +317,6 @@ func (сам *АренаШахта) уровеньОбновить() bool {
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
-// Строит шахту при нулевом уровне
|
|
|
-func (сам *АренаШахта) построить() bool {
|
|
|
- сам.лог.Добавить("Шахта.построить()\n")
|
|
|
- // <td style="width:50%;padding-left:1px;"><a class="simple-but border mb5" href="building-upgrade/Mine"><span><span>Построить</span></span></a></td>
|
|
|
- var (
|
|
|
- еслиНайти = false
|
|
|
- стр = ""
|
|
|
- )
|
|
|
- списСтр := сам.Сеть().ВебВоркер().Получ("http://wartank.ru/buildings")
|
|
|
- for _, стр = range списСтр {
|
|
|
- if strings.Contains(стр, `href="building-upgrade/Mine"><span><span>Построить</span></span>`) {
|
|
|
- еслиНайти = true
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- if !еслиНайти {
|
|
|
- сам.лог.Добавить("Шахта.построить(): не надо\n")
|
|
|
- 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/" + _стр
|
|
|
- списСтр = сам.Сеть().ВебВоркер().Получ(ссылка)
|
|
|
- еслиНайти = false
|
|
|
- // "<a class=\"simple-but border mb5\" href=\"Mine?14-1.ILinkListener-upgradeLink-link\">"
|
|
|
- for _, стр = range списСтр {
|
|
|
- if strings.Contains(стр, `ILinkListener-upgradeLink-link`) {
|
|
|
- еслиНайти = true
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- if !еслиНайти {
|
|
|
- сам.лог.Добавить("Шахта.построить(): не найдена команда постройки\n")
|
|
|
- return true
|
|
|
- }
|
|
|
- _стр = strings.TrimPrefix(стр, "<a class=\"simple-but border mb5\" href=\"")
|
|
|
- _стр = strings.TrimSuffix(_стр, "\">")
|
|
|
- // http://wartank.ru/building-upgrade/Mine?16-1.ILinkListener-upgradeLink-link
|
|
|
- ссылка = "https://wartank.ru/building-upgrade/" + _стр
|
|
|
- _ = сам.Сеть().ВебВоркер().Получ(ссылка)
|
|
|
- return true
|
|
|
-}
|
|
|
-*/
|
|
|
-
|
|
|
-// Пытается проапгрейдить топливный склад
|
|
|
-func (сам *АренаШахта) проапгрейдить() bool {
|
|
|
- сам.лог.Добавить("Шахта.проапгрейдить()\n")
|
|
|
- var (
|
|
|
- еслиНайти = false
|
|
|
- списСтр []string
|
|
|
- стр = ""
|
|
|
- )
|
|
|
- фнКупить := func() (bool, error) {
|
|
|
- defer time.Sleep(time.Millisecond * 1000)
|
|
|
- списСтр = сам.Сеть().ВебВоркер().Получ("https://wartank.ru/building-upgrade/Mine")
|
|
|
- for _, стр = range списСтр {
|
|
|
- // <a class="simple-but border mb5" href="Mine?5-1.ILinkListener-upgradeLink-link">
|
|
|
- if strings.Contains(стр, `ILinkListener-upgradeLink-link`) {
|
|
|
- еслиНайти = true
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- if !еслиНайти {
|
|
|
- сам.лог.Добавить("Шахта.проапгрейдить().фнКупить(): не надо\n")
|
|
|
- return false, nil
|
|
|
- }
|
|
|
- // Пробуем улучшить шахту
|
|
|
- _стр := strings.TrimPrefix(стр, "<a class=\"simple-but border mb5\" href=\"")
|
|
|
- _стр = strings.TrimSuffix(_стр, "\">")
|
|
|
- // https://wartank.ru/building-upgrade/Mine?4-1.ILinkListener-upgradeLink-link
|
|
|
- // <a class="simple-but border mb5" href="FuelStorage?50-1.ILinkListener-upgradeLink-link">
|
|
|
- ссылка := "https://wartank.ru/building-upgrade/" + _стр
|
|
|
- списСтр = сам.Сеть().ВебВоркер().Получ(ссылка)
|
|
|
- // Проверить, что постройка состоялась
|
|
|
- for _, стр := range списСтр {
|
|
|
- if strings.Contains(стр, "ILinkListener-upgradeLink-link") {
|
|
|
- сам.лог.Добавить("ОШИБКА Шахта.проапгрейдить().фнКупить(): покупка шахты не прошла\n\tlink=%v\n\tстр=\n\t%v\n", ссылка, стр)
|
|
|
- return false, fmt.Errorf("покупка шахты не прошла") // Покупка не оплачена
|
|
|
- }
|
|
|
- }
|
|
|
- сам.лог.Добавить("Шахта.проапгрейдить().фнКупить(): покупка шахты прошла\n")
|
|
|
- return true, nil
|
|
|
- }
|
|
|
-
|
|
|
- фнПодтверждение := 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 !еслиНайти {
|
|
|
- сам.лог.Добавить("Шахта.проапгрейдить().фнПодтверждение(): нет подтверждения\n")
|
|
|
- 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" + _стр
|
|
|
- списСтр = сам.Сеть().ВебВоркер().Получ(ссылка)
|
|
|
- // Проверить, что постройка состоялась
|
|
|
- for _, стр := range списСтр {
|
|
|
- if strings.Contains(стр, "<title>Вы сделали слишком большую паузу</title>") {
|
|
|
- сам.лог.Добавить("Шахта.проапгрейдить().фнПодтверждение(): подтверждение покупка шахты не прошла\n\tlink=%v\n\tстр=\n\t%v\n", ссылка, стр)
|
|
|
- return false // Покупка не оплачена
|
|
|
- }
|
|
|
- }
|
|
|
- сам.лог.Добавить("Шахта.проапгрейдить().фнПодтверждение(): подтверждение покупка шахты прошла\n")
|
|
|
- return true
|
|
|
- }
|
|
|
-
|
|
|
- фнКомплекс := func() {
|
|
|
- сам.лог.Добавить("Шахта.проапгрейдить().фнКомплекс()\n")
|
|
|
- count := 5
|
|
|
- for count > 0 {
|
|
|
- еслиОк, ош := фнКупить()
|
|
|
- switch {
|
|
|
- case ош == nil && еслиОк: // покупка шахты прошла
|
|
|
- if фнПодтверждение() {
|
|
|
- return
|
|
|
- }
|
|
|
- case ош == nil && !еслиОк: // покупка шахты не нужна
|
|
|
- return
|
|
|
- case ош != nil: // ошибка при работе с сетью
|
|
|
- count--
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- фнКомплекс()
|
|
|
- return true
|
|
|
-}
|
|
|
-
|
|
|
// Сделать -- вызывается с базы, если она обнаружила, что пора сделать продукцию
|
|
|
func (сам *АренаШахта) Сделать() {
|
|
|
сам.Сеть().Обновить()
|
|
|
@@ -473,8 +324,8 @@ func (сам *АренаШахта) Сделать() {
|
|
|
сам.лог.Добавить("ERRO Шахта.Сделать(): при выборе продукции, err=\n\t%v\n", err)
|
|
|
return
|
|
|
}
|
|
|
- работа := сам.АренаСостояние().РаботаИмя()
|
|
|
- switch работа {
|
|
|
+ продукт := сам.ПродуктСейчас().Имя()
|
|
|
+ switch продукт {
|
|
|
case "руда":
|
|
|
for !сам.рудаСделать() {
|
|
|
}
|
|
|
@@ -488,8 +339,9 @@ func (сам *АренаШахта) Сделать() {
|
|
|
for !сам.свинецСделать() {
|
|
|
}
|
|
|
default:
|
|
|
- сам.лог.Добавить("ERRO Шахта.Сделать(): неизвестный режим производства, режим=%q\n", работа)
|
|
|
+ сам.лог.Добавить("ERRO Шахта.Сделать(): неизвестный режим производства, режим=%q\n", продукт)
|
|
|
}
|
|
|
+ сам.АренаСостояние().Уст(cons.РежимРабота)
|
|
|
}
|
|
|
|
|
|
// Свинец -- возвращает объект свинца
|
|
|
@@ -562,26 +414,26 @@ func (сам *АренаШахта) выбратьМеталл() error {
|
|
|
}
|
|
|
}
|
|
|
фнВыбратьПродукт()
|
|
|
- сам.АренаСостояние().РаботаИмяУст("руда")
|
|
|
+ сам.ПродуктСейчас().ИмяУст("руда")
|
|
|
руда := сам.Руда().Получ()
|
|
|
железо := сам.Железо().Получ()
|
|
|
if диктПродукция["железо"] {
|
|
|
if руда > железо*2 {
|
|
|
- сам.АренаСостояние().РаботаИмяУст("железо")
|
|
|
+ сам.ПродуктСейчас().ИмяУст("железо")
|
|
|
}
|
|
|
}
|
|
|
|
|
|
сталь := сам.Сталь().Получ()
|
|
|
if диктПродукция["сталь"] {
|
|
|
if железо > сталь*2 {
|
|
|
- сам.АренаСостояние().РаботаИмяУст("сталь")
|
|
|
+ сам.ПродуктСейчас().ИмяУст("сталь")
|
|
|
}
|
|
|
}
|
|
|
|
|
|
свинец := сам.Свинец().Получ()
|
|
|
if диктПродукция["свинец"] {
|
|
|
if сталь > свинец*2 {
|
|
|
- сам.АренаСостояние().РаботаИмяУст("свинец")
|
|
|
+ сам.ПродуктСейчас().ИмяУст("свинец")
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -636,13 +488,8 @@ func (сам *АренаШахта) рудаСделать() bool {
|
|
|
return false
|
|
|
}
|
|
|
}
|
|
|
- if err = сам.СтрОбновить(lstMine); err != nil {
|
|
|
- // log._rintf("ERRO Шахта.сделатьРуду(): при обновлении lstMine, err=\n\t%v\n", err)
|
|
|
- return false
|
|
|
- }
|
|
|
- if err := сам.ОбратВремяУст(АВремя(strTime)); err != nil {
|
|
|
- сам.лог.Добавить("ERRO Шахта.сделатьРуду(): при установке времени ожидания добычи руды(%v)\n\terr=%v\n", strTime, err)
|
|
|
- }
|
|
|
+ // сам.СтрОбновить(lstMine)
|
|
|
+ сам.ОбратВремяУст(АВремя(strTime))
|
|
|
lstNum := strings.Split(strNum, `Кол-во: <span class="green2">`)
|
|
|
strNum = lstNum[1]
|
|
|
lstNum = strings.Split(strNum, `</span><br/>`)
|
|
|
@@ -699,13 +546,8 @@ func (сам *АренаШахта) железоСделать() bool {
|
|
|
return false
|
|
|
}
|
|
|
}
|
|
|
- if err = сам.СтрОбновить(lstMine); err != nil {
|
|
|
- // log._rintf("ERRO MineNet.makeFerrum(): при обновлении lstMine, err=\n\t%v\n", err)
|
|
|
- return false
|
|
|
- }
|
|
|
- if err := сам.ОбратВремяУст(АВремя(strTime)); err != nil {
|
|
|
- сам.лог.Добавить("ERRO Mine.makeFerrum(): при установке времени производства железа(%v)\n\terr=%v\n", strTime, err)
|
|
|
- }
|
|
|
+ сам.СтрОбновить(lstMine)
|
|
|
+ сам.ОбратВремяУст(АВремя(strTime))
|
|
|
lstNum := strings.Split(strNum, `Кол-во: <span class="green2">`)
|
|
|
strNum = lstNum[1]
|
|
|
lstNum = strings.Split(strNum, `</span><br/>`)
|
|
|
@@ -759,13 +601,8 @@ func (сам *АренаШахта) стальСделать() bool {
|
|
|
return false
|
|
|
}
|
|
|
}
|
|
|
- if err = сам.СтрОбновить(lstMine); err != nil {
|
|
|
- // log._rintf("ERRO MineNet.makeSteel(): при обновлении lstMine, err=\n\t%v\n", err)
|
|
|
- return false
|
|
|
- }
|
|
|
- if err := сам.ОбратВремяУст(АВремя(strTime)); err != nil {
|
|
|
- сам.лог.Добавить("ERRO Mine.makeSteel(): при установке времени производства железа(%v)\n\terr=%v\n", strTime, err)
|
|
|
- }
|
|
|
+ сам.СтрОбновить(lstMine)
|
|
|
+ сам.ОбратВремяУст(АВремя(strTime))
|
|
|
lstNum := strings.Split(strNum, `Кол-во: <span class="green2">`)
|
|
|
strNum = lstNum[1]
|
|
|
lstNum = strings.Split(strNum, `</span><br/>`)
|
|
|
@@ -819,13 +656,8 @@ func (сам *АренаШахта) свинецСделать() bool {
|
|
|
return false
|
|
|
}
|
|
|
}
|
|
|
- if err = сам.СтрОбновить(lstMine); err != nil {
|
|
|
- // log._rintf("ERRO Шахта.сделатьСвинец(): при обновлении lstMine, err=\n\t%v\n", err)
|
|
|
- return false
|
|
|
- }
|
|
|
- if err := сам.ОбратВремяУст(АВремя(strTime)); err != nil {
|
|
|
- сам.лог.Добавить("ERRO Шахта.сделатьСвинец(): при установке времени производства железа(%v)\n\terr=%v\n", strTime, err)
|
|
|
- }
|
|
|
+ сам.СтрОбновить(lstMine)
|
|
|
+ сам.ОбратВремяУст(АВремя(strTime))
|
|
|
lstNum := strings.Split(strNum, `Кол-во: <span class="green2">`)
|
|
|
strNum = lstNum[1]
|
|
|
lstNum = strings.Split(strNum, `</span><br/>`)
|