Merged master in. Added documentation. #story[1292]
This commit is contained in:
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user