horsegen: generate alternate races/saddles with ids
This commit is contained in:
@@ -29,10 +29,10 @@ const (
|
||||
RaceAsahiHaiFuturityStakes RaceID = 1022 // Asahi Hai Futurity Stakes
|
||||
RaceArimaKinen RaceID = 1023 // Arima Kinen
|
||||
RaceHopefulStakes RaceID = 1024 // Hopeful Stakes
|
||||
RaceTakarazukaKinenAlternate RaceID = 1025 // Takarazuka Kinen
|
||||
RaceKikukaShoAlternate RaceID = 1026 // Kikuka Sho
|
||||
RaceTennoShoSpringAlternate RaceID = 1027 // Tenno Sho (Spring)
|
||||
RaceSatsukiShoAlternate RaceID = 1028 // Satsuki Sho
|
||||
RaceTakarazukaKinenAlt1025 RaceID = 1025 // Takarazuka Kinen
|
||||
RaceKikukaShoAlt1026 RaceID = 1026 // Kikuka Sho
|
||||
RaceTennoShoSpringAlt1027 RaceID = 1027 // Tenno Sho (Spring)
|
||||
RaceSatsukiShoAlt1028 RaceID = 1028 // Satsuki Sho
|
||||
RaceTeioSho RaceID = 1101 // Teio Sho
|
||||
RaceJapanDirtDerby RaceID = 1102 // Japan Dirt Derby
|
||||
RaceJBCLadiesClassic RaceID = 1103 // JBC Ladies’ Classic
|
||||
@@ -73,7 +73,7 @@ const (
|
||||
RaceDailyHaiJuniorStakes RaceID = 2032 // Daily Hai Junior Stakes
|
||||
RaceStayersStakes RaceID = 2033 // Stayers Stakes
|
||||
RaceHanshinCup RaceID = 2034 // Hanshin Cup
|
||||
RaceSpringStakesAlternate RaceID = 2035 // Spring Stakes
|
||||
RaceSpringStakesAlt2035 RaceID = 2035 // Spring Stakes
|
||||
RaceKyotoKimpai RaceID = 3001 // Kyoto Kimpai
|
||||
RaceNakayamaKimpai RaceID = 3002 // Nakayama Kimpai
|
||||
RaceShinzanKinen RaceID = 3003 // Shinzan Kinen
|
||||
@@ -413,27 +413,27 @@ var AllRaces = map[RaceID]Race{
|
||||
Name: "Hopeful Stakes",
|
||||
Thumbnail: 1024,
|
||||
},
|
||||
RaceTakarazukaKinenAlternate: {
|
||||
RaceTakarazukaKinenAlt1025: {
|
||||
ID: 1025,
|
||||
Name: "Takarazuka Kinen" + " (Alternate)",
|
||||
Name: "Takarazuka Kinen" + " (Alternate 1025)",
|
||||
Thumbnail: 1012,
|
||||
Primary: 1012,
|
||||
},
|
||||
RaceKikukaShoAlternate: {
|
||||
RaceKikukaShoAlt1026: {
|
||||
ID: 1026,
|
||||
Name: "Kikuka Sho" + " (Alternate)",
|
||||
Name: "Kikuka Sho" + " (Alternate 1026)",
|
||||
Thumbnail: 1015,
|
||||
Primary: 1015,
|
||||
},
|
||||
RaceTennoShoSpringAlternate: {
|
||||
RaceTennoShoSpringAlt1027: {
|
||||
ID: 1027,
|
||||
Name: "Tenno Sho (Spring)" + " (Alternate)",
|
||||
Name: "Tenno Sho (Spring)" + " (Alternate 1027)",
|
||||
Thumbnail: 1027,
|
||||
Primary: 1006,
|
||||
},
|
||||
RaceSatsukiShoAlternate: {
|
||||
RaceSatsukiShoAlt1028: {
|
||||
ID: 1028,
|
||||
Name: "Satsuki Sho" + " (Alternate)",
|
||||
Name: "Satsuki Sho" + " (Alternate 1028)",
|
||||
Thumbnail: 1028,
|
||||
Primary: 1005,
|
||||
},
|
||||
@@ -637,9 +637,9 @@ var AllRaces = map[RaceID]Race{
|
||||
Name: "Hanshin Cup",
|
||||
Thumbnail: 2034,
|
||||
},
|
||||
RaceSpringStakesAlternate: {
|
||||
RaceSpringStakesAlt2035: {
|
||||
ID: 2035,
|
||||
Name: "Spring Stakes" + " (Alternate)",
|
||||
Name: "Spring Stakes" + " (Alternate 2035)",
|
||||
Thumbnail: 2010,
|
||||
Primary: 2010,
|
||||
},
|
||||
@@ -1750,10 +1750,10 @@ var RaceNameToID = map[string]RaceID{
|
||||
"Asahi Hai Futurity Stakes": 1022,
|
||||
"Arima Kinen": 1023,
|
||||
"Hopeful Stakes": 1024,
|
||||
"Takarazuka Kinen" + " (Alternate)": 1025,
|
||||
"Kikuka Sho" + " (Alternate)": 1026,
|
||||
"Tenno Sho (Spring)" + " (Alternate)": 1027,
|
||||
"Satsuki Sho" + " (Alternate)": 1028,
|
||||
"Takarazuka Kinen" + " (Alternate 1025)": 1025,
|
||||
"Kikuka Sho" + " (Alternate 1026)": 1026,
|
||||
"Tenno Sho (Spring)" + " (Alternate 1027)": 1027,
|
||||
"Satsuki Sho" + " (Alternate 1028)": 1028,
|
||||
"Teio Sho": 1101,
|
||||
"Japan Dirt Derby": 1102,
|
||||
"JBC Ladies’ Classic": 1103,
|
||||
@@ -1794,7 +1794,7 @@ var RaceNameToID = map[string]RaceID{
|
||||
"Daily Hai Junior Stakes": 2032,
|
||||
"Stayers Stakes": 2033,
|
||||
"Hanshin Cup": 2034,
|
||||
"Spring Stakes" + " (Alternate)": 2035,
|
||||
"Spring Stakes" + " (Alternate 2035)": 2035,
|
||||
"Kyoto Kimpai": 3001,
|
||||
"Nakayama Kimpai": 3002,
|
||||
"Shinzan Kinen": 3003,
|
||||
|
||||
@@ -32,10 +32,10 @@ pub type race
|
||||
Asahi-Hai-Futurity-Stakes
|
||||
Arima-Kinen
|
||||
Hopeful-Stakes
|
||||
Takarazuka-Kinen-Alternate
|
||||
Kikuka-Sho-Alternate
|
||||
Tenno-Sho-Spring-Alternate
|
||||
Satsuki-Sho-Alternate
|
||||
Takarazuka-Kinen-Alt1025
|
||||
Kikuka-Sho-Alt1026
|
||||
Tenno-Sho-Spring-Alt1027
|
||||
Satsuki-Sho-Alt1028
|
||||
Teio-Sho
|
||||
Japan-Dirt-Derby
|
||||
JBC-Ladies-Classic
|
||||
@@ -76,7 +76,7 @@ pub type race
|
||||
Daily-Hai-Junior-Stakes
|
||||
Stayers-Stakes
|
||||
Hanshin-Cup
|
||||
Spring-Stakes-Alternate
|
||||
Spring-Stakes-Alt2035
|
||||
Kyoto-Kimpai
|
||||
Nakayama-Kimpai
|
||||
Shinzan-Kinen
|
||||
@@ -321,10 +321,10 @@ pub fun race-id(r: race): race-id
|
||||
Asahi-Hai-Futurity-Stakes -> Race-id(1022)
|
||||
Arima-Kinen -> Race-id(1023)
|
||||
Hopeful-Stakes -> Race-id(1024)
|
||||
Takarazuka-Kinen-Alternate -> Race-id(1025)
|
||||
Kikuka-Sho-Alternate -> Race-id(1026)
|
||||
Tenno-Sho-Spring-Alternate -> Race-id(1027)
|
||||
Satsuki-Sho-Alternate -> Race-id(1028)
|
||||
Takarazuka-Kinen-Alt1025 -> Race-id(1025)
|
||||
Kikuka-Sho-Alt1026 -> Race-id(1026)
|
||||
Tenno-Sho-Spring-Alt1027 -> Race-id(1027)
|
||||
Satsuki-Sho-Alt1028 -> Race-id(1028)
|
||||
Teio-Sho -> Race-id(1101)
|
||||
Japan-Dirt-Derby -> Race-id(1102)
|
||||
JBC-Ladies-Classic -> Race-id(1103)
|
||||
@@ -365,7 +365,7 @@ pub fun race-id(r: race): race-id
|
||||
Daily-Hai-Junior-Stakes -> Race-id(2032)
|
||||
Stayers-Stakes -> Race-id(2033)
|
||||
Hanshin-Cup -> Race-id(2034)
|
||||
Spring-Stakes-Alternate -> Race-id(2035)
|
||||
Spring-Stakes-Alt2035 -> Race-id(2035)
|
||||
Kyoto-Kimpai -> Race-id(3001)
|
||||
Nakayama-Kimpai -> Race-id(3002)
|
||||
Shinzan-Kinen -> Race-id(3003)
|
||||
@@ -609,10 +609,10 @@ pub val all = [
|
||||
Asahi-Hai-Futurity-Stakes,
|
||||
Arima-Kinen,
|
||||
Hopeful-Stakes,
|
||||
Takarazuka-Kinen-Alternate,
|
||||
Kikuka-Sho-Alternate,
|
||||
Tenno-Sho-Spring-Alternate,
|
||||
Satsuki-Sho-Alternate,
|
||||
Takarazuka-Kinen-Alt1025,
|
||||
Kikuka-Sho-Alt1026,
|
||||
Tenno-Sho-Spring-Alt1027,
|
||||
Satsuki-Sho-Alt1028,
|
||||
Teio-Sho,
|
||||
Japan-Dirt-Derby,
|
||||
JBC-Ladies-Classic,
|
||||
@@ -653,7 +653,7 @@ pub val all = [
|
||||
Daily-Hai-Junior-Stakes,
|
||||
Stayers-Stakes,
|
||||
Hanshin-Cup,
|
||||
Spring-Stakes-Alternate,
|
||||
Spring-Stakes-Alt2035,
|
||||
Kyoto-Kimpai,
|
||||
Nakayama-Kimpai,
|
||||
Shinzan-Kinen,
|
||||
@@ -897,10 +897,10 @@ val name2id: rbmap<string, race-id> = rb-map/empty()
|
||||
.set("Asahi Hai Futurity Stakes", Race-id(1022))
|
||||
.set("Arima Kinen", Race-id(1023))
|
||||
.set("Hopeful Stakes", Race-id(1024))
|
||||
.set("Takarazuka Kinen" ++ " (Alternate)", Race-id(1025))
|
||||
.set("Kikuka Sho" ++ " (Alternate)", Race-id(1026))
|
||||
.set("Tenno Sho (Spring)" ++ " (Alternate)", Race-id(1027))
|
||||
.set("Satsuki Sho" ++ " (Alternate)", Race-id(1028))
|
||||
.set("Takarazuka Kinen" ++ " (Alternate 1025)", Race-id(1025))
|
||||
.set("Kikuka Sho" ++ " (Alternate 1026)", Race-id(1026))
|
||||
.set("Tenno Sho (Spring)" ++ " (Alternate 1027)", Race-id(1027))
|
||||
.set("Satsuki Sho" ++ " (Alternate 1028)", Race-id(1028))
|
||||
.set("Teio Sho", Race-id(1101))
|
||||
.set("Japan Dirt Derby", Race-id(1102))
|
||||
.set("JBC Ladies’ Classic", Race-id(1103))
|
||||
@@ -941,7 +941,7 @@ val name2id: rbmap<string, race-id> = rb-map/empty()
|
||||
.set("Daily Hai Junior Stakes", Race-id(2032))
|
||||
.set("Stayers Stakes", Race-id(2033))
|
||||
.set("Hanshin Cup", Race-id(2034))
|
||||
.set("Spring Stakes" ++ " (Alternate)", Race-id(2035))
|
||||
.set("Spring Stakes" ++ " (Alternate 2035)", Race-id(2035))
|
||||
.set("Kyoto Kimpai", Race-id(3001))
|
||||
.set("Nakayama Kimpai", Race-id(3002))
|
||||
.set("Shinzan Kinen", Race-id(3003))
|
||||
@@ -1160,13 +1160,13 @@ val name2id: rbmap<string, race-id> = rb-map/empty()
|
||||
.set("Senryo Sho", Race-id(4526))
|
||||
|
||||
// Get the race ID that has the given exact name.
|
||||
// Alternate versions of races have " (Alternate)" in their names.
|
||||
// Alternate versions of races have an indication of their ID in their names.
|
||||
// If no race matches the name, the result is an invalid ID.
|
||||
pub fun from-name(name: string): race-id
|
||||
name2id.lookup(name).default(Race-id(0))
|
||||
|
||||
// Get the name for a race.
|
||||
// Alternate versions of races have " (Alternate)" in their names.
|
||||
// Alternate versions of races have an indication of their ID in their names.
|
||||
// If no race matches the ID, the result is the numeric ID.
|
||||
pub fun show(r: race-id): string
|
||||
match r.game-id
|
||||
@@ -1194,10 +1194,10 @@ pub fun show(r: race-id): string
|
||||
1022 -> "Asahi Hai Futurity Stakes"
|
||||
1023 -> "Arima Kinen"
|
||||
1024 -> "Hopeful Stakes"
|
||||
1025 -> "Takarazuka Kinen" ++ " (Alternate)"
|
||||
1026 -> "Kikuka Sho" ++ " (Alternate)"
|
||||
1027 -> "Tenno Sho (Spring)" ++ " (Alternate)"
|
||||
1028 -> "Satsuki Sho" ++ " (Alternate)"
|
||||
1025 -> "Takarazuka Kinen" ++ " (Alternate 1025)"
|
||||
1026 -> "Kikuka Sho" ++ " (Alternate 1026)"
|
||||
1027 -> "Tenno Sho (Spring)" ++ " (Alternate 1027)"
|
||||
1028 -> "Satsuki Sho" ++ " (Alternate 1028)"
|
||||
1101 -> "Teio Sho"
|
||||
1102 -> "Japan Dirt Derby"
|
||||
1103 -> "JBC Ladies’ Classic"
|
||||
@@ -1238,7 +1238,7 @@ pub fun show(r: race-id): string
|
||||
2032 -> "Daily Hai Junior Stakes"
|
||||
2033 -> "Stayers Stakes"
|
||||
2034 -> "Hanshin Cup"
|
||||
2035 -> "Spring Stakes" ++ " (Alternate)"
|
||||
2035 -> "Spring Stakes" ++ " (Alternate 2035)"
|
||||
3001 -> "Kyoto Kimpai"
|
||||
3002 -> "Nakayama Kimpai"
|
||||
3003 -> "Shinzan Kinen"
|
||||
|
||||
@@ -151,18 +151,18 @@ pub type saddle
|
||||
Chunichi-Shimbun-Hai
|
||||
Capella-S
|
||||
Turquoise-S
|
||||
Classic-Triple-Crown-Alt1
|
||||
Senior-Spring-Triple-Crown-Alt1
|
||||
Dual-Grand-Prix-Alt1
|
||||
Takarazuka-Kinen-Alt1
|
||||
Kikuka-Sho-Alt1
|
||||
Spring-S-Alt1
|
||||
Classic-Triple-Crown-Alt144
|
||||
Senior-Spring-Triple-Crown-Alt145
|
||||
Dual-Grand-Prix-Alt146
|
||||
Takarazuka-Kinen-Alt147
|
||||
Kikuka-Sho-Alt148
|
||||
Spring-S-Alt149
|
||||
Aoi-S
|
||||
Senior-Spring-Triple-Crown-Alt2
|
||||
Tenno-Sweep-Alt1
|
||||
Tenno-Sho-Spring-Alt1
|
||||
Classic-Triple-Crown-Alt2
|
||||
Satsuki-Sho-Alt1
|
||||
Senior-Spring-Triple-Crown-Alt151
|
||||
Tenno-Sweep-Alt152
|
||||
Tenno-Sho-Spring-Alt153
|
||||
Classic-Triple-Crown-Alt154
|
||||
Satsuki-Sho-Alt155
|
||||
|
||||
// Get the saddle ID for a saddle.
|
||||
pub fun saddle-id(s: saddle): saddle-id
|
||||
@@ -310,18 +310,18 @@ pub fun saddle-id(s: saddle): saddle-id
|
||||
Chunichi-Shimbun-Hai -> Saddle-id(141)
|
||||
Capella-S -> Saddle-id(142)
|
||||
Turquoise-S -> Saddle-id(143)
|
||||
Classic-Triple-Crown-Alt1 -> Saddle-id(144)
|
||||
Senior-Spring-Triple-Crown-Alt1 -> Saddle-id(145)
|
||||
Dual-Grand-Prix-Alt1 -> Saddle-id(146)
|
||||
Takarazuka-Kinen-Alt1 -> Saddle-id(147)
|
||||
Kikuka-Sho-Alt1 -> Saddle-id(148)
|
||||
Spring-S-Alt1 -> Saddle-id(149)
|
||||
Classic-Triple-Crown-Alt144 -> Saddle-id(144)
|
||||
Senior-Spring-Triple-Crown-Alt145 -> Saddle-id(145)
|
||||
Dual-Grand-Prix-Alt146 -> Saddle-id(146)
|
||||
Takarazuka-Kinen-Alt147 -> Saddle-id(147)
|
||||
Kikuka-Sho-Alt148 -> Saddle-id(148)
|
||||
Spring-S-Alt149 -> Saddle-id(149)
|
||||
Aoi-S -> Saddle-id(150)
|
||||
Senior-Spring-Triple-Crown-Alt2 -> Saddle-id(151)
|
||||
Tenno-Sweep-Alt1 -> Saddle-id(152)
|
||||
Tenno-Sho-Spring-Alt1 -> Saddle-id(153)
|
||||
Classic-Triple-Crown-Alt2 -> Saddle-id(154)
|
||||
Satsuki-Sho-Alt1 -> Saddle-id(155)
|
||||
Senior-Spring-Triple-Crown-Alt151 -> Saddle-id(151)
|
||||
Tenno-Sweep-Alt152 -> Saddle-id(152)
|
||||
Tenno-Sho-Spring-Alt153 -> Saddle-id(153)
|
||||
Classic-Triple-Crown-Alt154 -> Saddle-id(154)
|
||||
Satsuki-Sho-Alt155 -> Saddle-id(155)
|
||||
|
||||
// List of all saddles in ID order for easy iterating.
|
||||
pub val all = [
|
||||
@@ -468,22 +468,22 @@ pub val all = [
|
||||
Chunichi-Shimbun-Hai,
|
||||
Capella-S,
|
||||
Turquoise-S,
|
||||
Classic-Triple-Crown-Alt1,
|
||||
Senior-Spring-Triple-Crown-Alt1,
|
||||
Dual-Grand-Prix-Alt1,
|
||||
Takarazuka-Kinen-Alt1,
|
||||
Kikuka-Sho-Alt1,
|
||||
Spring-S-Alt1,
|
||||
Classic-Triple-Crown-Alt144,
|
||||
Senior-Spring-Triple-Crown-Alt145,
|
||||
Dual-Grand-Prix-Alt146,
|
||||
Takarazuka-Kinen-Alt147,
|
||||
Kikuka-Sho-Alt148,
|
||||
Spring-S-Alt149,
|
||||
Aoi-S,
|
||||
Senior-Spring-Triple-Crown-Alt2,
|
||||
Tenno-Sweep-Alt1,
|
||||
Tenno-Sho-Spring-Alt1,
|
||||
Classic-Triple-Crown-Alt2,
|
||||
Satsuki-Sho-Alt1,
|
||||
Senior-Spring-Triple-Crown-Alt151,
|
||||
Tenno-Sweep-Alt152,
|
||||
Tenno-Sho-Spring-Alt153,
|
||||
Classic-Triple-Crown-Alt154,
|
||||
Satsuki-Sho-Alt155,
|
||||
]
|
||||
|
||||
// Get the name for a saddle.
|
||||
// Alternate versions of saddles have an indication of such in their names.
|
||||
// Alternate versions of saddles have an indication of their ID in their names.
|
||||
// If no saddle matches the ID, the result contains the numeric ID.
|
||||
pub fun show(s: saddle-id): string
|
||||
match s.game-id
|
||||
@@ -630,18 +630,18 @@ pub fun show(s: saddle-id): string
|
||||
141 -> "Chunichi Shimbun Hai"
|
||||
142 -> "Capella S."
|
||||
143 -> "Turquoise S."
|
||||
144 -> "Classic Triple Crown" ++ " (Alternate 1)"
|
||||
145 -> "Senior Spring Triple Crown" ++ " (Alternate 1)"
|
||||
146 -> "Dual Grand Prix" ++ " (Alternate 1)"
|
||||
147 -> "Takarazuka Kinen" ++ " (Alternate 1)"
|
||||
148 -> "Kikuka Sho" ++ " (Alternate 1)"
|
||||
149 -> "Spring S." ++ " (Alternate 1)"
|
||||
144 -> "Classic Triple Crown" ++ " (Alternate 144)"
|
||||
145 -> "Senior Spring Triple Crown" ++ " (Alternate 145)"
|
||||
146 -> "Dual Grand Prix" ++ " (Alternate 146)"
|
||||
147 -> "Takarazuka Kinen" ++ " (Alternate 147)"
|
||||
148 -> "Kikuka Sho" ++ " (Alternate 148)"
|
||||
149 -> "Spring S." ++ " (Alternate 149)"
|
||||
150 -> "Aoi S."
|
||||
151 -> "Senior Spring Triple Crown" ++ " (Alternate 2)"
|
||||
152 -> "Tenno Sweep" ++ " (Alternate 1)"
|
||||
153 -> "Tenno Sho (Spring)" ++ " (Alternate 1)"
|
||||
154 -> "Classic Triple Crown" ++ " (Alternate 2)"
|
||||
155 -> "Satsuki Sho" ++ " (Alternate 1)"
|
||||
151 -> "Senior Spring Triple Crown" ++ " (Alternate 151)"
|
||||
152 -> "Tenno Sweep" ++ " (Alternate 152)"
|
||||
153 -> "Tenno Sho (Spring)" ++ " (Alternate 153)"
|
||||
154 -> "Classic Triple Crown" ++ " (Alternate 154)"
|
||||
155 -> "Satsuki Sho" ++ " (Alternate 155)"
|
||||
x -> "saddle " ++ x.show
|
||||
|
||||
// Get the list of races that entitle a horse to a saddle.
|
||||
|
||||
@@ -328,6 +328,7 @@ type Race struct {
|
||||
Grade int
|
||||
ThumbnailID int
|
||||
Primary int
|
||||
Alternate int
|
||||
}
|
||||
|
||||
func Races(ctx context.Context, db *sqlitex.Pool) ([]Race, error) {
|
||||
@@ -357,6 +358,7 @@ func Races(ctx context.Context, db *sqlitex.Pool) ([]Race, error) {
|
||||
Grade: stmt.ColumnInt(2),
|
||||
ThumbnailID: stmt.ColumnInt(3),
|
||||
Primary: stmt.ColumnInt(4),
|
||||
Alternate: stmt.ColumnInt(5),
|
||||
}
|
||||
r = append(r, race)
|
||||
}
|
||||
|
||||
@@ -7,15 +7,15 @@ import . "git.sunturtle.xyz/zephyr/horse/horse"
|
||||
|
||||
const (
|
||||
{{- range $r := $.Races }}
|
||||
Race{{ goenum $r.Name }}{{ if ne $r.Primary $r.ID }}Alternate{{ end }} RaceID = {{ $r.ID }} // {{ $r.Name }}
|
||||
Race{{ goenum $r.Name }}{{ if $r.Alternate }}Alt{{ $r.ID }}{{ end }} RaceID = {{ $r.ID }} // {{ $r.Name }}
|
||||
{{- end }}
|
||||
)
|
||||
|
||||
var AllRaces = map[RaceID]Race{
|
||||
{{- range $r := $.Races }}
|
||||
Race{{ goenum $r.Name }}{{ if ne $r.Primary $r.ID }}Alternate{{ end }}: {
|
||||
Race{{ goenum $r.Name }}{{ if $r.Alternate }}Alt{{ $r.ID }}{{ end }}: {
|
||||
ID: {{ $r.ID }},
|
||||
Name: {{ printf "%q" $r.Name }}{{ if ne $r.Primary $r.ID }} + " (Alternate)"{{ end }},
|
||||
Name: {{ printf "%q" $r.Name }}{{ if $r.Alternate }} + " (Alternate {{ $r.ID }})"{{ end }},
|
||||
Thumbnail: {{ $r.ThumbnailID }},
|
||||
{{- if ne $r.Primary $r.ID }}
|
||||
Primary: {{ $r.Primary }},
|
||||
@@ -26,7 +26,7 @@ var AllRaces = map[RaceID]Race{
|
||||
|
||||
var RaceNameToID = map[string]RaceID{
|
||||
{{- range $r := $.Races }}
|
||||
{{ printf "%q" $r.Name }}{{ if ne $r.Primary $r.ID }} + " (Alternate)"{{ end }}: {{ $r.ID }},
|
||||
{{ printf "%q" $r.Name }}{{ if $r.Alternate }} + " (Alternate {{ $r.ID }})"{{ end }}: {{ $r.ID }},
|
||||
{{- end }}
|
||||
}
|
||||
{{ end }}
|
||||
|
||||
@@ -10,41 +10,41 @@ pub import horse/race
|
||||
// Enumeration of all races for type-safe programming.
|
||||
pub type race
|
||||
{{- range $r := $.Races }}
|
||||
{{ kkenum $r.Name }}{{ if ne $r.Primary $r.ID }}-Alternate{{ end }}
|
||||
{{ kkenum $r.Name }}{{ if $r.Alternate }}-Alt{{ $r.ID }}{{ end }}
|
||||
{{- end }}
|
||||
|
||||
// Get the race ID for a race.
|
||||
pub fun race-id(r: race): race-id
|
||||
match r
|
||||
{{- range $r := $.Races }}
|
||||
{{ kkenum $r.Name }}{{ if ne $r.Primary $r.ID }}-Alternate{{ end }} -> Race-id({{ $r.ID }})
|
||||
{{ kkenum $r.Name }}{{ if $r.Alternate }}-Alt{{ $r.ID }}{{ end }} -> Race-id({{ $r.ID }})
|
||||
{{- end }}
|
||||
|
||||
// List of all races in ID order for easy iterating.
|
||||
pub val all = [
|
||||
{{- range $r := $.Races }}
|
||||
{{ kkenum $r.Name }}{{ if ne $r.Primary $r.ID }}-Alternate{{ end }},
|
||||
{{ kkenum $r.Name }}{{ if $r.Alternate }}-Alt{{ $r.ID }}{{ end }},
|
||||
{{- end }}
|
||||
]
|
||||
|
||||
val name2id: rbmap<string, race-id> = rb-map/empty()
|
||||
{{- range $r := $.Races }}
|
||||
.set({{ printf "%q" $r.Name }}{{ if ne $r.Primary $r.ID }} ++ " (Alternate)"{{ end }}, Race-id({{ $r.ID }}))
|
||||
.set({{ printf "%q" $r.Name }}{{ if $r.Alternate }} ++ " (Alternate {{ $r.ID }})"{{ end }}, Race-id({{ $r.ID }}))
|
||||
{{- end }}
|
||||
|
||||
// Get the race ID that has the given exact name.
|
||||
// Alternate versions of races have " (Alternate)" in their names.
|
||||
// Alternate versions of races have an indication of their ID in their names.
|
||||
// If no race matches the name, the result is an invalid ID.
|
||||
pub fun from-name(name: string): race-id
|
||||
name2id.lookup(name).default(Race-id(0))
|
||||
|
||||
// Get the name for a race.
|
||||
// Alternate versions of races have " (Alternate)" in their names.
|
||||
// Alternate versions of races have an indication of their ID in their names.
|
||||
// If no race matches the ID, the result is the numeric ID.
|
||||
pub fun show(r: race-id): string
|
||||
match r.game-id
|
||||
{{- range $r := $.Races }}
|
||||
{{ $r.ID }} -> {{ printf "%q" $r.Name }}{{ if ne $r.Primary $r.ID }} ++ " (Alternate)"{{ end }}
|
||||
{{ $r.ID }} -> {{ printf "%q" $r.Name }}{{ if $r.Alternate }} ++ " (Alternate {{ $r.ID }})"{{ end }}
|
||||
{{- end }}
|
||||
x -> "race " ++ x.show
|
||||
|
||||
@@ -72,7 +72,7 @@ pub fun thumbnail(r: race-id): race-thumbnail-id
|
||||
pub fun primary(r: race-id): race-id
|
||||
match r.game-id
|
||||
{{- range $r := $.Races }}
|
||||
{{- if ne $r.ID $r.Primary }}
|
||||
{{- if $r.Alternate }}
|
||||
{{ $r.ID }} -> Race-id({{ $r.Primary }})
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
@@ -6,7 +6,8 @@ SELECT
|
||||
race_names.name,
|
||||
race.grade,
|
||||
race.thumbnail_id,
|
||||
MIN(race.id) OVER (PARTITION BY race_names.name) AS "primary"
|
||||
MIN(race.id) OVER (PARTITION BY race_names.name) AS "primary",
|
||||
ROW_NUMBER() OVER (PARTITION BY race_names.name ORDER BY race.id) - 1 AS "alternate"
|
||||
FROM race
|
||||
JOIN race_names ON race.id = race_names.id
|
||||
WHERE race."group" = 1
|
||||
|
||||
@@ -10,30 +10,30 @@ pub import horse/{{ $.Region }}/race
|
||||
// Enumeration of all saddles for type-safe programming.
|
||||
pub type saddle
|
||||
{{- range $s := $.Saddles }}
|
||||
{{ kkenum $s.Name }}{{ if $s.Alternate }}-Alt{{ $s.Alternate }}{{ end }}
|
||||
{{ kkenum $s.Name }}{{ if $s.Alternate }}-Alt{{ $s.ID }}{{ end }}
|
||||
{{- end }}
|
||||
|
||||
// Get the saddle ID for a saddle.
|
||||
pub fun saddle-id(s: saddle): saddle-id
|
||||
match s
|
||||
{{- range $s := $.Saddles }}
|
||||
{{ kkenum $s.Name }}{{ if $s.Alternate }}-Alt{{ $s.Alternate }}{{ end }} -> Saddle-id({{ $s.ID }})
|
||||
{{ kkenum $s.Name }}{{ if $s.Alternate }}-Alt{{ $s.ID }}{{ end }} -> Saddle-id({{ $s.ID }})
|
||||
{{- end }}
|
||||
|
||||
// List of all saddles in ID order for easy iterating.
|
||||
pub val all = [
|
||||
{{- range $s := $.Saddles }}
|
||||
{{ kkenum $s.Name }}{{ if $s.Alternate }}-Alt{{ $s.Alternate }}{{ end }},
|
||||
{{ kkenum $s.Name }}{{ if $s.Alternate }}-Alt{{ $s.ID }}{{ end }},
|
||||
{{- end }}
|
||||
]
|
||||
|
||||
// Get the name for a saddle.
|
||||
// Alternate versions of saddles have an indication of such in their names.
|
||||
// Alternate versions of saddles have an indication of their ID in their names.
|
||||
// If no saddle matches the ID, the result contains the numeric ID.
|
||||
pub fun show(s: saddle-id): string
|
||||
match s.game-id
|
||||
{{- range $s := $.Saddles }}
|
||||
{{ $s.ID }} -> {{ printf "%q" $s.Name }}{{ if $s.Alternate }} ++ " (Alternate {{ $s.Alternate }})"{{ end }}
|
||||
{{ $s.ID }} -> {{ printf "%q" $s.Name }}{{ if $s.Alternate }} ++ " (Alternate {{ $s.ID }})"{{ end }}
|
||||
{{- end }}
|
||||
x -> "saddle " ++ x.show
|
||||
|
||||
|
||||
Reference in New Issue
Block a user