Fixed SpecialBubble

This commit is contained in:
Andreas Greiner 2021-06-27 22:02:49 +02:00
parent 56d563ecd5
commit b0d8b5806f
7 changed files with 16 additions and 12 deletions

View File

@ -14,6 +14,7 @@ import de.thdeg.greiner.superpangworld.graphics.moveable.SpecialBubble;
import java.awt.*; import java.awt.*;
import java.util.*; import java.util.*;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit;
/** /**
* The manager which handles the gameplay. * The manager which handles the gameplay.
@ -85,9 +86,7 @@ public class GamePlayManager {
destroyAllBubbles = false; destroyAllBubbles = false;
specialBubblePresent = false; specialBubblePresent = false;
movementFroze = false; movementFroze = false;
// Update HUD
updateHUD(); updateHUD();
// Update background
gameObjectManager.getBackground().setBackgroundImage(level.backgroundImage); gameObjectManager.getBackground().setBackgroundImage(level.backgroundImage);
} }
@ -151,7 +150,7 @@ public class GamePlayManager {
public void updateGamePlay(){ public void updateGamePlay(){
updateHUD(); updateHUD();
if(player.score>=level.neededOverallScore){ if(!destroyAllBubbles && player.score>=level.neededOverallScore){
nextLevel(); nextLevel();
} }
@ -166,10 +165,14 @@ public class GamePlayManager {
if(destroyAllBubbles && gameView.timerExpired("DestroyAllBubbles","GamePlayManager")){ if(destroyAllBubbles && gameView.timerExpired("DestroyAllBubbles","GamePlayManager")){
List<Bubble> bubblesCopy = new ArrayList<>(gameObjectManager.getBubbles()); List<Bubble> bubblesCopy = new ArrayList<>(gameObjectManager.getBubbles());
for(Bubble bubble: bubblesCopy){ if(bubblesCopy.size()>0) {
destroy(bubble); for (Bubble bubble : bubblesCopy) {
destroy(bubble);
}
gameView.setTimer("DestroyAllBubbles", "GamePlayManager", 300);
}else{
destroyAllBubbles = false;
} }
gameView.setTimer("DestroyAllBubbles","GamePlayManager",500);
} }
} }
@ -177,7 +180,7 @@ public class GamePlayManager {
* Start the timer to destroy all bubbles. * Start the timer to destroy all bubbles.
*/ */
public void destroyAllBubbles(){ public void destroyAllBubbles(){
gameView.setTimer("DestroyAllBubbles","GamePlayManager",500); gameView.setTimer("DestroyAllBubbles","GamePlayManager",300);
spawnBubbles = false; spawnBubbles = false;
destroyAllBubbles = true; destroyAllBubbles = true;
movementFroze = false; movementFroze = false;
@ -192,6 +195,7 @@ public class GamePlayManager {
movementFroze = true; movementFroze = true;
gameView.playSound("freeze.wav",false); gameView.playSound("freeze.wav",false);
gameView.setTimer("MovementFroze","GamePlayManager",freezeTime); gameView.setTimer("MovementFroze","GamePlayManager",freezeTime);
gameObjectManager.getGameOverlay().showMessage("Freeze "+ TimeUnit.MILLISECONDS.toSeconds(freezeTime)+" sec",freezeTime);
} }
/** /**
@ -235,7 +239,7 @@ public class GamePlayManager {
* - 10% special bubble * - 10% special bubble
*/ */
private void addRandomBubble(){ private void addRandomBubble(){
int randomNumber = specialBubblePresent ? random.nextInt(90) : random.nextInt(100); int randomNumber = specialBubblePresent ? random.nextInt(90) : random.nextInt(10000);
ArrayList<CollidableGameObject> collidableGameObjects = new ArrayList<>(); ArrayList<CollidableGameObject> collidableGameObjects = new ArrayList<>();
collidableGameObjects.add(gameObjectManager.getPlayerObject()); collidableGameObjects.add(gameObjectManager.getPlayerObject());
collidableGameObjects.addAll(gameObjectManager.getHarpoons()); collidableGameObjects.addAll(gameObjectManager.getHarpoons());

View File

@ -146,7 +146,7 @@ public abstract class Bubble extends CollidingGameObject implements MovingGameOb
@Override @Override
public void reactToCollision(CollidableGameObject otherObject) { public void reactToCollision(CollidableGameObject otherObject) {
if (otherObject instanceof PlayerObject && !gamePlayManager.movementFroze) { if (otherObject instanceof PlayerObject && !gamePlayManager.movementFroze) {
gamePlayManager.looseLife(); //gamePlayManager.looseLife();
} else if (otherObject instanceof Harpoon && !spawning) { } else if (otherObject instanceof Harpoon && !spawning) {
gamePlayManager.destroy((Harpoon) otherObject, this); gamePlayManager.destroy((Harpoon) otherObject, this);
} }

View File

@ -30,8 +30,8 @@ public class GameOverlay extends GameObject {
* *
* @param message the message to display * @param message the message to display
*/ */
public void showMessage(String message){ public void showMessage(String message, long duration){
gameView.setTimer("DisplayMessage","Overlay",3000); gameView.setTimer("DisplayMessage","Overlay",duration);
this.message = message; this.message = message;
} }
@ -49,7 +49,7 @@ public class GameOverlay extends GameObject {
@Override @Override
public void addToCanvas() { public void addToCanvas() {
if(!gameView.timerExpired("DisplayMessage","Overlay")){ if(!gameView.timerExpired("DisplayMessage","Overlay")){
gameView.addTextToCanvas(message,GameView.WIDTH/2.0, GameView.HEIGHT/2.0,30, Color.BLACK,0); gameView.addTextToCanvas(message, 250, 50,40, Color.GREEN.darker(), 0);
} }
if(!gameView.timerExpired("FlashScreen","Overlay")){ if(!gameView.timerExpired("FlashScreen","Overlay")){
gameView.addRectangleToCanvas(HelperValues.FRAME_BORDER_WIDTH,HelperValues.FRAME_BORDER_WIDTH,GameView.WIDTH - (2*HelperValues.FRAME_BORDER_WIDTH),HelperValues.FRAME_WINDOW_HEIGHT+1,1,true,color); gameView.addRectangleToCanvas(HelperValues.FRAME_BORDER_WIDTH,HelperValues.FRAME_BORDER_WIDTH,GameView.WIDTH - (2*HelperValues.FRAME_BORDER_WIDTH),HelperValues.FRAME_WINDOW_HEIGHT+1,1,true,color);