1293 power ups
# Changes
* Token Objects added to represent pickups along with their corresponding mesh objects
* Yachts now have a powerup attribute
* Power up attribute is checked in Game State updates and updates are now done appropriately, dependant on this power up
* RaceViewController now has a grid pane to show the different power up icons. These will display when a token is picked up and blink when they are about to dissapear
* Token generator created. This generates token locations randomly in the map in circles centred between the legs of the race
* Added Yacht EventCodes for the different type of power / up / down status effect actions
# Refactor
* Moved Timer tasks such as spawn tokens and update wind into the GameState where they belong
* Moved the creation of some messages in odd places, server side, into the MessageFactory class
# Testing
* Manual test done
* Junits created for the random token generator
See merge request !77
Generates a location between any leg of the race in a random angle / distance of the radius of the centre point of the two gates to one of the gates
#story[1293]
- fix last button no longer default focused when loading keybinding dialog
- fix click and mouse exit still focused on button
- closing keybinding does not focus on chat anymore
#story[1273]
Added a hack to bumper so that the collision distance is larger than the regular collision distance
Wind walker now makes you go at you max speed rather than VMG speed
#story[1293]
1273 changing cameras
# Multiple Camera Views
## 3 Camera Views Implemented
1. Normal 3D (Isometric)
2. Top Down Perspective
3. Chase Cam (Over the Shoulder)
- Isometric and Top Down Perspectives can Pan within limits.
- Chase Cam rotates the camera around the boat. (While still following it)
- All camera views can Zoom.
# Testing
No testing completed other than manually testing myself. A proper manual test should be completed by the merger.
See merge request !76
- Has panning bounds, zoom bounds, and general tidy up.
- Now correctly observes the boat object rather than getting information from both the boat object AND the client yacht model.
Top Down Camera:
- Can only pan within certain bounds now, and will continue to follow the boat regardless.
- Can only zoom within certain bounds now.
Isometric Camera:
- Nothing changed.
#tags [1273]
Story1278 keybindings
# Changes
- Added customised action key binding for all boat actions
- Users can select the turning mode (continuously turning mode, and the default turning mode)
- Refined UI design for key bindings
- Added animation which mouse enters/exits the setting button, and also prompt text to guide users to press key
- Popup window to inform users if their key assignment is successful or not
# Testing
## Manual testing log as below (all passed according to the assigner)
- if a player toggles the turning mode toggle button, the labels for upwind and downwind will be changed correspondingly
- if a player clicks the "reset" button, all the key binding settings will be reset to default
- if a player assigns a key which is already is in use, a popup box will inform the assignment is failed, and action will be changed back
- if a player assigns a key successfully, a popup will inform the success, and the new key binding will appear on the button
- A player can change their key bindings before the race starts and during the race
See merge request !73
Story1274 custom boat stats
# Changes
- Added 3 areas for game play variation with the boats (stats)
- Max speed
- Handling
- Acceleration
- Added stat bars on the customize boat screen so players can see the stats
# Testing
- Manual testing
- No JUnits made since no real processing methods were added
See merge request !72