Worked on making a visual component to the stats. Need to implement acceleration.

#story[1274]
This commit is contained in:
Kusal Ekanayake
2017-09-22 16:45:10 +12:00
parent faeece27ff
commit b05580f018
6 changed files with 108 additions and 32 deletions
@@ -12,6 +12,7 @@ import javafx.fxml.Initializable;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.PointLight;
import javafx.scene.control.ProgressBar;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.CornerRadii;
@@ -34,6 +35,12 @@ public class BoatCustomizeController implements Initializable{
@FXML
private JFXColorPicker colorPicker;
@FXML
private ProgressBar speedBar;
@FXML
private ProgressBar accelBar;
@FXML
private ProgressBar handleBar;
@FXML
private JFXButton submitBtn;
@FXML
private JFXTextField boatName;
@@ -49,12 +56,15 @@ public class BoatCustomizeController implements Initializable{
private ClientToServerThread socketThread;
private LobbyController lobbyController;
private BoatMeshType currentBoat;
private static Double maxSpeedMultiplier = 1.0;
private static Double maxTurnRate = 10.0;
private static Double maxAcceleration = 2.0;
@Override
public void initialize(URL location, ResourceBundle resources) {
socketThread = ViewManager.getInstance().getGameClient().getServerThread();
generateMaxStats();
RequiredFieldValidator playerNameReqValidator = new RequiredFieldValidator();
playerNameReqValidator.setMessage("Player name required.");
@@ -120,6 +130,8 @@ public class BoatCustomizeController implements Initializable{
BoatModel bo = ModelFactory.boatCustomiseView(currentBoat, colorPicker.getValue());
group.getChildren().add(bo.getAssets());
group.getChildren().add(new PointLight());
refreshStatBars(bo);
}
public void nextBoat(ActionEvent actionEvent) {
@@ -130,6 +142,8 @@ public class BoatCustomizeController implements Initializable{
BoatModel bo = ModelFactory.boatCustomiseView(currentBoat, colorPicker.getValue());
group.getChildren().add(bo.getAssets());
group.getChildren().add(new PointLight());
refreshStatBars(bo);
}
public void prevBoat(ActionEvent actionEvent) {
@@ -140,6 +154,8 @@ public class BoatCustomizeController implements Initializable{
BoatModel bo = ModelFactory.boatCustomiseView(currentBoat, colorPicker.getValue());
group.getChildren().add(bo.getAssets());
group.getChildren().add(new PointLight());
refreshStatBars(bo);
}
private void RefreshBoat() {
@@ -148,5 +164,26 @@ public class BoatCustomizeController implements Initializable{
boatPane.getChildren().add(group);
BoatModel bo = ModelFactory.boatCustomiseView(currentBoat, colorPicker.getValue());
group.getChildren().add(bo.getAssets());
refreshStatBars(bo);
}
private void generateMaxStats() {
for (BoatMeshType bmt: BoatMeshType.values()) {
if (bmt.turnStep > maxTurnRate) {
maxTurnRate = bmt.turnStep;
}
if (bmt.maxSpeedMultiplier > maxSpeedMultiplier) {
maxSpeedMultiplier = bmt.maxSpeedMultiplier;
}
if (bmt.accelerationMultiplier > maxAcceleration) {
maxAcceleration = bmt.accelerationMultiplier;
}
}
}
private void refreshStatBars(BoatModel bo) {
speedBar.setProgress((bo.getMeshType().maxSpeedMultiplier) / maxSpeedMultiplier);
accelBar.setProgress(bo.getMeshType().accelerationMultiplier / maxAcceleration);
handleBar.setProgress(bo.getMeshType().turnStep / maxTurnRate);
}
}
@@ -7,19 +7,22 @@ package seng302.visualiser.fxObjects.assets_3D;
*/
public enum BoatMeshType {
DINGHY("dinghy_hull.stl", "dinghy_mast.stl", 1.36653, "dinghy_sail.stl", 1.36653, null, false),
DINGHY("dinghy_hull.stl", "dinghy_mast.stl", 1.36653, "dinghy_sail.stl", 1.36653, null, false, 1.5, 1.0, 5.0),
CAT_ATE_A_MERINGUE("catamaran_hull.stl", "catamaran_mast.stl", 0.997, "catamaran_sail.stl",
0.997, null, false),
0.997, null, false, 1.0, 1.0, 10.0),
PIRATE_SHIP("pirateship_hull.stl", "pirateship_mast.stl", -0.5415, "pirateship_mainsail.stl",
-0.5415, "pirateship_frontsail.stl", true);
-0.5415, "pirateship_frontsail.stl", true, 1.2, 1.0, 7.0);
final String hullFile, mastFile, sailFile, jibFile;
final double mastOffset, sailOffset;
public final double maxSpeedMultiplier;
public final double accelerationMultiplier;
public final double turnStep;
final boolean fixedSail;
final static BoatMeshType[] boatTypes = new BoatMeshType[]{DINGHY, CAT_ATE_A_MERINGUE, PIRATE_SHIP};
BoatMeshType(String hullFile, String mastFile, double mastOffset, String sailFile,
double sailOffset, String jibFile, boolean fixedSail) {
double sailOffset, String jibFile, boolean fixedSail, double maxSpeedMultiplier, double accelerationMultiplier, double turnStep) {
this.hullFile = hullFile;
this.mastFile = mastFile;
this.mastOffset = mastOffset;
@@ -27,6 +30,9 @@ public enum BoatMeshType {
this.sailOffset = sailOffset;
this.jibFile = jibFile;
this.fixedSail = fixedSail;
this.maxSpeedMultiplier = maxSpeedMultiplier;
this.accelerationMultiplier = accelerationMultiplier;
this.turnStep = turnStep;
}
public static BoatMeshType getBoatMeshType(String boatType) {
@@ -18,6 +18,9 @@ public class BoatModel extends Model {
private static final int SAIL_INDEX = 2;
private BoatMeshType meshType;
private Double maxSpeedMultiplier;
private Double turnStep;
private Double accelerationMultiplier;
/**
* Stores a model and it's optional animation.
@@ -71,4 +74,8 @@ public class BoatModel extends Model {
private MeshView getMeshViewChild(int index) {
return (MeshView) assets.getChildren().get(index);
}
public BoatMeshType getMeshType() {
return meshType;
}
}