package report

import "github.com/google/uuid"

type ShipClass struct {
	Name     string `json:"name"`
	Drive    Float  `json:"drive"`
	Armament uint   `json:"armament"`
	Weapons  Float  `json:"weapons"`
	Shields  Float  `json:"shields"`
	Cargo    Float  `json:"cargo"`
	Mass     Float  `json:"mass"`
}

type OthersShipClass struct {
	Race string `json:"race"`
	ShipClass
}

type ShipProduction struct {
	Planet   uint   `json:"planet"`   // Галактический номер планеты
	Class    string `json:"class"`    // Наименование типа строящегося корабля
	Cost     Float  `json:"cost"`     // Стоимость постройки одного такого корабля (в производственных ед.) без учета расходов на добычу сырья
	ProdUsed Float  `json:"prodUsed"` // Сколько производственных единиц уже было затрачено на постройку этого корабля (уже учитывая производство сырья)
	Percent  Float  `json:"percent"`  // Процент завершения активного производства
	Free     Float  `json:"free"`     // Свободный производственный потенциал
}

type IncomingGroup struct {
	Origin      uint  `json:"origin"`
	Destination uint  `json:"destination"`
	Distance    Float `json:"distance"`
	Speed       Float `json:"speed"`
	Mass        Float `json:"mass"`
}

type LocalGroup struct {
	OtherGroup
	ID    uuid.UUID `json:"id"`
	State string    `json:"state"`
	Fleet *string   `json:"fleet"`
}

type OtherGroup struct {
	Number      uint             `json:"number"`
	Class       string           `json:"class"`
	Tech        map[string]Float `json:"tech"`
	Cargo       string           `json:"cargo"`
	Load        Float            `json:"load"`
	Destination uint             `json:"destination"`
	Origin      *uint            `json:"origin,omitempty"`
	Range       *Float           `json:"range,omitempty"`
	Speed       Float            `json:"speed"`
	Mass        Float            `json:"mass"`
}

type UnidentifiedGroup struct {
	X Float `json:"x"`
	Y Float `json:"y"`
}

type LocalFleet struct {
	Name        string `json:"name"`
	Groups      uint   `json:"groups"`
	Destination uint   `json:"destination"`
	Origin      *uint  `json:"origin,omitempty"`
	Range       *Float `json:"range,omitempty"`
	Speed       Float  `json:"speed"`
	State       string `json:"state"`
}
