|
|
@@ -4,6 +4,7 @@ package web_gui
|
|
|
import (
|
|
|
"fmt"
|
|
|
"log"
|
|
|
+ "net/url"
|
|
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
|
|
|
|
@@ -27,9 +28,60 @@ func НовВебГуи(вебСервер types.ИВебСервер) (*Веб
|
|
|
}
|
|
|
сам.файбер.Get("/", сам.индекс)
|
|
|
сам.файбер.Get("/gui/list_bot", сам.списокБотов)
|
|
|
+ сам.файбер.Get("/gui/add_bot", сам.гетБотНов)
|
|
|
+ сам.файбер.Get("/gui/bot/:name/state", сам.состояниеБота)
|
|
|
return сам, nil
|
|
|
}
|
|
|
|
|
|
+// Показывает состояние бота по имени
|
|
|
+func (сам *ВебГуи) состояниеБота(кнт *fiber.Ctx) error {
|
|
|
+ имя := кнт.Params("name")
|
|
|
+ имя, ош := url.QueryUnescape(имя)
|
|
|
+ if ош != nil {
|
|
|
+ return кнт.Render("list_bot", fiber.Map{
|
|
|
+ "Title": "WarTank",
|
|
|
+ "err": fmt.Sprintf("ВебГуи.состояниеБота(): ошибка декодирования имени бота: %v", ош.Error()),
|
|
|
+ })
|
|
|
+ }
|
|
|
+ if имя == "" {
|
|
|
+ return кнт.Render("list_bot", fiber.Map{
|
|
|
+ "Title": "WarTank",
|
|
|
+ "err": "Не задано имя бота",
|
|
|
+ })
|
|
|
+ }
|
|
|
+ log.Printf("ВебГуи.состояниеБота(): имя=%s\n", имя)
|
|
|
+ бот := сам.серв.ServBots().Get(имя)
|
|
|
+ if бот == nil {
|
|
|
+ return кнт.Render("list_bot", fiber.Map{
|
|
|
+ "Title": "WarTank",
|
|
|
+ "err": "Бот не найден",
|
|
|
+ })
|
|
|
+ }
|
|
|
+ return кнт.Render("state_bot", fiber.Map{
|
|
|
+ "Title": "WarTank",
|
|
|
+ "имя": имя,
|
|
|
+ "топливо": бот.Ангар().Топливо().Получ(),
|
|
|
+ "золото": бот.Ангар().Золото().Получ(),
|
|
|
+ "слава": бот.Ангар().Конвой().Слава().Получ(),
|
|
|
+ "атака": бот.Танк().ТанкСтат().Атака(),
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+// Показывает страницу добавления бота
|
|
|
+func (сам *ВебГуи) гетБотНов(кнт *fiber.Ctx) error {
|
|
|
+ имя := кнт.Cookies("login")
|
|
|
+ if имя != "svi" {
|
|
|
+ return кнт.Render("index", fiber.Map{
|
|
|
+ "Title": "WarTank",
|
|
|
+ "err": "Не выполнен вход",
|
|
|
+ })
|
|
|
+ }
|
|
|
+ log.Printf("ВебГуи.гетБотНов(): логин=%s\n", имя)
|
|
|
+ return кнт.Render("add_bot", fiber.Map{
|
|
|
+ "Title": "WarTank",
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
// Возвращает страницу со списком ботов
|
|
|
func (сам *ВебГуи) списокБотов(кнт *fiber.Ctx) error {
|
|
|
имя := кнт.Cookies("login")
|
|
|
@@ -40,8 +92,14 @@ func (сам *ВебГуи) списокБотов(кнт *fiber.Ctx) error {
|
|
|
})
|
|
|
}
|
|
|
log.Printf("ВебГуи.списокБотов(): логин=%s\n", имя)
|
|
|
+ списокБотов := сам.серв.ServBots().ListBot()
|
|
|
+ списокИмёнБотов := make([]string, 0)
|
|
|
+ for _, бот := range списокБотов {
|
|
|
+ списокИмёнБотов = append(списокИмёнБотов, бот.Имя())
|
|
|
+ }
|
|
|
return кнт.Render("list_bot", fiber.Map{
|
|
|
"Title": "WarTank",
|
|
|
+ "bots": списокИмёнБотов,
|
|
|
})
|
|
|
}
|
|
|
|