|
|
@@ -19,100 +19,78 @@ import (
|
|
|
Объект конвоя в ангаре
|
|
|
*/
|
|
|
|
|
|
-// Convoy -- объект конвоя в ангаре
|
|
|
-type Convoy struct {
|
|
|
+// Конвой -- объект конвоя в ангаре
|
|
|
+type Конвой struct {
|
|
|
*section.Section
|
|
|
- net *convoynet.ConvoyNet
|
|
|
- бот types.ИБот
|
|
|
- слава types.ИСтатПарам // Количество славы
|
|
|
- chAttack chan int // Канал проведения атаки
|
|
|
+ net *convoynet.ConvoyNet
|
|
|
+ бот types.ИБот
|
|
|
+ слава types.ИСтатПарам // Количество славы
|
|
|
}
|
|
|
|
|
|
-// NewConvoy -- возвращает новый *Convoy
|
|
|
-func NewConvoy(bot types.ИБот) (*Convoy, error) {
|
|
|
+// НовКонвой -- возвращает новый *Convoy
|
|
|
+func НовКонвой(bot types.ИБот) (*Конвой, error) {
|
|
|
section, err := section.NewSection(bot, "Конвой", `<title>Конвой</title>`)
|
|
|
if err != nil {
|
|
|
- return nil, fmt.Errorf("NewConvoy(): in create ISection, err=\n\t%w", err)
|
|
|
+ return nil, fmt.Errorf("НовКонвой(): in create ISection, err=\n\t%w", err)
|
|
|
}
|
|
|
слава, ош := static_param.НовСтатПарам("glory")
|
|
|
if ош != nil {
|
|
|
- return nil, fmt.Errorf("NewConvoy(): при создании статы славы, err=\n\t%w", ош)
|
|
|
+ return nil, fmt.Errorf("НовКонвой(): при создании статы славы, err=\n\t%w", ош)
|
|
|
}
|
|
|
- sf := &Convoy{
|
|
|
- Section: section,
|
|
|
- бот: bot,
|
|
|
- слава: слава,
|
|
|
- chAttack: make(chan int, 5),
|
|
|
+ sf := &Конвой{
|
|
|
+ Section: section,
|
|
|
+ бот: bot,
|
|
|
+ слава: слава,
|
|
|
}
|
|
|
sf.net, err = convoynet.NewConvoyNet(sf)
|
|
|
if err != nil {
|
|
|
- return nil, fmt.Errorf("NewConvoy(): in create *SectionNet, err=\n\t%w", err)
|
|
|
+ return nil, fmt.Errorf("НовКонвой(): in create *SectionNet, err=\n\t%w", err)
|
|
|
}
|
|
|
return sf, nil
|
|
|
}
|
|
|
|
|
|
-// Run -- запускает конвой в работу
|
|
|
-func (sf *Convoy) Run() error {
|
|
|
- go sf.reservTick()
|
|
|
+// Пуск -- запускает конвой в работу
|
|
|
+func (sf *Конвой) Пуск() error {
|
|
|
go sf.run()
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
// UpdateLst -- принудительно обновляет состояние конвоя
|
|
|
-func (sf *Convoy) UpdateLst() {
|
|
|
+func (sf *Конвой) UpdateLst() {
|
|
|
if err := sf.net.UpdateLst(); err != nil {
|
|
|
log.Printf("Convoy.UpdateLst(): err=\n\t%v\n", err)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// Слава --возвращает счётчик славы конвоя
|
|
|
-func (sf *Convoy) Слава() types.ИСтатПарам {
|
|
|
+func (sf *Конвой) Слава() types.ИСтатПарам {
|
|
|
return sf.слава
|
|
|
}
|
|
|
|
|
|
-// Если время конвоя замерло -- посылает контрольный сигнал на атаку
|
|
|
-func (sf *Convoy) reservTick() {
|
|
|
- defer func() {
|
|
|
- close(sf.chAttack)
|
|
|
- }()
|
|
|
+// обрабатывает конвой
|
|
|
+func (сам *Конвой) run() {
|
|
|
for {
|
|
|
select {
|
|
|
- case <-sf.бот.Кнт().Done():
|
|
|
+ case <-сам.бот.Кнт().Done():
|
|
|
return
|
|
|
default:
|
|
|
- ct0 := sf.ВремяОпрос().Получ()
|
|
|
- time.Sleep(time.Second * 60)
|
|
|
- ct1 := sf.ВремяОпрос().Получ()
|
|
|
- if ct1 != ct0 {
|
|
|
- continue
|
|
|
- }
|
|
|
- sf.chAttack <- 1
|
|
|
+ сам.атаковать()
|
|
|
+ time.Sleep(time.Minute * 20)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// обрабатывает конвой
|
|
|
-func (sf *Convoy) run() {
|
|
|
- sf.chAttack <- 1
|
|
|
- for {
|
|
|
- select {
|
|
|
- case <-sf.бот.Кнт().Done():
|
|
|
- sf.ВремяОпрос().Стоп()
|
|
|
- return
|
|
|
- case <-sf.ВремяОпрос().КаналСиг(): // Время истекло
|
|
|
- sf.updateTime()
|
|
|
- sf.updateGlory()
|
|
|
- case <-sf.chAttack: // Сигнал к атаке
|
|
|
- sf.attackConvoy() // в этом месте только атаковать
|
|
|
- sf.checkWarForce()
|
|
|
- sf.checkMaster()
|
|
|
- sf.check6frage()
|
|
|
- }
|
|
|
- }
|
|
|
+func (сам *Конвой) атаковать() {
|
|
|
+ сам.updateTime()
|
|
|
+ сам.атакаНачать() // в этом месте только атаковать
|
|
|
+ сам.проверитьМиссияКонвой()
|
|
|
+ сам.проверитьМиссияМастерДозора()
|
|
|
+ сам.проверитьМиссия6фрагов()
|
|
|
+ сам.славаОбновить()
|
|
|
}
|
|
|
|
|
|
-// Обновляет славу потребованию
|
|
|
-func (sf *Convoy) updateGlory() {
|
|
|
+// Обновляет славу по требованию
|
|
|
+func (sf *Конвой) славаОбновить() {
|
|
|
// Найти строку с упоминанием оставшегося времени конвоя
|
|
|
lstConvoy := sf.СписПолучить()
|
|
|
var (
|
|
|
@@ -141,7 +119,7 @@ func (sf *Convoy) updateGlory() {
|
|
|
}
|
|
|
|
|
|
// Обновляет оставшееся время конвоя
|
|
|
-func (sf *Convoy) updateTime() {
|
|
|
+func (sf *Конвой) updateTime() {
|
|
|
// Время подходит надо обновляться
|
|
|
if err := sf.net.UpdateLst(); err != nil {
|
|
|
logrus.WithError(err).Error("ConvoyNet.updateTime(): при выполнении GET-команды обновления")
|
|
|
@@ -168,16 +146,13 @@ func (sf *Convoy) updateTime() {
|
|
|
}
|
|
|
// <div class="bot"><a class="simple-but border red" w:id="startFight" href="convoy?7-1.ILinkListener-root-startFight"><span><span>В БОЙ!</span></span></a></div>
|
|
|
if strings.Contains(lastTime, `ILinkListener-root-startFight`) {
|
|
|
- sf.chAttack <- 1
|
|
|
return
|
|
|
}
|
|
|
if strings.Contains(lastTime, `ILinkListener-root-findEnemy`) {
|
|
|
- sf.chAttack <- 1
|
|
|
return
|
|
|
}
|
|
|
// <div class="bot"><a class="simple-but border" w:id="startMasking" href="convoy?12-1.ILinkListener-root-startMasking"><span><span>В БОЙ!</span></span></a></div>
|
|
|
if strings.Contains(lastTime, `ILinkListener-root-startMasking`) {
|
|
|
- sf.chAttack <- 1
|
|
|
return
|
|
|
}
|
|
|
}
|
|
|
@@ -202,11 +177,11 @@ func (sf *Convoy) updateTime() {
|
|
|
}
|
|
|
|
|
|
// Проводит атаку на конвой
|
|
|
-func (sf *Convoy) attackConvoy() {
|
|
|
+func (сам *Конвой) атакаНачать() {
|
|
|
// Найти контрольную строку
|
|
|
var (
|
|
|
strOut = ""
|
|
|
- lstConvoy = sf.СписПолучить()
|
|
|
+ lstConvoy = сам.СписПолучить()
|
|
|
isFind bool
|
|
|
)
|
|
|
|
|
|
@@ -243,19 +218,19 @@ func (sf *Convoy) attackConvoy() {
|
|
|
}
|
|
|
}
|
|
|
if !isFind { // Время ожидания
|
|
|
- if err := sf.SetCountDown(1); err != nil {
|
|
|
+ if err := сам.SetCountDown(1); err != nil {
|
|
|
panic(fmt.Errorf("ConvoyNet.attackConvoy(): пр установке CountDown, err=\n\t%w", err))
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
strLink := strOut
|
|
|
// Можно начать разведку
|
|
|
- lstConvoy, err := sf.net.Get(strLink)
|
|
|
+ lstConvoy, err := сам.net.Get(strLink)
|
|
|
if err != nil {
|
|
|
// log._rintf("ERRO ConvoyNet.attackConvoy(): при выполнении GET-команды 'В атаку!', err=\n\t%v\n", err)
|
|
|
return
|
|
|
}
|
|
|
- if err = sf.СтрОбновить(lstConvoy); err != nil {
|
|
|
+ if err = сам.СтрОбновить(lstConvoy); err != nil {
|
|
|
for _, strOut = range lstConvoy {
|
|
|
if strings.Contains(strOut, `<title>Ошибка на сервере. Сообщение админу уже отправлено.</title>`) {
|
|
|
// log._rintf("ERRO ConvoyNet.attackConvoy(): при обновлении lstConvoy, strOut=\n\t%v\n", strOut)
|
|
|
@@ -271,15 +246,15 @@ func (sf *Convoy) attackConvoy() {
|
|
|
// log._rintf("ERRO ConvoyNet.attackConvoy(): при обновлении lstConvoy, err=\n\t%v\n", err)
|
|
|
return
|
|
|
}
|
|
|
- for sf.attack() {
|
|
|
+ for сам.атакаИскать() {
|
|
|
}
|
|
|
- if err := sf.SetCountDown(1); err != nil {
|
|
|
+ if err := сам.SetCountDown(1); err != nil {
|
|
|
panic(fmt.Errorf("ConvoyNet.attackConvoy(): при установке CountDown, err=\n\t%w", err))
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// Выполняет атаку на конвой
|
|
|
-func (sf *Convoy) attack() (isNext bool) {
|
|
|
+func (sf *Конвой) атакаИскать() (isNext bool) {
|
|
|
// Вырезать ссылку на атаку
|
|
|
strOut := ""
|
|
|
lstConvoy := sf.СписПолучить()
|
|
|
@@ -321,7 +296,7 @@ func (sf *Convoy) attack() (isNext bool) {
|
|
|
}
|
|
|
|
|
|
// Забирает награду в конвое "Активируй боевую силу"
|
|
|
-func (sf *Convoy) checkWarForce() {
|
|
|
+func (sf *Конвой) проверитьМиссияКонвой() {
|
|
|
var (
|
|
|
strOut string
|
|
|
isFind bool
|
|
|
@@ -368,7 +343,7 @@ func (sf *Convoy) checkWarForce() {
|
|
|
}
|
|
|
|
|
|
// Забирает награду в конвое "Мастер дозора"
|
|
|
-func (sf *Convoy) checkMaster() {
|
|
|
+func (sf *Конвой) проверитьМиссияМастерДозора() {
|
|
|
var (
|
|
|
strOut string
|
|
|
isFind bool
|
|
|
@@ -415,7 +390,7 @@ func (sf *Convoy) checkMaster() {
|
|
|
}
|
|
|
|
|
|
// Забирает награду в конвое "Уничтожь 6 врагов в конвое"
|
|
|
-func (sf *Convoy) check6frage() {
|
|
|
+func (sf *Конвой) проверитьМиссия6фрагов() {
|
|
|
var (
|
|
|
strOut string
|
|
|
isFind bool
|