arena_state.go 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. // package arena_state -- состояние арены
  2. package arena_state
  3. import (
  4. "sync"
  5. "wartank/app/lev0/alias"
  6. . "wartank/app/lev0/types"
  7. )
  8. // СценаСостояние -- состояние сцены
  9. type АренаСостояние struct {
  10. состояниеИмя alias.ААренаСостояние // Имя режима
  11. работаИмя alias.АРаботаИмя // Имя работы
  12. режимНомер alias.АРежим
  13. block sync.RWMutex
  14. }
  15. // НовСекцияРежим -- возвращает новый *СценаРежим
  16. func НовАренаСостояние() *АренаСостояние {
  17. сам := &АренаСостояние{
  18. состояниеИмя: "старт",
  19. }
  20. _ = ИАренаСостояние(сам)
  21. return сам
  22. }
  23. // РежимНомер -- возвращает номер режима арены
  24. func (сам *АренаСостояние) РежимНомер() alias.АРежим {
  25. сам.block.RLock()
  26. defer сам.block.RUnlock()
  27. return сам.режимНомер
  28. }
  29. // РаботаИмяУст -- устанавливает имя текущей работы арены
  30. func (сам *АренаСостояние) РаботаИмяУст(имя alias.АРаботаИмя) {
  31. сам.block.Lock()
  32. defer сам.block.Unlock()
  33. сам.работаИмя = имя
  34. }
  35. // РаботаИмя -- возвращает имя текущей работы арены
  36. func (сам *АренаСостояние) РаботаИмя() alias.АРаботаИмя {
  37. сам.block.RLock()
  38. defer сам.block.RUnlock()
  39. return сам.работаИмя
  40. }
  41. // СостояниеУст -- устанавливает состояние арены
  42. func (сам *АренаСостояние) СостояниеУст(состояние alias.ААренаСостояние) {
  43. сам.block.Lock()
  44. defer сам.block.Unlock()
  45. сам.состояниеИмя = состояние
  46. }
  47. // Состояние -- возвращает состояние арены
  48. func (сам *АренаСостояние) Состояние() alias.ААренаСостояние {
  49. сам.block.RLock()
  50. defer сам.block.RUnlock()
  51. return сам.состояниеИмя
  52. }
  53. // Работа -- возвращает хранимое имя работы арены
  54. func (сам *АренаСостояние) Работа() alias.АРаботаИмя {
  55. сам.block.RLock()
  56. defer сам.block.RUnlock()
  57. return сам.работаИмя
  58. }
  59. // РаботаУст -- устанавливает хранимое имя работы арены
  60. func (сам *АренаСостояние) РаботаУст(работаИмя alias.АРаботаИмя) {
  61. сам.block.Lock()
  62. defer сам.block.Unlock()
  63. сам.работаИмя = работаИмя
  64. }