package bwapi; import bwapi.AIModule; import bwapi.BWEventListener; import java.io.*; import java.io.File; import java.lang.Exception; import java.lang.UnsupportedOperationException; import java.util.*; import java.util.regex.Pattern; import java.util.zip.*; /** *
The API entry point. Standard use case:
** {@code * * mirror.getModule().setEventListener(new DefaultBWListener() * { * public void onStart() { * game = mirror.getGame(); * self = game.self(); * //initialization * .... * } * * public void onUpdate() { * for (Unit myUnit : self.getUnits()) { * //give orders to unit * ... * } * } * }); * } * mirror.startGame(); **
Note: The Game object is initialized during the {@link #startGame()} as well as other BWMirror API's constants. * Do not use any API releated methods/fields prior to {@link #startGame()}.
*/ public class Mirror { private Game game; private AIModule module = new AIModule(); private FrameCallback frameCallback; private static final boolean EXTRACT_JAR = true; private static void extractResourceFile(String resourceFilename, String outputFilename) throws Exception { InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(resourceFilename); if (in == null) throw new FileNotFoundException("Resource file not found: " + resourceFilename); FileOutputStream out; try { out = new FileOutputStream(outputFilename); } catch (Exception e) { throw new FileNotFoundException("Could not open output file: " + outputFilename); } byte[] buffer = new byte[4096]; int bytesRead; while ((bytesRead = in.read(buffer, 0, buffer.length)) != -1) { out.write(buffer, 0, bytesRead); } out.close(); in.close(); } private static boolean extractAndLoadNativeLibraries() { try { System.out.println("Extracting bwapi_bridge.dll"); extractResourceFile("bwapi_bridge.dll", "./bwapi_bridge.dll"); System.out.println("Extracting libgmp-10.dll"); extractResourceFile("libgmp-10.dll", "./libgmp-10.dll"); System.out.println("Extracting libmpfr-4.dll"); extractResourceFile("libmpfr-4.dll", "./libmpfr-4.dll"); System.out.println("Loading native library bwapi_bridge.dll"); System.load(new File("./bwapi_bridge.dll").getAbsolutePath()); } catch (Exception e) { e.printStackTrace(); return false; } return true; } private static boolean extractBwtaDataFiles() { try { Collection