package effects import ( "fmt" "git.aiterp.net/lucifer3/server/device" "math/rand" "time" ) type Random struct { States []device.State `json:"states,omitempty"` Interpolate bool `json:"interpolate,omitempty"` AnimationMS int64 `json:"animationMs,omitempty"` } func (e Random) State(_, _, _ int) device.State { if len(e.States) == 0 { return device.State{} } return gradientStateFactor(e.States, e.Interpolate, rand.Float64()) } func (e Random) Frequency() time.Duration { return time.Duration(e.AnimationMS) * time.Millisecond } func (e Random) EffectDescription() string { return fmt.Sprintf("Random(states:%s, anim:%dms, int:%t)", statesDescription(e.States), e.AnimationMS, e.Interpolate) }