35 lines
739 B
Go
35 lines
739 B
Go
![]() |
package frames
|
||
|
|
||
|
type FrameType struct {
|
||
|
GetFrame func(int) string
|
||
|
GetLength func() int
|
||
|
}
|
||
|
|
||
|
// Create a function that returns the next frame, based on length
|
||
|
func DefaultGetFrame(frames []string) func(int) string {
|
||
|
return func(i int) string {
|
||
|
return frames[i%(len(frames)-1)]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Create a function that returns frame length
|
||
|
func DefaultGetLength(frames []string) func() int {
|
||
|
return func() int {
|
||
|
return len(frames)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Given frames, create a FrameType with those frames
|
||
|
func DefaultFrameType(frames []string) FrameType {
|
||
|
return FrameType{
|
||
|
GetFrame: DefaultGetFrame(frames),
|
||
|
GetLength: DefaultGetLength(frames),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var FrameMap = map[string]FrameType{
|
||
|
"forrest": Forrest,
|
||
|
"parrot": Parrot,
|
||
|
"clock": Clock,
|
||
|
}
|