Browse Source

upstream updates

tags/2.8
Chris Cromer 2 years ago
parent
commit
3bf267f3fc

+ 2
- 0
.gitignore View File

@@ -3,3 +3,5 @@
target/
*.o
DroidQuest
.idea/
*.iml

+ 1
- 1
Makefile View File

@@ -4,7 +4,7 @@ MV = mvn
CFLAGS=-Wall -Werror -ggdb

BIN=DroidQuest
JAR=dq-2.7.jar
JAR=dq-2.8.jar

all:
$(CC) $(CFLAGS) dq.c -o dq.o

+ 40
- 1
README View File

@@ -3,11 +3,50 @@ Droid Quest

A Java recreation of the classic game Robot Odyssey I

=======
Build with:

mvn install

Run the game:

MacOSX / Linux: ./start.sh
Windows: start.bat (IN PROGRESS)
OR
java -jar target/dq-2.8.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

Optimization to compile, install, and run under linux:

Copyright (c) 2015 Chris Cromer
Copyright (c) 2015-2016 Chris Cromer

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the

+ 1
- 1
dq.c View File

@@ -1,6 +1,6 @@
#include <stdlib.h>

int main() {
system("java -jar /usr/share/DroidQuest/dq-2.7.jar");
system("java -jar /usr/share/DroidQuest/dq-2.8.jar");
return 0;
}

+ 30
- 35
pom.xml View File

@@ -4,7 +4,7 @@

<groupId>com.droidquest</groupId>
<artifactId>dq</artifactId>
<version>2.7</version>
<version>2.8</version>
<packaging>jar</packaging>

<name>DroidQuest</name>
@@ -14,39 +14,34 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<!-- Build an executable JAR -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.droidquest.DQ</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<!-- Build an executable JAR -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.droidquest.DQ</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>

<dependencies>
<!--
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.13</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>16.0</version>
</dependency>
-->
</dependencies>
</project>

+ 9
- 9
src/com/droidquest/avatars/Player.java View File

@@ -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;
@@ -363,16 +363,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()) {
@@ -456,22 +456,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;
}
}

+ 10
- 8
src/com/droidquest/avatars/Remote.java View File

@@ -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;

+ 13
- 8
src/com/droidquest/avatars/SolderingPen.java View File

@@ -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;
@@ -428,6 +429,8 @@ public class SolderingPen extends Device implements Avatar {
}
}

CheckPort();

level.roomdisplay.dq.selectCursor();
return true;
}
@@ -505,6 +508,8 @@ public class SolderingPen extends Device implements Avatar {

handleRemote();

CheckPort();

return true;
}


+ 1
- 1
src/com/droidquest/items/AutoWire.java View File

@@ -113,7 +113,7 @@ public class AutoWire extends Item {

if (animation == 1) {
if (portdevices[0].ports[0].myWire == null) { // Wiring
portdevices[0].ports[0].myWire = new Wire(chip.ports[0], portdevices[0].ports[0]);
portdevices[0].ports[0].myWire = new Wire(chip.ports[0], portdevices[0].ports[0]);
}
else { // Unwiring
portdevices[0].ports[0].myWire.Remove();

+ 1
- 1
src/com/droidquest/items/GateKeeper.java View File

@@ -64,7 +64,7 @@ public class GateKeeper extends Item {

public void Animate() {
if (behavior == 1) {
if (x != goToX && y != goToY) {
if (x != goToX || y != goToY) {
if (x != goToX) {
int diff = Math.abs(goToX - x);
int dir = diff / (goToX - x);

+ 5
- 3
src/com/droidquest/items/Sentry.java View File

@@ -240,9 +240,11 @@ public class Sentry extends Item {

if (behavior == -1) {
if (carrying == null) {
x = robot.x + robot.width / 2 - width / 2;
y = robot.y + robot.height / 2 - height / 2;
PicksUp(robot);
if(robot != null) {
x = robot.x + robot.width / 2 - width / 2;
y = robot.y + robot.height / 2 - height / 2;
PicksUp(robot);
}
}
}


+ 1
- 1
src/com/droidquest/levels/MainMenu.java View File

@@ -144,7 +144,7 @@ public class MainMenu extends Level {
room.AddTextBox("Saved Games", 9 * 28, 10 * 32, 80);
room.AddTextBox("Games", 450, 6 * 32 + 8, 500);
room.AddArrow(559, 6 * 32, Arrow.DIR_RIGHT, 28, Color.white);
room.AddTextBox("{000,000,000} Version 2.7", 0, 16, 500);
room.AddTextBox("{000,000,000} Version 2.8", 0, 16, 500);
if (cheatmode) {
room.AddTextBox("{BIG} CHEAT ENABLED!", 91, 8 * 32, 500);
}

+ 1
- 1
src/com/droidquest/materials/BatteryIn.java View File

@@ -13,7 +13,7 @@ import com.droidquest.levels.Level;
public class BatteryIn extends Material {
// Charges the Battery when an Energy Crystal is passed over it.

public void BatteryIn() {
public BatteryIn() {
passable = true;
GenerateIcons();
}

+ 1
- 0
start.bat View File

@@ -0,0 +1 @@
java -jar "target\dq-2.8.jar"

+ 45
- 0
start.sh View File

@@ -0,0 +1,45 @@
#/bin/sh

RUNPRG="java"
if ! type -p "${RUNPRG}" > /dev/null;
then
if [ -n "${JAVA_HOME}" ];
then
RUNPRG="${JAVA_HOME}/bin/java"
if [ ! -x "${RUNPRG}" ];
then
echo "JAVA_HOME set, but unable to find java. Please check your java installation."
exit 1
fi
else
echo "Java 1.6 or newer needed for DQ. Must be in PATH or JAVA_HOME set."
exit 1
fi
fi


if [ -f "target/dq-2.8.jar" ];
then
echo "Starting DQ."
${RUNPRG} -jar "target/dq-2.8.jar"
else
echo "No jar found, building DQ before running."
MVNPRG="mvn"
if ! type -p "${MVNPRG}" > /dev/null;
then
if [ -n "${MAVEN_HOME}" ];
then
MVNPRG="${MAVEN_HOME}/bin/mvn"
if [ ! -x "${MVNPRG}" ];
then
echo "MAVEN_HOME set, but unable to find mvn executable. Please check your maven installation."
exit 1
fi
else
echo "Maven required to build DQ. See maven.apache.org to download."
exit 1
fi
fi
${MVNPRG} package
${MVNPRG} exec:java -Dexec.mainClass=com.droidquest.DQ
fi

Loading…
Cancel
Save