public static BiffTileStruct CreateBiffTileStruct(FileStruct.TSBiffTileset tsBiffTileset) { BiffTileStruct bts = new BiffTileStruct(); bts.tileOffset = tsBiffTileset.tileOffset; bts.tileSize = tsBiffTileset.tileSize; bts.tileCount = tsBiffTileset.tileCount; return(bts); }
public static FileStream ReadChitinBiffFile(ChitinBiff cbiff) { FileStream fileStream = ApplicationService.FindBiffFile(cbiff); if (fileStream == null) { return(null); } if ((cbiff.fileList == null) && (cbiff.tileList == null)) { // since this cbiff hasn't been accessed yet. lets load up its // file entries buff = new byte[FileStruct.TSBiffHeaderSize]; fileStream.Position = 0; FileStruct.TSBiffHeader biffHead = (FileStruct.TSBiffHeader)ReadBuffer <FileStruct.TSBiffHeader> (fileStream, buff, FileStruct.TSBiffHeaderSize); if (GlobalDefs.CHITINBIFF_SIGNATURE != Utils.CharsToString(biffHead.signature)) { throw new ArgumentException("Warning: Invalid signature in *.bif file."); } // Load up all the chitin into a collection buff = new byte[FileStruct.TSBiffFilesetSize]; fileStream.Position = biffHead.fileOffset; cbiff.fileList = new ChitinBiff.BiffFileStruct[biffHead.fileCount]; for (int c = 0; c < biffHead.fileCount; c++) { FileStruct.TSBiffFileset tsBiffFile = (FileStruct.TSBiffFileset)ReadBuffer <FileStruct.TSBiffFileset> (fileStream, buff, FileStruct.TSBiffFilesetSize); cbiff.fileList[c] = ChitinBiff.CreateBiffFileStruct(tsBiffFile); } buff = new byte[FileStruct.TSBiffTilesetSize]; cbiff.tileList = new ChitinBiff.BiffTileStruct[biffHead.tileCount]; for (int c = 0; c < biffHead.tileCount; c++) { FileStruct.TSBiffTileset tsBiffTile = (FileStruct.TSBiffTileset)ReadBuffer <FileStruct.TSBiffTileset> (fileStream, buff, FileStruct.TSBiffTilesetSize); cbiff.tileList[c] = ChitinBiff.CreateBiffTileStruct(tsBiffTile); } } // fileStream.Close() don't close this filestream as we want to send it back return(fileStream); }