arena_angar.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package arena_angar
  2. import (
  3. "time"
  4. . "gitp78su.ipnodns.ru/svi/kern/kc/helpers"
  5. . "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
  6. . "wartank/app/lev0/types"
  7. "wartank/app/lev1"
  8. "wartank/app/lev2/arena"
  9. "wartank/app/lev3/bot/bot_stat/bot_resurs"
  10. )
  11. /*
  12. Объект ангара приложения
  13. */
  14. // Ангар -- ангар для танка
  15. type АренаАнгар struct {
  16. ИАрена
  17. конт ILocalCtx
  18. бот ИБот
  19. progress ИСтатПарам
  20. топливо ИСтатПарам
  21. серебро ИСтатПарам
  22. золото ИСтатПарам
  23. игроковОнлайн ИСтатПарам
  24. сереброСессия ИСтатПарам
  25. ресурсы ИБотРесурсы
  26. танкСтат ИТанкСтат
  27. }
  28. // НовАнгар -- возвращает новый *Angar
  29. func НовАнгар(конт ILocalCtx) ИАренаАнгар {
  30. Hassert(конт != nil, "НовАнгар(): ILocalCtx==nil")
  31. бот := конт.Get("бот").Val().(ИБот)
  32. сам := &АренаАнгар{
  33. конт: конт,
  34. бот: бот,
  35. progress: lev1.НовСтатПарам("прогресс"),
  36. игроковОнлайн: lev1.НовСтатПарам("онлайн"),
  37. сереброСессия: lev1.НовСтатПарам("серебро сессия"),
  38. танкСтат: конт.Get("танкСтат").Val().(ИТанкСтат),
  39. серебро: lev1.НовСтатПарам("серебро"),
  40. золото: lev1.НовСтатПарам("золото"),
  41. топливо: lev1.НовСтатПарам("топливо"),
  42. }
  43. аренаКонф := arena.АренаКонфиг{
  44. Бот_: бот,
  45. АренаИмя_: "Ангар",
  46. СтрКонтроль_: "<title>Ангар</title>",
  47. ФнПуск_: сам.пуск,
  48. СтрУрл_: "https://wartank.ru/angar",
  49. }
  50. конт.Set("ангар", сам, "Объект ангара бота")
  51. сам.ИАрена = arena.НовАрена(конт, аренаКонф)
  52. сам.ресурсы = bot_resurs.НовБотРесурсы(конт, сам)
  53. return сам
  54. }
  55. // Золото -- возвращает объект топлива в ангаре
  56. func (сам *АренаАнгар) Золото() ИСтатПарам {
  57. return сам.золото
  58. }
  59. // Топливо -- возвращает объект топлива в ангаре
  60. func (сам *АренаАнгар) Топливо() ИСтатПарам {
  61. return сам.топливо
  62. }
  63. // СереброСессия -- возвращает объект серебра за текущую сессию
  64. func (сам *АренаАнгар) СереброСессия() ИСтатПарам {
  65. return сам.сереброСессия
  66. }
  67. // Серебро -- возвращает объект серебра в ангаре
  68. func (сам *АренаАнгар) Серебро() ИСтатПарам {
  69. return сам.серебро
  70. }
  71. // Запускает обработку ангара
  72. func (сам *АренаАнгар) пуск() {
  73. { // Запуск компонентов
  74. }
  75. фнЦикл := func() {
  76. сам.Обновить()
  77. // сам.конвойПроверить()
  78. сам.ОбратВремяУст("01:00")
  79. }
  80. go func() {
  81. сам.ОбратВремяУст("01")
  82. for {
  83. select {
  84. case <-сам.конт.Ctx().Done(): // Отмена контекста
  85. return
  86. case <-сам.ВремяОстат().КаналСиг(): // Метка времени
  87. фнЦикл()
  88. default: // Запускается раз в минуту
  89. фнЦикл()
  90. time.Sleep(time.Minute * 1)
  91. }
  92. }
  93. }()
  94. }
  95. // Прогресс -- возвращает прогресс уровня игрока
  96. func (сам *АренаАнгар) Прогресс() ИСтатПарам {
  97. return сам.progress
  98. }
  99. // ИгрокиОнлайн -- возвращает количество игроков онлайн
  100. func (сам *АренаАнгар) ИгрокиОнлайн() ИСтатПарам {
  101. return сам.игроковОнлайн
  102. }