84 lines
2.4 KiB
Go
84 lines
2.4 KiB
Go
package common
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
type CustomizationColor string
|
|
|
|
const (
|
|
CustomizationColorPrimary CustomizationColor = "primary"
|
|
CustomizationColorPurple CustomizationColor = "purple"
|
|
CustomizationColorIndigo CustomizationColor = "indigo"
|
|
CustomizationColorTurquoise CustomizationColor = "turquoise"
|
|
CustomizationColorBlue CustomizationColor = "blue"
|
|
CustomizationColorGreen CustomizationColor = "green"
|
|
CustomizationColorYellow CustomizationColor = "yellow"
|
|
CustomizationColorOrange CustomizationColor = "orange"
|
|
CustomizationColorRed CustomizationColor = "red"
|
|
CustomizationColorFlamingo CustomizationColor = "flamingo"
|
|
CustomizationColorBrown CustomizationColor = "brown"
|
|
CustomizationColorSky CustomizationColor = "sky"
|
|
CustomizationColorArmy CustomizationColor = "army"
|
|
CustomizationColorMagenta CustomizationColor = "magenta"
|
|
CustomizationColorCopper CustomizationColor = "copper"
|
|
CustomizationColorCamel CustomizationColor = "camel"
|
|
CustomizationColorYinYang CustomizationColor = "yinyang"
|
|
CustomizationColorBeige CustomizationColor = "beige"
|
|
)
|
|
|
|
var colorToIDMap = map[CustomizationColor]uint32{
|
|
CustomizationColorPrimary: 0,
|
|
CustomizationColorPurple: 1,
|
|
CustomizationColorIndigo: 2,
|
|
CustomizationColorTurquoise: 3,
|
|
CustomizationColorBlue: 4,
|
|
CustomizationColorGreen: 5,
|
|
CustomizationColorYellow: 6,
|
|
CustomizationColorOrange: 7,
|
|
CustomizationColorRed: 8,
|
|
CustomizationColorFlamingo: 9,
|
|
CustomizationColorBrown: 10,
|
|
CustomizationColorSky: 11,
|
|
CustomizationColorArmy: 12,
|
|
CustomizationColorMagenta: 13,
|
|
CustomizationColorCopper: 14,
|
|
CustomizationColorCamel: 15,
|
|
CustomizationColorYinYang: 16,
|
|
CustomizationColorBeige: 17,
|
|
}
|
|
|
|
func ColorToID(color CustomizationColor) (uint32, error) {
|
|
id, ok := colorToIDMap[color]
|
|
if !ok {
|
|
return 0, fmt.Errorf("Invalid color: %s", color)
|
|
}
|
|
return id, nil
|
|
}
|
|
|
|
func IDToColor(id uint32) (CustomizationColor, error) {
|
|
for color, colorID := range colorToIDMap {
|
|
if colorID == id {
|
|
return color, nil
|
|
}
|
|
}
|
|
return "", fmt.Errorf("Invalid color id: %d", id)
|
|
}
|
|
|
|
func ColorToIDFallbackToBlue(color CustomizationColor) uint32 {
|
|
id, err := ColorToID(color)
|
|
if err != nil {
|
|
return 4
|
|
}
|
|
return id
|
|
}
|
|
|
|
func IDToColorFallbackToBlue(id uint32) CustomizationColor {
|
|
color, err := IDToColor(id)
|
|
if err != nil {
|
|
return CustomizationColorBlue
|
|
}
|
|
|
|
return color
|
|
}
|