Merged master in. Added documentation. #story[1292]

main
David Wu 8 years ago
parent 3adc5330b4
commit 48e7b6970c

@ -451,11 +451,10 @@ public class RaceViewController extends Controller {
viewSubjects.add(boatModel); viewSubjects.add(boatModel);
//Create first fire //Create health effect
HealthEffect fire = new HealthEffect(boat.getSourceID(), System.currentTimeMillis()); HealthEffect healthEffect = new HealthEffect(boat.getSourceID(), System.currentTimeMillis());
viewSubjects.add(fire); viewSubjects.add(healthEffect);
//fire.setVisible(false); healthEffectList.add(healthEffect);
healthEffectList.add(fire);
//add sail //add sail
Sails3D sails3D = new Sails3D(); Sails3D sails3D = new Sails3D();
@ -539,10 +538,10 @@ public class RaceViewController extends Controller {
boatModel.getMesh().toFront(); boatModel.getMesh().toFront();
//Fire follows boat //Fire follows boat
fire.setHeading(boat.getBearing().degrees()); healthEffect.setHeading(boat.getBearing().degrees());
fire.setX(gpsConverter.convertGPS(boat.getPosition()).getX()); healthEffect.setX(gpsConverter.convertGPS(boat.getPosition()).getX());
fire.setZ(gpsConverter.convertGPS(boat.getPosition()).getY()); healthEffect.setZ(gpsConverter.convertGPS(boat.getPosition()).getY());
fire.setY(0); healthEffect.setY(0);
} }
}; };
@ -891,7 +890,9 @@ public class RaceViewController extends Controller {
}.start(); }.start();
} }
/**
* Animation timer for health
*/
private void healthLoop(){ private void healthLoop(){
new AnimationTimer(){ new AnimationTimer(){
@Override @Override
@ -900,6 +901,7 @@ public class RaceViewController extends Controller {
stop(); // stop the timer stop(); // stop the timer
} else { } else {
try { try {
//Check if boat is dead
if(raceState.getBoat(raceState.getPlayerBoatID()).getHealth()<=0){ if(raceState.getBoat(raceState.getPlayerBoatID()).getHealth()<=0){
if(!deathPane.isDisable()) { if(!deathPane.isDisable()) {
deathPane.setVisible(true); deathPane.setVisible(true);
@ -914,6 +916,7 @@ public class RaceViewController extends Controller {
if(fp.getSourceID()==boat.getSourceID()){ if(fp.getSourceID()==boat.getSourceID()){
if(boat.getHealth()<=0){ if(boat.getHealth()<=0){
//Boat is dead. Don't check it anymore for hp
fp.displayDeath(fp.getSourceID()==raceState.getPlayerBoatID()); fp.displayDeath(fp.getSourceID()==raceState.getPlayerBoatID());
fp.setSourceID(0); fp.setSourceID(0);
try { try {
@ -921,14 +924,16 @@ public class RaceViewController extends Controller {
raceState.updateBoatPositions(raceState.getBoats()); raceState.updateBoatPositions(raceState.getBoats());
} catch (BoatNotFoundException e) { } catch (BoatNotFoundException e) {
System.out.println("Can't update boat"); e.printStackTrace();
} }
} }
else else
//Speed up tick when <=10 hp
if(boat.getHealth()<=10){ if(boat.getHealth()<=10){
fp.flash(System.currentTimeMillis(), 300, boat.getSourceID()==raceState.getPlayerBoatID()); fp.flash(System.currentTimeMillis(), 300, boat.getSourceID()==raceState.getPlayerBoatID());
} }
else else
//Visual indication of low hp
if(boat.getHealth()<=20) { if(boat.getHealth()<=20) {
//fp.setVisible(true); //fp.setVisible(true);
fp.flash(System.currentTimeMillis(), 500, boat.getSourceID()==raceState.getPlayerBoatID()); fp.flash(System.currentTimeMillis(), 500, boat.getSourceID()==raceState.getPlayerBoatID());
@ -1098,6 +1103,9 @@ public class RaceViewController extends Controller {
mapToggle = !mapToggle; mapToggle = !mapToggle;
} }
/**
* FXML method for death button
*/
public void deathOKPressed(){ public void deathOKPressed(){
deathPane.setDisable(true); deathPane.setDisable(true);
deathPane.setVisible(false); deathPane.setVisible(false);

@ -15,7 +15,6 @@ public class HealthEffect extends Subject3D {
private int sourceID; private int sourceID;
private long currentTime; private long currentTime;
private long flashInterval;
private AudioClip warningSound = new AudioClip(this.getClass().getResource("/visualiser/sounds/warning.mp3").toExternalForm()); private AudioClip warningSound = new AudioClip(this.getClass().getResource("/visualiser/sounds/warning.mp3").toExternalForm());
private AudioClip deadSound = new AudioClip(this.getClass().getResource("/visualiser/sounds/dead1.wav").toExternalForm()); private AudioClip deadSound = new AudioClip(this.getClass().getResource("/visualiser/sounds/dead1.wav").toExternalForm());
@ -71,6 +70,10 @@ public class HealthEffect extends Subject3D {
this.sourceID = id; this.sourceID = id;
} }
/**
* Display visual indication when boat dies
* @param player boolean if player is current user or not
*/
public void displayDeath(boolean player){ public void displayDeath(boolean player){
Image image = new Image(HealthEffect.class.getClassLoader().getResourceAsStream("images/warning2.png")); Image image = new Image(HealthEffect.class.getClassLoader().getResourceAsStream("images/warning2.png"));
PhongMaterial material = (PhongMaterial) this.getMesh().getMaterial(); PhongMaterial material = (PhongMaterial) this.getMesh().getMaterial();

Loading…
Cancel
Save