{{ define "go-character" -}} package {{ $.Region }} // Automatically generated with horsegen; DO NOT EDIT import . "git.sunturtle.xyz/zephyr/horse/horse" const ( {{- range $c := $.Characters }} Character{{ goenum $c.Name }} CharacterID = {{ $c.ID }} // {{ $c.Name }} {{- end }} ) var OrderedCharacters = [...]CharacterID{ {{- range $c := $.Characters }} Character{{ goenum $c.Name }}, {{- end }} } var Characters = map[CharacterID]Character{ {{- range $c := $.Characters }} Character{{ goenum $c.Name }}: {ID: {{ $c.ID }}, Name: {{ printf "%q" $c.Name -}} }, {{- end }} } var CharacterNameToID = map[string]CharacterID{ {{- range $c := $.Characters }} {{ printf "%q" $c.Name }}: {{ $c.ID }}, {{- end }} } var pairAffinity = []int8{ {{- range $a := $.Characters -}} {{- range $b := $.Characters -}} {{- index $.PairMaps $a.ID $b.ID -}}, {{- end -}} {{- end -}} } var trioAffinity = []int8{ {{- range $a := $.Characters -}} {{- range $b := $.Characters -}} {{- range $c := $.Characters -}} {{- index $.TrioMaps $a.ID $b.ID $c.ID -}}, {{- end -}} {{- end -}} {{- end -}} } func PairAffinity(a, b CharacterID) int { if _, ok := Characters[a]; !ok { return 0 } if _, ok := Characters[b]; !ok { return 0 } return int(pairAffinity[a*{{ $.Count }} + b]) } func TrioAffinity(a, b, c CharacterID) int { if _, ok := Characters[a]; !ok { return 0 } if _, ok := Characters[b]; !ok { return 0 } if _, ok := Characters[c]; !ok { return 0 } return int(trioAffinity[a*{{ $.Count }}*{{ $.Count }} + b*{{ $.Count }} + c]) } {{ end }}