Implement rover radar and use and test it
This commit is contained in:
parent
e81ceecffc
commit
ae369715ec
2 changed files with 31 additions and 3 deletions
|
@ -133,11 +133,17 @@ type RadarDescription struct {
|
|||
|
||||
// RadarFromRover can be used to query what a rover can currently see
|
||||
func (w World) RadarFromRover(id uuid.UUID) (RadarDescription, error) {
|
||||
if _, ok := w.Rovers[id]; ok {
|
||||
if r1, ok := w.Rovers[id]; ok {
|
||||
var desc RadarDescription
|
||||
|
||||
// TODO: Gather nearby rovers within the range
|
||||
// Gather nearby rovers within the range
|
||||
for _, r2 := range w.Rovers {
|
||||
if r1.Id != r2.Id && r1.Pos.Distance(r2.Pos) < r1.Attributes.Range {
|
||||
desc.Rovers = append(desc.Rovers, r2.Pos)
|
||||
}
|
||||
}
|
||||
|
||||
return RadarDescription{}, nil
|
||||
return desc, nil
|
||||
} else {
|
||||
return RadarDescription{}, fmt.Errorf("no rover matching id")
|
||||
}
|
||||
|
|
|
@ -78,3 +78,25 @@ func TestWorld_GetSetMovePosition(t *testing.T) {
|
|||
pos.Add(Vector{0, attribs.Speed * float64(duration)}) // We should have move one unit of the speed north
|
||||
assert.Equal(t, pos, newpos, "Failed to correctly move position for rover")
|
||||
}
|
||||
|
||||
func TestWorld_RadarFromRover(t *testing.T) {
|
||||
world := NewWorld()
|
||||
a := world.SpawnRover()
|
||||
b := world.SpawnRover()
|
||||
c := world.SpawnRover()
|
||||
|
||||
// Get a's attributes
|
||||
attrib, err := world.RoverAttributes(a)
|
||||
assert.NoError(t, err, "Failed to get rover attribs")
|
||||
|
||||
// Warp the rovers so a can see b but not c
|
||||
assert.NoError(t, world.WarpRover(a, Vector{0, 0}), "Failed to warp rover")
|
||||
assert.NoError(t, world.WarpRover(b, Vector{attrib.Range - 1, 0}), "Failed to warp rover")
|
||||
assert.NoError(t, world.WarpRover(c, Vector{attrib.Range + 1, 0}), "Failed to warp rover")
|
||||
|
||||
radar, err := world.RadarFromRover(a)
|
||||
assert.NoError(t, err, "Failed to get radar from rover")
|
||||
assert.Equal(t, 1, len(radar.Rovers), "Radar returned wrong number of rovers")
|
||||
assert.Equal(t, Vector{attrib.Range - 1, 0}, radar.Rovers[0], "Rover on radar in wrong position")
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue