コード例 #1
0
        public void HeaderFormat_IsCorrect()
        {
            var nes = new NumberEncoderService();

            var actualBytes = _npcFile.SerializeToByteArray(nes);

            CollectionAssert.AreEqual(Encoding.ASCII.GetBytes(_npcFile.FileType), actualBytes.Take(3).ToArray());
            CollectionAssert.AreEqual(nes.EncodeNumber(_npcFile.CheckSum, 4), actualBytes.Skip(3).Take(4).ToArray());
            CollectionAssert.AreEqual(nes.EncodeNumber(_npcFile.Length, 2), actualBytes.Skip(7).Take(2).ToArray());
            CollectionAssert.AreEqual(nes.EncodeNumber(1, 1), actualBytes.Skip(9).Take(1).ToArray());
        }
コード例 #2
0
        private byte[] MakeENFFileWithWrongLength(int checksum, int length, params ENFRecord[] records)
        {
            var numberEncoderService = new NumberEncoderService();

            var bytes = new List <byte>();

            bytes.AddRange(Encoding.ASCII.GetBytes("ENF"));
            bytes.AddRange(numberEncoderService.EncodeNumber(checksum, 4));
            bytes.AddRange(numberEncoderService.EncodeNumber(length, 2));
            bytes.Add(numberEncoderService.EncodeNumber(1, 1)[0]);
            foreach (var record in records)
            {
                bytes.AddRange(record.SerializeToByteArray(numberEncoderService));
            }

            return(bytes.ToArray());
        }
コード例 #3
0
        private static byte[] CreateExpectedBytes(IMapFileProperties props)
        {
            var numberEncoderService    = new NumberEncoderService();
            var mapStringEncoderService = new MapStringEncoderService();
            var ret = new List <byte>();

            ret.AddRange(Encoding.ASCII.GetBytes(props.FileType));
            ret.AddRange(props.Checksum);

            var fullName    = Enumerable.Repeat((byte)0xFF, 24).ToArray();
            var encodedName = mapStringEncoderService.EncodeMapString(props.Name);

            Array.Copy(encodedName, 0, fullName, fullName.Length - encodedName.Length, encodedName.Length);
            ret.AddRange(fullName);

            ret.AddRange(numberEncoderService.EncodeNumber(props.PKAvailable ? 3 : 0, 1));
            ret.AddRange(numberEncoderService.EncodeNumber((byte)props.Effect, 1));
            ret.AddRange(numberEncoderService.EncodeNumber(props.Music, 1));
            ret.AddRange(numberEncoderService.EncodeNumber(props.MusicExtra, 1));
            ret.AddRange(numberEncoderService.EncodeNumber(props.AmbientNoise, 2));
            ret.AddRange(numberEncoderService.EncodeNumber(props.Width, 1));
            ret.AddRange(numberEncoderService.EncodeNumber(props.Height, 1));
            ret.AddRange(numberEncoderService.EncodeNumber(props.FillTile, 2));
            ret.AddRange(numberEncoderService.EncodeNumber(props.MapAvailable ? 1 : 0, 1));
            ret.AddRange(numberEncoderService.EncodeNumber(props.CanScroll ? 1 : 0, 1));
            ret.AddRange(numberEncoderService.EncodeNumber(props.RelogX, 1));
            ret.AddRange(numberEncoderService.EncodeNumber(props.RelogY, 1));
            ret.AddRange(numberEncoderService.EncodeNumber(props.Unknown2, 1));

            return(ret.ToArray());
        }