arena_base.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // package arena_base -- база в игре
  2. package arena_base
  3. import (
  4. "fmt"
  5. "log"
  6. "sync"
  7. "time"
  8. . "wartank/app/lev0/types"
  9. "wartank/app/lev2/arena"
  10. )
  11. /*
  12. Объект базы в игре.
  13. */
  14. const (
  15. // времОжидПлат = "01:00" // Время ожидания платного ускорения
  16. // времОжидБесплат = "30:00" // Время ожидания бесплатного ускорения
  17. )
  18. // База -- объект базы
  19. type АренаБаза struct {
  20. ИАрена
  21. бот ИБот
  22. блок sync.Mutex
  23. }
  24. // НовБаза -- возвращает новую базу бота
  25. func НовБаза(конт ИБотКонтекст) ИАренаБаза {
  26. бот := конт.Получ("бот").(ИБот)
  27. log.Printf("НовБаза(): %q\n", бот.Имя())
  28. сам := &АренаБаза{
  29. бот: бот,
  30. }
  31. аренаКонфиг := arena.АренаКонфиг{
  32. Бот_: бот,
  33. АренаИмя_: "База",
  34. СтрКонтроль_: `<title>База</title>`,
  35. ФнПуск_: сам.пуск,
  36. СтрУрл_: "https://wartank.ru/buildings",
  37. }
  38. сам.ИАрена = arena.НовАрена(конт, аренаКонфиг)
  39. return сам
  40. }
  41. // Запускает базу в обработку
  42. func (сам *АренаБаза) Пуск() {
  43. log.Printf("Base.Run()\n")
  44. if err := сам.runComponent(); err != nil {
  45. panic(fmt.Errorf("Base.Run(): run, err=\n\t%w", err))
  46. }
  47. go сам.пуск()
  48. }
  49. // Собственная работа
  50. func (сам *АренаБаза) пуск() {
  51. фнЦикл := func() {
  52. defer time.Sleep(time.Minute * 2)
  53. сам.Обновить()
  54. }
  55. for {
  56. select {
  57. case <-сам.Контекст().Done():
  58. return
  59. // case <-сам.ВремяОпрос().КаналСиг():
  60. // фнЦикл()
  61. default:
  62. log.Printf("База.пуск()\n")
  63. фнЦикл()
  64. }
  65. }
  66. }
  67. // Запускает компоненты
  68. func (сам *АренаБаза) runComponent() error {
  69. log.Printf("Base.runComponent()\n")
  70. сам.блок.Lock()
  71. defer сам.блок.Unlock()
  72. return nil
  73. }