| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- // package battle_wait -- заставляет ожидать начало битвы
- package battle_wait
- import (
- "strings"
- "time"
- "wartank/pkg/alias"
- "wartank/pkg/arena"
- "wartank/pkg/components/arena_net"
- "wartank/pkg/types"
- )
- // СражениеОжидание -- ожидатель начала битвы
- type СхваткаОжидание struct {
- types.ИАрена
- бот types.ИБот
- сеть types.ИАренаСеть
- }
- // НовСражениеОжидание -- возвращает новый ожидатель битвы
- func НовСражениеОжидание(бот types.ИБот) *СхваткаОжидание {
- сам := &СхваткаОжидание{
- бот: бот,
- }
- аренаКонфиг := arena.АренаКонфиг{
- Бот_: бот,
- АренаИмя_: "Ожидание сражения",
- СтрКонтроль_: `<title>Сражения</title>`,
- ФнПуск_: сам.пуск,
- СтрУрл_: "https://wartank.ru/pve",
- }
- сам.ИАрена = arena.НовАрена(аренаКонфиг)
- сам.сеть = arena_net.НовАренаСеть(сам, "https://wartank.ru/pve")
- return сам
- }
- func (сам *СхваткаОжидание) пуск() {
- }
- // Ожидать -- ожидает начало сражения
- func (сам *СхваткаОжидание) Ожидать() {
- // Зайти в цикл ожидания сражения
- for {
- // countTime := сам.ВремяОпрос().Получ()
- // if countTime > 0 {
- // time.Sleep(time.Millisecond * 500)
- // // log.Printf("BattleWait.Wait(): countTime=%v\n", сам.CountDown().String())
- // continue
- // }
- стрВрем := сам.ждать()
- if стрВрем == "" {
- return
- }
- лстВрем := strings.Split(стрВрем, ":")
- стрЧас := лстВрем[0]
- if стрЧас > "00" {
- time.Sleep(time.Hour * 1)
- continue
- }
- стрМин := лстВрем[1]
- if стрМин > "10" {
- time.Sleep(time.Minute * 10)
- continue
- }
- if стрМин > "01" {
- time.Sleep(time.Minute * 1)
- continue
- }
- if "00:00:05" < стрВрем && стрВрем < "00:00:59" {
- time.Sleep(time.Second * 5)
- continue
- }
- time.Sleep(time.Second * 1)
- }
- }
- // Ждёт пока время не обнулится
- func (сам *СхваткаОжидание) ждать() string {
- сам.сеть.Обновить()
- var (
- strOut string
- lstBattle = сам.СписПолучить()
- еслиНайдено bool
- )
- for _, strOut = range lstBattle {
- if strings.Contains(strOut, `<span>до начала `) {
- еслиНайдено = true
- break
- }
- // if strings.Contains(strOut, `>ОБЫЧНЫЕ<`) { // Это уже битва
- // if len(сам.chBattle) == 0 {
- // сам.chBattle <- 1
- // }
- // return
- // }
- }
- if !еслиНайдено { // Сражение уже идёт
- return ""
- }
- // Найдена строка ожидания начала сражения
- lstTime := strings.Split(strOut, `<span>до начала `)
- strTime := lstTime[1]
- lstTime = strings.Split(strTime, ` (`)
- strTime = lstTime[0]
- if err := сам.ОбратВремяУст(alias.Время(strTime)); err != nil { // Возможно уже всё
- // log._rintf("WARN BattleWait.Wait(): при установке времени ожидания сражения(%v)\n\terr=%v\n", strTime, err)
- return ""
- }
- return strTime
- }
|