Преглед изворни кода

d02 Добавление отображения статы бота

SVI пре 2 година
родитељ
комит
a3aab5af58
3 измењених фајлова са 49 додато и 3 уклоњено
  1. 1 1
      pkg/types/iangar.go
  2. 45 1
      server/gui/win_main/win_main.go
  3. 3 1
      server/serv_bots/warbot/warbot.go

+ 1 - 1
pkg/types/iangar.go

@@ -34,5 +34,5 @@ type IAngar interface {
 	// Missions -- возвращает объект миссий
 	Missions() IMissions
 	// Make -- создаёт компоненты ангара
-	Make()error
+	Make() error
 }

+ 45 - 1
server/gui/win_main/win_main.go

@@ -5,6 +5,7 @@ import (
 	"fmt"
 	"image/color"
 	"log"
+	"time"
 
 	"fyne.io/fyne/v2"
 	"fyne.io/fyne/v2/canvas"
@@ -28,6 +29,12 @@ type WinMain struct {
 	entPass       *widget.Entry      // Пароль текущего бота
 	checkAutoGame *widget.Check      // Автоматически играть при старте
 	lblFuel       *widget.Label      // Топливо бота
+	lblGold       *widget.Label      // Золото бота
+	lblSilver     *widget.Label      // Серебро
+	lblGlory      *widget.Label      // Количество славы
+	lblSpace      *widget.Label      // Разделитель к базе
+	lblRuda       *widget.Label      // Количество руды
+	lblFerrum     *widget.Label      // Количество железа
 }
 
 // NewWinMain -- возвращает новое главное окно
@@ -60,7 +67,19 @@ func NewWinMain(serv types.IServer) (*WinMain, error) {
 
 	sf.lblFuel = widget.NewLabel("0")
 	itemFuel := widget.NewFormItem("Топливо", sf.lblFuel)
-	frmStat := widget.NewForm(itemFuel)
+	sf.lblGold = widget.NewLabel("0")
+	itemGold := widget.NewFormItem("Золото", sf.lblGold)
+	sf.lblSilver = widget.NewLabel("0")
+	itemSilver := widget.NewFormItem("Серебро", sf.lblSilver)
+	sf.lblGlory = widget.NewLabel("0")
+	itemGlory := widget.NewFormItem("Слава", sf.lblGlory)
+	sf.lblSpace = widget.NewLabel("======")
+	itemSpace := widget.NewFormItem("=========", sf.lblSpace)
+	sf.lblRuda = widget.NewLabel("0")
+	itemRuda := widget.NewFormItem("Руда", sf.lblRuda)
+	sf.lblFerrum = widget.NewLabel("0")
+	itemFerrum := widget.NewFormItem("Железо", sf.lblFerrum)
+	frmStat := widget.NewForm(itemFuel, itemGold, itemSilver, itemGlory, itemSpace, itemRuda, itemFerrum)
 	tabStat := container.NewTabItem("Статистика", frmStat)
 	sf.tabBot = container.NewAppTabs(tabLogin, tabStat)
 
@@ -79,9 +98,34 @@ func NewWinMain(serv types.IServer) (*WinMain, error) {
 	}
 
 	sf.SetContent(boxMain)
+	go sf.showStat()
 	return sf, nil
 }
 
+// Показывает статистику бота
+func (sf *WinMain) showStat() {
+	for {
+		time.Sleep(time.Millisecond * 500)
+		sf.botLogin = sf.entLogin.Text
+		if sf.botLogin == "" {
+			continue
+		}
+		bot := sf.serv.ServBots().Get(sf.botLogin)
+		sf.lblFuel.Text = fmt.Sprint(bot.Angar().Fuel().Get())
+		sf.lblFuel.Refresh()
+		sf.lblGold.Text = fmt.Sprint(bot.Angar().Gold().Get())
+		sf.lblGold.Refresh()
+		sf.lblSilver.Text = fmt.Sprint(bot.Angar().SilverAll().Get())
+		sf.lblSilver.Refresh()
+		sf.lblGlory.Text = fmt.Sprint(bot.Angar().Convoy().Glory().Get())
+		sf.lblGlory.Refresh()
+		sf.lblRuda.Text = fmt.Sprint(bot.Angar().Base().Mine().Ruda().Get())
+		sf.lblRuda.Refresh()
+		sf.lblFerrum.Text = fmt.Sprint(bot.Angar().Base().Mine().Ferrum().Get())
+		sf.lblFerrum.Refresh()
+	}
+}
+
 // Выставляет признак автоматического начала игры при запуске бото-фермы
 func (sf *WinMain) clickAutoGame(isAutoGame bool) {
 	log.Printf("WinMain.clickAutoGame(): login:%q\t isAutoGame=%v\n", sf.entLogin.Text, isAutoGame)

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

@@ -140,6 +140,7 @@ func (sf *WarBot) IsAutoGame() bool {
 
 // SetAutoGame -- устанавливает признак автоматического запуска бота
 func (sf *WarBot) SetAutoGame() {
+	log.Printf("WarBot.SetAutoGame()")
 	sf.isAutoRun.Set()
 	sf.config.IsAutoRun_ = true
 	sf.saveConfig()
@@ -147,6 +148,7 @@ func (sf *WarBot) SetAutoGame() {
 
 // ResetAutoGame -- сбрасывает признак автоматического запуска бота
 func (sf *WarBot) ResetAutoGame() {
+	log.Printf("WarBot.ResetAutoGame()")
 	sf.isAutoRun.Set()
 	sf.config.IsAutoRun_ = false
 	sf.saveConfig()
@@ -154,10 +156,10 @@ func (sf *WarBot) ResetAutoGame() {
 
 // Сохраняет конфиг бота
 func (sf *WarBot) saveConfig() {
+	log.Printf("WarBot.saveConfig()")
 	strConf := sf.config.Marshall()
 	err := sf.store.Put("/bots/"+sf.name, strConf)
 	if err != nil {
 		log.Printf("WarBot.saveConfig(): err=\n\t%v\n", err)
 	}
-	sf.server.CancelApp()
 }