コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }