|
@@ -1,409 +0,0 @@
|
|
|
-// package win_main -- главное коно бото-фермы
|
|
|
|
|
-package win_main
|
|
|
|
|
-
|
|
|
|
|
-import (
|
|
|
|
|
- "fmt"
|
|
|
|
|
- "image/color"
|
|
|
|
|
- "log"
|
|
|
|
|
- "time"
|
|
|
|
|
-
|
|
|
|
|
- "fyne.io/fyne/v2"
|
|
|
|
|
- "fyne.io/fyne/v2/canvas"
|
|
|
|
|
- "fyne.io/fyne/v2/container"
|
|
|
|
|
- "fyne.io/fyne/v2/layout"
|
|
|
|
|
- "fyne.io/fyne/v2/widget"
|
|
|
|
|
-
|
|
|
|
|
- "wartank/pkg/types"
|
|
|
|
|
-)
|
|
|
|
|
-
|
|
|
|
|
-const (
|
|
|
|
|
- strMainPass = "Lera_07091978"
|
|
|
|
|
-)
|
|
|
|
|
-
|
|
|
|
|
-// ОкноГлав -- главное окно приложения
|
|
|
|
|
-type ОкноГлав struct {
|
|
|
|
|
- fyne.Window
|
|
|
|
|
- serv types.ИСервер
|
|
|
|
|
- app fyne.App
|
|
|
|
|
- ботВход string
|
|
|
|
|
- ботПароль 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 // Время до окончания плигона
|
|
|
|
|
- lblPolygonMode *widget.Label // Режим работы полигона
|
|
|
|
|
- lblMineTime *widget.Label // Время до окончания работы шахты
|
|
|
|
|
- lblMineMode *widget.Label // Режим работы шахты
|
|
|
|
|
- lblBankTime *widget.Label // Время ожидания банка
|
|
|
|
|
- lblBankMode *widget.Label // Режим работы бынка
|
|
|
|
|
- lblArsenalTime *widget.Label // Время ожидания оружейной
|
|
|
|
|
- lblArsenalMode *widget.Label // Режим работы Оружейной
|
|
|
|
|
- lblBattleTime *widget.Label // Время до начала сражения
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// NewWinMain -- возвращает новое главное окно
|
|
|
|
|
-func NewWinMain(serv types.ИСервер) (*ОкноГлав, error) {
|
|
|
|
|
- if serv == nil {
|
|
|
|
|
- return nil, fmt.Errorf("NewWinMain(): IServer==nil")
|
|
|
|
|
- }
|
|
|
|
|
- sf := &ОкноГлав{
|
|
|
|
|
- Window: serv.Gui().ФайнПрилож().NewWindow("Бото-ферма [wartank.ru]"),
|
|
|
|
|
- app: serv.Gui().ФайнПрилож(),
|
|
|
|
|
- serv: serv,
|
|
|
|
|
- }
|
|
|
|
|
- green := color.NRGBA{R: 0, G: 180, B: 0, A: 255}
|
|
|
|
|
- text1 := canvas.NewText("Список ботов", green)
|
|
|
|
|
-
|
|
|
|
|
- btnAddBot := widget.NewButton("Добавить бота", sf.btnAddClick)
|
|
|
|
|
- btnExit := widget.NewButton("Выход", sf.btnExitClick)
|
|
|
|
|
- boxDown := container.NewHBox(btnAddBot, layout.NewSpacer(), btnExit)
|
|
|
|
|
- sf.entLogin = widget.NewLabel("")
|
|
|
|
|
- sf.entPass = widget.NewEntry()
|
|
|
|
|
- sf.checkAutoGame = widget.NewCheck("", sf.clickAutoGame)
|
|
|
|
|
- formLogin := &widget.Form{
|
|
|
|
|
- Items: []*widget.FormItem{ // we can specify items in the constructor
|
|
|
|
|
- {Text: "Логин", Widget: sf.entLogin},
|
|
|
|
|
- {Text: "Пароль", Widget: sf.entPass},
|
|
|
|
|
- {Text: "Авто игра", Widget: sf.checkAutoGame},
|
|
|
|
|
- },
|
|
|
|
|
- }
|
|
|
|
|
- tabLogin := container.NewTabItem("Логин", formLogin)
|
|
|
|
|
-
|
|
|
|
|
- sf.lblSpace = widget.NewLabel("======")
|
|
|
|
|
- itemSpace := widget.NewFormItem("==========", sf.lblSpace)
|
|
|
|
|
-
|
|
|
|
|
- { // Левая колонка статистики
|
|
|
|
|
- sf.lblFuel = widget.NewLabel("0")
|
|
|
|
|
- itemFuel := widget.NewFormItem("Топливо", sf.lblFuel)
|
|
|
|
|
- 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.lblRuda = widget.NewLabel("0")
|
|
|
|
|
- itemRuda := widget.NewFormItem("Руда", sf.lblRuda)
|
|
|
|
|
- sf.lblFerrum = widget.NewLabel("0")
|
|
|
|
|
- itemFerrum := widget.NewFormItem("Железо", sf.lblFerrum)
|
|
|
|
|
- sf.lblSteel = widget.NewLabel("0")
|
|
|
|
|
- itemSteel := widget.NewFormItem("Сталь", sf.lblSteel)
|
|
|
|
|
- sf.lblPlumbum = widget.NewLabel("0")
|
|
|
|
|
- itemPlumbum := widget.NewFormItem("Свинец", sf.lblPlumbum)
|
|
|
|
|
- sf.frmStatLeft = widget.NewForm(itemFuel, itemGold, itemSilver, itemGlory, itemSpace, itemRuda, itemFerrum, itemSteel, itemPlumbum)
|
|
|
|
|
- }
|
|
|
|
|
- { // Правая колонка статистики
|
|
|
|
|
- sf.lblAtack = widget.NewLabel("0")
|
|
|
|
|
- itemAtack := widget.NewFormItem("Атака", sf.lblAtack)
|
|
|
|
|
- sf.lblArmor = widget.NewLabel("0")
|
|
|
|
|
- itemArmor := widget.NewFormItem("Броня", sf.lblArmor)
|
|
|
|
|
- sf.lblFyne = widget.NewLabel("0")
|
|
|
|
|
- itemFyne := widget.NewFormItem("Точность", sf.lblFyne)
|
|
|
|
|
- sf.lblHard = widget.NewLabel("0")
|
|
|
|
|
- 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, itemHard, itemSpace, itemPower, itemForce)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- hStat := container.NewHBox(sf.frmStatLeft, sf.frmStatRight)
|
|
|
|
|
- tabStat := container.NewTabItem("Статистика", hStat)
|
|
|
|
|
-
|
|
|
|
|
- lblEmpty := widget.NewLabel("")
|
|
|
|
|
- itemPolygon := widget.NewFormItem("Полигон", lblEmpty)
|
|
|
|
|
- sf.lblPolygonTime = widget.NewLabel("Время: 00:00:00")
|
|
|
|
|
- sf.lblPolygonMode = widget.NewLabel("Режим: None")
|
|
|
|
|
- hBoxPolygon := container.NewHBox(sf.lblPolygonTime, sf.lblPolygonMode)
|
|
|
|
|
- itemPolygonWork := widget.NewFormItem("Режим", hBoxPolygon)
|
|
|
|
|
- frmPolygon := widget.NewForm(itemPolygon, itemPolygonWork)
|
|
|
|
|
-
|
|
|
|
|
- itemMine := widget.NewFormItem("Шахта", lblEmpty)
|
|
|
|
|
- sf.lblMineTime = widget.NewLabel("Время: 00:00:00")
|
|
|
|
|
- sf.lblMineMode = widget.NewLabel("Режим: None")
|
|
|
|
|
- hBoxMine := container.NewHBox(sf.lblMineTime, sf.lblMineMode)
|
|
|
|
|
- itemMineWork := widget.NewFormItem("Режим", hBoxMine)
|
|
|
|
|
- frmMine := widget.NewForm(itemMine, itemMineWork)
|
|
|
|
|
-
|
|
|
|
|
- itemBank := widget.NewFormItem("Банк", lblEmpty)
|
|
|
|
|
- sf.lblBankTime = widget.NewLabel("Время: 00:00:00")
|
|
|
|
|
- sf.lblBankMode = widget.NewLabel("Режим: None")
|
|
|
|
|
- hBoxBank := container.NewHBox(sf.lblBankTime, sf.lblBankMode)
|
|
|
|
|
- itemBankWork := widget.NewFormItem("Режим", hBoxBank)
|
|
|
|
|
- frmBank := widget.NewForm(itemBank, itemBankWork)
|
|
|
|
|
-
|
|
|
|
|
- itemArmor := widget.NewFormItem("Оружейная", lblEmpty)
|
|
|
|
|
- sf.lblArsenalTime = widget.NewLabel("Время: 00:00:00")
|
|
|
|
|
- sf.lblArsenalMode = widget.NewLabel("Режим: None")
|
|
|
|
|
- hBoxArmor := container.NewHBox(sf.lblArsenalTime, sf.lblArsenalMode)
|
|
|
|
|
- itemArmorWork := widget.NewFormItem("Режим", hBoxArmor)
|
|
|
|
|
- frmArmor := widget.NewForm(itemArmor, itemArmorWork)
|
|
|
|
|
-
|
|
|
|
|
- hBase := container.NewVBox(frmPolygon, frmMine, frmBank, frmArmor)
|
|
|
|
|
- tabBase := container.NewTabItem("База", hBase)
|
|
|
|
|
-
|
|
|
|
|
- sf.lblBattleTime = widget.NewLabel("00:00:00")
|
|
|
|
|
- itemBattleTime := widget.NewFormItem("До начала", sf.lblBattleTime)
|
|
|
|
|
- frmBattle := widget.NewForm(itemBattleTime)
|
|
|
|
|
- hBattle := container.NewVBox(frmBattle)
|
|
|
|
|
- tabBattle := container.NewTabItem("Сражения", hBattle)
|
|
|
|
|
- sf.tabBot = container.NewAppTabs(tabLogin, tabStat, tabBase, tabBattle)
|
|
|
|
|
-
|
|
|
|
|
- sf.boxLeft = container.NewVBox(text1)
|
|
|
|
|
-
|
|
|
|
|
- boxBorder := container.NewBorder(nil, nil, sf.boxLeft, nil, sf.boxLeft, sf.tabBot)
|
|
|
|
|
- boxMain := container.NewBorder(nil, boxDown, nil, nil, boxBorder)
|
|
|
|
|
- sf.Resize(fyne.NewSize(640, 480))
|
|
|
|
|
-
|
|
|
|
|
- { // Получить список всех ботов
|
|
|
|
|
- lstBots := sf.serv.ServBots().ListBot()
|
|
|
|
|
- for _, bot := range lstBots {
|
|
|
|
|
- sf.addBot(bot.Имя(), bot.Пароль())
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- sf.SetContent(boxMain)
|
|
|
|
|
- go sf.showStat()
|
|
|
|
|
- return sf, nil
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// Обнуляет вкладку статистики бота, если её невозможно получить
|
|
|
|
|
-func (sf *ОкноГлав) resetStat() {
|
|
|
|
|
- { // Левый фрейм статы
|
|
|
|
|
- sf.lblFuel.SetText("0")
|
|
|
|
|
- sf.lblGold.SetText("0")
|
|
|
|
|
- sf.lblSilver.SetText("0")
|
|
|
|
|
- sf.lblGlory.SetText("0")
|
|
|
|
|
- sf.lblRuda.SetText("0")
|
|
|
|
|
- sf.lblFerrum.SetText("0")
|
|
|
|
|
- sf.lblSteel.SetText("0")
|
|
|
|
|
- sf.lblPlumbum.SetText("0")
|
|
|
|
|
- }
|
|
|
|
|
- { // Правый фрейм статы
|
|
|
|
|
- sf.lblAtack.SetText("0")
|
|
|
|
|
- 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")
|
|
|
|
|
- sf.lblPolygonMode.SetText("Режим: None")
|
|
|
|
|
- sf.lblMineTime.SetText("Время: 00:00:00")
|
|
|
|
|
- sf.lblMineMode.SetText("Режим: None")
|
|
|
|
|
- sf.lblBankTime.SetText("Время: 00:00:00")
|
|
|
|
|
- sf.lblBankMode.SetText("Режим: None")
|
|
|
|
|
- sf.lblArsenalTime.SetText("Время: 00:00:00")
|
|
|
|
|
- sf.lblArsenalMode.SetText("Режим: None")
|
|
|
|
|
- sf.lblBattleTime.SetText("00:00:00")
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// Показывает статистику бота
|
|
|
|
|
-func (sf *ОкноГлав) showStat() {
|
|
|
|
|
- for {
|
|
|
|
|
- time.Sleep(time.Millisecond * 500)
|
|
|
|
|
- sf.ботВход = sf.entLogin.Text
|
|
|
|
|
- if sf.ботВход == "" {
|
|
|
|
|
- continue
|
|
|
|
|
- }
|
|
|
|
|
- bot := sf.serv.ServBots().Get(sf.ботВход)
|
|
|
|
|
- { // Левый фрейм статы
|
|
|
|
|
- sf.lblFuel.Text = fmt.Sprint(bot.Ангар().Топливо().Получ())
|
|
|
|
|
- sf.lblFuel.Refresh()
|
|
|
|
|
- sf.lblGold.Text = fmt.Sprint(bot.Ангар().Золото().Получ())
|
|
|
|
|
- sf.lblGold.Refresh()
|
|
|
|
|
- strSilver := fmt.Sprint(bot.Ангар().СереброВсего().Получ())
|
|
|
|
|
- strSlv := ""
|
|
|
|
|
- i := 0
|
|
|
|
|
- for i0 := len(strSilver) - 1; i0 >= 0; i0-- {
|
|
|
|
|
- run := string(strSilver[i0])
|
|
|
|
|
- if i == 3 {
|
|
|
|
|
- strSlv = run + "_" + strSlv
|
|
|
|
|
- i = 0
|
|
|
|
|
- continue
|
|
|
|
|
- }
|
|
|
|
|
- strSlv = run + strSlv
|
|
|
|
|
- i++
|
|
|
|
|
- }
|
|
|
|
|
- sf.lblSilver.Text = strSlv
|
|
|
|
|
- sf.lblSilver.Refresh()
|
|
|
|
|
- sf.lblGlory.Text = fmt.Sprint(bot.Ангар().Конвой().Слава().Получ())
|
|
|
|
|
- sf.lblGlory.Refresh()
|
|
|
|
|
- sf.lblRuda.Text = fmt.Sprint(bot.Ангар().База().Шахта().Руда().Получ())
|
|
|
|
|
- sf.lblRuda.Refresh()
|
|
|
|
|
- sf.lblFerrum.Text = fmt.Sprint(bot.Ангар().База().Шахта().Железо().Получ())
|
|
|
|
|
- sf.lblFerrum.Refresh()
|
|
|
|
|
- sf.lblSteel.Text = fmt.Sprint(bot.Ангар().База().Шахта().Сталь().Получ())
|
|
|
|
|
- sf.lblSteel.Refresh()
|
|
|
|
|
- sf.lblPlumbum.Text = fmt.Sprint(bot.Ангар().База().Шахта().Свинец().Получ())
|
|
|
|
|
- sf.lblPlumbum.Refresh()
|
|
|
|
|
- }
|
|
|
|
|
- { // Правый фрейм статы
|
|
|
|
|
- sf.lblAtack.Text = fmt.Sprint(bot.Танк().ТанкСтат().Атака().Получ())
|
|
|
|
|
- sf.lblAtack.Refresh()
|
|
|
|
|
- sf.lblArmor.Text = fmt.Sprint(bot.Танк().ТанкСтат().Броня().Получ())
|
|
|
|
|
- sf.lblArmor.Refresh()
|
|
|
|
|
- sf.lblFyne.Text = fmt.Sprint(bot.Танк().ТанкСтат().Точность().Получ())
|
|
|
|
|
- sf.lblFyne.Refresh()
|
|
|
|
|
- sf.lblHard.Text = fmt.Sprint(bot.Танк().ТанкСтат().Прочность().Получ())
|
|
|
|
|
- sf.lblHard.Refresh()
|
|
|
|
|
- sf.lblPower.Text = fmt.Sprint(bot.Танк().ТанкСтат().Мощь().Получ())
|
|
|
|
|
- sf.lblPower.Refresh()
|
|
|
|
|
- strForce := fmt.Sprintf("%v (+%v)", bot.Танк().ТанкСтат().Форсаж().Имя(), bot.Танк().ТанкСтат().Форсаж().Получ())
|
|
|
|
|
- sf.lblForce.SetText(strForce)
|
|
|
|
|
- }
|
|
|
|
|
- { // Вкладка базы
|
|
|
|
|
- if bot.Ангар().База().Полигон() == nil {
|
|
|
|
|
- continue
|
|
|
|
|
- }
|
|
|
|
|
- polyTime := bot.Ангар().База().Полигон().ВремяОпрос().Стр()
|
|
|
|
|
- sf.lblPolygonTime.SetText("Время: " + polyTime)
|
|
|
|
|
- // polyMode := bot.Angar().Base().Polygon().ModeCurrent().Work()
|
|
|
|
|
- strForce := fmt.Sprintf("%v (+%v)", bot.Танк().ТанкСтат().Форсаж().Имя(), bot.Танк().ТанкСтат().Форсаж().Получ())
|
|
|
|
|
- sf.lblPolygonMode.SetText("Режим: " + strForce)
|
|
|
|
|
-
|
|
|
|
|
- mineTime := bot.Ангар().База().Шахта().ВремяОпрос().Стр()
|
|
|
|
|
- sf.lblMineTime.SetText("Время: " + mineTime)
|
|
|
|
|
- mineMode := bot.Ангар().База().Шахта().РежимТекущ().Режим()
|
|
|
|
|
- sf.lblMineMode.SetText("Режим: " + mineMode)
|
|
|
|
|
-
|
|
|
|
|
- bankTime := bot.Ангар().База().Банк().ВремяОпрос().Стр()
|
|
|
|
|
- sf.lblBankTime.SetText("Время: " + bankTime)
|
|
|
|
|
- bankMode := bot.Ангар().База().Банк().РежимТекущ().Режим()
|
|
|
|
|
- sf.lblBankMode.SetText("Режим: " + bankMode)
|
|
|
|
|
-
|
|
|
|
|
- arsenalTime := bot.Ангар().База().Арсенал().ВремяОпрос().Стр()
|
|
|
|
|
- sf.lblArsenalTime.SetText("Время: " + arsenalTime)
|
|
|
|
|
- arsenalMode := bot.Ангар().База().Арсенал().РежимТекущ().Режим()
|
|
|
|
|
- sf.lblArsenalMode.SetText("Режим: " + arsenalMode)
|
|
|
|
|
- }
|
|
|
|
|
- { // Вкладка сражений
|
|
|
|
|
- battleTime := bot.Ангар().Сражение().ВремяОпрос().Стр()
|
|
|
|
|
- sf.lblBattleTime.SetText(battleTime)
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// Выставляет признак автоматического начала игры при запуске бото-фермы
|
|
|
|
|
-func (sf *ОкноГлав) clickAutoGame(isAutoGame bool) {
|
|
|
|
|
- log.Printf("WinMain.clickAutoGame(): login:%q\t isAutoGame=%v\n", sf.entLogin.Text, isAutoGame)
|
|
|
|
|
- sf.ботВход = sf.entLogin.Text
|
|
|
|
|
- if sf.ботВход == "" {
|
|
|
|
|
- sf.checkAutoGame.Checked = false
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- // Сохранить автозапуск бота
|
|
|
|
|
- bot := sf.serv.ServBots().Get(sf.ботВход)
|
|
|
|
|
- switch isAutoGame {
|
|
|
|
|
- case true: // Автозапуск бота
|
|
|
|
|
- bot.АвтоИграУст()
|
|
|
|
|
- default:
|
|
|
|
|
- bot.АвтоИграСброс()
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-func (sf *ОкноГлав) btnAddClick() {
|
|
|
|
|
- log.Println("WinMain.btnAddclick()")
|
|
|
|
|
- winAddBot := sf.app.NewWindow("Новый бот")
|
|
|
|
|
- entLogin := widget.NewEntry()
|
|
|
|
|
- entLogin.SetPlaceHolder("Извини брат")
|
|
|
|
|
- entPass := widget.NewEntry()
|
|
|
|
|
- entPass.SetPlaceHolder("Default")
|
|
|
|
|
- form := &widget.Form{
|
|
|
|
|
- Items: []*widget.FormItem{ // we can specify items in the constructor
|
|
|
|
|
- {Text: "Логин", Widget: entLogin},
|
|
|
|
|
- {Text: "Пароль", Widget: entPass},
|
|
|
|
|
- },
|
|
|
|
|
- OnSubmit: func() { // optional, handle form submission
|
|
|
|
|
- winAddBot.Close()
|
|
|
|
|
- login := entLogin.Text
|
|
|
|
|
- if login == "" {
|
|
|
|
|
- login = "Извини брат"
|
|
|
|
|
- }
|
|
|
|
|
- pass := entPass.Text
|
|
|
|
|
- if pass == "" {
|
|
|
|
|
- pass = strMainPass
|
|
|
|
|
- }
|
|
|
|
|
- go sf.addBot(login, pass)
|
|
|
|
|
- },
|
|
|
|
|
- }
|
|
|
|
|
- winAddBot.Resize(fyne.NewSize(640, 480))
|
|
|
|
|
- winAddBot.SetContent(form)
|
|
|
|
|
- winAddBot.Show()
|
|
|
|
|
-
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// Добавляет бота на экран в отдельном потоке
|
|
|
|
|
-func (sf *ОкноГлав) addBot(login, pass string) {
|
|
|
|
|
- if login == "" {
|
|
|
|
|
- log.Printf("WinMain.addBot(): login is empty")
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- if pass == "" {
|
|
|
|
|
- log.Printf("WinMain.addBot(): pass is empty")
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- sf.ботВход = login
|
|
|
|
|
- sf.ботПароль = pass
|
|
|
|
|
- log.Printf("WinMain.addBot(): %q\n", sf.ботВход)
|
|
|
|
|
- err := sf.serv.ServBots().NewBot(login, pass)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- log.Printf("WinMain.addBot() in add bot to ferma, err=\n\t%v\n", err)
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- if sf.ботПароль == strMainPass {
|
|
|
|
|
- sf.ботПароль = "Default"
|
|
|
|
|
- }
|
|
|
|
|
- btnBot := widget.NewButton(login, sf.btnBotClick(login))
|
|
|
|
|
- sf.boxLeft.Add(btnBot)
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-// Показывает данные своего бота при клике на соответствующей кнопке
|
|
|
|
|
-func (sf *ОкноГлав) btnBotClick(login string) func() {
|
|
|
|
|
- log.Println("WinMain.btnBotClick()")
|
|
|
|
|
- bot := sf.serv.ServBots().Get(login)
|
|
|
|
|
- _botPass := bot.Пароль()
|
|
|
|
|
- if _botPass == strMainPass {
|
|
|
|
|
- _botPass = "Default"
|
|
|
|
|
- }
|
|
|
|
|
- return func() {
|
|
|
|
|
- log.Printf("btnBotClick().fn(): botName=%q\tbotPass=%q\tisAuto=%v\n", login, _botPass, bot.АвтоИграЕсли())
|
|
|
|
|
- // Заполнить данными вкладки своего бота
|
|
|
|
|
- sf.entLogin.Text = login
|
|
|
|
|
- sf.entLogin.Refresh()
|
|
|
|
|
- sf.entPass.Text = _botPass
|
|
|
|
|
- sf.entPass.Refresh()
|
|
|
|
|
- sf.checkAutoGame.SetChecked(bot.АвтоИграЕсли())
|
|
|
|
|
- sf.resetStat()
|
|
|
|
|
- sf.Window.SetTitle("Бото-ферма [wartank.ru]: =" + login + "=")
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-func (sf *ОкноГлав) btnExitClick() {
|
|
|
|
|
- log.Println("WinMain.btnExitClick()")
|
|
|
|
|
- sf.Close()
|
|
|
|
|
- sf.app.Quit()
|
|
|
|
|
- sf.serv.CancelApp()
|
|
|
|
|
-}
|
|
|