完成授书游戏节点功能
This commit is contained in:
52
internal/routes/play/card_device/status.go
Normal file
52
internal/routes/play/card_device/status.go
Normal file
@@ -0,0 +1,52 @@
|
||||
package card_device
|
||||
|
||||
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,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user