diff --git a/README.md b/README.md
index fdb36a6..48b5c28 100644
--- a/README.md
+++ b/README.md
@@ -3,13 +3,42 @@ DroidQuest
A Java recreation of the classic game Robot Odyssey I
-Compile command:
+Build with:
- mvn compile
+ mvn install
Run the game:
- ./start_game.sh
+ ./start_game.sh
+OR
+ java -jar target/dq-1.1-SNAPSHOT.jar
+
+Controls:
+
+ / - contextual help
+ arrows - normal movement
+ control + arrows - fine-grained movement [OS X: command + arrows]
+ space - pickup/drop
+ C - game cursor
+ H - hot cursor
+ S - solder pen
+ R - toggle radio
+ P - paintbrush
+ T - toolbox
+ [, ] - rotate device
+ F - flip
+ L - load small chip
+ E - enter robot
+ X - exit robot
+
+ Cheat/debug:
+
+ shift + arrows - move rooms
+ M - dump memory usage
+
+Note: On OS X, control + arrow-keys are bound to Apple's "Mission Control". I switched to the 'shortcut' modifier which is control on windows and command on OS X. Alternatively, you can disable
+built in OS X shortcuts via System Preferences -> Keyboard -> Shorcuts.
+
Copyright (c) 2000 Thomas Foote
diff --git a/pom.xml b/pom.xml
index e7452ac..13b9136 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,21 +26,21 @@
5
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 2.4
+
+
+
+ true
+ lib/
+ com.droidquest.DQ
+
+
+
+
-
-
-
-
diff --git a/src/com/droidquest/avatars/Player.java b/src/com/droidquest/avatars/Player.java
index a145678..fc1788a 100644
--- a/src/com/droidquest/avatars/Player.java
+++ b/src/com/droidquest/avatars/Player.java
@@ -15,7 +15,7 @@ import java.awt.event.KeyEvent;
public class Player extends Item implements Avatar {
private int keyRepeatRate = 5;
-
+ private int shortcut_modifier = Toolkit.getDefaultToolkit ().getMenuShortcutKeyMask();
protected boolean handleSaveSmallChip() {
return false;
@@ -362,16 +362,16 @@ public class Player extends Item implements Avatar {
else if (e.getKeyCode() == KeyEvent.VK_SLASH && handleHelp()) {
return false;
}
- else if (e.getKeyCode() == KeyEvent.VK_RIGHT && handleMoveRight(e.isShiftDown(), e.isControlDown())) {
+ else if (e.getKeyCode() == KeyEvent.VK_RIGHT && handleMoveRight(e.isShiftDown(), (e.getModifiers() & shortcut_modifier) > 0)) {
return true;
}
- else if (e.getKeyCode() == KeyEvent.VK_LEFT && handleMoveLeft(e.isShiftDown(), e.isControlDown())) {
+ else if (e.getKeyCode() == KeyEvent.VK_LEFT && handleMoveLeft(e.isShiftDown(), (e.getModifiers() & shortcut_modifier) > 0)) {
return true;
}
- else if (e.getKeyCode() == KeyEvent.VK_UP && handleMoveUp(e.isShiftDown(), e.isControlDown())) {
+ else if (e.getKeyCode() == KeyEvent.VK_UP && handleMoveUp(e.isShiftDown(), (e.getModifiers() & shortcut_modifier) > 0)) {
return true;
}
- else if (e.getKeyCode() == KeyEvent.VK_DOWN && handleMoveDown(e.isShiftDown(), e.isControlDown())) {
+ else if (e.getKeyCode() == KeyEvent.VK_DOWN && handleMoveDown(e.isShiftDown(), (e.getModifiers() & shortcut_modifier) > 0)) {
return true;
}
else if (e.getKeyCode() == KeyEvent.VK_SPACE && handlePickupDrop()) {
@@ -455,22 +455,22 @@ public class Player extends Item implements Avatar {
public boolean KeyDown(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
- if (handleRepeatRight(e.isControlDown())) {
+ if (handleRepeatRight((e.getModifiers() & shortcut_modifier) > 0)) {
return true;
}
}
else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
- if (handleRepeatLeft(e.isControlDown())) {
+ if (handleRepeatLeft((e.getModifiers() & shortcut_modifier) > 0)) {
return true;
}
}
else if (e.getKeyCode() == KeyEvent.VK_UP) {
- if (handleRepeatUp(e.isControlDown())) {
+ if (handleRepeatUp((e.getModifiers() & shortcut_modifier) > 0)) {
return true;
}
}
else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
- if (handleRepeatDown(e.isControlDown())) {
+ if (handleRepeatDown((e.getModifiers() & shortcut_modifier) > 0)) {
return true;
}
}
diff --git a/src/com/droidquest/avatars/Remote.java b/src/com/droidquest/avatars/Remote.java
index 564b18b..e9aa1e7 100644
--- a/src/com/droidquest/avatars/Remote.java
+++ b/src/com/droidquest/avatars/Remote.java
@@ -8,6 +8,8 @@ import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
public class Remote extends Item implements Avatar {
+ private int shortcut_modifier = Toolkit.getDefaultToolkit ().getMenuShortcutKeyMask();
+
public Remote() {
width = 4;
height = 20;
@@ -98,28 +100,28 @@ public class Remote extends Item implements Avatar {
}
else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
if (carriedBy == null) {
- moveRight(e.isControlDown());
+ moveRight((e.getModifiers() & shortcut_modifier) > 0);
}
repeating = 0;
return true;
}
else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
if (carriedBy == null) {
- moveLeft(e.isControlDown());
+ moveLeft((e.getModifiers() & shortcut_modifier) > 0);
}
repeating = 0;
return true;
}
else if (e.getKeyCode() == KeyEvent.VK_UP) {
if (carriedBy == null) {
- moveUp(e.isControlDown());
+ moveUp((e.getModifiers() & shortcut_modifier) > 0);
}
repeating = 0;
return true;
}
else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
if (carriedBy == null) {
- moveDown(e.isControlDown());
+ moveDown((e.getModifiers() & shortcut_modifier) > 0);
}
repeating = 0;
return true;
@@ -134,7 +136,7 @@ public class Remote extends Item implements Avatar {
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
repeating++;
if (repeating > 10) {
- moveRight(e.isControlDown());
+ moveRight((e.getModifiers() & shortcut_modifier) > 0);
return true;
}
return false;
@@ -142,7 +144,7 @@ public class Remote extends Item implements Avatar {
else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
repeating++;
if (repeating > 10) {
- moveLeft(e.isControlDown());
+ moveLeft((e.getModifiers() & shortcut_modifier) > 0);
return true;
}
return false;
@@ -150,7 +152,7 @@ public class Remote extends Item implements Avatar {
else if (e.getKeyCode() == KeyEvent.VK_UP) {
repeating++;
if (repeating > 10) {
- moveUp(e.isControlDown());
+ moveUp((e.getModifiers() & shortcut_modifier) > 0);
return true;
}
return false;
@@ -158,7 +160,7 @@ public class Remote extends Item implements Avatar {
else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
repeating++;
if (repeating > 10) {
- moveDown(e.isControlDown());
+ moveDown((e.getModifiers() & shortcut_modifier) > 0);
return true;
}
return false;
diff --git a/src/com/droidquest/avatars/SolderingPen.java b/src/com/droidquest/avatars/SolderingPen.java
index 6d9b286..5148f69 100644
--- a/src/com/droidquest/avatars/SolderingPen.java
+++ b/src/com/droidquest/avatars/SolderingPen.java
@@ -18,6 +18,7 @@ import java.util.ArrayList;
public class SolderingPen extends Device implements Avatar {
private boolean hot;
private Port currentPort = null; // Port that Soldering pen is currently over
+ private int shortcut_modifier = Toolkit.getDefaultToolkit ().getMenuShortcutKeyMask();
public SolderingPen() {
width = 22;
@@ -313,28 +314,28 @@ public class SolderingPen extends Device implements Avatar {
}
else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
if (carriedBy == null) {
- moveRight(e.isControlDown());
+ moveRight((e.getModifiers() & shortcut_modifier) > 0);
}
repeating = 0;
return true;
}
else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
if (carriedBy == null) {
- moveLeft(e.isControlDown());
+ moveLeft((e.getModifiers() & shortcut_modifier) > 0);
}
repeating = 0;
return true;
}
else if (e.getKeyCode() == KeyEvent.VK_UP) {
if (carriedBy == null) {
- moveUp(e.isControlDown());
+ moveUp((e.getModifiers() & shortcut_modifier) > 0);
}
repeating = 0;
return true;
}
else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
if (carriedBy == null) {
- moveDown(e.isControlDown());
+ moveDown((e.getModifiers() & shortcut_modifier) > 0);
}
repeating = 0;
return true;
@@ -358,7 +359,7 @@ public class SolderingPen extends Device implements Avatar {
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
repeating++;
if (repeating > 10) {
- moveRight(e.isControlDown());
+ moveRight((e.getModifiers() & shortcut_modifier) > 0);
return true;
}
return false;
@@ -366,7 +367,7 @@ public class SolderingPen extends Device implements Avatar {
else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
repeating++;
if (repeating > 10) {
- moveLeft(e.isControlDown());
+ moveLeft((e.getModifiers() & shortcut_modifier) > 0);
return true;
}
return false;
@@ -374,7 +375,7 @@ public class SolderingPen extends Device implements Avatar {
else if (e.getKeyCode() == KeyEvent.VK_UP) {
repeating++;
if (repeating > 10) {
- moveUp(e.isControlDown());
+ moveUp((e.getModifiers() & shortcut_modifier) > 0);
return true;
}
return false;
@@ -382,7 +383,7 @@ public class SolderingPen extends Device implements Avatar {
else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
repeating++;
if (repeating > 10) {
- moveDown(e.isControlDown());
+ moveDown((e.getModifiers() & shortcut_modifier) > 0);
return true;
}
return false;