package game import ( "github.com/google/uuid" ) type Race struct { ID uuid.UUID `json:"id"` Name string `json:"name"` Extinct bool `json:"extinct"` Vote uuid.UUID `json:"vote"` Relations []RaceRelation `json:"relations"` Tech TechSet `json:"tech"` Sciences []Science `json:"science,omitempty"` ShipTypes []ShipType `json:"shipType,omitempty"` } type Relation string const ( RelationWar Relation = "War" RelationPeace Relation = "Peace" ) type RaceRelation struct { RaceID uuid.UUID `json:"raceId"` Relation Relation `json:"relation"` } func (r Race) TechLevel(t Tech) float64 { return r.Tech.Value(t) } // TODO: refactor to separate method with *Race as parameter func (r *Race) SetTechLevel(t Tech, v float64) { r.Tech = r.Tech.Set(t, v) } func (r Race) FlightDistance() float64 { return r.TechLevel(TechDrive) * 40 } func (r Race) VisibilityDistance() float64 { return r.TechLevel(TechDrive) * 30 }