superclass implements KeyListener
This commit is contained in:
parent
2247c7f43d
commit
59a7ecff2e
@ -0,0 +1,46 @@
|
||||
package fr.enssat.BoulderDash.controllers;
|
||||
|
||||
import fr.enssat.BoulderDash.models.LevelModel;
|
||||
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.KeyListener;
|
||||
|
||||
public abstract class AbstractKeyController extends AbstractLevelController implements KeyListener {
|
||||
public AbstractKeyController(LevelModel levelModel) {
|
||||
super(levelModel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the 'key pressed' event
|
||||
*
|
||||
* @param e Key event
|
||||
*/
|
||||
public void keyPressed(KeyEvent e) {
|
||||
handleKey(e.getKeyCode());
|
||||
additionalSteps();
|
||||
}
|
||||
|
||||
protected abstract void handleKey(final int keyCode);
|
||||
|
||||
protected void additionalSteps(){}
|
||||
|
||||
/**
|
||||
* Handles the 'key released' event
|
||||
*
|
||||
* @param e Key event
|
||||
*/
|
||||
@Override
|
||||
public void keyReleased(KeyEvent e) {
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the 'key typed' event
|
||||
*
|
||||
* @param e Key event
|
||||
*/
|
||||
@Override
|
||||
public void keyTyped(KeyEvent e) {
|
||||
// Do nothing.
|
||||
}
|
||||
}
|
@ -15,7 +15,7 @@ import java.awt.event.KeyListener;
|
||||
* @author Colin Leverger <me@colinleverger.fr>
|
||||
* @since 2015-06-19
|
||||
*/
|
||||
public class GameKeyController extends AbstractLevelController implements KeyListener {
|
||||
public class GameKeyController extends AbstractKeyController {
|
||||
private RockfordUpdateController updatePosRockford;
|
||||
|
||||
/**
|
||||
@ -29,61 +29,60 @@ public class GameKeyController extends AbstractLevelController implements KeyLis
|
||||
this.updatePosRockford = new RockfordUpdateController(levelModel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the 'key pressed' event
|
||||
*
|
||||
* @param e Key event
|
||||
*/
|
||||
public void keyPressed(KeyEvent e) {
|
||||
int keyCode = e.getKeyCode();
|
||||
|
||||
@Override
|
||||
protected void handleKey(final int keyCode) {
|
||||
switch (keyCode) {
|
||||
// Direction: UP
|
||||
case KeyEvent.VK_UP:
|
||||
DisplayableElementModel upElement = levelModel.getGroundLevelModel()[levelModel.getRockfordPositionX()][levelModel.getRockfordPositionY() - 1];
|
||||
|
||||
if (upElement.getPriority() < levelModel.getRockford().getPriority()) {
|
||||
this.updatePosRockford.moveRockford(levelModel.getRockfordPositionX(), levelModel.getRockfordPositionY() - 1);
|
||||
this.levelModel.getRockford().startRunningUp();
|
||||
}
|
||||
|
||||
up();
|
||||
break;
|
||||
|
||||
// Direction: DOWN
|
||||
case KeyEvent.VK_DOWN:
|
||||
DisplayableElementModel downElement = levelModel.getGroundLevelModel()[levelModel.getRockfordPositionX()][levelModel.getRockfordPositionY() + 1];
|
||||
|
||||
if (downElement.getPriority() < levelModel.getRockford().getPriority()) {
|
||||
this.updatePosRockford.moveRockford(levelModel.getRockfordPositionX(), levelModel.getRockfordPositionY() + 1);
|
||||
this.levelModel.getRockford().startRunningDown();
|
||||
}
|
||||
|
||||
down();
|
||||
break;
|
||||
|
||||
// Direction: LEFT
|
||||
case KeyEvent.VK_LEFT:
|
||||
DisplayableElementModel leftElement = levelModel.getGroundLevelModel()[levelModel.getRockfordPositionX() - 1][levelModel.getRockfordPositionY()];
|
||||
|
||||
if (leftElement.getPriority() < levelModel.getRockford().getPriority()) {
|
||||
this.updatePosRockford.moveRockford(levelModel.getRockfordPositionX() - 1, levelModel.getRockfordPositionY());
|
||||
this.levelModel.getRockford().startRunningLeft();
|
||||
}
|
||||
|
||||
left();
|
||||
break;
|
||||
|
||||
// Direction: RIGHT
|
||||
case KeyEvent.VK_RIGHT:
|
||||
DisplayableElementModel rightElement = levelModel.getGroundLevelModel()[levelModel.getRockfordPositionX() + 1][levelModel.getRockfordPositionY()];
|
||||
|
||||
if (rightElement.getPriority() < levelModel.getRockford().getPriority()) {
|
||||
this.updatePosRockford.moveRockford(levelModel.getRockfordPositionX() + 1, levelModel.getRockfordPositionY());
|
||||
this.levelModel.getRockford().startRunningRight();
|
||||
}
|
||||
|
||||
right();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void right() {
|
||||
DisplayableElementModel rightElement = levelModel.getGroundLevelModel()[levelModel.getRockfordPositionX() + 1][levelModel.getRockfordPositionY()];
|
||||
|
||||
if (rightElement.getPriority() < levelModel.getRockford().getPriority()) {
|
||||
this.updatePosRockford.moveRockford(levelModel.getRockfordPositionX() + 1, levelModel.getRockfordPositionY());
|
||||
this.levelModel.getRockford().startRunningRight();
|
||||
}
|
||||
}
|
||||
|
||||
private void left() {
|
||||
DisplayableElementModel leftElement = levelModel.getGroundLevelModel()[levelModel.getRockfordPositionX() - 1][levelModel.getRockfordPositionY()];
|
||||
|
||||
if (leftElement.getPriority() < levelModel.getRockford().getPriority()) {
|
||||
this.updatePosRockford.moveRockford(levelModel.getRockfordPositionX() - 1, levelModel.getRockfordPositionY());
|
||||
this.levelModel.getRockford().startRunningLeft();
|
||||
}
|
||||
}
|
||||
|
||||
private void down() {
|
||||
DisplayableElementModel downElement = levelModel.getGroundLevelModel()[levelModel.getRockfordPositionX()][levelModel.getRockfordPositionY() + 1];
|
||||
|
||||
if (downElement.getPriority() < levelModel.getRockford().getPriority()) {
|
||||
this.updatePosRockford.moveRockford(levelModel.getRockfordPositionX(), levelModel.getRockfordPositionY() + 1);
|
||||
this.levelModel.getRockford().startRunningDown();
|
||||
}
|
||||
}
|
||||
|
||||
private void up() {
|
||||
DisplayableElementModel upElement = levelModel.getGroundLevelModel()[levelModel.getRockfordPositionX()][levelModel.getRockfordPositionY() - 1];
|
||||
|
||||
if (upElement.getPriority() < levelModel.getRockford().getPriority()) {
|
||||
this.updatePosRockford.moveRockford(levelModel.getRockfordPositionX(), levelModel.getRockfordPositionY() - 1);
|
||||
this.levelModel.getRockford().startRunningUp();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the 'key released' event
|
||||
*
|
||||
@ -93,14 +92,4 @@ public class GameKeyController extends AbstractLevelController implements KeyLis
|
||||
public void keyReleased(KeyEvent e) {
|
||||
this.levelModel.getRockford().startStaying();
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the 'key typed' event
|
||||
*
|
||||
* @param e Key event
|
||||
*/
|
||||
@Override
|
||||
public void keyTyped(KeyEvent e) {
|
||||
// Do nothing.
|
||||
}
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ import java.awt.event.KeyListener;
|
||||
* @author Valerian Saliou <valerian@valeriansaliou.name>
|
||||
* @since 2015-06-21
|
||||
*/
|
||||
public class LevelEditorKeyController extends AbstractLevelController implements KeyListener {
|
||||
public class LevelEditorKeyController extends AbstractKeyController {
|
||||
private LevelEditorView levelEditorView;
|
||||
private boolean capLocks;
|
||||
|
||||
@ -31,68 +31,61 @@ public class LevelEditorKeyController extends AbstractLevelController implements
|
||||
this.levelEditorView = levelEditorView;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the 'key pressed' event
|
||||
*
|
||||
* @param e Key event
|
||||
*/
|
||||
public void keyPressed(KeyEvent e) {
|
||||
int keyCode = e.getKeyCode();
|
||||
|
||||
@Override
|
||||
protected void handleKey(final int keyCode) {
|
||||
switch (keyCode) {
|
||||
// Direction: UP
|
||||
case KeyEvent.VK_UP:
|
||||
this.levelModel.decrementCursorYPosition();
|
||||
up();
|
||||
break;
|
||||
|
||||
// Direction: DOWN
|
||||
case KeyEvent.VK_DOWN:
|
||||
this.levelModel.incrementCursorYPosition();
|
||||
down();
|
||||
break;
|
||||
|
||||
// Direction: LEFT
|
||||
case KeyEvent.VK_LEFT:
|
||||
this.levelModel.decrementCursorXPosition();
|
||||
left();
|
||||
break;
|
||||
|
||||
// Direction: RIGHT
|
||||
case KeyEvent.VK_RIGHT:
|
||||
this.levelModel.incrementCursorXPosition();
|
||||
right();
|
||||
break;
|
||||
|
||||
// Key: SPACE
|
||||
case KeyEvent.VK_SPACE:
|
||||
this.levelModel.triggerBlockChange(this.levelEditorView.getPickedBlockValue());
|
||||
space();
|
||||
break;
|
||||
|
||||
case 16:
|
||||
this.capLocks = !capLocks;
|
||||
case KeyEvent.VK_SHIFT:
|
||||
shift();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void additionalSteps() {
|
||||
// Hold block change (quick edit)
|
||||
if (capLocks) {
|
||||
this.levelModel.triggerBlockChange(this.levelEditorView.getPickedBlockValue());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the 'key released' event
|
||||
*
|
||||
* @param e Key event
|
||||
*/
|
||||
@Override
|
||||
public void keyReleased(KeyEvent e) {
|
||||
// Do nothing.
|
||||
private void shift() {
|
||||
this.capLocks = !capLocks;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the 'key typed' event
|
||||
*
|
||||
* @param e Key event
|
||||
*/
|
||||
@Override
|
||||
public void keyTyped(KeyEvent e) {
|
||||
// Do nothing.
|
||||
private void space() {
|
||||
this.levelModel.triggerBlockChange(this.levelEditorView.getPickedBlockValue());
|
||||
}
|
||||
|
||||
private void right() {
|
||||
this.levelModel.incrementCursorXPosition();
|
||||
}
|
||||
|
||||
private void left() {
|
||||
this.levelModel.decrementCursorXPosition();
|
||||
}
|
||||
|
||||
private void down() {
|
||||
this.levelModel.incrementCursorYPosition();
|
||||
}
|
||||
|
||||
private void up() {
|
||||
this.levelModel.decrementCursorYPosition();
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user