.
This commit is contained in:
		@ -46,11 +46,8 @@ public class BinaryParser implements FileParser {
 | 
			
		||||
 | 
			
		||||
        ret = new Map(ExtractMapFromLevelData(level_data));
 | 
			
		||||
 | 
			
		||||
        ret.addPiece(ExtractPiecesFromLevelData(level_data));
 | 
			
		||||
        ret.addPiece(ExtractPiecesFromLevelData(level_data, saved_data));
 | 
			
		||||
        
 | 
			
		||||
        if(saved_data)
 | 
			
		||||
            // TODO: 3/23/23 getSavedDat 
 | 
			
		||||
 | 
			
		||||
        fileStream.close();
 | 
			
		||||
        return ret;
 | 
			
		||||
    }
 | 
			
		||||
@ -108,18 +105,22 @@ public class BinaryParser implements FileParser {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get Pieces out of the level data
 | 
			
		||||
     * @param levelData full data of the level without header and footer
 | 
			
		||||
     *
 | 
			
		||||
     * @param levelData  full data of the level without header and footer
 | 
			
		||||
     * @param saved_data
 | 
			
		||||
     * @return array of Piece from level data
 | 
			
		||||
     */
 | 
			
		||||
    private static Piece[] ExtractPiecesFromLevelData(byte[] levelData) {
 | 
			
		||||
    private static Piece[] ExtractPiecesFromLevelData(byte[] levelData, boolean saved_data) {
 | 
			
		||||
        byte map_width = levelData[0], map_height = levelData[1];
 | 
			
		||||
        byte piece_count = levelData[3 + map_width * map_height / 8 + (map_height * map_width % 8 != 0 ? 1 : 0)];
 | 
			
		||||
        Piece[] ret = new Piece[piece_count];
 | 
			
		||||
        byte[] pieces_data = Arrays.copyOfRange(levelData, 4 + map_width * map_height / 8 + (map_height * map_width % 8 != 0 ? 1 : 0), levelData.length-1);
 | 
			
		||||
        byte[] pieces_data = Arrays.copyOfRange(levelData, 4 + map_width * map_height / 8 + (map_height * map_width % 8 != 0 ? 1 : 0), levelData.length - 1);
 | 
			
		||||
        for (int piece_index = 0; piece_index < piece_count; piece_index++) {
 | 
			
		||||
            // TODO: 3/24/23 BUG! this should not check every byte linearly like this... data are not next to each other...
 | 
			
		||||
            byte[] _piece_size = Bitwise.ByteToNible(pieces_data[piece_index]);
 | 
			
		||||
            byte _piece_width = _piece_size[0], _piece_height = _piece_size[1];
 | 
			
		||||
            byte[] _piece_data = Arrays.copyOfRange(pieces_data, piece_index + 1, 1 + _piece_width * _piece_height / 8 + (_piece_height * _piece_width % 8 != 0 ? 1 : 0));
 | 
			
		||||
            byte[] _piece_save_data = Arrays.copyOfRange(pieces_data, )
 | 
			
		||||
            boolean[][] _piece_matrix = BuildMatrixFromBytes(_piece_width, _piece_height, _piece_data);
 | 
			
		||||
            ret[piece_index] = new Piece(_piece_matrix);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user