// package death_register -- регистрирует танк в схватке
package death_register
import (
"log"
"strings"
"time"
. "wartank/app/lev0/types"
"wartank/app/lev2/arena"
. "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
)
// СхваткаРегистрация -- регистрирует танк к началу схватки
type СхваткаРегистрация struct {
ИАрена
конт ILocalCtx
счётРегистер int // Счётчик регистраций на сражение
}
// НовСхваткаРегистрация -- возвращает новый ожидатель битвы
func НовСхваткаРегистрация(конт IKernelCtx) *СхваткаРегистрация {
сам := &СхваткаРегистрация{
конт: конт,
счётРегистер: 10_000,
}
аренаКонфиг := arena.АренаКонфиг{
Конт_: конт,
АренаИмя_: "Сражение",
СтрКонтроль_: `
Сражения`,
СтрУрл_: "https://wartank.ru/dm",
}
сам.ИАрена = arena.НовАрена(конт, аренаКонфиг)
return сам
}
// Зарегистрироваться -- регистрирует танк на сражение
func (сам *СхваткаРегистрация) Зарегистрироваться() {
// Найдено приглашение на участие
// https://wartank.ru/dm?{count}-1.ILinkListener-currentOverview-apply
фнРегис := func() []string {
стрСсылка := "https://wartank.ru/dm?0-1.ILinkListener-currentOverview-apply"
стрКонтроль := "" // "https://wartank.ru/dm?0-1.ILinkListener-currentOverview-apply"
for {
time.Sleep(time.Second * 1)
лстСражение, err := сам.Сеть().Get(стрСсылка)
if err != nil {
log.Printf("ERRO СхваткаРегистрация.Зарегистрироваться(): при выполнении GET-команды на подъём в атаку, err=\n\t%v\n", err)
}
if len(лстСражение) < 113 {
continue
}
стрКонтроль = лстСражение[113]
if !strings.Contains(стрКонтроль, "ILinkListener-currentOverview-apply") {
return лстСражение
}
log.Printf("СхваткаРегистрация.Зарегистрироваться(): регистрация не прошла\n")
стрСсылка = strings.TrimPrefix(стрКонтроль, `Взвод, подъем! В атаку!`)
стрСсылка = "https://wartank.ru/" + стрСсылка + ".ILinkListener-currentOverview-apply"
}
}
сам.СтрОбновить(фнРегис())
}