diff --git a/GameProject/src/base/GameLoop.java b/GameProject/src/base/GameLoop.java index e137a62..eb72c12 100644 --- a/GameProject/src/base/GameLoop.java +++ b/GameProject/src/base/GameLoop.java @@ -40,25 +40,38 @@ public class GameLoop { private static Logger logger = LogManager.getLogger(GameLoop.class); - /** empty constructor which does nothing */ + /** constructor which calls {@link #defineLevels()}, which adds all levels of this game. + */ public GameLoop() { - + this.defineLevels(); + } + + /** + * First resets (clears) the already existing level instances of this game's list of levels ({@link #resetLevels()}), + * then adds one instance of {@link Level1} by calling {@link #addLevel()}. + * Should be called only before playing starts (e.g. in constructor or before {@link #runGame(String[]) } is called. + * + *
Note: Subclasses of {@link GameLoop} should override this method to define own levels for their game. + */ + void defineLevels() { + this.resetLevels(); + this.addLevel(new Level1()); } /** - * This method adds the given level instance to the end of the currently already stored list of levels to play. + * Adds the given level instance to the end of the currently already stored list of levels to play. * Should be called only before playing starts (e.g. in constructor or before {@link #runGame(String[]) } is called. * * @param level instance of Playground (a level) to add. */ - protected void addLevel(Playground level) { + void addLevel(Playground level) { this.levels.add(level); } /** * Removes all levels from the list of levels to play! Do not call this method while {@link #runGame(String[]) } is running! */ - protected void resetLevels() { + void resetLevels() { this.levels.clear(); } @@ -205,14 +218,13 @@ public class GameLoop { /** * main to start the whole application. - * initializes the {@link #levels} ArrayList of Playground instances (levels) to be played with one level {@link SpaceInvadersLevel}. + * initializes the {@link #levels} ArrayList of Playground instances (levels) to be played with one level {@link SpaceInvadersLevel} in constructor of {@link #GameLoop}. * * @param args Java default command line args, forwarded to {@link #runGame(String[])} * @throws IOException in case highscore.txt cannot be written. */ public static void main(String[] args) throws IOException { - GameLoop gl = new GameLoop(); - gl.addLevel(new Level1()); + GameLoop gl = new GameLoop(); gl.runGame(args); }