|
@@ -30,63 +30,63 @@ import (
|
|
|
// Angar -- ангар для танка
|
|
// Angar -- ангар для танка
|
|
|
type Angar struct {
|
|
type Angar struct {
|
|
|
*section.Section
|
|
*section.Section
|
|
|
- net *angarnet.AngarNet
|
|
|
|
|
|
|
+ сеть *angarnet.AngarNet
|
|
|
netKill *angar_attack.AngarAttack
|
|
netKill *angar_attack.AngarAttack
|
|
|
|
|
|
|
|
- bot types.ИБот
|
|
|
|
|
- convoy *convoy.Convoy
|
|
|
|
|
- battle *battle.Battle
|
|
|
|
|
- batMas *batmas.BatMas
|
|
|
|
|
- base *base.Base
|
|
|
|
|
- missions *missions.Missions
|
|
|
|
|
|
|
+ бот types.ИБот
|
|
|
|
|
+ конвой *convoy.Convoy
|
|
|
|
|
+ сражение *battle.Battle
|
|
|
|
|
+ битва *batmas.BatMas
|
|
|
|
|
+ база *base.Base
|
|
|
|
|
+ миссии *missions.Missions
|
|
|
|
|
|
|
|
золото types.ИСтатПарам
|
|
золото types.ИСтатПарам
|
|
|
уровень types.ИСтатПарам
|
|
уровень types.ИСтатПарам
|
|
|
progress types.ИСтатПарам
|
|
progress types.ИСтатПарам
|
|
|
- fuel *fuel.Fuel
|
|
|
|
|
|
|
+ топливо *fuel.Fuel
|
|
|
игроковОнлайн types.ИСтатПарам
|
|
игроковОнлайн types.ИСтатПарам
|
|
|
|
|
|
|
|
сереброВсего types.ИСтатПарам
|
|
сереброВсего types.ИСтатПарам
|
|
|
silverOnline types.ИСтатПарам
|
|
silverOnline types.ИСтатПарам
|
|
|
|
|
|
|
|
- stat *netstat.NetStat
|
|
|
|
|
- block sync.Mutex
|
|
|
|
|
|
|
+ сетьСтат *netstat.NetStat
|
|
|
|
|
+ блок sync.Mutex
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// NewAngar -- возвращает новый *Angar
|
|
|
|
|
-func NewAngar(bot types.ИБот) (*Angar, error) {
|
|
|
|
|
|
|
+// НовАнгар -- возвращает новый *Angar
|
|
|
|
|
+func НовАнгар(bot types.ИБот) (*Angar, error) {
|
|
|
section, err := section.NewSection(bot, "Ангар", `<title>Ангар</title>`)
|
|
section, err := section.NewSection(bot, "Ангар", `<title>Ангар</title>`)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return nil, fmt.Errorf("NewAngar(): in create ISection, err=\n\t%w", err)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("НовАнгар(): in create ISection, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
золото, ош := static_param.НовСтатПарам("gold")
|
|
золото, ош := static_param.НовСтатПарам("gold")
|
|
|
if ош != nil {
|
|
if ош != nil {
|
|
|
- return nil, fmt.Errorf("NewAngar(): при создании статистики золота, ош=\n\t%w", ош)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("НовАнгар(): при создании статистики золота, ош=\n\t%w", ош)
|
|
|
}
|
|
}
|
|
|
уровень, ош := static_param.НовСтатПарам("level")
|
|
уровень, ош := static_param.НовСтатПарам("level")
|
|
|
if ош != nil {
|
|
if ош != nil {
|
|
|
- return nil, fmt.Errorf("NewAngar(): при создании статистики уровня бота, ош=\n\t%w", ош)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("НовАнгар(): при создании статистики уровня бота, ош=\n\t%w", ош)
|
|
|
}
|
|
}
|
|
|
прогресс, ош := static_param.НовСтатПарам("progress")
|
|
прогресс, ош := static_param.НовСтатПарам("progress")
|
|
|
if ош != nil {
|
|
if ош != nil {
|
|
|
- return nil, fmt.Errorf("NewAngar(): при создании статистики прогресса уровня, ош=\n\t%w", ош)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("НовАнгар(): при создании статистики прогресса уровня, ош=\n\t%w", ош)
|
|
|
}
|
|
}
|
|
|
игроковОнлайн, ош := static_param.НовСтатПарам("online")
|
|
игроковОнлайн, ош := static_param.НовСтатПарам("online")
|
|
|
if ош != nil {
|
|
if ош != nil {
|
|
|
- return nil, fmt.Errorf("NewAngar(): при создании статистики игроков онлайн, ош=\n\t%w", ош)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("НовАнгар(): при создании статистики игроков онлайн, ош=\n\t%w", ош)
|
|
|
}
|
|
}
|
|
|
сереброВсего, ош := static_param.НовСтатПарам("silver_all")
|
|
сереброВсего, ош := static_param.НовСтатПарам("silver_all")
|
|
|
if ош != nil {
|
|
if ош != nil {
|
|
|
- return nil, fmt.Errorf("NewAngar(): при создании статистики серебра всего, ош=\n\t%w", ош)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("НовАнгар(): при создании статистики серебра всего, ош=\n\t%w", ош)
|
|
|
}
|
|
}
|
|
|
сереброСессия, ош := static_param.НовСтатПарам("silver_online")
|
|
сереброСессия, ош := static_param.НовСтатПарам("silver_online")
|
|
|
if ош != nil {
|
|
if ош != nil {
|
|
|
- return nil, fmt.Errorf("NewAngar(): при создании статистики серебра заработанного за сессию, ош=\n\t%w", ош)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("НовАнгар(): при создании статистики серебра заработанного за сессию, ош=\n\t%w", ош)
|
|
|
}
|
|
}
|
|
|
sf := &Angar{
|
|
sf := &Angar{
|
|
|
Section: section,
|
|
Section: section,
|
|
|
- bot: bot,
|
|
|
|
|
|
|
+ бот: bot,
|
|
|
золото: золото,
|
|
золото: золото,
|
|
|
уровень: уровень,
|
|
уровень: уровень,
|
|
|
progress: прогресс,
|
|
progress: прогресс,
|
|
@@ -96,58 +96,58 @@ func NewAngar(bot types.ИБот) (*Angar, error) {
|
|
|
silverOnline: сереброСессия,
|
|
silverOnline: сереброСессия,
|
|
|
}
|
|
}
|
|
|
{ // Сеть
|
|
{ // Сеть
|
|
|
- sf.net, err = angarnet.NewAngarNet(sf)
|
|
|
|
|
|
|
+ sf.сеть, err = angarnet.NewAngarNet(sf)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return nil, fmt.Errorf("NewAngar(): in create <AngarNet>, err=\n\t%w", err)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("НовАнгар(): in create <AngarNet>, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
{ // Сеть атаки
|
|
{ // Сеть атаки
|
|
|
sf.netKill, err = angar_attack.NewAngarAttack(sf)
|
|
sf.netKill, err = angar_attack.NewAngarAttack(sf)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return nil, fmt.Errorf("NewAngar(): in create <AngarAttackNet>, err=\n\t%w", err)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("НовАнгар(): in create <AngarAttackNet>, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
{ // Статистика
|
|
{ // Статистика
|
|
|
- sf.stat, err = netstat.NewNetStat(sf.bot)
|
|
|
|
|
|
|
+ sf.сетьСтат, err = netstat.NewNetStat(sf.бот)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return nil, fmt.Errorf("NewAngar(): in create NetResource, err=\n\t%w", err)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("НовАнгар(): in create NetResource, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
{ // Convoy
|
|
{ // Convoy
|
|
|
- sf.convoy, err = convoy.NewConvoy(sf.bot)
|
|
|
|
|
|
|
+ sf.конвой, err = convoy.NewConvoy(sf.бот)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return nil, fmt.Errorf("NewAngar(): in create IConvoy, err=\n\t%w", err)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("НовАнгар(): in create IConvoy, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
{ // Сражение
|
|
{ // Сражение
|
|
|
- sf.battle, err = battle.NewBattle(sf.bot)
|
|
|
|
|
|
|
+ sf.сражение, err = battle.NewBattle(sf.бот)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return nil, fmt.Errorf("NewAngar(): in create IBattle, err=\n\t%w", err)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("НовАнгар(): in create IBattle, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
{ // Битва мастеров
|
|
{ // Битва мастеров
|
|
|
- sf.batMas, err = batmas.NewBatMas(sf.bot)
|
|
|
|
|
|
|
+ sf.битва, err = batmas.NewBatMas(sf.бот)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return nil, fmt.Errorf("NewAngar(): in create *BatMas, err=\n\t%w", err)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("НовАнгар(): in create *BatMas, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
// go sf.batMas.Run()
|
|
// go sf.batMas.Run()
|
|
|
}
|
|
}
|
|
|
{ // База
|
|
{ // База
|
|
|
- sf.base, err = base.NewBase(sf)
|
|
|
|
|
|
|
+ sf.база, err = base.NewBase(sf)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return nil, fmt.Errorf("NewAngar(): in make IBase, err=\n\t%w", err)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("НовАнгар(): in make IBase, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
{ // Миссии
|
|
{ // Миссии
|
|
|
- sf.missions, err = missions.NewMissions(sf.bot)
|
|
|
|
|
|
|
+ sf.миссии, err = missions.NewMissions(sf.бот)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return nil, fmt.Errorf("NewAngar(): in make *Missions, err=\n\t%w", err)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("НовАнгар(): in make *Missions, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
{ // Топливо
|
|
{ // Топливо
|
|
|
- sf.fuel, err = fuel.NewFuel(sf)
|
|
|
|
|
|
|
+ sf.топливо, err = fuel.NewFuel(sf)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return nil, fmt.Errorf("NewAngar(): in make *Missions, err=\n\t%w", err)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("НовАнгар(): in make *Missions, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
return sf, nil
|
|
return sf, nil
|
|
@@ -159,22 +159,22 @@ func (sf *Angar) Пуск() error {
|
|
|
if err := sf.netKill.Run(); err != nil {
|
|
if err := sf.netKill.Run(); err != nil {
|
|
|
return fmt.Errorf("Angar.Run(): при пуске сетевой секции опыт за топливо, err=\n\t%w", err)
|
|
return fmt.Errorf("Angar.Run(): при пуске сетевой секции опыт за топливо, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
- if err := sf.convoy.Run(); err != nil {
|
|
|
|
|
|
|
+ if err := sf.конвой.Run(); err != nil {
|
|
|
return fmt.Errorf("Angar.Run(): при пуске конвоя, err=\n\t%w", err)
|
|
return fmt.Errorf("Angar.Run(): при пуске конвоя, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
- if err := sf.battle.Run(); err != nil {
|
|
|
|
|
|
|
+ if err := sf.сражение.Run(); err != nil {
|
|
|
return fmt.Errorf("Angar.Run(): при пуске сражения, err=\n\t%w", err)
|
|
return fmt.Errorf("Angar.Run(): при пуске сражения, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
- if err := sf.batMas.Run(); err != nil {
|
|
|
|
|
|
|
+ if err := sf.битва.Run(); err != nil {
|
|
|
return fmt.Errorf("Angar.Run(): при пуске схватки, err=\n\t%w", err)
|
|
return fmt.Errorf("Angar.Run(): при пуске схватки, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
- if err := sf.base.Run(); err != nil {
|
|
|
|
|
|
|
+ if err := sf.база.Run(); err != nil {
|
|
|
return fmt.Errorf("Angar.Run(): при пуске базы, err=\n\t%w", err)
|
|
return fmt.Errorf("Angar.Run(): при пуске базы, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
- if err := sf.missions.Run(); err != nil {
|
|
|
|
|
|
|
+ if err := sf.миссии.Run(); err != nil {
|
|
|
return fmt.Errorf("Angar.Run(): при пуске наград, err=\n\t%w", err)
|
|
return fmt.Errorf("Angar.Run(): при пуске наград, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
- go sf.fuel.Run()
|
|
|
|
|
|
|
+ go sf.топливо.Run()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
go func() {
|
|
go func() {
|
|
@@ -182,12 +182,12 @@ func (sf *Angar) Пуск() error {
|
|
|
count := 0
|
|
count := 0
|
|
|
for {
|
|
for {
|
|
|
select {
|
|
select {
|
|
|
- case <-sf.bot.Кнт().Done(): // Отмена контекста
|
|
|
|
|
|
|
+ case <-sf.бот.Кнт().Done(): // Отмена контекста
|
|
|
sf.ВремяОпрос().Стоп()
|
|
sf.ВремяОпрос().Стоп()
|
|
|
return
|
|
return
|
|
|
case <-sf.ВремяОпрос().КаналСиг(): // Метка времени
|
|
case <-sf.ВремяОпрос().КаналСиг(): // Метка времени
|
|
|
sf.updateResurs()
|
|
sf.updateResurs()
|
|
|
- sf.stat.Update()
|
|
|
|
|
|
|
+ sf.сетьСтат.Update()
|
|
|
switch count {
|
|
switch count {
|
|
|
case 0:
|
|
case 0:
|
|
|
sf.checkConvoy()
|
|
sf.checkConvoy()
|
|
@@ -208,7 +208,7 @@ func (sf *Angar) Пуск() error {
|
|
|
|
|
|
|
|
// Обновляет ресурсы ангара
|
|
// Обновляет ресурсы ангара
|
|
|
func (sf *Angar) updateResurs() {
|
|
func (sf *Angar) updateResurs() {
|
|
|
- if err := sf.net.UpdateLst(); err != nil {
|
|
|
|
|
|
|
+ if err := sf.сеть.UpdateLst(); err != nil {
|
|
|
// log._rintf("ERRO Angar.updateResurs(): при обработке ангара в сети, err=\n\t%v\n", err)
|
|
// log._rintf("ERRO Angar.updateResurs(): при обработке ангара в сети, err=\n\t%v\n", err)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
@@ -218,17 +218,17 @@ func (sf *Angar) updateResurs() {
|
|
|
|
|
|
|
|
// IMissions -- возвращает ссылку на объект миссий
|
|
// IMissions -- возвращает ссылку на объект миссий
|
|
|
func (sf *Angar) Миссии() types.ИМиссии {
|
|
func (sf *Angar) Миссии() types.ИМиссии {
|
|
|
- return sf.missions
|
|
|
|
|
|
|
+ return sf.миссии
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Сражение -- возвращает объект сражения
|
|
// Сражение -- возвращает объект сражения
|
|
|
func (sf *Angar) Сражение() types.ИСражениеСцена {
|
|
func (sf *Angar) Сражение() types.ИСражениеСцена {
|
|
|
- return sf.battle
|
|
|
|
|
|
|
+ return sf.сражение
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Конвой -- возвращает объект конвоя
|
|
// Конвой -- возвращает объект конвоя
|
|
|
func (sf *Angar) Конвой() types.Конвой {
|
|
func (sf *Angar) Конвой() types.Конвой {
|
|
|
- return sf.convoy
|
|
|
|
|
|
|
+ return sf.конвой
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Золото -- возвращает объект золота
|
|
// Золото -- возвращает объект золота
|
|
@@ -238,7 +238,7 @@ func (sf *Angar) Золото() types.ИСтатПарам {
|
|
|
|
|
|
|
|
// Топливо -- возвращает объект топлива
|
|
// Топливо -- возвращает объект топлива
|
|
|
func (sf *Angar) Топливо() types.ИСтатПарам {
|
|
func (sf *Angar) Топливо() types.ИСтатПарам {
|
|
|
- return sf.fuel.Fuel()
|
|
|
|
|
|
|
+ return sf.топливо.Fuel()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Уровень -- возвращает объект уровня игрока
|
|
// Уровень -- возвращает объект уровня игрока
|
|
@@ -286,9 +286,9 @@ func (sf *Angar) СереброОбновить(silverFact int) {
|
|
|
|
|
|
|
|
// База -- возвращает базу
|
|
// База -- возвращает базу
|
|
|
func (sf *Angar) База() types.ИБаза {
|
|
func (sf *Angar) База() types.ИБаза {
|
|
|
- sf.block.Lock()
|
|
|
|
|
- defer sf.block.Unlock()
|
|
|
|
|
- return sf.base
|
|
|
|
|
|
|
+ sf.блок.Lock()
|
|
|
|
|
+ defer sf.блок.Unlock()
|
|
|
|
|
+ return sf.база
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Проверяет на исполнение конвоя
|
|
// Проверяет на исполнение конвоя
|
|
@@ -310,7 +310,7 @@ func (sf *Angar) checkConvoy() {
|
|
|
if !strings.Contains(strOut, `<a class="simple-but border gray mb1" href="convoy"><span><span>Конвой</span></span></a>`) {
|
|
if !strings.Contains(strOut, `<a class="simple-but border gray mb1" href="convoy"><span><span>Конвой</span></span></a>`) {
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- sf.convoy.UpdateLst()
|
|
|
|
|
|
|
+ sf.конвой.UpdateLst()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Ищет в теле текста ангара серебро
|
|
// Ищет в теле текста ангара серебро
|
|
@@ -338,7 +338,7 @@ func (sf *Angar) findSilver() {
|
|
|
// Ищет в теле текста ангара золото
|
|
// Ищет в теле текста ангара золото
|
|
|
func (sf *Angar) findGold() {
|
|
func (sf *Angar) findGold() {
|
|
|
var (
|
|
var (
|
|
|
- lstAngar = sf.bot.Ангар().СписПолучить()
|
|
|
|
|
|
|
+ lstAngar = sf.бот.Ангар().СписПолучить()
|
|
|
strOut string
|
|
strOut string
|
|
|
isFind bool
|
|
isFind bool
|
|
|
)
|
|
)
|
|
@@ -361,5 +361,5 @@ func (sf *Angar) findGold() {
|
|
|
// log._rintf("ERRO AngarNet.findGold(): gold(%v) not number, err=\n\t%v\n", strGold, err)
|
|
// log._rintf("ERRO AngarNet.findGold(): gold(%v) not number, err=\n\t%v\n", strGold, err)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- sf.bot.Ангар().Золото().Уст(iGold)
|
|
|
|
|
|
|
+ sf.бот.Ангар().Золото().Уст(iGold)
|
|
|
}
|
|
}
|