TourWatcher thread monitors the server's output, waiting for messages. The message types are listed below with a brief description of what the
TourWatcher does in response:
create n x z
Create a distributed sprite in the local world with name n at position (x, 0, z). By default, the sprite will face forward along the positive z-axis.
wantDetails A P
The client at IP address A and port P is requesting information about the local sprite on this machine. Gather the data and send the data back in a "
detailsFor n1 x1 z1 r
Create a distributed sprite with the name n1 at location (x1,0,z1), rotated r radians away from the positive z-axis.
n <move or rotation command
> can be one of
rotClock. The distributed sprite with name
n is moved or rotated.
rotCClock is a counter-clockwise rotation, and
rotClock is clockwise.
A client has left the world, so the distributed sprite with name n is detached (deleted).
Almost all the messages are related to distributed sprites in the local world: creation, movement, rotation, and deletion. Therefore, these tasks are handled by
TourWatcher, which maintains its sprites in a
HashMap, mapping sprite names to
private HashMap visitors; // stores (name, sprite object) pairs
run() method in
TourWatcher accepts a message from the server and tests the ...