| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- // package serv_bots -- словарь ботов сервера
- package serv_bots
- import (
- "fmt"
- "wartank/pkg/alias"
- . "wartank/pkg/kernel/kernel_types"
- . "wartank/server/lev0/types"
- "wartank/server/serv_bots/dict_warbot"
- "wartank/server/serv_bots/warbot"
- )
- // БотоФерма -- словарь ботов на сервере
- type БотоФерма struct {
- серв ИСервер
- хран ИХранилище
- словБот *dict_warbot.СловарьБотов
- }
- // НовБотоФерма -- возвращает новый словарь серверных ботов
- func НовБотоФерма(серв ИСервер) *БотоФерма {
- лог := серв.Слог()
- лог.Инфо("НовБотоФерма()\n")
- лог.Паника(серв == nil, "НовБотоФерма(): ИСервер == nil")
- сам := &БотоФерма{
- серв: серв,
- хран: серв.Хранилище(),
- }
- сам.словБот = dict_warbot.НовСловарьБотов(серв)
- return сам
- }
- // Get -- возвращает боевого бота по имени
- func (сам *БотоФерма) Get(botNumber alias.БотНомер) ИБот {
- bot := сам.словБот.Get(botNumber)
- return bot
- }
- // BotStart -- запускает бота в работу по его имени
- func (сам *БотоФерма) BotStart(botNumber alias.БотНомер) error {
- bot := сам.словБот.Get(botNumber)
- if bot == nil {
- return fmt.Errorf("ServBots.BotStart(): bot(%v) not found", botNumber)
- }
- bot.Пуск()
- return nil
- }
- // ListBot -- возвращает список существующих ботов
- func (сам *БотоФерма) ListBot() []ИБот {
- lst := сам.словБот.ListBot()
- return lst
- }
- // НовБот -- добавляет нового бота на ферму
- func (сам *БотоФерма) НовБот(логин, пароль string, еслиАвто bool) error {
- { // Существует ли такой бот
- for _, бот := range сам.словБот.ListBot() {
- if бот.Имя() == логин {
- return nil
- }
- }
- }
- номер := alias.БотНомер(len(сам.словБот.ListBot()) + 1)
- фнНомерПровер := func() bool {
- for _, бот := range сам.словБот.ListBot() {
- if бот.Номер() == номер {
- return false
- }
- }
- return true
- }
- for !фнНомерПровер() {
- номер++
- }
- // Нет такого бота, надо его создать
- bot := warbot.НовВарБот(сам.серв, номер, логин, пароль, еслиАвто)
- сам.словБот.Add(bot)
- return nil
- }
|