package horse

type RaceID int32

// Race is the internal data about a race.
type Race struct {
	ID        RaceID `json:"race_id"`
	Name      string `json:"name"`
	Thumbnail int    `json:"thumbnail"`
	// Some careers contain unusual versions of races, e.g. Tenno Sho (Spring)
	// in Hanshin instead of Kyoto for Narita Taishin and Biwa Hayahide.
	// For such races, this field holds the normal race ID.
	Primary RaceID `json:"primary"`
}

type SaddleID int32

// Saddle is the internal data about a race win saddle.
type Saddle struct {
	ID    SaddleID   `json:"saddle_id"`
	Name  string     `json:"name"`
	Races []RaceID   `json:"races"`
	Type  SaddleType `json:"type"`
	// Saddles that involve alternate races are themselves alternate.
	// For such saddles, this field holds the normal saddle ID.
	Primary SaddleID `json:"primary"`
}

type SaddleType int8

const (
	// Saddle for multiple race wins, e.g. Classic Triple Crown, Dual Grand Prix, &c.
	SaddleTypeHonor SaddleType = iota
	SaddleTypeG3
	SaddleTypeG2
	SaddleTypeG1
)

type ScenarioID int8

// Scenario is metadata about a career scenario.
type Scenario struct {
	ID    ScenarioID `json:"scenario_id"`
	Name  string     `json:"name"`
	Title string     `json:"title"`
}
