| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package shot_time
- import (
- "log"
- "sync"
- . "wartank/app/lev0/alias"
- )
- /*
- Содержит время до выстрела
- */
- // ShotTime -- время до выстрела
- type ShotTime struct {
- val АМилСек // Время в мсек
- block sync.RWMutex
- }
- // NewShotTime -- возвращает новый ShotTime
- func NewShotTime() *ShotTime {
- return &ShotTime{}
- }
- // Get -- возвращает хранимое время до выстрела
- func (сам *ShotTime) Get() АМилСек {
- сам.block.RLock()
- defer сам.block.RUnlock()
- return сам.val
- }
- // Dec5 -- уменьшает время до выстрела на 5 мсек
- func (сам *ShotTime) Dec5() {
- сам.block.Lock()
- defer сам.block.Unlock()
- сам.val -= 5
- if сам.val > 500_000 {
- сам.val = 0
- }
- }
- // Dec30 -- уменьшает время до выстрела на 30 мсек
- func (сам *ShotTime) Dec30() {
- сам.block.Lock()
- defer сам.block.Unlock()
- сам.val -= 30
- if сам.val > 500_000 {
- сам.val = 0
- }
- }
- // Inc210 -- увеличивает время до выстрела на 210 мсек
- func (сам *ShotTime) Inc210() {
- сам.block.Lock()
- defer сам.block.Unlock()
- сам.val += 210
- }
- // IsZero -- возвращает истину, если значение обнулено
- func (сам *ShotTime) IsZero() bool {
- сам.block.RLock()
- defer сам.block.RUnlock()
- return сам.val == 0
- }
- // Set -- устанавливает значение по требованию
- func (сам *ShotTime) Set(val АМилСек) {
- сам.block.Lock()
- defer сам.block.Unlock()
- if val > 500_000 {
- log.Printf("ShotTime.Set(): отрицательное значение, val=%v\n", val)
- return
- }
- сам.val = val
- }
|