Added preliminary icons for pickups

RaceView now has a grid pane to contain some icons to display power ups. These are just preliminary

ClientYacht now has a power up field that is set from recieveing messages in the Game Client, as well as observed by the RaceViewController to display the relevant icon when the powerup field is changed

#story[1245]
This commit is contained in:
William Muir
2017-09-19 23:04:17 +12:00
parent 78596ea111
commit 52d3cea592
5 changed files with 139 additions and 15 deletions
@@ -20,6 +20,8 @@ import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.geometry.Point2D;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.SubScene;
import javafx.scene.chart.LineChart;
@@ -47,10 +49,12 @@ import javafx.scene.text.Text;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import seng302.model.ClientYacht;
import seng302.model.ClientYacht.PowerUpListener;
import seng302.model.RaceState;
import seng302.model.mark.CompoundMark;
import seng302.model.mark.Mark;
import seng302.model.stream.xml.parser.RaceXMLData;
import seng302.model.token.TokenType;
import seng302.utilities.Sounds;
import seng302.visualiser.GameView3D;
import seng302.visualiser.controllers.annotations.ImportantAnnotationController;
@@ -60,6 +64,8 @@ import seng302.visualiser.controllers.dialogs.FinishDialogController;
import seng302.visualiser.fxObjects.ChatHistory;
import seng302.visualiser.fxObjects.assets_2D.WindArrow;
import seng302.visualiser.fxObjects.assets_3D.BoatObject;
import seng302.visualiser.fxObjects.assets_3D.ModelFactory;
import seng302.visualiser.fxObjects.assets_3D.ModelType;
/**
* Controller class that manages the display of a race
@@ -110,6 +116,8 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel
private Label windSpeedLabel;
@FXML
private Label positionLabel, boatSpeedLabel, boatHeadingLabel;
@FXML
private ImageView velocityIcon, handlingIcon, windWalkerIcon, bumperIcon;
//Race Data
private Map<Integer, ClientYacht> participants;
@@ -222,6 +230,7 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel
return finishScreenDialog;
}
public void loadRace (
Map<Integer, ClientYacht> participants, RaceXMLData raceData, RaceState raceState,
ClientYacht player) {
@@ -241,6 +250,25 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel
}
});
player.addPowerUpListener((yacht, tokenType) -> {
if (yacht == player) {
switch (tokenType) {
case BOOST:
velocityIcon.setVisible(true);
break;
case HANDLING:
handlingIcon.setVisible(true);
break;
case WIND_WALKER:
windWalkerIcon.setVisible(true);
break;
case BUMPER:
bumperIcon.setVisible(true);
break;
}
}
});
updateOrder(raceState.getPlayerPositions());
gameView = new GameView3D();
// gameView.setFrameRateFXText(fpsDisplay);
@@ -279,6 +307,7 @@ public class RaceViewController extends Thread implements ImportantAnnotationDel
});
}
/**
* The important annotations have been changed, update this view
*