/** * Generate new map header * * @return New header */ protected MapFileHeader generateMapHeader() { short[] image = new PreviewImageCreator(header.getWidth(), header.getHeight(), MapFileHeader.PREVIEW_IMAGE_SIZE, mapData.getPreviewImageDataSupplier()).getPreviewImage(); MapFileHeader imagedHeader = new MapFileHeader(header.getType(), header.getName(), header.getBaseMapId(), header.getDescription(), header.getWidth(), header.getHeight(), header.getMinPlayers(), header.getMaxPlayers(), new Date(), image); return imagedHeader; }
/** * Create a new header with a given name * * @param name * Name */ protected void createNewHeaderWithName(String name) { setHeader(new MapFileHeader(header.getType(), name, null, header.getDescription(), header.getWidth(), header.getHeight(), header.getMinPlayers(), header.getMaxPlayers(), new Date(), header.getPreviewImage().clone())); }
@Override public String getMapId() { return header.getUniqueId(); }
@Override protected boolean beforeOkAction() { MapFileHeader nheader = headerEditor.getHeader(); if (nheader.getWidth() != header.getWidth() || nheader.getHeight() != header.getHeight()) { JOptionPane.showMessageDialog(SettingsDialog.this, "Widh and height are fixed.", "Error", JOptionPane.ERROR_MESSAGE); return false; } applyNewHeader(nheader); return true; }
/** * Load and display a map header * * @param header * Header */ public void setHeader(MapFileHeader header) { nameField.setText(header.getName()); descriptionField.setText(header.getDescription()); width.setValue(Integer.valueOf(header.getWidth())); height.setValue(Integer.valueOf(header.getHeight())); minPlayer.setValue(Integer.valueOf(header.getMinPlayers())); maxPlayer.setValue(Integer.valueOf(header.getMaxPlayers())); }
@Override public OutputStream getOutputStream(MapFileHeader header) throws IOException { String name = header.getName().toLowerCase(Locale.ENGLISH).replaceAll("^\\W+|\\W+$", "").replaceAll("\\W+", "_"); if (name.isEmpty()) { name = "map"; if (header.getWidth() == header.getHeight()) { sizePrefix = "" + header.getWidth(); } else { sizePrefix = header.getWidth() + "x" + header.getHeight(); name = sizePrefix + "-" + header.getMaxPlayers() + "-" + name; Date date = header.getCreationDate(); if (date != null) { SimpleDateFormat format = new SimpleDateFormat("-yyyy-MM-dd_HH-mm-ss", Locale.ENGLISH);
/** * Create a new map * * @param header * Header of the file to open * @param ground * Ground to use for the new map */ public void createNewMap(MapFileHeader header, ELandscapeType ground) { loadMap(header, new MapData(header.getWidth(), header.getHeight(), header.getMaxPlayers(), ground)); }
/** * Load a map * * @param header * Header to use * @param mapData * Map to use */ public void loadMap(MapFileHeader header, MapData mapData) { setHeader(header); this.mapData = mapData; updatePlayerCombobox(); map = new MapGraphics(mapData); validator.setData(mapData); validator.setHeader(header); validator.addListener(sidebar); buildMapEditingWindow(); new LastUsedHandler().saveUsedMapId(header.getUniqueId()); undoRedo = new UndoRedoHandler(window, mapData); FixData fixData = new FixData(mapData, undoRedo, validator); sidebar.setFixData(fixData); autoFixErrorAction.setFixData(fixData); // Go to center of the map connector.scrollTo(new ShortPoint2D(header.getWidth() / 2, header.getHeight() / 2), false); }
if (loadableReplayFile == null) { MapLoader mapLoader = MapLoader.getLoaderForListedMap(new DirectoryMapLister.ListedMapFile(new File(mapFile))); if (mapLoader.getFileHeader().getType() == MapFileHeader.MapType.NORMAL) { byte playerId = 0; PlayerSetting[] playerSettings = PlayerSetting.createDefaultSettings(playerId, (byte) mapLoader.getMaxPlayers()); } else { MapFileHeader header = mapLoader.getFileHeader(); game = new JSettlersGame(mapLoader, randomSeed, header.getPlayerId(), header.getPlayerSettings()).start();
@Override public int compareTo(MapLoader other) { MapFileHeader myHeader = this.getFileHeader(); MapFileHeader otherHeader = other.getFileHeader(); if (myHeader.getType() == otherHeader.getType() && myHeader.getType() == MapType.SAVED_SINGLE) { return -this.getCreationDate().compareTo(other.getCreationDate()); // order by date descending } else { return this.getMapName().compareToIgnoreCase(other.getMapName()); // order by name ascending } }
/** * Gets a new header from inputfields * * @return Header */ public MapFileHeader getHeader() { String name = nameField.getText(); String description = descriptionField.getText(); short width = this.width.getNumber().shortValue(); short height = this.height.getNumber().shortValue(); short minPlayer = this.minPlayer.getNumber().shortValue(); short maxPlayer = this.maxPlayer.getNumber().shortValue(); return new MapFileHeader(MapType.NORMAL, name, null, description, width, height, minPlayer, maxPlayer, new Date(), new short[MapFileHeader.PREVIEW_IMAGE_SIZE * MapFileHeader.PREVIEW_IMAGE_SIZE]); } }
@Override public int getMaxPlayers() { return header.getMaxPlayers(); }
@Override public String getDescription() { return header.getDescription(); }
@Override public String getMapName() { return header.getName(); }
@Override public int getMinPlayers() { return header.getMinPlayers(); }
@Override public short[] getImage() { return header.getPreviewImage(); }
@Override public synchronized void foundMap(IListedMap map) { MapLoader loader; try { loader = MapLoader.getLoaderForListedMap(map); } catch (Exception e) { System.err.println("Cought exception while loading header for " + map.getFileName()); e.printStackTrace(); return; } MapFileHeader mapHead = loader.getFileHeader(); // - if the map can't be load (e.g. caused by wrong format) the mapHead gets NULL! -> hide/ignore this map from user if (mapHead != null) { MapType type = loader.getFileHeader().getType(); if ((type == MapType.SAVED_SINGLE)) { savedMaps.add((RemakeMapLoader) loader); } else { freshMaps.add(loader); } } }
return new MapFileHeader(type, mapName, mapId, baseMapId, description, width, height, minPlayers, playerConfigurations, date, bgImage, playerId);
@Override public void applyNewHeader(MapFileHeader header) { setHeader(header); mapData.setMaxPlayers(header.getMaxPlayers()); updatePlayerCombobox(); validator.reValidate(); }
@Override public void doTest() { addHeader("description.header", null); String description = header.getDescription(); if (description == null || description.trim().isEmpty()) { addWarningMessage(ErrorMarker.DESCRIPTION_MARKER, "description.no-description", null); } }