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))] } } // 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, "nyan": Nyan, "rick": Rick, "can-you-hear-me": Rick, "donut": Donut, "batman": Batman, "coin": Coin, "torus-knot": TorusKnot, "knot": TorusKnot, "spidyswing": Spidy, "batman-running": BNR, "bnr": BNR, "playstation": PlayStation, }