Просмотр исходного кода

d02- Добавление вкладки

SVI 2 лет назад
Родитель
Сommit
517d984b52
1 измененных файлов с 60 добавлено и 27 удалено
  1. 60 27
      server/gui/win_main/win_main.go

+ 60 - 27
server/gui/win_main/win_main.go

@@ -19,30 +19,33 @@ import (
 // WinMain -- главное окно приложения
 type WinMain struct {
 	fyne.Window
-	serv          types.IServer
-	app           fyne.App
-	botLogin      string
-	botPass       string
-	boxLeft       *fyne.Container
-	tabBot        *container.AppTabs // Просмотр параметров бота
-	entLogin      *widget.Label      // Логин текущего бота
-	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      // Количество железа
-	lblSteel      *widget.Label      // Количество стали
-	lblPlumbum    *widget.Label      // Количество свинца
-	frmStatLeft   *widget.Form       // Левая колонка статистики
-	frmStatRight  *widget.Form       // Правая колонка статистики
-	lblAtack      *widget.Label      // Сила атаки
-	lblArmor      *widget.Label      // Броня бота
-	lblFyne       *widget.Label      // Точность бота
-	lblHard       *widget.Label      // Прочность танка
+	serv           types.IServer
+	app            fyne.App
+	botLogin       string
+	botPass        string
+	boxLeft        *fyne.Container
+	tabBot         *container.AppTabs // Просмотр параметров бота
+	entLogin       *widget.Label      // Логин текущего бота
+	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      // Количество железа
+	lblSteel       *widget.Label      // Количество стали
+	lblPlumbum     *widget.Label      // Количество свинца
+	frmStatLeft    *widget.Form       // Левая колонка статистики
+	frmStatRight   *widget.Form       // Правая колонка статистики
+	lblAtack       *widget.Label      // Сила атаки
+	lblArmor       *widget.Label      // Броня бота
+	lblFyne        *widget.Label      // Точность бота
+	lblHard        *widget.Label      // Прочность танка
+	lblPower       *widget.Label      // Всего очков танка
+	lblForce       *widget.Label      // Что усилено
+	lblPolygonTime *widget.Label      // Время до окончания плигона
 }
 
 // NewWinMain -- возвращает новое главное окно
@@ -103,14 +106,28 @@ func NewWinMain(serv types.IServer) (*WinMain, error) {
 		sf.lblFyne = widget.NewLabel("0")
 		itemFyne := widget.NewFormItem("Точность", sf.lblFyne)
 		sf.lblHard = widget.NewLabel("0")
-		itemPower := widget.NewFormItem("Прочность", sf.lblHard)
+		itemHard := widget.NewFormItem("Прочность", sf.lblHard)
+		sf.lblPower = widget.NewLabel("0")
+		itemPower := widget.NewFormItem("Мощь", sf.lblPower)
+		sf.lblForce = widget.NewLabel("None")
+		itemForce := widget.NewFormItem("Усилено", sf.lblForce)
 
-		sf.frmStatRight = widget.NewForm(itemAtack, itemArmor, itemFyne, itemPower, itemSpace)
+		sf.frmStatRight = widget.NewForm(itemAtack, itemArmor, itemFyne, itemHard, itemSpace, itemPower, itemForce)
 	}
 
 	hStat := container.NewHBox(sf.frmStatLeft, sf.frmStatRight)
 	tabStat := container.NewTabItem("Статистика", hStat)
-	sf.tabBot = container.NewAppTabs(tabLogin, tabStat)
+
+	// Вкладка базы
+	itemPolygon := widget.NewFormItem("Полигон", nil)
+	sf.lblPolygonTime = widget.NewLabel("00:00:00")
+	itemPolygonTime := widget.NewFormItem("Время", sf.lblPolygonTime)
+	frmPolygon := widget.NewForm(itemPolygon, itemPolygonTime)
+
+	vBase`
+	` := container.NewVBox(frmPolygon)
+	tabBase := container.NewTabItem("База", vBase)
+	sf.tabBot = container.NewAppTabs(tabLogin, tabStat, tabBase)
 
 	sf.boxLeft = container.NewVBox(text1)
 
@@ -148,6 +165,11 @@ func (sf *WinMain) resetStat() {
 		sf.lblArmor.SetText("0")
 		sf.lblFyne.SetText("0")
 		sf.lblHard.SetText("0")
+		sf.lblPower.SetText("0")
+		sf.lblForce.SetText("None")
+	}
+	{ // Вкладка базы
+		sf.lblPolygonTime.SetText("00:00:00")
 	}
 }
 
@@ -205,6 +227,17 @@ func (sf *WinMain) showStat() {
 			sf.lblFyne.Refresh()
 			sf.lblHard.Text = fmt.Sprint(bot.Tank().TankStat().Hard().Get())
 			sf.lblHard.Refresh()
+			sf.lblPower.Text = fmt.Sprint(bot.Tank().TankStat().Power().Get())
+			sf.lblPower.Refresh()
+			strForce := fmt.Sprintf("%v (+%v)", bot.Tank().TankStat().Force().Name(), bot.Tank().TankStat().Force().Get())
+			sf.lblForce.SetText(strForce)
+		}
+		{ // Вкладка базы
+			if bot.Angar().Base().Polygon() == nil {
+				continue
+			}
+			polyTime := bot.Angar().Base().Polygon().CountDown().String()
+			sf.lblPolygonTime.SetText(polyTime)
 		}
 	}
 }