| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- package shottime
- import (
- "sync"
- "github.com/sirupsen/logrus"
- "wartank/pkg/alias"
- )
- /*
- Содержит время до выстрела
- */
- // ShotTime -- время до выстрела
- type ShotTime struct {
- val alias.AMilSec // Время в мсек
- block sync.RWMutex
- }
- // NewShotTime -- возвращает новый ShotTime
- func NewShotTime() *ShotTime {
- return &ShotTime{}
- }
- // Get -- возвращает хранимое время до выстрела
- func (sf *ShotTime) Get() alias.AMilSec {
- sf.block.RLock()
- defer sf.block.RUnlock()
- return sf.val
- }
- // Dec5 -- уменьшает время до выстрела на 5 мсек
- func (sf *ShotTime) Dec5() {
- sf.block.Lock()
- defer sf.block.Unlock()
- sf.val -= 5
- if sf.val < 0 {
- sf.val = 0
- }
- }
- // Dec30 -- уменьшает время до выстрела на 30 мсек
- func (sf *ShotTime) Dec30() {
- sf.block.Lock()
- defer sf.block.Unlock()
- sf.val -= 30
- if sf.val < 0 {
- sf.val = 0
- }
- }
- // Inc210 -- увеличивает время до выстрела на 210 мсек
- func (sf *ShotTime) Inc210() {
- sf.block.Lock()
- defer sf.block.Unlock()
- sf.val += 210
- }
- // IsZero -- возвращает истину, если значение обнулено
- func (sf *ShotTime) IsZero() bool {
- sf.block.RLock()
- defer sf.block.RUnlock()
- return sf.val == 0
- }
- // Set -- устанавливает значение по требованию
- func (sf *ShotTime) Set(val alias.AMilSec) {
- sf.block.Lock()
- defer sf.block.Unlock()
- if val < 0 {
- logrus.WithField("val", val).Error("ShotTime.Set(): отрицательное значение")
- return
- }
- sf.val = val
- }
|