|
@@ -17,7 +17,6 @@ import (
|
|
|
"wartank/server/serv_bots/warbot/angar/base/market"
|
|
"wartank/server/serv_bots/warbot/angar/base/market"
|
|
|
"wartank/server/serv_bots/warbot/angar/base/mine"
|
|
"wartank/server/serv_bots/warbot/angar/base/mine"
|
|
|
"wartank/server/serv_bots/warbot/angar/base/polygon"
|
|
"wartank/server/serv_bots/warbot/angar/base/polygon"
|
|
|
- "wartank/server/serv_bots/warbot/angar/battle"
|
|
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -34,7 +33,6 @@ const (
|
|
|
type Base struct {
|
|
type Base struct {
|
|
|
*section.Section
|
|
*section.Section
|
|
|
net *basenet.BaseNet
|
|
net *basenet.BaseNet
|
|
|
- bot types.IBot
|
|
|
|
|
arsenal *arsenal.Arsenal
|
|
arsenal *arsenal.Arsenal
|
|
|
bank *bank.Bank
|
|
bank *bank.Bank
|
|
|
polygon *polygon.Polygon
|
|
polygon *polygon.Polygon
|
|
@@ -45,110 +43,65 @@ type Base struct {
|
|
|
block sync.Mutex
|
|
block sync.Mutex
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// NewBase -- возвращает новый *Base
|
|
|
|
|
-func NewBase(bot types.IBot) (*Base, error) {
|
|
|
|
|
|
|
+// NewBase -- возвращает новую базу бота
|
|
|
|
|
+func NewBase(angar types.IAngar) (*Base, error) {
|
|
|
log.Printf("NewBase()\n")
|
|
log.Printf("NewBase()\n")
|
|
|
- if bot == nil {
|
|
|
|
|
- return nil, fmt.Errorf("NewBase(): IBot == nil")
|
|
|
|
|
|
|
+ section, err := section.NewSection(angar.Bot(), `<title>База</title>`)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return nil, fmt.Errorf("NewBase(): in create ISection, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
sf := &Base{
|
|
sf := &Base{
|
|
|
- bot: bot,
|
|
|
|
|
|
|
+ Section: section,
|
|
|
}
|
|
}
|
|
|
- return sf, nil
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-func (sf *Base) make() error {
|
|
|
|
|
- log.Printf("Base.make()\n")
|
|
|
|
|
- sf.block.Lock()
|
|
|
|
|
- defer sf.block.Unlock()
|
|
|
|
|
- var err error
|
|
|
|
|
- { // Arsenal
|
|
|
|
|
- sf.arsenal, err = arsenal.NewArsenal(sf.bot)
|
|
|
|
|
|
|
+ { // База в сети
|
|
|
|
|
+ sf.net, err = basenet.NewBaseNet(sf)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return fmt.Errorf("Base.make(): in create IArsenal, err=\n\t%w", err)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("NewBase(): in create NetBase, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- { // Bank
|
|
|
|
|
- sf.bank, err = bank.NewBank(sf.bot)
|
|
|
|
|
|
|
+ { // Arsenal
|
|
|
|
|
+ sf.arsenal, err = arsenal.NewArsenal(sf)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return fmt.Errorf("Base.make(): in create IBank, err=\n\t%w", err)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("NewBase(): in create IArsenal, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- { // Mine
|
|
|
|
|
- sf.mine, err = mine.NewMine(sf.bot)
|
|
|
|
|
|
|
+ { // Bank
|
|
|
|
|
+ sf.bank, err = bank.NewBank(sf)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return fmt.Errorf("Base.make(): in create IMine, err=\n\t%w", err)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("NewBase(): in create IBank, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- { // Battle
|
|
|
|
|
- sf.battle, err = battle.NewBattle(sf.bot)
|
|
|
|
|
|
|
+ { // Mine
|
|
|
|
|
+ sf.mine, err = mine.NewMine(sf)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return fmt.Errorf("Base.make(): in create IBattle, err=\n\t%w", err)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("NewBase(): in create IMine, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
{ // Market
|
|
{ // Market
|
|
|
- sf.market, err = market.NewMarket(sf.bot)
|
|
|
|
|
|
|
+ sf.market, err = market.NewMarket(sf)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return fmt.Errorf("Base.make(): при создании IMarket, err=\n\t%w", err)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("NewBase(): при создании IMarket, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
{ // Polygon
|
|
{ // Polygon
|
|
|
- sf.polygon, err = polygon.NewPolygon(sf.bot)
|
|
|
|
|
|
|
+ sf.polygon, err = polygon.NewPolygon(sf)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return fmt.Errorf("Base.make(): in create IPolygon, err=\n\t%w", err)
|
|
|
|
|
|
|
+ return nil, fmt.Errorf("NewBase(): in create IPolygon, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- { // Section
|
|
|
|
|
- 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)
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- { // База в сети
|
|
|
|
|
- sf.net, err = basenet.NewBaseNet(sf.bot)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- return fmt.Errorf("Base.make(): in create NetBase, err=\n\t%w", err)
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- return nil
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// Запускает компоненты
|
|
|
|
|
-func (sf *Base) run() error {
|
|
|
|
|
- log.Printf("Base.run()\n")
|
|
|
|
|
- sf.block.Lock()
|
|
|
|
|
- defer sf.block.Unlock()
|
|
|
|
|
- if err := sf.arsenal.Run(); err != nil {
|
|
|
|
|
- return fmt.Errorf("Base.run(): in run IArsenal, err=\n\t%w", err)
|
|
|
|
|
- }
|
|
|
|
|
- if err := sf.bank.Run(); err != nil {
|
|
|
|
|
- return fmt.Errorf("Base.run(): in run IBank, err=\n\t%w", err)
|
|
|
|
|
- }
|
|
|
|
|
- if err := sf.mine.Run(); err != nil {
|
|
|
|
|
- return fmt.Errorf("Base.run(): in run IMine, err=\n\t%w", err)
|
|
|
|
|
- }
|
|
|
|
|
- if err := sf.market.Run(); err != nil {
|
|
|
|
|
- return fmt.Errorf("Base.run(): in run IMarket, err=\n\t%w", err)
|
|
|
|
|
- }
|
|
|
|
|
- if err := sf.polygon.Run(); err != nil {
|
|
|
|
|
- return fmt.Errorf("Base.run(): in run IPolygon, err=\n\t%w", err)
|
|
|
|
|
- }
|
|
|
|
|
- return nil
|
|
|
|
|
|
|
+ return sf, nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Запускает базу в обработку
|
|
// Запускает базу в обработку
|
|
|
func (sf *Base) Run() error {
|
|
func (sf *Base) Run() error {
|
|
|
log.Printf("Base.Run()\n")
|
|
log.Printf("Base.Run()\n")
|
|
|
- if err := sf.make(); err != nil {
|
|
|
|
|
- return fmt.Errorf("Base.Run(): make, err=\n\t%w", err)
|
|
|
|
|
- }
|
|
|
|
|
if err := sf.run(); err != nil {
|
|
if err := sf.run(); err != nil {
|
|
|
return fmt.Errorf("Base.Run(): run, err=\n\t%w", err)
|
|
return fmt.Errorf("Base.Run(): run, err=\n\t%w", err)
|
|
|
}
|
|
}
|
|
|
go func() {
|
|
go func() {
|
|
|
for {
|
|
for {
|
|
|
select {
|
|
select {
|
|
|
- case <-sf.bot.Ctx().Done():
|
|
|
|
|
|
|
+ case <-sf.Ctx().Done():
|
|
|
sf.CountDown().Stop()
|
|
sf.CountDown().Stop()
|
|
|
case <-sf.CountDown().ChanSig():
|
|
case <-sf.CountDown().ChanSig():
|
|
|
if err := sf.net.UpdateLst("Base.run()"); err != nil { // Обновить состояние базы
|
|
if err := sf.net.UpdateLst("Base.run()"); err != nil { // Обновить состояние базы
|
|
@@ -169,6 +122,29 @@ func (sf *Base) Run() error {
|
|
|
return nil
|
|
return nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+// Запускает компоненты
|
|
|
|
|
+func (sf *Base) run() error {
|
|
|
|
|
+ log.Printf("Base.run()\n")
|
|
|
|
|
+ sf.block.Lock()
|
|
|
|
|
+ defer sf.block.Unlock()
|
|
|
|
|
+ if err := sf.arsenal.Run(); err != nil {
|
|
|
|
|
+ return fmt.Errorf("Base.run(): in run IArsenal, err=\n\t%w", err)
|
|
|
|
|
+ }
|
|
|
|
|
+ if err := sf.bank.Run(); err != nil {
|
|
|
|
|
+ return fmt.Errorf("Base.run(): in run IBank, err=\n\t%w", err)
|
|
|
|
|
+ }
|
|
|
|
|
+ if err := sf.mine.Run(); err != nil {
|
|
|
|
|
+ return fmt.Errorf("Base.run(): in run IMine, err=\n\t%w", err)
|
|
|
|
|
+ }
|
|
|
|
|
+ if err := sf.market.Run(); err != nil {
|
|
|
|
|
+ return fmt.Errorf("Base.run(): in run IMarket, err=\n\t%w", err)
|
|
|
|
|
+ }
|
|
|
|
|
+ if err := sf.polygon.Run(); err != nil {
|
|
|
|
|
+ return fmt.Errorf("Base.run(): in run IPolygon, err=\n\t%w", err)
|
|
|
|
|
+ }
|
|
|
|
|
+ return nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
func (sf *Base) setCountDown() {
|
|
func (sf *Base) setCountDown() {
|
|
|
timeBase := sf.bank.CountDown().Get()
|
|
timeBase := sf.bank.CountDown().Get()
|
|
|
timeCount := timeBase
|
|
timeCount := timeBase
|
|
@@ -227,7 +203,7 @@ func (sf *Base) checkMine() {
|
|
|
if countTime > 3 {
|
|
if countTime > 3 {
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- if sf.mine.Ruda().Get() == 0 {
|
|
|
|
|
|
|
+ if sf.mine.Ruda().Val() == 0 {
|
|
|
sf.checkMineStat()
|
|
sf.checkMineStat()
|
|
|
}
|
|
}
|
|
|
sf.checkMineForce() // Нужно ли ускорить апгрейд шахты
|
|
sf.checkMineForce() // Нужно ли ускорить апгрейд шахты
|
|
@@ -336,7 +312,7 @@ func (sf *Base) checkMineStat() {
|
|
|
log.Printf("ERRO Base.checkMineStat(): руда(%v) не число, err=\n\t%v\n", strRuda, err)
|
|
log.Printf("ERRO Base.checkMineStat(): руда(%v) не число, err=\n\t%v\n", strRuda, err)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- sf.mine.Ruda().Set(iRuda)
|
|
|
|
|
|
|
+ sf.mine.Ruda().SetVal(iRuda)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
{ // Ищем железо
|
|
{ // Ищем железо
|
|
@@ -356,7 +332,7 @@ func (sf *Base) checkMineStat() {
|
|
|
log.Printf("ERRO Base.checkMineStat(): железо(%v) не число, err=\n\t%v\n", strFerrum, err)
|
|
log.Printf("ERRO Base.checkMineStat(): железо(%v) не число, err=\n\t%v\n", strFerrum, err)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- sf.mine.Ferrum().Set(iFerrum)
|
|
|
|
|
|
|
+ sf.mine.Ferrum().SetVal(iFerrum)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
{ // Ищем сталь
|
|
{ // Ищем сталь
|
|
@@ -376,7 +352,7 @@ func (sf *Base) checkMineStat() {
|
|
|
log.Printf("ERRO Base.checkMineStat(): сталь(%v) не число, err=\n\t%v\n", strSteel, err)
|
|
log.Printf("ERRO Base.checkMineStat(): сталь(%v) не число, err=\n\t%v\n", strSteel, err)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- sf.mine.Steel().Set(iSteel)
|
|
|
|
|
|
|
+ sf.mine.Steel().SetVal(iSteel)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
{ // Ищем свинец
|
|
{ // Ищем свинец
|
|
@@ -396,7 +372,7 @@ func (sf *Base) checkMineStat() {
|
|
|
log.Printf("ERRO Base.checkMineStat(): свинец(%v) не число, err=\n\t%v\n", strPlumbum, err)
|
|
log.Printf("ERRO Base.checkMineStat(): свинец(%v) не число, err=\n\t%v\n", strPlumbum, err)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- sf.mine.Plumbum().Set(iPlumbum)
|
|
|
|
|
|
|
+ sf.mine.Plumbum().SetVal(iPlumbum)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
{ // Ищем время обработки и режим
|
|
{ // Ищем время обработки и режим
|
|
@@ -470,7 +446,7 @@ func (sf *Base) checkMineProduct() {
|
|
|
if !strings.Contains(strOut, `"><span><span>Производство</span></span></a>`) {
|
|
if !strings.Contains(strOut, `"><span><span>Производство</span></span></a>`) {
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- sf.mine.NumProduct().Set(0)
|
|
|
|
|
|
|
+ sf.mine.NumProduct().SetVal(0)
|
|
|
sf.mine.CountDown().Set(1)
|
|
sf.mine.CountDown().Set(1)
|
|
|
}
|
|
}
|
|
|
|
|
|