| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- // package farm_bots -- бото-ферма
- package farm_bots
- import (
- "fmt"
- "log"
- . "gitp78su.ipnodns.ru/svi/kern"
- . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
- . "wartank/app/lev0/alias"
- . "wartank/app/lev0/types"
- "wartank/app/lev3/bot"
- "wartank/app/lev3/farm_bots/dict_bot"
- )
- // БотоФерма -- бото-ферма
- type БотоФерма struct {
- конт IKernelCtx
- // прилож ИПриложение
- хран IKernelStoreKv
- словБот *dict_bot.СловарьБотов
- }
- // НовБотоФерма -- возвращает новую бото-ферму
- func НовБотоФерма() *БотоФерма {
- конт := GetKernelCtx()
- log.Println("НовБотоФерма()")
- // приложение := конт.Получ("приложение").(ИПриложение)
- сам := &БотоФерма{
- конт: конт,
- // прилож: приложение,
- хран: конт.Get("kernStoreKV").Val().(IKernelStoreKv),
- }
- сам.словБот = dict_bot.НовСловарьБотов(конт)
- _ = ИБотоФерма(сам)
- return сам
- }
- // Get -- возвращает боевого бота по имени
- func (сам *БотоФерма) Get(botNumber АБотНомер) ИБот {
- bot := сам.словБот.Get(botNumber)
- return bot
- }
- // BotStart -- запускает бота в работу по его имени
- func (сам *БотоФерма) BotStart(botNumber АБотНомер) Result[bool] {
- bot := сам.словБот.Get(botNumber)
- if bot == nil {
- err := fmt.Errorf("ServBots.BotStart(): bot(%v) not found", botNumber)
- return NewErr[bool](err)
- }
- bot.Пуск()
- return NewOk(true)
- }
- // ListBot -- возвращает список существующих ботов
- func (сам *БотоФерма) ListBot() []ИБот {
- lst := сам.словБот.ListBot()
- return lst
- }
- // НовБот -- добавляет нового бота на ферму
- func (сам *БотоФерма) НовБот(логин, пароль string, еслиАвто bool) Result[bool] {
- { // Существует ли такой бот
- for _, бот := range сам.словБот.ListBot() {
- if бот.Имя() == логин {
- err := fmt.Errorf("БотоФерма.НовБот(): логин(%v) уже существует", логин)
- return NewErr[bool](err)
- }
- }
- }
- номер := АБотНомер(len(сам.словБот.ListBot()) + 1)
- фнНомерПровер := func() bool {
- for _, бот := range сам.словБот.ListBot() {
- if бот.Номер() == номер {
- return false
- }
- }
- return true
- }
- for !фнНомерПровер() {
- номер++
- }
- // Нет такого бота, надо его создать
- бот := bot.НовВарБот(сам.конт, номер, логин, пароль, еслиАвто)
- сам.словБот.Add(бот)
- return NewOk(true)
- }
|