#!/usr/bin/env bash # Build the Approach-(B) shim. # # Requires JAVA_HOME/javac on PATH, the genuine Robocode 1.9.5.5 jar (for the # robocode.* API the peer implements) and the Tank Royale Java bot API jar (for # DrussGTBridge / TrBattleCapture). # # ROBOCODE_JAR=/path/to/robocode.jar TR_BOT_API_JAR=/path/to/bot-api.jar ./build.sh set -euo pipefail HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ROBOCODE_JAR="${ROBOCODE_JAR:-/tmp/robocode/install/libs/robocode.jar}" TR_BOT_API_JAR="${TR_BOT_API_JAR:-$HOME/Downloads/sample-bots-java-1.0.2/lib/robocode-tankroyale-bot-api-1.0.2.jar}" OUT="${OUT:-$HERE/out}" RUNNER_JAR="${TR_RUNNER_JAR:-/home/davide/Projects/tank-royale/runner/examples/lib/robocode-tankroyale-runner.jar}" if [[ ! -f "$ROBOCODE_JAR" ]]; then echo "robocode.jar not found: $ROBOCODE_JAR" >&2 echo "Set ROBOCODE_JAR to a Robocode 1.9.5.5 install's libs/robocode.jar" >&2 exit 1 fi if [[ ! -f "$TR_BOT_API_JAR" ]]; then echo "Tank Royale bot API jar not found: $TR_BOT_API_JAR" >&2 echo "Set TR_BOT_API_JAR to robocode-tankroyale-bot-api-*.jar" >&2 exit 1 fi mkdir -p "$OUT" javac -nowarn -cp "$ROBOCODE_JAR:$TR_BOT_API_JAR" -d "$OUT" \ "$HERE/src/robocode_shim/ClassicPeer.java" \ "$HERE/src/robocode_shim/BotHost.java" \ "$HERE/src/robocode_shim/TankRoyaleBridge.java" \ "$HERE/src/robocode_shim/ThreadManagerFix.java" \ "$HERE/src/robocode_shim/ThreadManagerFixTest.java" \ "$HERE/src/robocode_shim/DrussGTBridge.java" \ "$HERE/src/robocode_shim/SmokeTest.java" echo "shim built -> $OUT" # The observer/capture program needs the battle-runner jar (which bundles the # Tank Royale client model + embedded server) rather than the bot API. if [[ -f "$RUNNER_JAR" ]]; then javac -nowarn -cp "$RUNNER_JAR" -d "$OUT" \ "$HERE/src/robocode_shim/TrBattleCapture.java" echo "capture built -> $OUT" else echo "runner jar not found ($RUNNER_JAR); skipped TrBattleCapture" >&2 fi