Explorar el Código

d02 Упрощение параметров

SVI hace 3 años
padre
commit
2bf3298daa
Se han modificado 33 ficheros con 190 adiciones y 267 borrados
  1. 4 4
      server/serv_bots/warbot/angar/angar.go
  2. 7 7
      server/serv_bots/warbot/angar/angar_attack/angar_attack.go
  3. 3 3
      server/serv_bots/warbot/angar/angarnet/angarnet.go
  4. 18 20
      server/serv_bots/warbot/angar/base/arsenal/arsenal.go
  5. 3 3
      server/serv_bots/warbot/angar/base/arsenal/arsenalnet/arsenalnet.go
  6. 4 6
      server/serv_bots/warbot/angar/base/bank/bank.go
  7. 6 8
      server/serv_bots/warbot/angar/base/base.go
  8. 3 3
      server/serv_bots/warbot/angar/base/basenet/basenet.go
  9. 8 10
      server/serv_bots/warbot/angar/base/market/market.go
  10. 3 3
      server/serv_bots/warbot/angar/base/market/marketnet/marketnet.go
  11. 5 7
      server/serv_bots/warbot/angar/base/mine/mine.go
  12. 5 5
      server/serv_bots/warbot/angar/base/mine/minenet/minenet.go
  13. 2 4
      server/serv_bots/warbot/angar/base/polygon/polygon.go
  14. 3 3
      server/serv_bots/warbot/angar/base/polygon/polygonnet/polygonnet.go
  15. 9 11
      server/serv_bots/warbot/angar/batmas/batmas.go
  16. 5 8
      server/serv_bots/warbot/angar/batmas/batmasnet/batmasnet.go
  17. 9 11
      server/serv_bots/warbot/angar/battle/battle.go
  18. 7 9
      server/serv_bots/warbot/angar/battle/battle_register/battle_register.go
  19. 7 9
      server/serv_bots/warbot/angar/battle/battle_wait/battle_wait.go
  20. 9 11
      server/serv_bots/warbot/angar/battle/battle_worker/battle_worker.go
  21. 6 8
      server/serv_bots/warbot/angar/battle/battle_worker/battleon/battleon.go
  22. 3 3
      server/serv_bots/warbot/angar/battle/battlenet/battlenet.go
  23. 3 5
      server/serv_bots/warbot/angar/convoy/convoy.go
  24. 3 3
      server/serv_bots/warbot/angar/convoy/convoynet/convoynet.go
  25. 12 19
      server/serv_bots/warbot/angar/division/divwar/divwar.go
  26. 5 8
      server/serv_bots/warbot/angar/division/divwar/divwarnet/divwarnet.go
  27. 8 13
      server/serv_bots/warbot/angar/division/divwar/divwaron/divwaron.go
  28. 3 3
      server/serv_bots/warbot/angar/fuel/fuel.go
  29. 5 7
      server/serv_bots/warbot/angar/missions/missions.go
  30. 3 3
      server/serv_bots/warbot/angar/missions/missionsnet/missionsnet.go
  31. 0 47
      server/serv_bots/warbot/tank/basestat/basestat.go
  32. 16 0
      server/serv_bots/warbot/warbot.go
  33. 3 3
      server/serv_bots/warbot/warbot_net/warbot_net.go

+ 4 - 4
server/serv_bots/warbot/angar/angar.go

@@ -55,9 +55,9 @@ type Angar struct {
 
 // NewAngar -- возвращает новый *Angar
 func NewAngar(bot types.IBot) (*Angar, error) {
-		if bot == nil {
-			return nil, fmt.Errorf("NewAngar(): IBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewAngar(): IBot == nil")
+	}
 
 	sf := &Angar{
 		server:   bot.Server(),
@@ -79,7 +79,7 @@ func (sf *Angar) Make() error {
 	defer sf.block.Unlock()
 	var err error
 	{ // Section
-		sf.Section, err = section.NewSection(sf.server, `<title>Ангар</title>`)
+		sf.Section, err = section.NewSection(sf.bot, `<title>Ангар</title>`)
 		if err != nil {
 			return fmt.Errorf("Angar.make(): in create *Section, err=\n\t%w", err)
 		}

+ 7 - 7
server/serv_bots/warbot/angar/angar_attack/angar_attack.go

@@ -19,19 +19,19 @@ import (
 // AngarAttack -- объект боя на топливе
 type AngarAttack struct {
 	*sectionnet.SectionNet
-	angar  types.IAngar
-	bot    types.IBot
+	angar types.IAngar
+	bot   types.IBot
 }
 
 // NewAngarAttack -- возвращает новый *AngarAttackNet
 func NewAngarAttack(bot types.IBot) (*AngarAttack, error) {
-		if bot == nil {
-			return nil, fmt.Errorf("NewAngarAttack(): IBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewAngarAttack(): IBot == nil")
+	}
 
 	sf := &AngarAttack{
-		angar:  bot.Angar(),
-		bot:    bot,
+		angar: bot.Angar(),
+		bot:   bot,
 	}
 	return sf, nil
 }

+ 3 - 3
server/serv_bots/warbot/angar/angarnet/angarnet.go

@@ -20,9 +20,9 @@ type AngarNet struct {
 
 // NewAngarNet -- возвращает новый *AngarNet
 func NewAngarNet(bot types.IBot) (*AngarNet, error) {
-		if bot == nil {
-			return nil, fmt.Errorf("NewAngarNet(): IBot is nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewAngarNet(): IBot is nil")
+	}
 
 	sf := &AngarNet{
 		server: bot.Server(),

+ 18 - 20
server/serv_bots/warbot/angar/base/arsenal/arsenal.go

@@ -18,30 +18,28 @@ import (
 // Arsenal -- объект арсенала на базе
 type Arsenal struct {
 	*section.Section
-	server types.IServer
-	bot    types.IBot
-	base   types.IBase
-	net    *arsenalnet.ArsenalNet
-	fugas  types.IStatParam
-	armor  types.IStatParam
-	kumul  types.IStatParam
-	remka  types.IStatParam
+	bot   types.IBot
+	base  types.IBase
+	net   *arsenalnet.ArsenalNet
+	fugas types.IStatParam
+	armor types.IStatParam
+	kumul types.IStatParam
+	remka types.IStatParam
 }
 
 // NewArsenal -- возвращает новый *Arsenal
 func NewArsenal(bot types.IBot) (*Arsenal, error) {
-		if bot == nil {
-			return nil, fmt.Errorf("NewArsenal(): IBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewArsenal(): IBot == nil")
+	}
 
 	sf := &Arsenal{
-		server: bot.Server(),
-		bot:    bot,
-		base:   bot.Angar().Base(),
-		fugas:  static_param.NewStaticParam("fugas"),
-		armor:  static_param.NewStaticParam("armor"),
-		kumul:  static_param.NewStaticParam("kumul"),
-		remka:  static_param.NewStaticParam("remka"),
+		bot:   bot,
+		base:  bot.Angar().Base(),
+		fugas: static_param.NewStaticParam("fugas"),
+		armor: static_param.NewStaticParam("armor"),
+		kumul: static_param.NewStaticParam("kumul"),
+		remka: static_param.NewStaticParam("remka"),
 	}
 
 	return sf, nil
@@ -50,7 +48,7 @@ func NewArsenal(bot types.IBot) (*Arsenal, error) {
 func (sf *Arsenal) Run() error {
 	var err error
 	{ // ISection
-		sf.Section, err = section.NewSection(sf.server, `<span class="green2">Ремкомплект</span><br/>`)
+		sf.Section, err = section.NewSection(sf.bot, `<span class="green2">Ремкомплект</span><br/>`)
 		if err != nil {
 			return fmt.Errorf("Arsenal.Run(): in create *Section, err=\n\t%w", err)
 		}
@@ -70,7 +68,7 @@ func (sf *Arsenal) run() {
 	// sf.getTime()
 	for {
 		select {
-		case <-sf.server.Done():
+		case <-sf.bot.Ctx().Done():
 			sf.CountDown().Stop()
 			return
 		case <-sf.CountDown().ChanSig():

+ 3 - 3
server/serv_bots/warbot/angar/base/arsenal/arsenalnet/arsenalnet.go

@@ -18,9 +18,9 @@ type ArsenalNet struct {
 
 // NewArsenalNet -- возвращает новый *ArsenalNet
 func NewArsenalNet(bot types.IBot) (*ArsenalNet, error) {
-		if bot == nil {
-			return nil, fmt.Errorf("NewArsenalNet(): IBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewArsenalNet(): IBot == nil")
+	}
 
 	sf := &ArsenalNet{
 		SectionNet: sectionnet.NewSectionNet(bot, bot.Angar().Base().Arsenal(), "http://wartank.ru/production/Armory"),

+ 4 - 6
server/serv_bots/warbot/angar/base/bank/bank.go

@@ -20,7 +20,6 @@ import (
 // Bank -- объект банка на базе
 type Bank struct {
 	*section.Section
-	server    types.IServer
 	bot       types.IBot
 	net       *banknet.BankNet
 	silverBot types.IStatParam
@@ -30,12 +29,11 @@ type Bank struct {
 
 // NewBank -- возвращает новый *Bank
 func NewBank(bot types.IBot) (*Bank, error) {
-		if bot == nil {
-			return nil, fmt.Errorf("NewBank(): IBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewBank(): IBot == nil")
+	}
 
 	sf := &Bank{
-		server:    bot.Server(),
 		bot:       bot,
 		silverBot: static_param.NewStaticParam("silver_bot"),
 		mode1:     bankmode.NewBankMode(),
@@ -51,7 +49,7 @@ func (sf *Bank) Run() error {
 	{ // Section
 		// sf.Section, err = section.NewSection(`<div class="thumb fl"><img src="/images/silver.jpg" alt="Серебро" title="Серебро"/>`, sf.chCall)
 		// <span class="green2">Серебро</span><br/>
-		sf.Section, err = section.NewSection(sf.server, `<span class="green2">Серебро</span><br/>`)
+		sf.Section, err = section.NewSection(sf.bot, `<span class="green2">Серебро</span><br/>`)
 		if err != nil {
 			return fmt.Errorf("Bank.Run(): in create *Section, err=\n\t%w", err)
 		}

+ 6 - 8
server/serv_bots/warbot/angar/base/base.go

@@ -34,7 +34,6 @@ const (
 type Base struct {
 	*section.Section
 	net       *basenet.BaseNet
-	server    types.IServer
 	bot       types.IBot
 	arsenal   *arsenal.Arsenal
 	bank      *bank.Bank
@@ -49,12 +48,11 @@ type Base struct {
 // NewBase -- возвращает новый *Base
 func NewBase(bot types.IBot) (*Base, error) {
 	log.Printf("NewBase()\n")
-		if bot == nil {
-			return nil, fmt.Errorf("NewBase(): IBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewBase(): IBot == nil")
+	}
 	sf := &Base{
-		server: bot.Server(),
-		bot:    bot,
+		bot: bot,
 	}
 	return sf, nil
 }
@@ -101,7 +99,7 @@ func (sf *Base) make() error {
 		}
 	}
 	{ // Section
-		sf.Section, err = section.NewSection(sf.server, `<title>База</title>`)
+		sf.Section, err = section.NewSection(sf.bot, `<title>База</title>`)
 		if err != nil {
 			return fmt.Errorf("Base.make(): in create *Section, err=\n\t%w", err)
 		}
@@ -150,7 +148,7 @@ func (sf *Base) Run() error {
 	go func() {
 		for {
 			select {
-			case <-sf.server.Done():
+			case <-sf.bot.Ctx().Done():
 				sf.CountDown().Stop()
 			case <-sf.CountDown().ChanSig():
 				if err := sf.net.UpdateLst("Base.run()"); err != nil { // Обновить состояние базы

+ 3 - 3
server/serv_bots/warbot/angar/base/basenet/basenet.go

@@ -19,9 +19,9 @@ type BaseNet struct {
 
 // NewBaseNet -- возвращает новый *BaseNet
 func NewBaseNet(bot types.IBot) (*BaseNet, error) {
-		if bot == nil {
-			return nil, fmt.Errorf("NewBaseNet(): IBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewBaseNet(): IBot == nil")
+	}
 
 	strUrl := "http://wartank.ru/buildings"
 	sf := &BaseNet{

+ 8 - 10
server/serv_bots/warbot/angar/base/market/market.go

@@ -16,20 +16,18 @@ import (
 // Market -- объект рынка
 type Market struct {
 	*section.Section
-	server types.IServer
-	bot    types.IBot
-	net    *marketnet.MarketNet
+	bot types.IBot
+	net *marketnet.MarketNet
 }
 
 // NewMarket -- возвращает новый рынок
 func NewMarket(bot types.IBot) (*Market, error) {
-		if bot == nil {
-			return nil, fmt.Errorf("NewMarket(): IBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewMarket(): IBot == nil")
+	}
 
 	sf := &Market{
-		server: bot.Server(),
-		bot:    bot,
+		bot: bot,
 	}
 	return sf, nil
 }
@@ -37,7 +35,7 @@ func NewMarket(bot types.IBot) (*Market, error) {
 func (sf *Market) Run() error {
 	var err error
 	{ // Секция
-		sf.Section, err = section.NewSection(sf.server, `<title>Рынок</title>`)
+		sf.Section, err = section.NewSection(sf.bot, `<title>Рынок</title>`)
 		if err != nil {
 			return fmt.Errorf("Market.Run(): in create *Section, err=\n\t%w", err)
 		}
@@ -57,7 +55,7 @@ func (sf *Market) run() {
 	sf.CountDown().Set(25)
 	for {
 		select {
-		case <-sf.server.Done():
+		case <-sf.bot.Ctx().Done():
 			sf.CountDown().Stop()
 			return
 		case <-sf.CountDown().ChanSig():

+ 3 - 3
server/serv_bots/warbot/angar/base/market/marketnet/marketnet.go

@@ -18,9 +18,9 @@ type MarketNet struct {
 
 // NewMarketNet -- возвращает новый *MarketNet
 func NewMarketNet(bot types.IBot) (*MarketNet, error) {
-		if bot == nil {
-			return nil, fmt.Errorf("NewMarketNet(): IBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewMarketNet(): IBot == nil")
+	}
 
 	sf := &MarketNet{
 		SectionNet: sectionnet.NewSectionNet(bot, bot.Angar().Base().Market(), "http://wartank.ru/market"),

+ 5 - 7
server/serv_bots/warbot/angar/base/mine/mine.go

@@ -20,7 +20,6 @@ import (
 type Mine struct {
 	*section.Section
 	net        *minenet.MineNet
-	server     types.IServer
 	bot        types.IBot
 	base       types.IBase
 	ruda       types.IStatParam
@@ -32,11 +31,10 @@ type Mine struct {
 
 // NewMine -- возвращает новый *Mine
 func NewMine(bot types.IBot) (*Mine, error) {
-		if bot == nil {
-			return nil, fmt.Errorf("NewMine(): IBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewMine(): IBot == nil")
+	}
 	sf := &Mine{
-		server:     bot.Server(),
 		bot:        bot,
 		base:       bot.Angar().Base(),
 		ruda:       static_param.NewStaticParam("ruda"),
@@ -51,7 +49,7 @@ func NewMine(bot types.IBot) (*Mine, error) {
 func (sf *Mine) Run() error {
 	var err error
 	{ // Секция
-		sf.Section, err = section.NewSection(sf.server, `<span class="green2">Руда</span><br/>`)
+		sf.Section, err = section.NewSection(sf.bot, `<span class="green2">Руда</span><br/>`)
 		if err != nil {
 			return fmt.Errorf("Mine.Run(): in create *Section, err=\n\t%w", err)
 		}
@@ -75,7 +73,7 @@ func (sf *Mine) run() {
 	sf.CountDown().Set(1)
 	for {
 		select {
-		case <-sf.server.Done():
+		case <-sf.bot.Ctx().Done():
 			sf.CountDown().Stop()
 			return
 		case <-sf.CountDown().ChanSig():

+ 5 - 5
server/serv_bots/warbot/angar/base/mine/minenet/minenet.go

@@ -14,17 +14,17 @@ import (
 // MineNet -- опрашивает шахту на базе
 type MineNet struct {
 	*sectionnet.SectionNet
-	bot    types.IBot
+	bot types.IBot
 }
 
 // NewMineNet -- возвращает новый *MineNet
 func NewMineNet(bot types.IBot) (*MineNet, error) {
-		if bot == nil {
-			return nil, fmt.Errorf("NewMineNet(): IBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewMineNet(): IBot == nil")
+	}
 
 	sf := &MineNet{
-		bot:    bot,
+		bot: bot,
 	}
 	return sf, nil
 }

+ 2 - 4
server/serv_bots/warbot/angar/base/polygon/polygon.go

@@ -17,7 +17,6 @@ import (
 // Polygon -- объект полигона на базе
 type Polygon struct {
 	*section.Section
-	server   types.IServer
 	bot      types.IBot
 	tankStat types.ITankStat
 	net      *polygonnet.PolygonNet
@@ -29,7 +28,6 @@ func NewPolygon(bot types.IBot) (*Polygon, error) {
 		return nil, fmt.Errorf("NewPolygon(): IBot == nil")
 	}
 	sf := &Polygon{
-		server:   bot.Server(),
 		bot:      bot,
 		tankStat: bot.Tank().TankStat(),
 	}
@@ -40,7 +38,7 @@ func NewPolygon(bot types.IBot) (*Polygon, error) {
 func (sf *Polygon) Run() error {
 	var err error
 	{ // Секция
-		sf.Section, err = section.NewSection(sf.server, `<title>Полигон</title>`)
+		sf.Section, err = section.NewSection(sf.bot, `<title>Полигон</title>`)
 		if err != nil {
 			return fmt.Errorf("Polygon.Run(): in create *Section, err=\n\t%w", err)
 		}
@@ -60,7 +58,7 @@ func (sf *Polygon) run() {
 	sf.CountDown().Set(2)
 	for {
 		select {
-		case <-sf.server.Done():
+		case <-sf.bot.Ctx().Done():
 			sf.CountDown().Stop()
 			return
 		case <-sf.CountDown().ChanSig():

+ 3 - 3
server/serv_bots/warbot/angar/base/polygon/polygonnet/polygonnet.go

@@ -18,9 +18,9 @@ type PolygonNet struct {
 
 // NewPolygonNet -- возвращает новый *PolygonNet
 func NewPolygonNet(bot types.IBot) (*PolygonNet, error) {
-		if bot == nil {
-			return nil, fmt.Errorf("NewPolygonNet(): IBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewPolygonNet(): IBot == nil")
+	}
 
 	sf := &PolygonNet{
 		SectionNet: sectionnet.NewSectionNet(bot, bot.Angar().Base().Polygon(), "http://wartank.ru/polygon"),

+ 9 - 11
server/serv_bots/warbot/angar/batmas/batmas.go

@@ -19,20 +19,18 @@ import (
 // BatMas -- объект битвы мастеров
 type BatMas struct {
 	*section.Section
-	server types.IServer
-	bot    types.IBot
-	net    *batmasnet.BatMasNet
+	bot types.IBot
+	net *batmasnet.BatMasNet
 }
 
 // NetBatMas -- возвращает новый *BatMas
 func NewBatMas(bot types.IBot) (*BatMas, error) {
-		if bot == nil {
-			return nil, fmt.Errorf("NewBatMas(): IBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewBatMas(): IBot == nil")
+	}
 
 	sf := &BatMas{
-		server: bot.Server(),
-		bot:    bot,
+		bot: bot,
 	}
 	return sf, nil
 }
@@ -41,13 +39,13 @@ func NewBatMas(bot types.IBot) (*BatMas, error) {
 func (sf *BatMas) Run() error {
 	var err error
 	{ // ISection (ожидание)
-		sf.Section, err = section.NewSection(sf.server, `/> Битва мастеров <`)
+		sf.Section, err = section.NewSection(sf.bot, `/> Битва мастеров <`)
 		if err != nil {
 			return fmt.Errorf("BatMas.Run(): in create *Section, err=\n\t%w", err)
 		}
 	}
 	{ // Net (ожидание)
-		sf.net, err = batmasnet.NewBatMasNet(sf.server, sf.bot)
+		sf.net, err = batmasnet.NewBatMasNet(sf.bot)
 		if err != nil {
 			return fmt.Errorf("BatMas.Run(): при создании BatMasNet, err=\n\t%w", err)
 		}
@@ -56,7 +54,7 @@ func (sf *BatMas) Run() error {
 	go func() {
 		for {
 			select {
-			case <-sf.server.Done():
+			case <-sf.bot.Ctx().Done():
 				sf.CountDown().Stop()
 				return
 			case <-sf.CountDown().ChanSig():

+ 5 - 8
server/serv_bots/warbot/angar/batmas/batmasnet/batmasnet.go

@@ -14,21 +14,18 @@ import (
 // BatMasNet -- танкует в битве мастеров
 type BatMasNet struct {
 	*sectionnet.SectionNet
+	bot types.IBot
 }
 
 // NewBatMasNet -- возвращает новый *BatMasNet
-func NewBatMasNet(server types.IServer, bot types.IBot) (*BatMasNet, error) {
-	{ // Предусловия
-		if server == nil {
-			return nil, fmt.Errorf("NewBatMasNet(): IServer == nil")
-		}
-		if bot == nil {
-			return nil, fmt.Errorf("NewBatMasNet(): IServBot == nil")
-		}
+func NewBatMasNet(bot types.IBot) (*BatMasNet, error) {
+	if bot == nil {
+		return nil, fmt.Errorf("NewBatMasNet(): IServBot == nil")
 	}
 
 	sf := &BatMasNet{
 		// SectionNet: sectionnet.NewSectionNet(server, bot, ..., "http://wartank.ru/pvp"),
+		bot: bot,
 	}
 	return sf, nil
 }

+ 9 - 11
server/serv_bots/warbot/angar/battle/battle.go

@@ -19,9 +19,8 @@ import (
 // Battle -- объект ожидания сражения на базе
 type Battle struct {
 	*section.Section
-	server types.IServer
-	bot    types.IBot
-	conn   *http.Client
+	bot  types.IBot
+	conn *http.Client
 
 	battleRegister *battle_register.BattleRegister // Регистратор на сражение
 	battleWaiter   *battle_wait.BattleWait         // Ождатель начала сражения
@@ -31,14 +30,13 @@ type Battle struct {
 
 // NewBattle -- возвращает новый *Battle
 func NewBattle(bot types.IBot) (*Battle, error) {
-		if bot == nil {
-			return nil, fmt.Errorf("NewBattle(): IBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewBattle(): IBot == nil")
+	}
 
 	sf := &Battle{
-		server: bot.Server(),
-		bot:    bot,
-		conn:   bot.BotNet().Conn(),
+		bot:  bot,
+		conn: bot.BotNet().Conn(),
 	}
 	var err error
 	{
@@ -64,7 +62,7 @@ func NewBattle(bot types.IBot) (*Battle, error) {
 func (sf *Battle) Run() error {
 	var err error
 	{ // ISection
-		sf.Section, err = section.NewSection(sf.server, `<span>до начала `)
+		sf.Section, err = section.NewSection(sf.bot, `<span>до начала `)
 		if err != nil {
 			return fmt.Errorf("Battle.Run(): in create *Section, err=\n\t%w", err)
 		}
@@ -81,7 +79,7 @@ func (sf *Battle) run() {
 	// sf.CountDown().SetInt(2)
 	for {
 		select {
-		case <-sf.server.Done():
+		case <-sf.bot.Ctx().Done():
 			return
 		default:
 			sf.battleRegister.Register()

+ 7 - 9
server/serv_bots/warbot/angar/battle/battle_register/battle_register.go

@@ -14,23 +14,21 @@ import (
 // BattleRegister -- регистрирует танк к началу атаки
 type BattleRegister struct {
 	*section.Section
-	server types.IServer
-	bot    types.IBot
-	net    *sectionnet.SectionNet
+	bot types.IBot
+	net *sectionnet.SectionNet
 }
 
 // NewBattleRegister -- возвращает новый ожидатель битвы
 func NewBattleRegister(bot types.IBot) (*BattleRegister, error) {
-		if bot == nil {
-			return nil, fmt.Errorf("NewBattleRegister(): IBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewBattleRegister(): IBot == nil")
+	}
 	sf := &BattleRegister{
-		server: bot.Server(),
-		bot:    bot,
+		bot: bot,
 	}
 	var err error
 	{ // ISection (ожидание)
-		sf.Section, err = section.NewSection(sf.server, `<title>Сражения</title>`)
+		sf.Section, err = section.NewSection(bot, `<title>Сражения</title>`)
 		if err != nil {
 			return nil, fmt.Errorf("NewBattleRegister(): in create *Section, err=\n\t%w", err)
 		}

+ 7 - 9
server/serv_bots/warbot/angar/battle/battle_wait/battle_wait.go

@@ -15,24 +15,22 @@ import (
 // BattleWait -- ожидатель начала битвы
 type BattleWait struct {
 	*section.Section
-	server types.IServer
-	bot    types.IBot
-	net    *sectionnet.SectionNet
+	bot types.IBot
+	net *sectionnet.SectionNet
 }
 
 // NewBattleWait -- возвращает новый ожидатель битвы
 func NewBattleWait(bot types.IBot) (*BattleWait, error) {
-		if bot == nil {
-			return nil, fmt.Errorf("NewBattleWait():IServBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewBattleWait():IServBot == nil")
+	}
 
 	sf := &BattleWait{
-		server: bot.Server(),
-		bot:    bot,
+		bot: bot,
 	}
 	var err error
 	{ // ISection (ожидание)
-		sf.Section, err = section.NewSection(sf.server, `<title>Сражения</title>`)
+		sf.Section, err = section.NewSection(bot, `<title>Сражения</title>`)
 		if err != nil {
 			return nil, fmt.Errorf("NewBattleWait(): in create *Section, err=\n\t%w", err)
 		}

+ 9 - 11
server/serv_bots/warbot/angar/battle/battle_worker/battle_worker.go

@@ -16,9 +16,8 @@ import (
 // BattleWorker -- исполнение битвы
 type BattleWorker struct {
 	*section.Section
-	server types.IServer
-	bot    types.IBot
-	net    *sectionnet.SectionNet
+	bot types.IBot
+	net *sectionnet.SectionNet
 
 	alarm types.IStatParam
 
@@ -30,18 +29,17 @@ type BattleWorker struct {
 
 // NewBattleWorker -- возвращает новый исполнитель битвы
 func NewBattleWorker(bot types.IBot) (*BattleWorker, error) {
-		if bot == nil {
-			return nil, fmt.Errorf("NewBattleWorker(): IBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewBattleWorker(): IBot == nil")
+	}
 	sf := &BattleWorker{
-		server: bot.Server(),
-		bot:    bot,
-		alarm:  static_param.NewStaticParam("alarm"),
-		sound:  battlesound.NewBattleSound(),
+		bot:   bot,
+		alarm: static_param.NewStaticParam("alarm"),
+		sound: battlesound.NewBattleSound(),
 	}
 	var err error
 	{ // ISection (ожидание)
-		sf.Section, err = section.NewSection(sf.server, `<title>Сражения</title>`)
+		sf.Section, err = section.NewSection(sf.bot, `<title>Сражения</title>`)
 		if err != nil {
 			return nil, fmt.Errorf("NewBattleWorker(): in create *Section, err=\n\t%w", err)
 		}

+ 6 - 8
server/serv_bots/warbot/angar/battle/battle_worker/battleon/battleon.go

@@ -23,7 +23,6 @@ import (
 type BattleOn struct {
 	*section.Section
 	net            *sectionnet.SectionNet
-	server         types.IServer
 	bot            types.IBot
 	ctxBattle      context.Context // Контекст сражения
 	fnCancelBattle func()          // Функция отмены сражения
@@ -38,13 +37,12 @@ type BattleOn struct {
 
 // NewBattleOn -- возвращает новый *BattleOn
 func NewBattleOn(bot types.IBot) (*BattleOn, error) {
-		if bot == nil {
-			return nil, fmt.Errorf("NewBattleOn(): IBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewBattleOn(): IBot == nil")
+	}
 
 	ctxBattle, fnCancelBattle := context.WithTimeout(bot.Server().CtxApp(), time.Second*305)
 	sf := &BattleOn{
-		server:         bot.Server(),
 		bot:            bot,
 		ctxBattle:      ctxBattle,
 		fnCancelBattle: fnCancelBattle,
@@ -54,7 +52,7 @@ func NewBattleOn(bot types.IBot) (*BattleOn, error) {
 	}
 	var err error
 	{ // ISection (ожидание)
-		sf.Section, err = section.NewSection(bot.Server(), `<title>Сражения</title>`)
+		sf.Section, err = section.NewSection(bot, `<title>Сражения</title>`)
 		if err != nil {
 			return nil, fmt.Errorf("NewBattleOn(): in create *Section, err=\n\t%w", err)
 		}
@@ -71,7 +69,7 @@ func (sf *BattleOn) makeTick() {
 	}()
 	for {
 		select {
-		case <-sf.server.Done(): // Отмена контекста приложения
+		case <-sf.bot.Ctx().Done(): // Отмена контекста приложения
 			sf.fnCancelBattle()
 			return
 		case <-sf.ctxBattle.Done(): // Битва закончилась
@@ -116,7 +114,7 @@ func (sf *BattleOn) run() {
 	}
 	for { // Рабочий цикл сражения
 		select {
-		case <-sf.server.Done(): // Прерывание работы от приложения
+		case <-sf.bot.Ctx().Done(): // Прерывание работы от бота
 			return
 		case <-sf.CountDown().ChanSig(): // Вышло время (сигнал от секции)
 			return

+ 3 - 3
server/serv_bots/warbot/angar/battle/battlenet/battlenet.go

@@ -20,9 +20,9 @@ type BattleNet struct {
 
 // NewBattleNet -- возвращает новый *BattleNet
 func NewBattleNet(bot types.IBot) (*BattleNet, error) {
-		if bot == nil {
-			return nil, fmt.Errorf("NewBattleNet(): IBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewBattleNet(): IBot == nil")
+	}
 
 	sf := &BattleNet{
 		server: bot.Server(),

+ 3 - 5
server/serv_bots/warbot/angar/convoy/convoy.go

@@ -23,7 +23,6 @@ import (
 type Convoy struct {
 	*section.Section
 	net      *convoynet.ConvoyNet
-	server   types.IServer
 	bot      types.IBot
 	glory    types.IStatParam // Количество славы
 	chAttack chan int         // Канал проведения атаки
@@ -32,7 +31,6 @@ type Convoy struct {
 // NewConvoy -- возвращает новый *Convoy
 func NewConvoy(bot types.IBot) (*Convoy, error) {
 	sf := &Convoy{
-		server:   bot.Server(),
 		bot:      bot,
 		glory:    static_param.NewStaticParam("glory"),
 		chAttack: make(chan int, 5),
@@ -43,7 +41,7 @@ func NewConvoy(bot types.IBot) (*Convoy, error) {
 func (sf *Convoy) Run() error {
 	var err error
 	{ // Section
-		sf.Section, err = section.NewSection(sf.server, `<title>Конвой</title>`)
+		sf.Section, err = section.NewSection(sf.bot, `<title>Конвой</title>`)
 		if err != nil {
 			return fmt.Errorf("Convoy.Run(): in create *Section, err=\n\t%w", err)
 		}
@@ -81,7 +79,7 @@ func (sf *Convoy) reservTick() {
 	}()
 	for {
 		select {
-		case <-sf.server.Done():
+		case <-sf.bot.Ctx().Done():
 			return
 		default:
 			ct0 := sf.CountDown().Get()
@@ -100,7 +98,7 @@ func (sf *Convoy) run() {
 	sf.chAttack <- 1
 	for {
 		select {
-		case <-sf.server.Done():
+		case <-sf.bot.Ctx().Done():
 			sf.CountDown().Stop()
 			return
 		case <-sf.CountDown().ChanSig(): // Время истекло

+ 3 - 3
server/serv_bots/warbot/angar/convoy/convoynet/convoynet.go

@@ -20,9 +20,9 @@ type ConvoyNet struct {
 
 // NewConvoyNet -- возвращает новый *ConvoyNet
 func NewConvoyNet(bot types.IBot) (*ConvoyNet, error) {
-		if bot == nil {
-			return nil, fmt.Errorf("NewConvoyNet(): IBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewConvoyNet(): IBot == nil")
+	}
 
 	sf := &ConvoyNet{
 		server: bot.Server(),

+ 12 - 19
server/serv_bots/warbot/angar/division/divwar/divwar.go

@@ -23,11 +23,10 @@ import (
 // DivWar -- объект ожидания битвы дивизий
 type DivWar struct {
 	*section.Section
-	server types.IServer
-	bot    types.IBot
-	alarm  types.IStatParam
-	net    *divwarnet.DivWarNet
-	conn   *http.Client
+	bot   types.IBot
+	alarm types.IStatParam
+	net   *divwarnet.DivWarNet
+	conn  *http.Client
 
 	// Непосредственная битва
 	divon *divwaron.DivWarOn
@@ -40,18 +39,12 @@ type DivWar struct {
 }
 
 // NewDivWar -- возвращает новый *DivWar
-func NewDivWar(server types.IServer, bot types.IBot) (*DivWar, error) {
-	{ // Предусловия
-		if server == nil {
-			return nil, fmt.Errorf("NewDivWar(): IServer == nil")
-		}
-		if bot == nil {
-			return nil, fmt.Errorf("NewDivWar(): IBot nil")
-		}
+func NewDivWar(bot types.IBot) (*DivWar, error) {
+	if bot == nil {
+		return nil, fmt.Errorf("NewDivWar(): IBot == nil")
 	}
 
 	sf := &DivWar{
-		server:   server,
 		bot:      bot,
 		alarm:    static_param.NewStaticParam("alarm"),
 		chDivWar: make(chan int, 1),
@@ -62,13 +55,13 @@ func NewDivWar(server types.IServer, bot types.IBot) (*DivWar, error) {
 	// sf.shotTimeFull.Set(8000) // 8000 msec
 	var err error
 	{ // ISection
-		sf.Section, err = section.NewSection(server, `<span>до начала `)
+		sf.Section, err = section.NewSection(bot, `<span>до начала `)
 		if err != nil {
 			return nil, fmt.Errorf("NewDivWar(): in create *Section, err=\n\t%w", err)
 		}
 	}
 	{ // Net
-		sf.net, err = divwarnet.NewDivWarNet(server, bot)
+		sf.net, err = divwarnet.NewDivWarNet(bot)
 		if err != nil {
 			return nil, fmt.Errorf("NewDivWar(): при создании DivWarNet, err=\n\t%w", err)
 		}
@@ -82,7 +75,7 @@ func (sf *DivWar) reservTick() {
 	defer sf.CountDown().Stop()
 	for {
 		select {
-		case <-sf.server.Done():
+		case <-sf.bot.Ctx().Done():
 			return
 		default:
 			ct0 := sf.CountDown().Get()
@@ -104,7 +97,7 @@ func (sf *DivWar) run() {
 	sf.chDivWar <- 1
 	for {
 		select {
-		case <-sf.server.Done():
+		case <-sf.bot.Ctx().Done():
 			sf.CountDown().Stop()
 			return
 		case <-sf.CountDown().ChanSig(): // Время обновить данные по сражению
@@ -209,7 +202,7 @@ func (sf *DivWar) DivWar() {
 		// log.Printf("INFO DivWar.DivWar(): сражение завершено\n")
 	}()
 	var err error
-	sf.divon, err = divwaron.NewDivWarOn(sf.server, sf.bot) // IDivWarOn (онлайн)
+	sf.divon, err = divwaron.NewDivWarOn(sf.bot) // IDivWarOn (онлайн)
 	if err != nil {
 		// log._rintf("ERRO DivWar.DivWarOn(): при создании IDivWarOn, err=\n\t%v\n", err)
 		time.Sleep(time.Millisecond * 250)

+ 5 - 8
server/serv_bots/warbot/angar/division/divwar/divwarnet/divwarnet.go

@@ -14,21 +14,18 @@ import (
 // DivWarNet -- танкует в сражении
 type DivWarNet struct {
 	*sectionnet.SectionNet
+	bot types.IBot
 }
 
 // NewDivWarNet -- возвращает новый *DivWarNet
-func NewDivWarNet(server types.IServer, bot types.IBot) (*DivWarNet, error) {
-	{ // Предусловия
-		if server == nil {
-			return nil, fmt.Errorf("NewDivWarNet(): IServer == nil")
-		}
-		if bot == nil {
-			return nil, fmt.Errorf("NewDivWarNet(): IServBpt == nil")
-		}
+func NewDivWarNet(bot types.IBot) (*DivWarNet, error) {
+	if bot == nil {
+		return nil, fmt.Errorf("NewDivWarNet(): IServBpt == nil")
 	}
 
 	sf := &DivWarNet{
 		// SectionNet: sectionnet.NewSectionNet(server, bot, ..., "http://wartank.ru/bitva"),
+		bot: bot,
 	}
 	return sf, nil
 }

+ 8 - 13
server/serv_bots/warbot/angar/division/divwar/divwaron/divwaron.go

@@ -22,8 +22,8 @@ import (
 // DivWarOn -- непосредственно танкует в сражении
 type DivWarOn struct {
 	*section.Section
+	bot            types.IBot
 	net            *sectionnet.SectionNet
-	server         types.IServer
 	ctxDivWar      context.Context // Контекст сражения
 	fnCancelDivWar func()          // Функция отмены сражения
 
@@ -37,18 +37,13 @@ type DivWarOn struct {
 }
 
 // NewDivWarOn -- возвращает новый *DivWarOn
-func NewDivWarOn(server types.IServer, bot types.IBot) (*DivWarOn, error) {
-	{ // Предусловия
-		if server == nil {
-			return nil, fmt.Errorf("NewDivWarOn(): IServer == nil")
-		}
-		if bot == nil {
-			return nil, fmt.Errorf("NewDivWarOn(): IBot == nil")
-		}
+func NewDivWarOn(bot types.IBot) (*DivWarOn, error) {
+	if bot == nil {
+		return nil, fmt.Errorf("NewDivWarOn(): IBot == nil")
 	}
-	ctxDivWar, fnCancelDivWar := context.WithTimeout(server.CtxApp(), time.Second*305)
+	ctxDivWar, fnCancelDivWar := context.WithTimeout(bot.Ctx(), time.Second*305)
 	sf := &DivWarOn{
-		server:         server,
+		bot:            bot,
 		ctxDivWar:      ctxDivWar,
 		fnCancelDivWar: fnCancelDivWar,
 		login:          bot.Name(),
@@ -57,7 +52,7 @@ func NewDivWarOn(server types.IServer, bot types.IBot) (*DivWarOn, error) {
 	}
 	var err error
 	{ // ISection (ожидание)
-		sf.Section, err = section.NewSection(server, `<title>Сражения</title>`)
+		sf.Section, err = section.NewSection(bot, `<title>Сражения</title>`)
 		if err != nil {
 			return nil, fmt.Errorf("NewDivWarOn(): in create *Section, err=\n\t%w", err)
 		}
@@ -79,7 +74,7 @@ func (sf *DivWarOn) makeTick() {
 	}()
 	for !sf.isEnd.Get() {
 		select {
-		case <-sf.server.Done(): // Отмена контекста приложения
+		case <-sf.bot.Ctx().Done(): // Отмена контекста приложения
 			return
 		case <-sf.ctxDivWar.Done(): // Битва закончилась
 			return

+ 3 - 3
server/serv_bots/warbot/angar/fuel/fuel.go

@@ -21,9 +21,9 @@ type Fuel struct {
 
 // NewFuel -- возвращает новый топливный бак
 func NewFuel(bot types.IBot) (*Fuel, error) {
-		if bot == nil {
-			return nil, fmt.Errorf("NewFuel(): IBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewFuel(): IBot == nil")
+	}
 	sf := &Fuel{
 		server: bot.Server(),
 		angar:  bot.Angar(),

+ 5 - 7
server/serv_bots/warbot/angar/missions/missions.go

@@ -17,9 +17,8 @@ import (
 // Missions -- забирает золотишко
 type Missions struct {
 	*section.Section
-	bot    types.IBot
-	net    *missionsnet.MissionsNet
-	server types.IServer
+	bot types.IBot
+	net *missionsnet.MissionsNet
 }
 
 // NewMissions -- возвращает новый *Missions
@@ -28,8 +27,7 @@ func NewMissions(bot types.IBot) (*Missions, error) {
 		return nil, fmt.Errorf("NewMissions(): IBot == nil")
 	}
 	sf := &Missions{
-		server: bot.Server(),
-		bot:    bot,
+		bot: bot,
 	}
 
 	return sf, nil
@@ -38,7 +36,7 @@ func NewMissions(bot types.IBot) (*Missions, error) {
 func (sf *Missions) Run() error {
 	var err error
 	{ // Section
-		sf.Section, err = section.NewSection(sf.server, `<title>Миссии</title>`)
+		sf.Section, err = section.NewSection(sf.bot, `<title>Миссии</title>`)
 		if err != nil {
 			return fmt.Errorf("Missions.Run(): in create *Section, err=\n\t%w", err)
 		}
@@ -61,7 +59,7 @@ func (sf *Missions) run() {
 	time.Sleep(time.Second * 15)
 	for { // Время истекло
 		select {
-		case <-sf.server.Done():
+		case <-sf.bot.Ctx().Done():
 			sf.CountDown().Stop()
 			return
 		case <-sf.CountDown().ChanSig():

+ 3 - 3
server/serv_bots/warbot/angar/missions/missionsnet/missionsnet.go

@@ -18,9 +18,9 @@ type MissionsNet struct {
 
 // NewMissionsNet -- возвращает новый *MissionsNet
 func NewMissionsNet(bot types.IBot) (*MissionsNet, error) {
-		if bot == nil {
-			return nil, fmt.Errorf("NewMissionsNet(): IBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewMissionsNet(): IBot == nil")
+	}
 
 	sf := &MissionsNet{
 		SectionNet: sectionnet.NewSectionNet(bot, bot.Angar().Missions(), "http://wartank.ru/missions/"),

+ 0 - 47
server/serv_bots/warbot/tank/basestat/basestat.go

@@ -1,47 +0,0 @@
-package basestat
-
-import (
-	// "log"
-
-	"wartank/pkg/components/counttime"
-	"wartank/pkg/types"
-)
-
-/*
-	Статистика по базе
-*/
-
-// BaseStat -- статистика по базе
-type BaseStat struct {
-	app         types.IServer
-	poligonTime types.ICountTime // Сколько осталось времени работы полигона
-}
-
-// NewBaseStat -- возвращает новый *BaseStat
-func NewBaseStat(app types.IServer) *BaseStat {
-	sf := &BaseStat{
-		app: app,
-	}
-	sf.poligonTime = counttime.NewCountTime(app)
-	go sf.run()
-	return sf
-}
-
-// Главный цикл ожидания
-func (sf *BaseStat) run() {
-	for range sf.poligonTime.ChanSig() {
-
-	}
-}
-
-// PoligonTime -- сколько  осталось времени работы полигона
-func (sf *BaseStat) PoligonTime() types.ICountTime {
-	return sf.poligonTime
-}
-
-// PoligonUpdate -- обновляет время работы полигона
-func (sf *BaseStat) PoligonUpdate(poligonFact string) {
-	if err := sf.poligonTime.Parse(poligonFact); err != nil {
-		// log._rintf("ERRO BaseStat.PoligonUpdate(): при обновлении времени работы полигона\n\tpoligonFact=%q\terr=%v\n", poligonFact, err)
-	}
-}

+ 16 - 0
server/serv_bots/warbot/warbot.go

@@ -2,6 +2,7 @@
 package warbot
 
 import (
+	"context"
 	"fmt"
 	"log"
 
@@ -26,6 +27,8 @@ type WarBot struct {
 	isRun     *safebool.SafeBool
 	isAutoRun *safebool.SafeBool
 	config    *warbot_config.WarBotConfig // Конфиг бота для хранения в базе
+	ctx       context.Context             // Контекст бота
+	fnCancel  func()                      // Функция отменя контекста бота
 }
 
 // NewWarBot -- возвращает новый WarBot
@@ -43,6 +46,7 @@ func NewWarBot(server types.IServer, name string) (*WarBot, error) {
 	if err != nil {
 		return nil, fmt.Errorf("NewWarBot(): in create Tank, err=\n\t%w", err)
 	}
+	ctx, fnCancel := context.WithCancel(server.CtxApp())
 	sf := &WarBot{
 		server:    server,
 		store:     server.Store(),
@@ -51,6 +55,8 @@ func NewWarBot(server types.IServer, name string) (*WarBot, error) {
 		isRun:     safebool.NewSafeBool(),
 		isAutoRun: safebool.NewSafeBool(),
 		config:    &warbot_config.WarBotConfig{},
+		ctx:       ctx,
+		fnCancel:  fnCancel,
 	}
 	strData, err := sf.store.Get("/bots/" + sf.name)
 	if err != nil {
@@ -173,3 +179,13 @@ func (sf *WarBot) saveConfig() {
 		log.Printf("WarBot.saveConfig(): err=\n\t%v\n", err)
 	}
 }
+
+// Ctx -- возвращает контекст бота
+func (sf *WarBot) Ctx() context.Context {
+	return sf.ctx
+}
+
+// CancelBot -- отменяет контекст бота
+func (sf *WarBot) CancelBot() {
+	sf.fnCancel()
+}

+ 3 - 3
server/serv_bots/warbot/warbot_net/warbot_net.go

@@ -28,9 +28,9 @@ type WarBotNet struct {
 // NewWarBotNet -- возвращает новый *NetClient
 func NewWarBotNet(bot types.IBot) (gc *WarBotNet, err error) {
 	fmt.Printf("NewWarBotNet()\n")
-		if bot == nil {
-			return nil, fmt.Errorf("NewWarBotNet(): IBot == nil")
-		}
+	if bot == nil {
+		return nil, fmt.Errorf("NewWarBotNet(): IBot == nil")
+	}
 
 	sf := &WarBotNet{
 		server:     bot.Server(),