arena_angar.go 4.3 KB

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