45 lines
997 B
Go
45 lines
997 B
Go
package game
|
|
|
|
import "github.com/google/uuid"
|
|
|
|
type Race struct {
|
|
ID uuid.UUID `json:"id"`
|
|
Name string `json:"name"`
|
|
TTL uint `json:"ttl"`
|
|
Extinct bool `json:"extinct"`
|
|
Votes Float `json:"votes"`
|
|
VoteFor uuid.UUID `json:"voteFor"`
|
|
Relations []RaceRelation `json:"relations"`
|
|
Tech TechSet `json:"tech"`
|
|
Sciences []Science `json:"science,omitempty"`
|
|
ShipTypes []ShipType `json:"shipType,omitempty"`
|
|
}
|
|
|
|
type Relation string
|
|
|
|
func (r Relation) String() string {
|
|
return string(r)
|
|
}
|
|
|
|
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)
|
|
}
|
|
|
|
func (r Race) FlightDistance() float64 {
|
|
return r.TechLevel(TechDrive) * 40
|
|
}
|
|
|
|
func (r Race) VisibilityDistance() float64 {
|
|
return r.TechLevel(TechDrive) * 30
|
|
}
|