RaceState has a MarkRoundingSequenceMember.
The temporary rounding line drawing in canvas uses MarkRoundingSequence.
MockRace now uses MarkRoundingSequence.
#story[1185]
Slightly refactored ResizableRaceCanvas - removed a redundant drawPoint() function, functions which alter the gc stroke call save/restore.
Text is drawn black, at 20pts.
The drawBoats() function: instead of drawing everything for each boat, one boat at a time, it draws the track points for all boats, then wake for all boats, etc..., to have better layering.
issue #18
Created FrameRateTracker which can be used to track framerate.
Updated RequestToJoinEnum and JoinAcceptanceEnum to match the agreed connection API.
Added AssignPlayerBoat message, which is used internally on the client to assign the player a source ID once they have connected.
Fixed some race conditions in the MessageRouter.
Updated ConnectionAcceptor.CheckClientConnection to wait slightly longer before removing connection (there was a slight race condition before).
Race no longer has a reference to LatestMessages. LatestMessages no longer has specific messages types in it.
Created RaceState class, which contains the state that is shared between VisualiserRaceState and MockRaceState (currently only used on visualiser).
Split VisualiserRace into VisualiserRaceState and VisualiserRaceService.
Added the VisualiserRace commands (BoatLocatonCommand, RaceStatusCommand, etc...).
Slightly increased the preferred width of race.fxml table columns.
issues #27#37#35
#story[1095]
-updated port and starboard boat checks
-added gps method to check if on correct side of a line
-updated pos check method to make boats round marks with the new tech
# Conflicts:
# racevisionGame/src/main/java/mock/app/ConnectionAcceptor.java
# racevisionGame/src/main/java/mock/app/Event.java
# racevisionGame/src/main/java/mock/model/commandFactory/TackGybeCommand.java
# racevisionGame/src/main/java/mock/model/commandFactory/VMGCommand.java
-updated port and starboard boat checks
-added gps method to check if on correct side of a line
-updated pos check method to make boats round marks with the new tech
# Conflicts:
# racevisionGame/src/main/java/mock/app/ConnectionAcceptor.java
# racevisionGame/src/main/java/mock/app/Event.java
# racevisionGame/src/main/java/mock/model/commandFactory/TackGybeCommand.java
# racevisionGame/src/main/java/mock/model/commandFactory/VMGCommand.java
Also got client-server handshake working. Multiple clients can connect and control their own boat.
The client's boat has a larger black triangle drawn around it. Probably needs tidying up.
Added isClientBoat boolean to VisualiserBoat.
WindGenerator is now an interface, implemented by ConstantWindGenerator (useful for testing) and RandomWindGenerator. Added ConstantWindGeneratorTest.
RandomWindGenerator was formerly WindGenerator.
The WindGenerator is passed in to MockRace.
CommandFactory throws a CommandConstructionException if it cannot create a command.
MessageSerialiser and MessageDeserialiser correctly terminate on error.
Readded VisualiserInput's switch statement in the main loop, pending a refactor.
Removed the sleep statement from LobbyController - it was blocking javaFX thread.
Lobby.fxml: moved buttons and text input into grid panes, so they don't break when you resize screen.
Added some test object creation functions in several test classes (MockRaceTest.createMockRace(), BoatXMLReaderTest.createBoatDataSource(), etc...).
#story[1095]
- Figured out the different situations that can occur using accurate points of sail
- Mathed out the rotation angle for each situation
- Manual testing carried out by running simulations
- Manual testing carried out using pen and paper
#story[1098]