Exemple #1
0
  private void writebackObjectFile(ObjectFile dataStore, ObjectFileType fileType) throws Error {
    File w3u = new File("./temp/new_war3map." + fileType.getExt());
    if (w3u.exists()) {
      w3u.delete();
    }
    dataStore.writeTo(w3u);

    try {
      Files.write(
          dataStore.exportToWurst(),
          new File("./temp/exportedObjects_" + fileType.getExt() + ".wurst"),
          Charsets.UTF_8);
    } catch (IOException e1) {
      WLogger.severe(e1);
    }

    try {
      LadikMpq editor = MpqEditorFactory.getEditor();
      String filenameInMpq = "war3map." + fileType.getExt();
      editor.deleteFile(mapFile, filenameInMpq);
      int tries = 1;
      while (tries < 20) {
        editor.insertFile(mapFile, filenameInMpq, w3u);

        File extr;
        try {
          extr = editor.extractFile(mapFile, filenameInMpq);
        } catch (Error e) {
          extr = null;
        }
        if (extr != null && extr.exists()) {
          break;
        }
        System.gc();
        tries++;
      }
      if (tries >= 20) {
        JOptionPane.showMessageDialog(null, "Could not insert " + fileType.getExt());
      }
    } catch (Exception e) {
      WLogger.severe(e);
      throw new Error(e);
    }
  }