Created a superclass for GameKeyController and LevelEditorKeyController

This commit is contained in:
0nlineSam 2024-11-07 14:33:13 +01:00
parent 2751521dd5
commit 1b54c07d3c
3 changed files with 59 additions and 49 deletions

View File

@ -7,7 +7,6 @@ import fr.enssat.BoulderDash.controllers.BoulderAndDiamondController;
import fr.enssat.BoulderDash.helpers.AudioLoadHelper; import fr.enssat.BoulderDash.helpers.AudioLoadHelper;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
/** /**
@ -18,8 +17,7 @@ import java.awt.event.KeyListener;
* @author Colin Leverger <me@colinleverger.fr> * @author Colin Leverger <me@colinleverger.fr>
* @since 2015-06-19 * @since 2015-06-19
*/ */
public class GameKeyController implements KeyListener { public class GameKeyController extends KeyController {
private LevelModel levelModel;
private RockfordUpdateController updatePosRockford; private RockfordUpdateController updatePosRockford;
/** /**
* Class constructor * Class constructor
@ -27,18 +25,14 @@ public class GameKeyController implements KeyListener {
* @param levelModel Level model * @param levelModel Level model
*/ */
public GameKeyController(LevelModel levelModel, AudioLoadHelper audioLoadHelper) { public GameKeyController(LevelModel levelModel, AudioLoadHelper audioLoadHelper) {
this.levelModel = levelModel; super(levelModel);
new BoulderAndDiamondController(levelModel, audioLoadHelper); new BoulderAndDiamondController(levelModel, audioLoadHelper);
this.updatePosRockford = new RockfordUpdateController(levelModel); this.updatePosRockford = new RockfordUpdateController(levelModel);
} }
/**
* Handles the 'key pressed' event
*
* @param e Key event
*/
public void keyPressed(KeyEvent e) { public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode(); int keyCode = e.getKeyCode();
LevelModel levelModel = getLevelModel();
switch (keyCode) { switch (keyCode) {
// Direction: UP // Direction: UP
@ -47,7 +41,7 @@ public class GameKeyController implements KeyListener {
if (upElement.getPriority() < levelModel.getRockford().getPriority()) { if (upElement.getPriority() < levelModel.getRockford().getPriority()) {
this.updatePosRockford.moveRockford(levelModel.getRockfordPositionX(), levelModel.getRockfordPositionY() - 1); this.updatePosRockford.moveRockford(levelModel.getRockfordPositionX(), levelModel.getRockfordPositionY() - 1);
this.levelModel.getRockford().startRunningUp(); levelModel.getRockford().startRunningUp();
} }
break; break;
@ -58,7 +52,7 @@ public class GameKeyController implements KeyListener {
if (downElement.getPriority() < levelModel.getRockford().getPriority()) { if (downElement.getPriority() < levelModel.getRockford().getPriority()) {
this.updatePosRockford.moveRockford(levelModel.getRockfordPositionX(), levelModel.getRockfordPositionY() + 1); this.updatePosRockford.moveRockford(levelModel.getRockfordPositionX(), levelModel.getRockfordPositionY() + 1);
this.levelModel.getRockford().startRunningDown(); levelModel.getRockford().startRunningDown();
} }
break; break;
@ -69,7 +63,7 @@ public class GameKeyController implements KeyListener {
if (leftElement.getPriority() < levelModel.getRockford().getPriority()) { if (leftElement.getPriority() < levelModel.getRockford().getPriority()) {
this.updatePosRockford.moveRockford(levelModel.getRockfordPositionX() - 1, levelModel.getRockfordPositionY()); this.updatePosRockford.moveRockford(levelModel.getRockfordPositionX() - 1, levelModel.getRockfordPositionY());
this.levelModel.getRockford().startRunningLeft(); levelModel.getRockford().startRunningLeft();
} }
break; break;
@ -80,28 +74,18 @@ public class GameKeyController implements KeyListener {
if (rightElement.getPriority() < levelModel.getRockford().getPriority()) { if (rightElement.getPriority() < levelModel.getRockford().getPriority()) {
this.updatePosRockford.moveRockford(levelModel.getRockfordPositionX() + 1, levelModel.getRockfordPositionY()); this.updatePosRockford.moveRockford(levelModel.getRockfordPositionX() + 1, levelModel.getRockfordPositionY());
this.levelModel.getRockford().startRunningRight(); levelModel.getRockford().startRunningRight();
} }
break; break;
} }
} }
/**
* Handles the 'key released' event
*
* @param e Key event
*/
@Override @Override
public void keyReleased(KeyEvent e) { public void keyReleased(KeyEvent e) {
this.levelModel.getRockford().startStaying(); getLevelModel().getRockford().startStaying();
} }
/**
* Handles the 'key typed' event
*
* @param e Key event
*/
@Override @Override
public void keyTyped(KeyEvent e) { public void keyTyped(KeyEvent e) {
// Do nothing. // Do nothing.

View File

@ -0,0 +1,41 @@
package fr.enssat.BoulderDash.controllers;
import fr.enssat.BoulderDash.models.LevelModel;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public abstract class KeyController implements KeyListener {
private LevelModel levelModel;
public KeyController(LevelModel levelModel) {
this.levelModel = levelModel;
}
/**
* Handles the 'key pressed' event
*
* @param e Key event
*/
public abstract void keyPressed(KeyEvent e);
/**
* Handles the 'key released' event
*
* @param e Key event
*/
@Override
public abstract void keyReleased(KeyEvent e);
/**
* Handles the 'key typed' event
*
* @param e Key event
*/
@Override
public abstract void keyTyped(KeyEvent e);
public LevelModel getLevelModel() {
return levelModel;
}
}

View File

@ -4,7 +4,6 @@ import fr.enssat.BoulderDash.models.LevelModel;
import fr.enssat.BoulderDash.views.LevelEditorView; import fr.enssat.BoulderDash.views.LevelEditorView;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
/** /**
@ -15,8 +14,7 @@ import java.awt.event.KeyListener;
* @author Valerian Saliou <valerian@valeriansaliou.name> * @author Valerian Saliou <valerian@valeriansaliou.name>
* @since 2015-06-21 * @since 2015-06-21
*/ */
public class LevelEditorKeyController implements KeyListener { public class LevelEditorKeyController extends KeyController {
private LevelModel levelModel;
private LevelEditorView levelEditorView; private LevelEditorView levelEditorView;
private boolean capLocks; private boolean capLocks;
@ -27,43 +25,40 @@ public class LevelEditorKeyController implements KeyListener {
* @param levelEditorView Level editor view * @param levelEditorView Level editor view
*/ */
public LevelEditorKeyController(LevelModel levelModel, LevelEditorView levelEditorView) { public LevelEditorKeyController(LevelModel levelModel, LevelEditorView levelEditorView) {
this.levelModel = levelModel; super(levelModel);
this.capLocks = false; this.capLocks = false;
this.levelEditorView = levelEditorView; this.levelEditorView = levelEditorView;
} }
/** @Override
* Handles the 'key pressed' event
*
* @param e Key event
*/
public void keyPressed(KeyEvent e) { public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode(); int keyCode = e.getKeyCode();
LevelModel levelModel = getLevelModel();
switch (keyCode) { switch (keyCode) {
// Direction: UP // Direction: UP
case KeyEvent.VK_UP: case KeyEvent.VK_UP:
this.levelModel.decrementCursorYPosition(); levelModel.decrementCursorYPosition();
break; break;
// Direction: DOWN // Direction: DOWN
case KeyEvent.VK_DOWN: case KeyEvent.VK_DOWN:
this.levelModel.incrementCursorYPosition(); levelModel.incrementCursorYPosition();
break; break;
// Direction: LEFT // Direction: LEFT
case KeyEvent.VK_LEFT: case KeyEvent.VK_LEFT:
this.levelModel.decrementCursorXPosition(); levelModel.decrementCursorXPosition();
break; break;
// Direction: RIGHT // Direction: RIGHT
case KeyEvent.VK_RIGHT: case KeyEvent.VK_RIGHT:
this.levelModel.incrementCursorXPosition(); levelModel.incrementCursorXPosition();
break; break;
// Key: SPACE // Key: SPACE
case KeyEvent.VK_SPACE: case KeyEvent.VK_SPACE:
this.levelModel.triggerBlockChange(this.levelEditorView.getPickedBlockValue()); levelModel.triggerBlockChange(this.levelEditorView.getPickedBlockValue());
break; break;
case 16: case 16:
@ -73,25 +68,15 @@ public class LevelEditorKeyController implements KeyListener {
// Hold block change (quick edit) // Hold block change (quick edit)
if(capLocks) { if(capLocks) {
this.levelModel.triggerBlockChange(this.levelEditorView.getPickedBlockValue()); levelModel.triggerBlockChange(this.levelEditorView.getPickedBlockValue());
} }
} }
/**
* Handles the 'key released' event
*
* @param e Key event
*/
@Override @Override
public void keyReleased(KeyEvent e) { public void keyReleased(KeyEvent e) {
// Do nothing. // Do nothing.
} }
/**
* Handles the 'key typed' event
*
* @param e Key event
*/
@Override @Override
public void keyTyped(KeyEvent e) { public void keyTyped(KeyEvent e) {
// Do nothing. // Do nothing.