LevelModel: Replace Multiple Constructors with Creation Methods

This commit is contained in:
0nlineSam 2024-11-16 14:38:22 +01:00
parent 415abbc47b
commit ed80b6a94c
5 changed files with 21 additions and 17 deletions

2
.idea/misc.xml generated
View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager">
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

View File

@ -86,7 +86,7 @@ public class GameController implements ActionListener {
this.gameView.dispose();
if(source.equals("restart")){
this.levelModel = new LevelModel(this.navigationBetweenViewController.getPickedLevelIdentifier(), audioLoadHelper);
this.levelModel = LevelModel.createGameLevelModel(this.navigationBetweenViewController.getPickedLevelIdentifier(), audioLoadHelper);
this.gameView = new GameView(this, levelModel);
this.gameView.setVisible(true);
}

View File

@ -50,7 +50,7 @@ public class NavigationBetweenViewController implements ActionListener {
case "editor":
// New blank model for editor
this.levelModelForEditor = new LevelModel(audioLoadHelper);
this.levelModelForEditor = LevelModel.createEditorLevelModel(audioLoadHelper);
this.levelEditorController = new LevelEditorController(this.levelModelForEditor, this);
this.levelEditorController.getLevelEditorView().setVisible(true);
@ -66,7 +66,7 @@ public class NavigationBetweenViewController implements ActionListener {
// Reinit the levelModelForGame...
pickedLevelIdentifier = this.menuView.getLevelIdentifier();
this.levelModelForGame = new LevelModel(pickedLevelIdentifier, audioLoadHelper);
this.levelModelForGame = LevelModel.createGameLevelModel(pickedLevelIdentifier, audioLoadHelper);
this.gameController = new GameController(levelModelForGame, audioLoadHelper, this);
if (levelEditorController != null) {

View File

@ -66,7 +66,7 @@ public class LevelModel extends Observable implements Runnable {
* @param audioLoadHelper Audio load helper
* @param mode Instance mode
*/
public LevelModel(String levelName, AudioLoadHelper audioLoadHelper, String mode) {
private LevelModel(String levelName, AudioLoadHelper audioLoadHelper, String mode) {
this.levelName = levelName;
this.audioLoadHelper = audioLoadHelper;
this.gamePaused = false;
@ -90,14 +90,18 @@ public class LevelModel extends Observable implements Runnable {
}
}
public static LevelModel createExistingLevelModel(String levelName, AudioLoadHelper audioLoadHelper, String mode) {
return new LevelModel(levelName, audioLoadHelper, mode);
}
/**
* Class constructor
*
* @param levelName Level name
* @param audioLoadHelper Audio load helper
*/
public LevelModel(String levelName, AudioLoadHelper audioLoadHelper) {
this(levelName, audioLoadHelper, "game");
public static LevelModel createGameLevelModel(String levelName, AudioLoadHelper audioLoadHelper) {
return new LevelModel(levelName, audioLoadHelper, "game");
}
/**
@ -105,16 +109,15 @@ public class LevelModel extends Observable implements Runnable {
*
* @param audioLoadHelper Audio load helper
*/
public LevelModel(AudioLoadHelper audioLoadHelper) {
this.audioLoadHelper = audioLoadHelper;
this.gameRunning = false;
this.mode = "editor";
public static LevelModel createEditorLevelModel(AudioLoadHelper audioLoadHelper) {
LevelModel levelModel = new LevelModel(null, audioLoadHelper, "editor");
levelModel.gameRunning = false;
this.sizeWidth = 25 + 2;
this.sizeHeight = 25 + 2;
levelModel.sizeWidth = 25 + 2;
levelModel.sizeHeight = 25 + 2;
// Generate dirt
this.groundGrid = new DisplayableElementModel[this.sizeWidth][this.sizeHeight];
levelModel.groundGrid = new DisplayableElementModel[levelModel.sizeWidth][levelModel.sizeHeight];
for (int x = 0; x < this.sizeWidth; x++) {
for (int y = 0; y < this.sizeHeight; y++) {
@ -122,7 +125,8 @@ public class LevelModel extends Observable implements Runnable {
}
}
this.createLimits();
levelModel.createLimits();
return levelModel;
}
/**

View File

@ -169,10 +169,10 @@ public class LevelEditorView extends JFrame implements Observer {
if(selectedLevelValue != null && !selectedLevelValue.isEmpty()) {
// Load existing model
pickedLevelModel = new LevelModel(selectedLevelValue, this.nav.getAudioLoadHelper(), "editor");
pickedLevelModel = LevelModel.createExistingLevelModel(selectedLevelValue, this.nav.getAudioLoadHelper(), "editor");
} else {
// New blank model for editor
pickedLevelModel = new LevelModel(this.nav.getAudioLoadHelper());
pickedLevelModel = LevelModel.createEditorLevelModel(this.nav.getAudioLoadHelper());
}
pickedLevelModel.setShowCursor(true);