From 3a966fa6b8693338ebc2bbdc327e144a2e6865ac Mon Sep 17 00:00:00 2001 From: David Wu Date: Mon, 25 Sep 2017 02:15:09 +1300 Subject: [PATCH] Reworked visual displays for low hp boats. There is now a warning indication under boats that drop below 20hp. TODO: Create sfx and different display when boat is in critical hp/dead. #story[1292] --- .../Controllers/RaceViewController.java | 57 +++++++----------- .../java/visualiser/layout/FireParticle.java | 44 ++++++++++---- .../src/main/resources/images/fire.gif | Bin 7067 -> 0 bytes .../src/main/resources/images/warning.png | Bin 0 -> 33261 bytes 4 files changed, 53 insertions(+), 48 deletions(-) delete mode 100644 racevisionGame/src/main/resources/images/fire.gif create mode 100644 racevisionGame/src/main/resources/images/warning.png diff --git a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java index 76e1ab25..f5a090d2 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java @@ -72,6 +72,7 @@ public class RaceViewController extends Controller { private int heartbeatDelay = 1000; private long heartbeatTime = 0; private GPSConverter gpsConverter; + private ArrayList fireParticleList = new ArrayList<>(); /** @@ -239,18 +240,13 @@ public class RaceViewController extends Controller { initialiseView3D(this.visualiserRace); initialiseHealthPane(); initialiseRaceClock(); - //initialiseFireEffect(); raceTimer(); // start the timer new Sparkline(this.raceState, this.sparklineChart); timeZone.setText(this.raceState.getRaceClock().getTimeZone()); arrowController.setWindProperty(this.raceState.windProperty()); } - private void initialiseFireEffect(){ - Image fire = new Image(getClass().getClassLoader().getResourceAsStream("images/fire.gif")); - imageView.setImage(fire); - //imageView.setVisible(false); - } + private void initialiseHealthPane() { InputStream tomato = this.getClass().getClassLoader().getResourceAsStream("visualiser/images/tomato.png"); @@ -354,24 +350,15 @@ public class RaceViewController extends Controller { //Create first fire - FireParticle fire = new FireParticle(); + FireParticle fire = new FireParticle(boat.getSourceID(), System.currentTimeMillis()); viewSubjects.add(fire); - fire.rotateView((double) -90, fire.getPosition().getX(), fire.getPosition().getY(), fire.getPosition().getZ(), Rotate.X_AXIS); + //fire.setVisible(false); + fireParticleList.add(fire); - //Create second fire - FireParticle fireSecond = new FireParticle(); - viewSubjects.add(fireSecond); - fireSecond.rotateView((double) -90, fireSecond.getPosition().getX(), fireSecond.getPosition().getY(), fireSecond.getPosition().getZ(), Rotate.X_AXIS); - fireSecond.rotateView((double) 60, fireSecond.getPosition().getX(), fireSecond.getPosition().getY(), fireSecond.getPosition().getZ(), Rotate.Y_AXIS); + //fire.rotateView((double) 90, fire.getPosition().getX(), fire.getPosition().getY(), fire.getPosition().getZ(), Rotate.X_AXIS); - //Create third fire - FireParticle fireThird = new FireParticle(); - viewSubjects.add(fireThird); - fireThird.rotateView((double) -90, fireThird.getPosition().getX(), fireThird.getPosition().getY(), fireThird.getPosition().getZ(), Rotate.X_AXIS); - fireThird.rotateView((double) 120, fireThird.getPosition().getX(), fireThird.getPosition().getY(), fireThird.getPosition().getZ(), Rotate.Y_AXIS); - // Track this boat's movement with the new subject AnimationTimer trackBoat = new AnimationTimer() { @@ -380,21 +367,13 @@ public class RaceViewController extends Controller { boatModel.setHeading(boat.getBearing().degrees()); boatModel.setX(gpsConverter.convertGPS(boat.getPosition()).getX()); boatModel.setZ(gpsConverter.convertGPS(boat.getPosition()).getY()); + boatModel.getMesh().toFront(); //Fire follows boat fire.setHeading(boat.getBearing().degrees()); fire.setX(gpsConverter.convertGPS(boat.getPosition()).getX()); fire.setZ(gpsConverter.convertGPS(boat.getPosition()).getY()); - - fireSecond.setHeading(boat.getBearing().degrees()); - fireSecond.setX(gpsConverter.convertGPS(boat.getPosition()).getX()); - fireSecond.setZ(gpsConverter.convertGPS(boat.getPosition()).getY()); - - fireThird.setHeading(boat.getBearing().degrees()); - fireThird.setX(gpsConverter.convertGPS(boat.getPosition()).getX()); - fireThird.setZ(gpsConverter.convertGPS(boat.getPosition()).getY()); - - + fire.setY(0); } }; @@ -718,6 +697,19 @@ public class RaceViewController extends Controller { if (raceState.getRaceStatusEnum() == RaceStatusEnum.FINISHED) { stop(); // stop the timer } else { + for(VisualiserBoat boat : raceState.getBoats()){ + for (FireParticle fp : fireParticleList){ + if(fp.getSourceID()==boat.getSourceID()){ + if(boat.getHealth()<=20) { + //fp.setVisible(true); + fp.flash(System.currentTimeMillis(), 200); + } else { + fp.setVisible(false); + } + break; + } + } + } try { if(raceState.getBoat(raceState.getPlayerBoatID()).getHealth()<=20){ heartbeatDelay = 500; @@ -725,13 +717,6 @@ public class RaceViewController extends Controller { heartbeatDelay = 1000; } if(raceState.getBoat(raceState.getPlayerBoatID()).getHealth()<=40){ - imageView.setVisible(true); - - imageView.setX(gpsConverter.convertGPS(raceState.getBoat(raceState.getPlayerBoatID()).getPosition()).getX()); - imageView.setY(gpsConverter.convertGPS(raceState.getBoat(raceState.getPlayerBoatID()).getPosition()).getY()); - System.out.println("Boat:" + gpsConverter.convertGPS(raceState.getBoat(raceState.getPlayerBoatID()).getPosition()).getX()); - System.out.println("Image:" + imageView.getX()); - //imageView.translateXProperty().setValue(raceState.getBoat(raceState.getPlayerBoatID()).getPosition().getLongitude()); if(System.currentTimeMillis() > heartbeatTime+heartbeatDelay) { diff --git a/racevisionGame/src/main/java/visualiser/layout/FireParticle.java b/racevisionGame/src/main/java/visualiser/layout/FireParticle.java index 9b0a9172..35fd39a1 100644 --- a/racevisionGame/src/main/java/visualiser/layout/FireParticle.java +++ b/racevisionGame/src/main/java/visualiser/layout/FireParticle.java @@ -5,8 +5,7 @@ import javafx.scene.image.Image; import javafx.scene.paint.Color; import javafx.scene.paint.Material; import javafx.scene.paint.PhongMaterial; -import javafx.scene.shape.MeshView; -import javafx.scene.shape.Shape3D; +import javafx.scene.shape.*; import javafx.scene.transform.Rotate; import javafx.scene.transform.Translate; @@ -15,14 +14,21 @@ import javafx.scene.transform.Translate; */ public class FireParticle extends Subject3D { - public FireParticle(){ - super(createFire(), 0); + private int sourceID; + private long currentTime; + private long flashInterval; + public FireParticle(int sourceID, long currentTime){ + super(createFire(), 0); + this.sourceID = sourceID; + this.currentTime = currentTime; } private static Shape3D createFire(){ - Image fire = new Image(FireParticle.class.getClassLoader().getResourceAsStream("images/fire.gif")); + Image fire = new Image(FireParticle.class.getClassLoader().getResourceAsStream("images/warning.png")); + + Plane3D plane = new Plane3D(20, 20, 10, 10); @@ -31,17 +37,12 @@ public class FireParticle extends Subject3D { material.setSpecularColor(Color.web("#000000")); material.setDiffuseMap(fire); - - //material.setDiffuseMap(fire); - MeshView fireSurface = new MeshView(plane); - fireSurface.setTranslateZ(15); - fireSurface.setTranslateY(10); + fireSurface.setMaterial(material); fireSurface.setMouseTransparent(true); - fireSurface.toFront(); - + //fireSurface.toFront(); this.flashInterval = flashInterval; return fireSurface; } @@ -54,5 +55,24 @@ public class FireParticle extends Subject3D { this.getMesh().getTransforms().add(rotate); } + public void setVisible(boolean bool){ + this.getMesh().setVisible(bool); + } + + + public int getSourceID(){ + return sourceID; + } + + public void flash(long checkTime, long flashInterval){ + if(checkTime >= (currentTime+flashInterval)){ + this.currentTime = checkTime; + if(this.getMesh().isVisible()){ + this.setVisible(false); + } else { + this.setVisible(true); + } + } + } } diff --git a/racevisionGame/src/main/resources/images/fire.gif b/racevisionGame/src/main/resources/images/fire.gif deleted file mode 100644 index ba0a9ebdb459f219764e11a87f7a71d7ec0e8371..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7067 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 LU~V(+It2d&%w-|U diff --git a/racevisionGame/src/main/resources/images/warning.png b/racevisionGame/src/main/resources/images/warning.png new file mode 100644 index 0000000000000000000000000000000000000000..fb6409482cb4eee7d45c87bd5043d5ad210f8226 GIT binary patch literal 33261 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 BwC?}_ literal 0 HcmV?d00001