101 lines
2.2 KiB
Go
101 lines
2.2 KiB
Go
package game
|
|
|
|
type GameIdentifier string
|
|
type RaceIdentifier string
|
|
|
|
type Game struct {
|
|
Id GameIdentifier
|
|
Name string
|
|
Schedule string // TODO: implement somehow
|
|
Turn uint
|
|
Races []Race
|
|
Planets []Planet
|
|
WarState map[RaceIdentifier]RaceIdentifier
|
|
}
|
|
|
|
type Race struct {
|
|
Id RaceIdentifier
|
|
Name string
|
|
Drive float64
|
|
Weapons float64
|
|
Shields float64
|
|
Cargo float64
|
|
}
|
|
|
|
type PlanetProduction string
|
|
|
|
const (
|
|
ProductionMaterial PlanetProduction = "MAT"
|
|
ProductionCapital PlanetProduction = "CAP"
|
|
ProductionDrive PlanetProduction = "DRIVE"
|
|
ProductionWeapons PlanetProduction = "WEAPONS"
|
|
ProductionShields PlanetProduction = "SHIELDS"
|
|
ProductionCargo PlanetProduction = "CARGO"
|
|
|
|
ProductionScience PlanetProduction = "SCIENCE"
|
|
ProductionShip PlanetProduction = "SHIP"
|
|
)
|
|
|
|
type ProductionType struct {
|
|
Production PlanetProduction
|
|
SubjectName string
|
|
}
|
|
|
|
type Planet struct {
|
|
Number uint
|
|
Name string
|
|
Position Coordinate
|
|
Size float64
|
|
|
|
Owner RaceIdentifier
|
|
Production ProductionType
|
|
Resources float64 // Сырьё
|
|
Industry float64 // Промышленность
|
|
Population float64 // Население
|
|
|
|
Capital float64 // CAP $ - Запасы промышленности
|
|
Material float64 // MAT M - Запасы сырья
|
|
Colonists float64 // COL C - Количество колонистов
|
|
// Параметр "L" означает количество свободных производственных единиц.
|
|
}
|
|
|
|
func (p *Planet) setOwner(id RaceIdentifier) {
|
|
p.Owner = id
|
|
}
|
|
|
|
type Coordinate struct {
|
|
X, Y float64
|
|
}
|
|
|
|
type Science struct {
|
|
Name string
|
|
Drive float64
|
|
Weapons float64
|
|
Shields float64
|
|
Cargo float64
|
|
}
|
|
|
|
type ShipType struct {
|
|
Name string
|
|
Drive float64 // [0], [1...]
|
|
Armament uint
|
|
Weapons float64 // [0], [1...]
|
|
Shields float64 // [0], [1...]
|
|
Cargo float64 // [0], [1...]
|
|
}
|
|
|
|
type ShipGroup struct {
|
|
Type ShipType
|
|
Number uint
|
|
State string // TODO: kinda enum: In_Orbit, In_Space, Transfer_State, Upgrade
|
|
Load float64 // Cargo loaded - "Масса груза"
|
|
Drive float64
|
|
Weapons float64
|
|
Shields float64
|
|
Cargo float64
|
|
}
|
|
|
|
type Fleet struct {
|
|
ShipGroups []ShipGroup
|
|
}
|