コード例 #1
0
        public void OneNullComparison()
        {
            var         one = new BspLumpInfo();
            BspLumpInfo two = null;

            Assert.AreNotEqual(one, two);
        }
コード例 #2
0
        public void BothNullComparison()
        {
            BspLumpInfo one = null;
            BspLumpInfo two = null;

            Assert.AreEqual(one, two);
        }
コード例 #3
0
        /// <summary>
        /// Writes lump info
        /// </summary>
        /// <param name="lumpId">Id of lump to override</param>
        public void WriteBspLumpInfo(int lumpId, BspLumpInfo info)
        {
            ThrowExceptionIfDisposed();

            //Set offset
            writer.BaseStream.Position = BspOffsets.CalculateLumpOffset(lumpId);
            //Write lump data
            WriteBspLumpInfo(info);
        }
コード例 #4
0
        private void WriteBspLumpInfo(BspLumpInfo info)
        {
            ThrowExceptionIfDisposed();

            writer.Write(info.FileOffset);
            writer.Write(info.FileLength);
            writer.Write(info.Version);
            writer.Write(info.fourCC);
        }
コード例 #5
0
        /// <summary>
        /// Reads lump from Binary Reader
        /// </summary>
        /// <param name="r">Binary Reader to read from</param>
        /// <returns></returns>
        private BspLumpInfo ReadLump()
        {
            //Create new lump
            BspLumpInfo lump = new BspLumpInfo();

            //Read  lump data
            lump.FileOffset = reader.ReadInt32();
            lump.FileLength = reader.ReadInt32();
            lump.Version    = reader.ReadInt32();
            lump.fourCC     = reader.ReadInt32();

            //Return value
            return(lump);
        }
コード例 #6
0
        public void Init()
        {
            //Prepare files for tests
            if (File.Exists(TEMP_FILENAME))
            {
                File.Delete(TEMP_FILENAME);
            }

            File.Copy(MAP_FILENAME, TEMP_FILENAME);

            //Prepare variables
            exampleInfo = new BspInfo()
            {
                Identifier  = 0x50534256,
                Version     = 0,
                MapRevision = 0,
                Lumps       = new BspLumpInfo[64]
            };

            for (int i = 0; i < 64; i++)
            {
                exampleInfo.Lumps[i] = new BspLumpInfo()
                {
                    FileLength = i,
                    FileOffset = i,
                    Version    = i,
                    fourCC     = i
                };
            }

            exampleLump = new BspLumpInfo()
            {
                FileLength = 1,
                FileOffset = 2,
                fourCC     = 3,
                Version    = 4
            };

            try
            {
                throw new ObjectDisposedException(nameof(BspInfoWriter));
            }
            catch (Exception ex)
            {
                exceptionMessage = ex.Message;
            }
        }
コード例 #7
0
        public void DifferentComparison()
        {
            var lump1 = new BspLumpInfo()
            {
                Version    = 1,
                FileLength = 2155,
                FileOffset = 309
            };

            var lump2 = new BspLumpInfo()
            {
                Version    = 2,
                FileLength = 2155,
                FileOffset = 309
            };

            Assert.AreNotEqual(lump1, lump2);
        }
コード例 #8
0
        private void WriteDataToFile(BspLumpInfo[] newLumps, int modifiedLumpId, byte[] modifiedLumpData)
        {
            for (int i = 0; i < 64; i++)
            {
                BspLumpInfo newLump = newLumps[i];
                byte[]      dataToWrite;

                if (i == modifiedLumpId)
                {
                    dataToWrite = modifiedLumpData;
                }
                else
                {
                    dataToWrite = reader.ReadLumpData(i);
                }

                dataWriter.BaseStream.Position = newLump.FileOffset;
                dataWriter.Write(dataToWrite);
            }
        }
コード例 #9
0
        private BspLumpInfo[] UpdateLumpInfo(BspLumpInfo[] lumps, BspLumpInfo lumpToUpdate, int sizeDifference)
        {
            var updatedLumps = new BspLumpInfo[64];

            for (int i = 0; i < 64; i++)
            {
                var tempLump = lumps[i];

                if (lumps[i].FileOffset == lumpToUpdate.FileOffset)
                {
                    tempLump.FileLength += sizeDifference;
                }

                if (lumps[i].FileOffset > lumpToUpdate.FileOffset)
                {
                    tempLump.FileOffset += sizeDifference;
                }

                updatedLumps[i] = tempLump;
            }

            return(updatedLumps);
        }
コード例 #10
0
 /// <summary>
 /// Writes lump info
 /// </summary>
 /// <param name="lumpId">Id of lump to override</param>
 public void WriteBspLumpInfo(BspLumpType lumpId, BspLumpInfo info)
 {
     //Write lump informations
     WriteBspLumpInfo((int)lumpId, info);
 }