farm_bots.go 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // package farm_bots -- бото-ферма
  2. package farm_bots
  3. import (
  4. "fmt"
  5. "log"
  6. . "wartank/app/lev0/alias"
  7. . "wartank/app/lev0/types"
  8. "wartank/app/lev3/bot"
  9. "wartank/app/lev3/farm_bots/dict_bot"
  10. . "wartank/kernel/kernel_types"
  11. )
  12. // БотоФерма -- бото-ферма
  13. type БотоФерма struct {
  14. конт ИЯдроКонтекст
  15. // прилож ИПриложение
  16. хран ИЯдроХранилище
  17. словБот *dict_bot.СловарьБотов
  18. }
  19. // НовБотоФерма -- возвращает новую бото-ферму
  20. func НовБотоФерма(конт ИЯдроКонтекст) *БотоФерма {
  21. log.Println("НовБотоФерма()")
  22. // приложение := конт.Получ("приложение").(ИПриложение)
  23. сам := &БотоФерма{
  24. конт: конт,
  25. // прилож: приложение,
  26. хран: конт.Получ("kernStore").(ИЯдроХранилище),
  27. }
  28. сам.словБот = dict_bot.НовСловарьБотов(конт)
  29. return сам
  30. }
  31. // Get -- возвращает боевого бота по имени
  32. func (сам *БотоФерма) Get(botNumber АБотНомер) ИБот {
  33. bot := сам.словБот.Get(botNumber)
  34. return bot
  35. }
  36. // BotStart -- запускает бота в работу по его имени
  37. func (сам *БотоФерма) BotStart(botNumber АБотНомер) error {
  38. bot := сам.словБот.Get(botNumber)
  39. if bot == nil {
  40. return fmt.Errorf("ServBots.BotStart(): bot(%v) not found", botNumber)
  41. }
  42. bot.Пуск()
  43. return nil
  44. }
  45. // ListBot -- возвращает список существующих ботов
  46. func (сам *БотоФерма) ListBot() []ИБот {
  47. lst := сам.словБот.ListBot()
  48. return lst
  49. }
  50. // НовБот -- добавляет нового бота на ферму
  51. func (сам *БотоФерма) НовБот(логин, пароль string, еслиАвто bool) error {
  52. { // Существует ли такой бот
  53. for _, бот := range сам.словБот.ListBot() {
  54. if бот.Имя() == логин {
  55. return nil
  56. }
  57. }
  58. }
  59. номер := АБотНомер(len(сам.словБот.ListBot()) + 1)
  60. фнНомерПровер := func() bool {
  61. for _, бот := range сам.словБот.ListBot() {
  62. if бот.Номер() == номер {
  63. return false
  64. }
  65. }
  66. return true
  67. }
  68. for !фнНомерПровер() {
  69. номер++
  70. }
  71. // Нет такого бота, надо его создать
  72. бот := bot.НовВарБот(сам.конт, номер, логин, пароль, еслиАвто)
  73. сам.словБот.Add(бот)
  74. return nil
  75. }