/** * * @return Returns a stream of the file without the header. So you can directly start reading the data of the map. * @throws IOException */ public final InputStream getMapDataStream() throws IOException { InputStream inputStream = getMapInputStream(file); MapFileHeader.readFromStream(inputStream); return inputStream; }
@Override public String getMapId() { return header.getUniqueId(); }
@Override public Date getCreationDate() { return header.getCreationDate(); }
/** * 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 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)); }
public static MapLoader getLoaderForListedMap(IListedMap listedMap) throws MapLoadException { if ((checkExtention(listedMap.getFileName(), MapLoader.MAP_EXTENSION_ORIGINAL)) || (checkExtention(listedMap.getFileName(), MapLoader.MAP_EXTENSION_ORIGINAL_MAP_EDITOR))) { // - original Siedler 3 Map return new OriginalMapLoader(listedMap); } else { // - Siedler 3 Remake Savegame or Map MapFileHeader header = RemakeMapLoader.loadHeader(listedMap); switch (header.getType()) { case NORMAL: return new FreshMapLoader(listedMap, header); case SAVED_SINGLE: return new SavegameLoader(listedMap, header); default: throw new MapLoadException("Unkown EMapType: " + header.getType()); } } }
@Override public IMapData getMapData() throws MapLoadException { if (data != null) { return data; } try (InputStream stream = super.getMapDataStream()) { data = new FreshMapData(); FreshMapSerializer.deserialize(data, stream); return data; } catch (IOException ex) { throw new MapLoadException(ex); } }
@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 } }
@Override public String getDescription() { return header.getDescription(); }
@Override public int getMaxPlayers() { return header.getMaxPlayers(); }
@Override public String getMapName() { return header.getName(); }
@Override public int getMinPlayers() { return header.getMinPlayers(); }
@Override public short[] getImage() { return header.getPreviewImage(); }
/** * Read serialized file * * @param in * input stream * @return MapData * @throws IOException */ public static MapData deserialize(InputStream in) throws IOException { MapDataReceiver receiver = new MapDataReceiver(); FreshMapSerializer.deserialize(receiver, in); return receiver.data; }
@Override public MapFileHeader getFileHeader() { if (isMapOK) { return new MapFileHeader( MapFileHeader.MapType.NORMAL, getMapName(), getMapId(), getDescription(), (short) mapContent.widthHeight, (short) mapContent.widthHeight, (short) getMinPlayers(), (short) getMaxPlayers(), getCreationDate(), getImage()); } return null; }
@Override public MainGridWithUiSettings loadMainGrid(PlayerSetting[] playerSettings) throws MapLoadException { return loadMainGrid(playerSettings, EMapStartResources.HIGH_GOODS); }
@Override public String toString() { return "MapLoader: mapName: " + file.getFileName() + " mapId: " + getMapId(); }
public static MapFileHeader loadHeader(IListedMap file) throws MapLoadException { try (InputStream stream = getMapInputStream(file)) { return MapFileHeader.readFromStream(stream); } catch (IOException e) { throw new MapLoadException("Error during header request for map " + file + " exception: ", e); } }
@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); } }
@Override public void applyNewHeader(MapFileHeader header) { setHeader(header); mapData.setMaxPlayers(header.getMaxPlayers()); updatePlayerCombobox(); validator.reValidate(); }