|
|
@@ -37,7 +37,6 @@ type Base struct {
|
|
|
bank *bank.Bank
|
|
|
polygon *polygon.Polygon
|
|
|
mine *mine.Mine
|
|
|
- battle types.IBattle
|
|
|
market *market.Market
|
|
|
timeSleep int // Сколько времени спать до опроса базы
|
|
|
block sync.Mutex
|
|
|
@@ -95,35 +94,39 @@ func NewBase(angar types.IAngar) (*Base, error) {
|
|
|
// Запускает базу в обработку
|
|
|
func (sf *Base) Run() error {
|
|
|
log.Printf("Base.Run()\n")
|
|
|
- if err := sf.run(); err != nil {
|
|
|
+ if err := sf.runComponent(); err != nil {
|
|
|
return fmt.Errorf("Base.Run(): run, err=\n\t%w", err)
|
|
|
}
|
|
|
- go func() {
|
|
|
- for {
|
|
|
- select {
|
|
|
- case <-sf.Ctx().Done():
|
|
|
- sf.CountDown().Stop()
|
|
|
- case <-sf.CountDown().ChanSig():
|
|
|
- if err := sf.net.UpdateLst("Base.run()"); err != nil { // Обновить состояние базы
|
|
|
- log.Printf("ERRO Base.Run(): при обновлении базы, err=\n\t%v\n", err)
|
|
|
- }
|
|
|
- sf.checkPolygonForce()
|
|
|
- if err := sf.checkBank(); err != nil { // Проверка режимов банка
|
|
|
- log.Printf("ERRO Base.Run(): при проверке банка, err=\n\t%v\n", err)
|
|
|
- }
|
|
|
- sf.checkArsenal()
|
|
|
- sf.checkMine() // Проверка шахты
|
|
|
- sf.setCountDown()
|
|
|
- time.Sleep(time.Second * time.Duration(sf.timeSleep))
|
|
|
- // sf.CountDown().Set(45)
|
|
|
+ go sf.run()
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// Собственная работа
|
|
|
+func (sf *Base) run() {
|
|
|
+ for {
|
|
|
+ select {
|
|
|
+ case <-sf.Ctx().Done():
|
|
|
+ sf.CountDown().Stop()
|
|
|
+ return
|
|
|
+ case <-sf.CountDown().ChanSig():
|
|
|
+ if err := sf.net.UpdateLst("Base.run()"); err != nil { // Обновить состояние базы
|
|
|
+ log.Printf("ERRO Base.Run(): при обновлении базы, err=\n\t%v\n", err)
|
|
|
}
|
|
|
+ sf.checkPolygonForce() // Проверить усиление полигона
|
|
|
+ if err := sf.checkBank(); err != nil { // Проверка режимов банка
|
|
|
+ log.Printf("ERRO Base.Run(): при проверке банка, err=\n\t%v\n", err)
|
|
|
+ }
|
|
|
+ sf.checkArsenal() // Проверка арсенала
|
|
|
+ sf.checkMine() // Проверка шахты
|
|
|
+ sf.setCountDown() // Установка счётчика времени
|
|
|
+ time.Sleep(time.Second * time.Duration(sf.timeSleep))
|
|
|
+ // sf.CountDown().Set(45)
|
|
|
}
|
|
|
- }()
|
|
|
- return nil
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// Запускает компоненты
|
|
|
-func (sf *Base) run() error {
|
|
|
+func (sf *Base) runComponent() error {
|
|
|
log.Printf("Base.run()\n")
|
|
|
sf.block.Lock()
|
|
|
defer sf.block.Unlock()
|
|
|
@@ -145,6 +148,7 @@ func (sf *Base) run() error {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
+// Выбирает время обновления базы по компонентам
|
|
|
func (sf *Base) setCountDown() {
|
|
|
timeBase := sf.bank.CountDown().Get()
|
|
|
timeCount := timeBase
|
|
|
@@ -163,6 +167,7 @@ func (sf *Base) setCountDown() {
|
|
|
if timeCount > (600) {
|
|
|
sf.timeSleep = 600
|
|
|
}
|
|
|
+ sf.SetCountDown(timeCount)
|
|
|
}
|
|
|
|
|
|
// Arsenal -- возвращает объект арсенала
|
|
|
@@ -187,11 +192,6 @@ func (sf *Base) Mine() types.IMine {
|
|
|
return sf.mine
|
|
|
}
|
|
|
|
|
|
-// Battle -- возвращает объект сражения
|
|
|
-func (sf *Base) Battle() types.IBattle {
|
|
|
- return sf.battle
|
|
|
-}
|
|
|
-
|
|
|
// Market -- возвращает объект рынка
|
|
|
func (sf *Base) Market() types.IMarket {
|
|
|
return sf.market
|