コード例 #1
0
  private void loadPreferences(ISettingsManager robocodeProperties) {
    getEnableSoundCheckBox().setSelected(robocodeProperties.getOptionsSoundEnableSound());
    getEnableGunshotCheckBox().setSelected(robocodeProperties.getOptionsSoundEnableGunshot());
    getEnableBulletHitCheckBox().setSelected(robocodeProperties.getOptionsSoundEnableBulletHit());
    getEnableRobotDeathCheckBox().setSelected(robocodeProperties.getOptionsSoundEnableRobotDeath());
    getEnableRobotCollisionCheckBox()
        .setSelected(robocodeProperties.getOptionsSoundEnableRobotCollision());
    getEnableWallCollisionCheckBox()
        .setSelected(robocodeProperties.getOptionsSoundEnableWallCollision());
    getEnableMixerVolumeCheckBox()
        .setSelected(robocodeProperties.getOptionsSoundEnableMixerVolume());
    getEnableMixerPanCheckBox().setSelected(robocodeProperties.getOptionsSoundEnableMixerPan());

    setMixerCompoBox(robocodeProperties.getOptionsSoundMixer());
  }
コード例 #2
0
  public void storePreferences() {
    ISettingsManager props = properties;

    props.setOptionsRenderingAntialiasing(optionsRenderingAntialiasingComboBox.getSelectedIndex());
    props.setOptionsRenderingTextAntialiasing(
        optionsRenderingTextAntialiasingComboBox.getSelectedIndex());
    props.setOptionsRenderingMethod(optionsRenderingMethodComboBox.getSelectedIndex());
    props.setOptionsRenderingNoBuffers(optionsRenderingNoBuffersComboBox.getSelectedIndex() + 1);
    props.setOptionsRenderingBufferImages(optionsRenderingBufferImagesCheckBox.isSelected());
    props.setOptionsRenderingForceBulletColor(
        optionsRenderingForceBulletColorCheckBox.isSelected());
    properties.saveProperties();
  }
コード例 #3
0
ファイル: RankingDialog.java プロジェクト: programus/j-bots
  public RankingDialog(
      IWindowManager windowManager, ISettingsManager settingsManager, MenuBar menu) {
    super(settingsManager.getOptionsCommonDontHideRankings() ? null : windowManager, false);

    initialize();

    this.windowManager = windowManager;
    battleObserver = new BattleObserver();
    timerTask = new Timer(1000 / 2, new TimerTask());
    snapshot = new AtomicReference<ITurnSnapshot>();
    lastRows = 0;
    tableModel = new BattleRankingTableModel();
    this.menu = menu;
    setTitle("Ranking");
  }
コード例 #4
0
 private void loadPreferences(ISettingsManager props) {
   getOptionsRenderingAntialiasingComboBox()
       .setSelectedIndex(props.getOptionsRenderingAntialiasing());
   getOptionsRenderingTextAntialiasingComboBox()
       .setSelectedIndex(props.getOptionsRenderingTextAntialiasing());
   getOptionsRenderingMethodComboBox().setSelectedIndex(props.getOptionsRenderingMethod());
   getOptionsRenderingNoBuffersComboBox()
       .setSelectedIndex(props.getOptionsRenderingNoBuffers() - 1);
   getOptionsRenderingBufferImagesCheckBox().setSelected(props.getOptionsRenderingBufferImages());
   getOptionsRenderingForceBulletColorCheckBox()
       .setSelected(props.getOptionsRenderingForceBulletColor());
 }
コード例 #5
0
  public void loadSetup(String[] args) {

    final String nosecMessage =
        "Robocode is running without a security manager.\n"
            + "Robots have full access to your system.\n"
            + "You should only run robots which you trust!";
    final String exMessage =
        "Robocode is running in experimental mode.\n"
            + "Robots have access to their IRobotPeer interfaces.\n"
            + "You should only run robots which you trust!";

    if (RobocodeProperties.isSecurityOff()) {
      Logger.logWarning(nosecMessage);
    }
    if (System.getProperty("EXPERIMENTAL", "false").equals("true")) {
      Logger.logWarning(exMessage);
    }

    setup.tps = properties.getOptionsBattleDesiredTPS();

    // Disable canonical file path cache under Windows as it causes trouble when returning
    // paths with differently-capitalized file names.
    if (System.getProperty("os.name").toLowerCase().startsWith("windows ")) {
      System.setProperty("sun.io.useCanonCaches", "false");
    }

    // Initialize the system property so the AWT does not use headless mode meaning that the
    // GUI (Awt and Swing) is enabled per default when running starting Robocode.
    // It might be set to true later, if the -nodisplay option is set (in the setEnableGUI method).
    // Read more about headless mode here:
    // http://java.sun.com/developer/technicalArticles/J2SE/Desktop/headless/
    System.setProperty("java.awt.headless", "false");

    for (int i = 0; i < args.length; i++) {
      String currentArg = args[i];
      if (currentArg.equalsIgnoreCase("-cwd") && (i < args.length + 1)) {
        changeDirectory(args[i + 1]);
        i++;
      } else if (currentArg.equalsIgnoreCase("-battle") && (i < args.length + 1)) {
        setup.battleFilename = args[i + 1];
        i++;
      } else if (currentArg.equalsIgnoreCase("-record") && (i < args.length + 1)) {
        setup.recordFilename = args[i + 1];
        i++;
      } else if (currentArg.equalsIgnoreCase("-recordXML") && (i < args.length + 1)) {
        setup.recordXmlFilename = args[i + 1];
        i++;
      } else if (currentArg.equalsIgnoreCase("-replay") && (i < args.length + 1)) {
        setup.replayFilename = args[i + 1];
        i++;
      } else if (currentArg.equalsIgnoreCase("-results") && (i < args.length + 1)) {
        setup.resultsFilename = args[i + 1];
        i++;
      } else if (currentArg.equalsIgnoreCase("-tps") && (i < args.length + 1)) {
        setup.tps = Integer.parseInt(args[i + 1]);
        if (setup.tps < 1) {
          Logger.logError("tps must be > 0");
          System.exit(8);
        }
        i++;
      } else if (currentArg.equalsIgnoreCase("-minimize")) {
        setup.minimize = true;
      } else if (currentArg.equalsIgnoreCase("-nodisplay")) {
        if (windowManager != null) {
          windowManager.setEnableGUI(false);
        }
        if (soundManager != null) {
          soundManager.setEnableSound(false);
        }
        setup.tps = 10000; // set TPS to maximum
      } else if (currentArg.equalsIgnoreCase("-nosound")) {
        if (soundManager != null) {
          soundManager.setEnableSound(false);
        }
      } else if (currentArg.equals("-?") || currentArg.equalsIgnoreCase("-help")) {
        printUsage();
        System.exit(0);
      } else {
        Logger.logError("Not understood: " + currentArg);
        printUsage();
        System.exit(8);
      }
    }
    File robotsDir = FileUtil.getRobotsDir();

    if (robotsDir == null) {
      System.err.println("No valid robot directory is specified");
      System.exit(8);
    } else if (!(robotsDir.exists() && robotsDir.isDirectory())) {
      System.err.println('\'' + robotsDir.getAbsolutePath() + "' is not a valid robot directory");
      System.exit(8);
    }

    // The Default Toolkit must be set as soon as we know if we are going to use headless mode or
    // not.
    // That is if the toolkit must be headless or not (GUI on/off). If we are running in headless
    // mode
    // from this point, a HeadlessException will be thrown if we access a AWT/Swing component.
    // Read more about headless mode here:
    // http://java.sun.com/developer/technicalArticles/J2SE/Desktop/headless/
    Toolkit.getDefaultToolkit();
  }
コード例 #6
0
  public void run() {
    Thread.setDefaultUncaughtExceptionHandler(
        new Thread.UncaughtExceptionHandler() {
          @Override
          public void uncaughtException(Thread thread, Throwable t) {
            t.printStackTrace();
          }
        });

    try {
      hostManager.initSecurity();

      // Set the Look and Feel (LAF)
      if (windowManager != null && windowManager.isGUIEnabled()) {
        windowManager.init();
      }
      properties.setOptionsBattleDesiredTPS(setup.tps);

      battleManager.addListener(battleObserver);

      if (windowManager != null && windowManager.isGUIEnabled()) {
        if (!setup.minimize && setup.battleFilename == null && soundManager != null) {
          soundManager.playThemeMusic();
          windowManager.showSplashScreen();
        }
        windowManager.showRobocodeFrame(true, setup.minimize);
        windowManager.showBarCodeScanDialog(true);

        // Play the intro battle if a battle file is not specified and this is the first time
        // Robocode is being run

        if (setup.battleFilename == null && versionManager.isLastRunVersionChanged()) {
          properties.saveProperties();
          windowManager.runIntroBattle();
        }
      }

      final boolean enableCLIRecording =
          (setup.recordFilename != null || setup.recordXmlFilename != null);

      // Note: At this point the GUI should be opened (if enabled) before starting the battle from a
      // battle file
      if (setup.battleFilename != null) {
        if (setup.replayFilename != null) {
          System.err.println(
              "You cannot run both a battle and replay a battle record in the same time.");
          System.exit(8);
        }

        setup.exitOnComplete = true;

        battleManager.setBattleFilename(setup.battleFilename);
        if (new File(battleManager.getBattleFilename()).exists()) {
          battleManager.startNewBattle(
              battleManager.loadBattleProperties(), false, enableCLIRecording);
        } else {
          System.err.println(
              "The specified battle file '" + setup.battleFilename + "' was not found");
          System.exit(8);
        }
      } else if (setup.replayFilename != null) {
        setup.exitOnComplete = true;
        if (setup.replayFilename.toLowerCase().endsWith("xml.zip")) {
          recordManager.loadRecord(setup.replayFilename, BattleRecordFormat.XML_ZIP);
        } else {
          recordManager.loadRecord(setup.replayFilename, BattleRecordFormat.BINARY_ZIP);
        }

        if (new File(setup.replayFilename).exists()) {
          battleManager.replay();
        } else {
          System.err.println(
              "The specified battle record file '" + setup.replayFilename + "' was not found");
          System.exit(8);
        }
      }
    } catch (Throwable e) {
      Logger.logError(e);
    }
  }
コード例 #7
0
  public void storePreferences() {
    ISettingsManager props = properties;

    props.setOptionsSoundEnableSound(getEnableSoundCheckBox().isSelected());
    props.setOptionsSoundEnableGunshot(getEnableGunshotCheckBox().isSelected());
    props.setOptionsSoundEnableBulletHit(getEnableBulletHitCheckBox().isSelected());
    props.setOptionsSoundEnableRobotDeath(getEnableRobotDeathCheckBox().isSelected());
    props.setOptionsSoundEnableRobotCollision(getEnableRobotCollisionCheckBox().isSelected());
    props.setOptionsSoundEnableWallCollision(getEnableWallCollisionCheckBox().isSelected());
    props.setOptionsSoundEnableMixerVolume(getEnableMixerVolumeCheckBox().isSelected());
    props.setOptionsSoundEnableMixerPan(getEnableMixerPanCheckBox().isSelected());

    String mixerClassName = null;
    Mixer.Info mixerInfo = (Mixer.Info) getMixerComboBox().getSelectedItem();

    if (mixerInfo != null) {
      Mixer mixer = AudioSystem.getMixer((Mixer.Info) getMixerComboBox().getSelectedItem());

      if (mixer != null) {
        mixerClassName = mixer.getClass().getSimpleName();
      }
    }
    if (mixerClassName != null) {
      props.setOptionsSoundMixer(mixerClassName);
    }

    properties.saveProperties();
  }