Created a superclass for GameController and LevelEditorController
This commit is contained in:
parent
db30b572ff
commit
2751521dd5
5
.idea/misc.xml
generated
5
.idea/misc.xml
generated
@ -1,6 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="openjdk-21" project-jdk-type="JavaSDK">
|
<component name="PDMPlugin">
|
||||||
|
<option name="skipTestSources" value="false" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="openjdk-21" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/classes" />
|
<output url="file://$PROJECT_DIR$/classes" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
@ -2,12 +2,10 @@ package fr.enssat.BoulderDash.controllers;
|
|||||||
|
|
||||||
import fr.enssat.BoulderDash.models.LevelModel;
|
import fr.enssat.BoulderDash.models.LevelModel;
|
||||||
import fr.enssat.BoulderDash.helpers.AudioLoadHelper;
|
import fr.enssat.BoulderDash.helpers.AudioLoadHelper;
|
||||||
import fr.enssat.BoulderDash.controllers.NavigationBetweenViewController;
|
|
||||||
import fr.enssat.BoulderDash.views.MenuView;
|
import fr.enssat.BoulderDash.views.MenuView;
|
||||||
import fr.enssat.BoulderDash.views.GameView;
|
import fr.enssat.BoulderDash.views.GameView;
|
||||||
|
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -19,14 +17,12 @@ import java.awt.event.ActionListener;
|
|||||||
* @author Colin Leverger <me@colinleverger.fr>
|
* @author Colin Leverger <me@colinleverger.fr>
|
||||||
* @since 2015-06-19
|
* @since 2015-06-19
|
||||||
*/
|
*/
|
||||||
public class GameController implements ActionListener {
|
public class GameController extends GameModuleController {
|
||||||
private LevelModel levelModel;
|
|
||||||
private AudioLoadHelper audioLoadHelper;
|
private AudioLoadHelper audioLoadHelper;
|
||||||
private boolean firstClickOnPause;
|
private boolean firstClickOnPause;
|
||||||
private MenuView menuView;
|
private MenuView menuView;
|
||||||
private GameView gameView;
|
private GameView gameView;
|
||||||
private NavigationBetweenViewController navigationBetweenViewController;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class constructor
|
* Class constructor
|
||||||
*
|
*
|
||||||
@ -34,11 +30,9 @@ public class GameController implements ActionListener {
|
|||||||
* @param navigationBetweenViewController
|
* @param navigationBetweenViewController
|
||||||
*/
|
*/
|
||||||
public GameController(LevelModel levelModel, AudioLoadHelper audioLoadHelper, NavigationBetweenViewController navigationBetweenViewController) {
|
public GameController(LevelModel levelModel, AudioLoadHelper audioLoadHelper, NavigationBetweenViewController navigationBetweenViewController) {
|
||||||
this.firstClickOnPause = true;
|
super(levelModel, navigationBetweenViewController);
|
||||||
|
this.firstClickOnPause = true;
|
||||||
this.navigationBetweenViewController = navigationBetweenViewController;
|
|
||||||
|
|
||||||
this.levelModel = levelModel;
|
|
||||||
this.audioLoadHelper = audioLoadHelper;
|
this.audioLoadHelper = audioLoadHelper;
|
||||||
this.gameView = new GameView(this, levelModel);
|
this.gameView = new GameView(this, levelModel);
|
||||||
this.menuView = navigationBetweenViewController.getMenuView();
|
this.menuView = navigationBetweenViewController.getMenuView();
|
||||||
@ -52,14 +46,12 @@ public class GameController implements ActionListener {
|
|||||||
*
|
*
|
||||||
* @param event Action event
|
* @param event Action event
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void actionPerformed(ActionEvent event) {
|
public void actionPerformed(ActionEvent event) {
|
||||||
switch(event.getActionCommand()) {
|
switch(event.getActionCommand()) {
|
||||||
case "pause":
|
case "pause":
|
||||||
if(this.firstClickOnPause) {
|
LevelModel levelModel = getLevelModel();
|
||||||
this.levelModel.setGamePaused(true);
|
levelModel.setGamePaused(this.firstClickOnPause);
|
||||||
} else if(!this.firstClickOnPause) {
|
|
||||||
this.levelModel.setGamePaused(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.firstClickOnPause = !this.firstClickOnPause;
|
this.firstClickOnPause = !this.firstClickOnPause;
|
||||||
this.gameView.getGameFieldView().grabFocus();
|
this.gameView.getGameFieldView().grabFocus();
|
||||||
@ -86,7 +78,8 @@ public class GameController implements ActionListener {
|
|||||||
this.gameView.dispose();
|
this.gameView.dispose();
|
||||||
|
|
||||||
if(source.equals("restart")){
|
if(source.equals("restart")){
|
||||||
this.levelModel = new LevelModel(this.navigationBetweenViewController.getPickedLevelIdentifier(), audioLoadHelper);
|
resetLevelModel(this.audioLoadHelper);
|
||||||
|
LevelModel levelModel = getLevelModel();
|
||||||
this.gameView = new GameView(this, levelModel);
|
this.gameView = new GameView(this, levelModel);
|
||||||
this.gameView.setVisible(true);
|
this.gameView.setVisible(true);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,38 @@
|
|||||||
|
package fr.enssat.BoulderDash.controllers;
|
||||||
|
|
||||||
|
import fr.enssat.BoulderDash.exceptions.LevelConstraintNotRespectedException;
|
||||||
|
import fr.enssat.BoulderDash.helpers.AudioLoadHelper;
|
||||||
|
import fr.enssat.BoulderDash.models.LevelModel;
|
||||||
|
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
public abstract class GameModuleController implements ActionListener {
|
||||||
|
private LevelModel levelModel;
|
||||||
|
private NavigationBetweenViewController nav;
|
||||||
|
|
||||||
|
public GameModuleController(LevelModel levelModel, NavigationBetweenViewController nav) {
|
||||||
|
this.levelModel = levelModel;
|
||||||
|
this.nav = nav;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void actionPerformed(ActionEvent event);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets level model
|
||||||
|
*
|
||||||
|
* @return Level model
|
||||||
|
*/
|
||||||
|
public LevelModel getLevelModel() {
|
||||||
|
return this.levelModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void menuActionPerformed() {
|
||||||
|
this.nav.setMenuView();
|
||||||
|
this.nav.getAudioLoadHelper().startMusic("game");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void resetLevelModel(AudioLoadHelper audioLoadHelper) {
|
||||||
|
this.levelModel = new LevelModel(this.nav.getPickedLevelIdentifier(), audioLoadHelper);
|
||||||
|
}
|
||||||
|
}
|
@ -21,10 +21,8 @@ import javax.swing.*;
|
|||||||
* @author Valerian Saliou <valerian@valeriansaliou.name>
|
* @author Valerian Saliou <valerian@valeriansaliou.name>
|
||||||
* @since 2015-06-19
|
* @since 2015-06-19
|
||||||
*/
|
*/
|
||||||
public class LevelEditorController implements ActionListener {
|
public class LevelEditorController extends GameModuleController {
|
||||||
private LevelModel levelModel;
|
private LevelEditorView levelEditorView;
|
||||||
private LevelEditorView levelEditorView;
|
|
||||||
private NavigationBetweenViewController nav;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class constructor'
|
* Class constructor'
|
||||||
@ -32,16 +30,15 @@ public class LevelEditorController implements ActionListener {
|
|||||||
* @param levelModel Level model
|
* @param levelModel Level model
|
||||||
*/
|
*/
|
||||||
public LevelEditorController(LevelModel levelModel, NavigationBetweenViewController nav) {
|
public LevelEditorController(LevelModel levelModel, NavigationBetweenViewController nav) {
|
||||||
this.levelModel = levelModel;
|
super(levelModel, nav);
|
||||||
this.levelModel.setShowCursor(true);
|
levelModel.setShowCursor(true);
|
||||||
|
|
||||||
|
nav.getAudioLoadHelper().stopMusic();
|
||||||
|
|
||||||
this.nav = nav;
|
|
||||||
this.nav.getAudioLoadHelper().stopMusic();
|
|
||||||
|
|
||||||
this.levelEditorView = new LevelEditorView(this, levelModel, nav);
|
this.levelEditorView = new LevelEditorView(this, levelModel, nav);
|
||||||
|
|
||||||
// Pre-bind event watcher (hack to fix a Java issue)
|
// Pre-bind event watcher (hack to fix a Java issue)
|
||||||
this.levelModel.decrementCursorXPosition();
|
levelModel.decrementCursorXPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -49,19 +46,21 @@ public class LevelEditorController implements ActionListener {
|
|||||||
*
|
*
|
||||||
* @param event Action event
|
* @param event Action event
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void actionPerformed(ActionEvent event) {
|
public void actionPerformed(ActionEvent event) {
|
||||||
switch(event.getActionCommand()) {
|
switch(event.getActionCommand()) {
|
||||||
case "menu":
|
case "menu":
|
||||||
this.levelEditorView.setVisible(false);
|
this.levelEditorView.setVisible(false);
|
||||||
this.nav.setMenuView();
|
super.menuActionPerformed();
|
||||||
this.nav.getAudioLoadHelper().startMusic("game");
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "save":
|
case "save":
|
||||||
|
LevelModel levelModel = getLevelModel();
|
||||||
|
|
||||||
// Check constraints
|
// Check constraints
|
||||||
try {
|
try {
|
||||||
this.levelModel.checkConstraints();
|
levelModel.checkConstraints();
|
||||||
|
|
||||||
// Save action (direct save)
|
// Save action (direct save)
|
||||||
String levelId = this.levelEditorView.getSelectedLevel();
|
String levelId = this.levelEditorView.getSelectedLevel();
|
||||||
@ -121,15 +120,6 @@ public class LevelEditorController implements ActionListener {
|
|||||||
return levelEditorView;
|
return levelEditorView;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets level model
|
|
||||||
*
|
|
||||||
* @return Level model
|
|
||||||
*/
|
|
||||||
public LevelModel getLevelModel() {
|
|
||||||
return this.levelModel;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the level editor view
|
* Sets the level editor view
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user