77 lines
1.7 KiB
Go
77 lines
1.7 KiB
Go
package client
|
|
|
|
import (
|
|
"galaxy/client/world"
|
|
"galaxy/model/report"
|
|
)
|
|
|
|
const (
|
|
entityClassUnknown int = iota - 1
|
|
entityClassLocalPlanet
|
|
entityClassOthersPlanet
|
|
entityClassFreePlanet
|
|
entityClassUnidentifiedPlanet
|
|
)
|
|
|
|
type registry struct {
|
|
report *report.Report
|
|
localPlanetIndex map[world.PrimitiveID]int
|
|
unidentifiedPlanetIndex map[world.PrimitiveID]int
|
|
}
|
|
|
|
func newRegistry() *registry {
|
|
return ®istry{
|
|
localPlanetIndex: make(map[world.PrimitiveID]int),
|
|
unidentifiedPlanetIndex: make(map[world.PrimitiveID]int),
|
|
}
|
|
}
|
|
|
|
func (r *registry) clear(report *report.Report) {
|
|
r.report = report
|
|
clear(r.localPlanetIndex)
|
|
clear(r.unidentifiedPlanetIndex)
|
|
}
|
|
|
|
func (r *registry) entityClass(id world.PrimitiveID) int {
|
|
if r.isLocalPlanet(id) {
|
|
return entityClassLocalPlanet
|
|
}
|
|
if r.isUnidentifiedPlanet(id) {
|
|
return entityClassUnidentifiedPlanet
|
|
}
|
|
return entityClassUnknown
|
|
}
|
|
|
|
func (r *registry) registerLocalPlanet(id world.PrimitiveID, index int) {
|
|
r.localPlanetIndex[id] = index
|
|
}
|
|
|
|
func (r *registry) isLocalPlanet(id world.PrimitiveID) bool {
|
|
_, ok := r.localPlanetIndex[id]
|
|
return ok
|
|
}
|
|
|
|
func (r *registry) localPlanet(id world.PrimitiveID) (*report.LocalPlanet, bool) {
|
|
i, ok := r.localPlanetIndex[id]
|
|
if !ok {
|
|
return nil, false
|
|
}
|
|
if i > len(r.report.LocalPlanet)-1 {
|
|
return nil, false
|
|
}
|
|
return &r.report.LocalPlanet[i], true
|
|
}
|
|
|
|
func (r *registry) registerUnidentifiedPlanet(id world.PrimitiveID, index int) {
|
|
r.unidentifiedPlanetIndex[id] = index
|
|
}
|
|
|
|
func (r *registry) isUnidentifiedPlanet(id world.PrimitiveID) bool {
|
|
_, ok := r.unidentifiedPlanetIndex[id]
|
|
return ok
|
|
}
|
|
|
|
func (c *client) createShipClass(n string, D float64, A uint, W float64, S float64, C float64) {
|
|
|
|
}
|