// package battle_register -- регестрирует танк в битве
package battle_register
import (
"fmt"
"log"
"strings"
"wartank/pkg/components/section"
"wartank/pkg/components/sectionnet"
"wartank/pkg/types"
)
// BattleRegister -- регистрирует танк к началу атаки
type BattleRegister struct {
*section.Section
bot types.ИБот
net *sectionnet.SectionNet
}
// NewBattleRegister -- возвращает новый ожидатель битвы
func NewBattleRegister(bot types.ИБот) (*BattleRegister, error) {
section, err := section.NewSection(bot, "Сражение", `
Сражения`)
if err != nil {
return nil, fmt.Errorf("NewBattleRegister(): in create ISection, err=\n\t%w", err)
}
sf := &BattleRegister{
Section: section,
bot: bot,
}
sf.net, err = sectionnet.NewSectionNet(sf, "https://wartank.ru/pve")
if err != nil {
return nil, fmt.Errorf("NewBattleRegister(): in create *SectionNet, err=\n\t%w", err)
}
return sf, nil
}
// Зарегистрироваться -- регистрирует танк на сражение
func (sf *BattleRegister) Зарегистрироваться() {
if err := sf.net.UpdateLst(); err != nil { // Здесь может уже обратный отсчёт перед сражением
return
}
var (
strOut string
lstBattle = sf.СписПолучить()
isFind bool
)
for _, strOut = range lstBattle {
if strings.Contains(strOut, `>Взвод, подъем! В атаку!<`) {
isFind = true
break
}
if strings.Contains(strOut, `Вы в рядах участников
`) {
// log._rintf("INFO BattleRegister.Register(): уже зарегистрирован\n")
return
}
}
if !isFind { // Возможно, ожидание или битва уже идёт
return
}
// Найдено приглашение на участие
lstUp := strings.Split(strOut, `Взвод, подъем! В атаку!`)
linkUp = "https://wartank.ru/" + lstUp[0]
lstBattle, err := sf.net.Get(linkUp)
if err != nil {
// log._rintf("ERRO BattleRegister.Register(): при выполнении GET-команды на подъём в атаку, err=\n\t%v\n", err)
return
}
if err = sf.СтрОбновить(lstBattle); err != nil {
log.Printf("BattleRegister.Register(): при обновлении lstBattle, err=\n\t%v\n", err)
}
// log._rintf("INFO BattleRegister.Register(): регистрация прошла успешно\n")
}