Commit Graph
168 Commits
Author SHA1 Message Date
hba56 748a516d16 Boats not moving working on fix
Merge remote-tracking branch 'remotes/origin/sprint4_master' into story36

# Conflicts:
#	mock/src/main/java/seng302/DataInput/XMLReader.java
#	visualiser/src/main/java/seng302/Controllers/RaceController.java
#	visualiser/src/main/java/seng302/Mock/StreamedRace.java
#	visualiser/src/main/java/seng302/Model/ResizableRaceCanvas.java
#	visualiser/src/main/resources/scenes/race.fxml

#story[878]
2017-05-22 17:45:45 +12:00
fjc40 c8157f3476 Merge remote-tracking branch 'origin/sprint4_master' into story31.2_alternateTack
# Conflicts:
#	visualiser/src/main/java/seng302/Mock/StreamedRace.java
#	visualiser/src/main/java/seng302/Model/ResizableRaceCanvas.java
Resolved.
2017-05-22 14:26:45 +12:00
zwu18 b9d696ef12 Sparkline has a set x-axis now to prevent sparkline constantly re-adjusting axis.
#story[876]
2017-05-21 23:06:51 +12:00
hba56 4b2e90f54b can now toggle the boats time on and off
#story[878]
2017-05-20 21:04:03 +12:00
hba56 a24dda2fd8 boats have an annotation beside them that shows time since last mark passed
#story[878]
2017-05-20 20:40:08 +12:00
hba56 9eb4e3daea boats now calculate the time since last mark
-the raceclock is passed around so that the time can be tracked
-time from start to mark 1 is wrong
 #story[878]
2017-05-20 17:22:52 +12:00
fjc40 de0abf94e0 Mock.Race:
Fixed an issue where boats sometimes sailed towards the wind when attempting to turn from bearing just under 360 degrees to a bearing just over 360 degrees.
This required an update to the boundary detection code.

Visualiser:
Appear to have fixed issue where clock didn't display correctly. Previous commit only fixed certain circumstances.

#story[873]
2017-05-20 00:18:42 +12:00
fjc40 81ed07330b Fixed the bug where the race clock wasn't visible some of the time.
It appears to have been due to a threading/javaFX thread issue with prop1.bind(prop2).
2017-05-19 21:50:14 +12:00
Jessica McAuslin ef9d8884d4 Sparkline methods Javadoc'd
- createSparkline
- updateSparkline

#story[876]
2017-05-19 21:39:25 +12:00
Jessica McAuslin 3f2ad8886e Fixed FPS issues and beautified sparkline display
- set upper and lower bounds for axis height
- formatted Y axis to show/hide necessary info
- reduced some looped actions
- added conditions for the first leg
- all boats start in 'last' place

#story[876]
2017-05-19 21:21:00 +12:00
fjc40 c011ccb11b Did some minor refactoring of Mock module...
Added comments/documentation to most classes.
Cleaned up heaps of repeated code, dead code, redundant stuff, etc...

Mock.App:
Now actually exits the program if catastrophic errors occur, rather than silently doing nothing.

Mock.Constants:
Added race prestart and preparatory times.
Removed TEST_VELOCITIES.

Mock.PolarParser:
Now uses Bearing class.

Mock.Angle:
Now implements the Comparable interface.
Also supports .equals.

Mock.Azimuth and Bearing:
Can convert between them easily.

Mock.Boat:
Now uses Bearing, and has some helper functions like setVMG, calculateMetersTravelled(time), moveforwards(distance, time).

Mock.Marker:
Removed. This wasn't really used, and was redundant.

Mock.GPSCoordinate:
Moved a lot of helper GPS related functions into the GPSCoordinate class, instead of being scattered around the codebase.

Mock.Polars:
Polars now uses Bearing.

Mock.VMG:
Now uses Bearing.

Mock.Race:
Added a RaceStatusEnum member.
Added a RaceTypeEnum member.
Now uses Bearing/Azimuth.
Moved the message creation/sending into their own functions.
The RaceStatus updates correctly through out the race (Prestart, Warning, Preparatory, Started, Finished).

Network.RaceStatusEnum:
Added race status enum.

Network.RaceTypeEnum:
Added.
2017-05-19 16:12:47 +12:00
Joseph Gardner eba2eb3cd6 Boats no longer change colour during a race and fixed the sparklines for the boats to be in the correct position #story[876] 2017-05-18 16:39:16 +12:00
fjc40 60458f0f7a Merge commit '7990ac9d2ee8c71d50606813e21a0674f442464f' into story31.2_alternateTack.
This commit (7990ac9d2e) was the commit from master that story49 was merged into.
Everything appears to be working.

# Conflicts:
#	mock/src/main/java/seng302/App.java
#	mock/src/main/java/seng302/Constants.java
#	mock/src/main/java/seng302/DataInput/RaceXMLReader.java
#	mock/src/main/java/seng302/DataInput/RegattaXMLReader.java
#	mock/src/main/java/seng302/Model/Boat.java
#	mock/src/main/java/seng302/Model/Event.java
#	mock/src/main/java/seng302/Model/Race.java
#	mock/src/test/java/seng302/Data/BoatDataTest.java
#	mock/src/test/java/seng302/Data/RaceDataTest.java
#	mock/src/test/java/seng302/Model/BoatTest.java
#	mock/src/test/java/seng302/Model/RaceXMLTest.java
#	visualiser/src/main/java/seng302/Controllers/StartController.java
#	visualiser/src/main/java/seng302/RaceXMLReader.java
Manually resolved conflicts. :(
2017-05-18 13:44:02 +12:00
zwu18 74d3996f6c Merge remote-tracking branch 'origin/story34_v2' into story34_v2
# Conflicts:
#	visualiser/src/main/java/seng302/Controllers/RaceController.java
#	visualiser/src/main/java/seng302/Mock/StreamedRace.java
2017-05-17 20:08:31 +12:00
zwu18 f19a543b68 Changed line appearance and colour.
-Line displayed will no longer plot a point every update.
-Line colours are based on the colours displayed in the race.
-Race colours defined in ResizableRaceCanvas have been used for the lines.
-As boats change colour depending on placement (unintended), the lines will also do this.

#story[876]
2017-05-17 20:04:03 +12:00
Jessica McAuslin 2e1f8a2e9a Lowered frequency sparkline updates
- sparkline only updates when a boat passes a point
- all lines start in the middle
- slow frame rate issue resolved

#story[876]
2017-05-17 19:15:28 +12:00
fjc40 be9f19eae5 Mock.Polars:
Finished PolarsTest test cases.

Fixed a number of javadoc errors across the codebase.

#story[873]
2017-05-17 13:33:34 +12:00
David Wu f999967cd5 Implemented functionality for sparkline to update throughout race.
-Sparkline reads in initial boats in race.
-Sparkline updates throughout the race.
-Sparkline updates are displayed on GUI.

#story[876]
2017-05-16 17:13:52 +12:00
Jessica McAuslin 7647a93d7a Implemented an updating sparkline
- sparkline is set with X number of lines
- sparkline height fits X lines
- lines are updated regularly
- size is adjusted relevant to plotted points

#story[876]
2017-05-15 20:59:16 +12:00
Fan-Wu Yang b065b8d9c7 Merged Mock49 and fixed bugs
- Error where mock would not read in the files when running from the jar.
- Error where the AC35 stream now no longer sends us packets with information that is set for 0 for boat location.
#story[881] #pair[fwy13, esa46
2017-05-15 15:49:38 +12:00
Fan-Wu Yang 7bfb6bb968 Merge remote-tracking branch 'origin/49Mock' into Story49Vis
# Conflicts:
#	visualiser/src/test/java/seng302/Model/RaceXMLTest.java
2017-05-15 14:01:16 +12:00
Fan-Wu Yang f011b4117e Added and removed javadoc tests that were making errors in the code, #story[881] 2017-05-14 16:24:17 +12:00
Fan-Wu Yang a7a065825a Fixed thread issue on windows
- Added a Platform.runLater on the Visualiser loops so that the notifying observers do not try to call it, where it is a non java-fx loop
#story[881]
2017-05-14 16:18:11 +12:00
Fan-Wu Yang 156e0bfdd5 removed blocking queue that somehow appeared again
- Removed blolcking queue from Visualiser Input that had appeared miraculously
#story[881]
2017-05-14 16:14:45 +12:00
Fan-Wu Yang 294627074d Commented out throws in the BinaryMessageDecoder for messages we ignore as they were not errors and instead were causing the program to stop if they're received
- commented out throw from default, chatter text, yachactioncode, yachteventcode, displaytextmessage states
#story[881]
2017-05-14 16:13:37 +12:00
Fan-Wu Yang b2d9e44d03 Deleted Unecessary code
- StreamedRace no longer sets the positions of boats
- The Visualiser has blocking queue removed
- The Regatta XML Reader not longer has a variable to the deleted Regatta class
#story[881]
2017-05-14 15:36:40 +12:00
Fan-Wu Yang 30beef29ba Deleted Regatta XMl reading that is deprecated
- No longer in use XML reader has been deleted
#story[881]
2017-05-14 15:29:52 +12:00
Fan-Wu Yang 3570e1283f Deleted Race class
- Delete dependency on Race class from Streamed Race as there is no need for extention after the split of Visualiser and Mock.
#story[881]
2017-05-14 15:24:19 +12:00
Fan-Wu Yang f8c6e500fb Deleted deprecated Race XML reader
- Deleted RaceXMLReader class
- Deleted Corresponding Tests
#story[882]
2017-05-14 15:14:32 +12:00
Erika Savell 493932b93f Merged with visualiser side of mark boats
#story[881]
2017-05-12 10:27:55 +12:00
Erika Savell 0ed02962a1 Merge branch 'Story49Vis' into 49Mock
# Conflicts:
#	visualiser/src/main/java/seng302/Mock/StreamedCourseXMLReader.java
#	visualiser/src/main/java/seng302/Model/CompoundMark.java
#	visualiser/src/main/java/seng302/Model/ResizableRaceCanvas.java
#	visualiser/src/main/java/seng302/VisualiserInput.java
2017-05-12 09:53:07 +12:00
Jessica McAuslin d294ee7994 Deleted redundant and deprecated code (Visualiser)
- References to deprecated objects replaced
- Deprecated Constants class removed
- general redundant code deleted
2017-05-11 15:44:58 +12:00
Erika Savell ffa3d530ae Event takes string and sets time of race
- RaceXmlReaders can handle strings now
- Not working with visualiser, gps coords may be worng

#story[881]
2017-05-10 21:46:24 +12:00
fjc40 693da8a82a Removed some unneccessary code and comments from PolarParser.parse(...).
Fixed a bug where the polar parser would attempt to insert (wind speed, windspeed, windangle) instead of (windspeed, windangle, boatspeed).
Removed some unused constructors from RaceXMLReader, and fixed a bug where it wouldn't actually use the polar table correctly.
Boat's constructor now expects a Polars table.
Added some comments to the Polars class, and specified the HashMap's template parameters
Added PolarsTest - which needs to be implemented properly when the VMG calculations have been added.

#story[900]
2017-05-10 17:21:18 +12:00
cbt24 91b1773703 Commented out obsolete tests, may be useful if refactored.
#story[881]
2017-05-10 17:02:25 +12:00
cbt24 f31a987787 Reads BoatDataSource into StreamedCourseXMLReader so the latter can function as a single source of static information for the race.
- Mock.StreamedCourseXMLReader populates participant and mark list from BoatDataSource
- Added CompoundMarker class to accommodate Mark data from Boat XML
- Had to check for Yacht type in Visualiser.BoatXMLReader
- Added a missing coordinate value to raceTest.xml
- Marker class still exists due to large number of tests, which should be transitioned to CompoundMark
- IMPORTANT: race is no longer functional

#story[881]
2017-05-10 16:56:21 +12:00
Fan-Wu Yang 045e69a637 Deleted and Fixed some redundant code
- Deleted some unused functions
- Fixed NullPointerException for Marks
#story[881] #pair[fwy13,jam339]
2017-05-10 15:51:55 +12:00
Fan-Wu Yang 9e19ddb1f4 Story 49 Marks move with boat location.
- Commented out blocking array as it was unecessary
- Added Observable list for markers to the race canvas
- Added SourceId's to Marker
- Added updating Markers from the Streamed Race loop.
#story[881] #pair[fwy13, jam339]
2017-05-10 14:45:42 +12:00
cbt24 69cd44bda8 Reads data from boat XML file
- Creates marks for building CompoundMarks (formerly Markers)
- Rearranged Boat constructor and removed velocity

#story[782]
2017-05-10 13:57:20 +12:00
Jessica McAuslin 43757b34d1 General code tidy up (Visualiser)
- access modifiers adjusted
- unused declarations removed
- spelling fixes
- removed redundant code
2017-05-08 20:45:00 +12:00
Jessica McAuslin 2d983eccfd General code tidy up
- access modifiers adjusted
- unused declarations removed
- spelling fixes
- removed redundant code
2017-05-08 20:21:20 +12:00
Joseph Gardner e1ba2ae5b6 Now reads course wind direction from the live stream, so the wind arrow now changes when the wind changes. #story[882] 2017-05-08 17:23:55 +12:00
fjc40 a32775eab6 Fixed a few javadoc issues. 2017-05-08 10:59:13 +12:00
fjc40 b247244665 Did some large tidy ups, refactoring, and documenting.
Network:
Moved the Network message classes from the Utils package to the Messages package.
Renamed BoatLocationMessage to BoatLocation and BoatStatusMessage to BoatStatus to be consistent with other message classes.
Renamed the BoatStatus enumeration to BoatStatusEnum as it conflicted with BoatStatus (the message).
Moved the BoatStatusEnum and MessageType enumerations from the Utils package to the Messages/Enums package.
Changed the BoatStatusEnum and MessageType enumerations to use map look ups in the enum.fromByte(b) method - this means that there's less copy and pasted values, and the fromByte function doesn't need to be modified if new enumerations are added.
Added a sequenceNumber member to the Heartbeat class.
Added an InvalidMessageException in the package Networking/Exceptions. This is thrown when a message is read, but it is invalid in some way.
Refactored/tidied up the Networking/BinaryMessageEncoder and Decoder classes. The decoder throws InvalidMessageExceptions instead of returning null.

Visualiser:
VisualiserInput now wraps a DataInputStream around the socket. This provides the stream.readFully(buffer) function, which is a blocking read, removing the need for busy wait loops. Replaced the getBytes() function with getNextMessage() and getNextMessageBytes(). These read the next message from the socket, and return it as a message object and a byte array, respectively.
Changed the current heartbeat timeout to 10 seconds. Added some work-in-progress code to attempt to reconnect when connection is lost. It currently doesn't work. I think Fan-Wu was doing a proper implementation, however.
VisualiserInput also has a queue of received events. Currently not really used, but could be useful in the future. Events get added as they are read.
Changed VisualiserInputs main loop to use instanceOf instead of switch+case. Feedback wanted - are there any downsides to using this instanceOf method?

#story[778,782]
2017-05-08 03:29:33 +12:00
fjc40 466e22437b Visualiser. The nullptr issues relating to the XML data files appears to be fixed. Essentially, the StartController.startRaceNoScaling() function was being called as soon possible, before it was even ready - setRaceClock either hadn't been called or hadn't finished executing yet, so the StartController.raceClock member was null, causing crashes.
Also changed the while(visualiserInput.getRaceStatus() == null) loops to an if-then-return early block. They caused the program to freeze if the race data source wasn't sending any race status messages (currently, our mock doesn't send any once the race has finished).

#story[782]
2017-05-07 18:34:44 +12:00
fjc40 020c0329b0 Merge remote-tracking branch 'origin/TCPDisconnection' into submission 2017-05-07 16:55:07 +12:00
fjc40 83ce9b99d2 Mockoutput's main loop now pops messages off the message queue, rather than iterating over it like an array, and clearing it (this could have threading issues where the iteration starts (with e.g., 5 messages), as it is sending the messages another one is added, and then it ends up clearing the sent messages, and the unsent message.
Made a few quick fixes (to be tidied a bit later) to Mock.Race class. It now has this.startTime, instead of the AnimationTimers having their own starTime value. RaceStatus messages are now sent properly (still need a refactor though), so they actually send the race star time - this means that the visualizer using the mock data source displays the correct time instead of (midnight, jan 1, 1970).

Removed one of the constructors from RaceStatus - it allowed for constructing and sending essentially invalid RaceStatus messages, and simply wasn't needed.

Added a temporary title ("RaceVision - Team 7") to the visualiser - may be worth changing when we decide on a team name.

Fixed a bug with the order of operations in visualiser.StartController.countdownTimer(). Calling begin race before hiding panes caused them to never be hidden.

Mock.Event. Changed the scaleFactor to 5x for the time being - to easier testing of things like pre-race timers, countdowns, etc...

#story[778,782]
2017-05-07 15:52:34 +12:00
David Wu 61ecdc2269 Merge branch 'submission' of https://eng-git.canterbury.ac.nz/seng302-2017/team-7 into submission
# Conflicts:
#	visualiser/src/main/java/seng302/Controllers/MainController.java
#	visualiser/src/main/java/seng302/Controllers/StartController.java
#	visualiser/src/main/java/seng302/Model/Race.java
2017-05-06 20:23:01 +12:00
David Wu 61afe8d608 Created finish view to see when a race finishes.
-Implemented FinishController
-Fixed mock not sending Finish race status.

#Story[782]
2017-05-06 20:14:10 +12:00
cbt24 c038010bd2 Draws track for racing boats only to reduce information clutter.
- Add track point only when boat status is "Racing"

#story[782]
2017-05-06 19:22:20 +12:00