Split Atlas chunks into tiles and objects

This commit is contained in:
Marc Di Luzio 2020-07-03 17:00:04 +01:00
parent 74dcae6542
commit 062f9cfec8
11 changed files with 284 additions and 169 deletions

View file

@ -108,6 +108,7 @@ func TestServer_Radar(t *testing.T) {
assert.NotZero(t, resp.Range, "Radar should return valid range")
w := int(resp.Range*2 + 1)
assert.Equal(t, w*w, len(resp.Tiles), "radar should return correct number of tiles")
assert.Equal(t, w*w, len(resp.Objects), "radar should return correct number of objects")
}
func TestServer_Rover(t *testing.T) {

View file

@ -59,6 +59,11 @@ func (s *Server) Rover(ctx context.Context, req *rove.RoverRequest) (*rove.Rover
return nil, fmt.Errorf("error getting rover: %s", err)
} else {
var inv []byte
for _, i := range rover.Inventory {
inv = append(inv, byte(i.Type))
}
response = &rove.RoverResponse{
Name: rover.Name,
Position: &rove.Vector{
@ -66,7 +71,7 @@ func (s *Server) Rover(ctx context.Context, req *rove.RoverRequest) (*rove.Rover
Y: int32(rover.Pos.Y),
},
Range: int32(rover.Range),
Inventory: rover.Inventory,
Inventory: inv,
Integrity: int32(rover.Integrity),
}
}
@ -88,10 +93,11 @@ func (s *Server) Radar(ctx context.Context, req *rove.RadarRequest) (*rove.Radar
} else if rover, err := s.world.GetRover(resp); err != nil {
return nil, fmt.Errorf("error getting rover attributes: %s", err)
} else if radar, err := s.world.RadarFromRover(resp); err != nil {
} else if radar, objs, err := s.world.RadarFromRover(resp); err != nil {
return nil, fmt.Errorf("error getting radar from rover: %s", err)
} else {
response.Objects = objs
response.Tiles = radar
response.Range = int32(rover.Range)
}