diff --git a/out/artifacts/bagel_jar/bagel.jar b/out/artifacts/bagel_jar/bagel.jar index cc3f1f15591a1351c96740c2d06e06d1475e2b38..2b915e213697e81500ccf9ed19a499a0e238ff7b 100644 Binary files a/out/artifacts/bagel_jar/bagel.jar and b/out/artifacts/bagel_jar/bagel.jar differ diff --git a/res/ActorExtensionPack/UI/nextLevel.png b/res/ActorExtensionPack/UI/nextLevel.png new file mode 100644 index 0000000000000000000000000000000000000000..785c70f21ee84e9544d60cb4719ce3b79683f751 Binary files /dev/null and b/res/ActorExtensionPack/UI/nextLevel.png differ diff --git a/src/Level/EndPanel.java b/src/Level/EndPanel.java index f303c1edf8101a87d2c4797f375009270fd8db55..abc578f472c431d3bb51a5dfe487f863f21f59b5 100644 --- a/src/Level/EndPanel.java +++ b/src/Level/EndPanel.java @@ -3,8 +3,10 @@ package Level; import Music.MusicPlayer; import Music.MusicPlayerManager; import Page.GameStage; +import UI.Button; import UI.Pane; import UI.TextBox; +import bagel.Image; import bagel.util.Colour; import myUtil.Vec2D; diff --git a/src/Level/LevelManager.java b/src/Level/LevelManager.java index 380c9ad2694b904597522c0aecfbc42b45789522..18c0952fd59fbcd9da66e1d94564128058430a40 100644 --- a/src/Level/LevelManager.java +++ b/src/Level/LevelManager.java @@ -3,9 +3,13 @@ package Level; import java.util.ArrayList; public class LevelManager { + private static final int INVALID = -1; + private static LevelManager levelManager = null; - ArrayList<Level> levels = new ArrayList<Level>(); + public int currentLevel = INVALID; + + private ArrayList<Level> levels = new ArrayList<Level>(); public static final boolean[] PLAYING_INVENTORY = {false, false, false, false, false, false, false, false, true, true, true, true, false}; public static final boolean[] MAKING_INVENTORY = {true, true, true, true, true, true, true, true, true, true, true, true, true}; @@ -37,7 +41,15 @@ public class LevelManager { } public Level getLevel(int num) { + currentLevel = num; return levels.get(num-1).clone(); } + public int getCurrentLevel() { + return currentLevel; + } + + public boolean hasNextLevel() { + return (currentLevel + 1) <= levels.size(); + } } diff --git a/src/Level/MyLevelManager.java b/src/Level/MyLevelManager.java index 99c1c7a7c19f2beb632d771b327aa71504c0f433..6473bfb8cf945059da717c864d40fdcd3da5142b 100644 --- a/src/Level/MyLevelManager.java +++ b/src/Level/MyLevelManager.java @@ -8,8 +8,12 @@ import java.util.ArrayList; import java.util.stream.Stream; public class MyLevelManager { + private static final int INVALID = -1; + private static MyLevelManager myLevelManager = null; + public int currentLevel = INVALID; + ArrayList<Level> levels = new ArrayList<Level>(); private MyLevelManager() { @@ -33,6 +37,7 @@ public class MyLevelManager { } public Level getLevel(int num) { + currentLevel = num; return levels.get(num - 1).clone(); } @@ -43,4 +48,12 @@ public class MyLevelManager { public static void refresh() { myLevelManager = new MyLevelManager(); } + + public int getCurrentLevel() { + return currentLevel; + } + + public boolean hasNextLevel() { + return (currentLevel + 1) <= levels.size(); + } } diff --git a/src/ShadowLifeGame.java b/src/ShadowLifeGame.java index 2d8f71fd56d1524e0b93c4ef1cb7c20040097e27..023a2277917dcd514423305a0686fcbc972f3885 100644 --- a/src/ShadowLifeGame.java +++ b/src/ShadowLifeGame.java @@ -60,6 +60,18 @@ public class ShadowLifeGame extends AbstractGame { } }; + Button nextLevel = new Button(new Image("res/ActorExtensionPack/UI/nextLevel.png"), new Vec2D(823, 0)) { + @Override + public void event() { + GameStage.getInstance().goTo(GameStage.GAME_PAGE + GameStage.LOADING); + if (fromMyLevel) { + level = MyLevelManager.getInstance().getLevel(MyLevelManager.getInstance().currentLevel + 1); + } else { + level = LevelManager.getInstance().getLevel(LevelManager.getInstance().currentLevel + 1); + } + } + }; + //create level button Button levelButton = new Button(new Image("res/ActorExtensionPack/UI/LevelMenu.png"), new Vec2D(749, 0)) { @Override @@ -69,6 +81,7 @@ public class ShadowLifeGame extends AbstractGame { } if (fromMyLevel) { GameStage.getInstance().goTo(GameStage.MY_LEVEL_PAGE); + fromMyLevel = false; } if (GameStage.getInstance().getCurrentStage() == GameStage.MAKE_PAGE) { GameStage.getInstance().goTo(GameStage.MY_LEVEL_PAGE); @@ -104,6 +117,7 @@ public class ShadowLifeGame extends AbstractGame { } startPage.display(); } else if (GameStage.getInstance().getCurrentStage() == GameStage.LEVEL_SELECT_PAGE) { + fromMyLevel = false; levelPage.display(); if (levelPage.getLevelChosen() != INVALID) { GameStage.getInstance().goTo(GameStage.GAME_PAGE + GameStage.LOADING); @@ -117,9 +131,17 @@ public class ShadowLifeGame extends AbstractGame { levelButton.onClick(); } if (level.getState() == Level.WIN) { + if (fromMyLevel && MyLevelManager.getInstance().hasNextLevel()) { + nextLevel.display(); + nextLevel.onClick(); + } else if (!fromMyLevel && LevelManager.getInstance().hasNextLevel()) { + nextLevel.display(); + nextLevel.onClick(); + } levelButton.display(); levelButton.onClick(); } + } else if (GameStage.getInstance().getCurrentStage() == GameStage.MAKE_PAGE) { if (makeLevel == null) { makeLevel = sampleLevel.clone(); @@ -138,8 +160,8 @@ public class ShadowLifeGame extends AbstractGame { makeLevel = null; } myLevelPage.display(); - fromMyLevel = true; if (myLevelPage.getLevelChosen() != INVALID) { + fromMyLevel = true; GameStage.getInstance().goTo(GameStage.GAME_PAGE + GameStage.LOADING); level = MyLevelManager.getInstance().getLevel(myLevelPage.getLevelChosen()); myLevelPage.setLevelChosen(INVALID); @@ -191,6 +213,4 @@ public class ShadowLifeGame extends AbstractGame { progress.addFrame(f9); progress.addFrame(f9); } - - }