Files
game-driver/internal/routes/play/card_pusher/status.go

53 lines
713 B
Go

package card_pusher
import (
"strconv"
"time"
)
type StatusLine struct {
v int
t *time.Timer
d time.Duration
o func(int)
}
func (s *StatusLine) String() string {
return strconv.Itoa(s.v)
}
func (s *StatusLine) Set(v int) {
s.v = v
}
func (s *StatusLine) Get() int {
return s.v
}
func (s *StatusLine) AfterSet(v int) {
if s.t != nil {
s.t.Stop()
}
s.t = time.AfterFunc(s.d, func() {
s.v = v
if s.o != nil {
s.o(v)
}
})
}
func (s *StatusLine) SubEvent(handler func(int)) {
s.o = handler
}
func DefaultStatusLine(v int) *StatusLine {
return NewStatusLine(v, 500*time.Millisecond)
}
func NewStatusLine(v int, d time.Duration) *StatusLine {
return &StatusLine{
v: v,
d: d,
}
}