Пример #1
0
 public void Serialize(IO.BitStream s)
 {
     s.Stream(ref Modifiers, Bits.kInt64BitCount, WeaponModifiersBitStreamer.Instance);
     if (EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value0))
     {
         s.Stream(ref mValue0, 0f, 1f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value1))
     {
         s.Stream(ref mValue1, 0f, 1f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value2))
     {
         s.Stream(ref mValue2, 0f, 1f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value3))
     {
         s.Stream(ref mValue3, 0f, 1f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value4))
     {
         s.Stream(ref mValue4, 0f, 1f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value5))
     {
         s.Stream(ref mValue5, 0f, 1.5706964f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value6))
     {
         s.Stream(ref mValue6, 0f, 1000f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value7))
     {
         s.Stream(ref mValue7, 0f, 1000f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value8))
     {
         s.Stream(ref mValue8, 0f, 1000f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value9))
     {
         s.Stream(ref mValue9, 0f, 1.5706964f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value10))
     {
         s.Stream(ref mValue10, 0f, 1000f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value11))
     {
         s.Stream(ref mValue11, 0f, 1000f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value12))
     {
         s.Stream(ref mValue12, 0f, 1000f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value13))
     {
         s.Stream(ref mValue13, 0f, 6.2831855f, 20, true, true);
     }
 }
Пример #2
0
        public void Enum_FlagsTest()
        {
            FlagsEnum e = FlagsEnum.Flag0 | FlagsEnum.Flag2;

            Assert.IsTrue(EnumFlags.Test(e, FlagsEnum.Flag2));
            Assert.IsTrue(EnumFlags.Test(e, FlagsEnum.Flag0 | FlagsEnum.Flag2));
        }
Пример #3
0
        public void Write(IO.EndianWriter s)
        {
            //Flags = EnumFlags.Remove(Flags, FileFlags.EncryptHeader | FileFlags.EncryptContent);

            s.Write(Flags, FileFlagsStreamer.Instance);
            s.Write((ushort)kVersion);

            Write(s, EnumFlags.Test(Flags, FileFlags.EncryptHeader), Header, MediaHeader.kSizeOf);
            GenerateHash();

            if (EnumFlags.Test(Flags, FileFlags.CompressContent))
            {
                using (var cs = new CompressedStream(true))
                    using (var ms = new System.IO.MemoryStream(kMaxContentSize))
                        using (var sout = new IO.EndianWriter(ms, Shell.EndianFormat.Big))
                        {
                            sout.Write(Content);
                            sout.Seek(0);

                            cs.InitializeFromStream(ms);
                            cs.Compress();

                            Write(s, EnumFlags.Test(Flags, FileFlags.EncryptContent), cs,
                                  userKey: Header.DataCryptKey, writeLeftovers: WriteLeftovers);
                        }
            }
            else
            {
                s.Write(Content);
            }
        }
Пример #4
0
        public void Read(IO.EndianReader s)
        {
            s.Owner = this;

            Flags   = s.Read(FileFlagsStreamer.Instance);
            Version = s.ReadUInt16();
            if (Version != kVersion)
            {
                throw new IO.VersionMismatchException(s.BaseStream,
                                                      kVersion, Version);
            }

            Read(s, EnumFlags.Test(Flags, FileFlags.EncryptHeader), Header, MediaHeader.kSizeOf);
            GenerateHash();

            if (EnumFlags.Test(Flags, FileFlags.CompressContent))
            {
                using (var cs = new CompressedStream(true))
                {
                    Read(s, EnumFlags.Test(Flags, FileFlags.EncryptContent), cs,
                         userKey: Header.DataCryptKey, readLeftovers: ReadLeftovers);

                    cs.Decompress();
                    Content = cs.UncompressedData;
                }
            }
            else
            {
                Content = s.ReadBytes((int)(s.BaseStream.Length - s.BaseStream.Position));
            }
        }
Пример #5
0
        public void Serialize(IO.EndianStream s)
        {
            s.Owner = this;

            if (s.IsWriting)
            {
                //Flags = EnumFlags.Remove(Flags, FileFlags.EncryptHeader | FileFlags.EncryptContent);
            }

            s.Stream(ref Flags, FileFlagsStreamer.Instance);
            s.StreamVersion(kVersion);

            Stream(s, EnumFlags.Test(Flags, FileFlags.EncryptHeader), Header, MediaHeader.kSizeOf);
            GenerateHash();

            if (EnumFlags.Test(Flags, FileFlags.CompressContent))
            {
                StreamCompressedContent(s);
            }
            else
            {
                if (s.IsReading)
                {
                    Content = new byte[(int)(s.BaseStream.Length - s.BaseStream.Position)];
                }

                s.Stream(Content);
            }
        }
Пример #6
0
        void StreamCompressedContent(IO.EndianStream s)
        {
            if (s.IsReading)
            {
                using (var cs = new CompressedStream(true))
                {
                    Stream(s, EnumFlags.Test(Flags, FileFlags.EncryptContent), cs,
                           userKey: Header.DataCryptKey, streamLeftovers: StreamLeftovers);

                    cs.Decompress();
                    Content = cs.UncompressedData;
                }
            }
            else if (s.IsWriting)
            {
                using (var cs = new CompressedStream(true))
                    using (var ms = new System.IO.MemoryStream(kMaxContentSize))
                        using (var sout = new IO.EndianWriter(ms, s.ByteOrder))
                        {
                            sout.Write(Content);
                            sout.Seek(0);

                            cs.InitializeFromStream(ms);
                            cs.Compress();

                            Stream(s, EnumFlags.Test(Flags, FileFlags.EncryptContent), cs,
                                   userKey: Header.DataCryptKey, streamLeftovers: StreamLeftovers);
                        }
            }
        }
Пример #7
0
        public void Serialize <TDoc, TCursor>(IO.TagElementStream <TDoc, TCursor, string> s)
            where TDoc : class
            where TCursor : class
        {
            bool reading = s.IsReading;

            #region Value0
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value0) || reading) &&
                s.StreamElementOpt("Value0", ref mValue0))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value0);
            }
            #endregion
            #region Value1
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value1) || reading) &&
                s.StreamElementOpt("Value1", ref mValue1))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value1);
            }
            #endregion
            #region Value2
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value2) || reading) &&
                s.StreamElementOpt("Value2", ref mValue2))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value2);
            }
            #endregion
            #region Value3
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value3) || reading) &&
                s.StreamElementOpt("Value3", ref mValue3))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value3);
            }
            #endregion
            #region Value4
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value4) || reading) &&
                s.StreamElementOpt("Value4", ref mValue4))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value4);
            }
            #endregion
            #region Value5
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value5) || reading) &&
                s.StreamElementOpt("Value5", ref mValue5))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value5);
            }
            #endregion
            #region Value6
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value6) || reading) &&
                s.StreamElementOpt("Value6", ref mValue6))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value6);
            }
            #endregion
            #region Value7
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value7) || reading) &&
                s.StreamElementOpt("Value7", ref mValue7))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value7);
            }
            #endregion
            #region Value8
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value8) || reading) &&
                s.StreamElementOpt("Value8", ref mValue8))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value8);
            }
            #endregion
            #region Value9
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value9) || reading) &&
                s.StreamElementOpt("Value9", ref mValue9))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value9);
            }
            #endregion
            #region Value10
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value10) || reading) &&
                s.StreamElementOpt("Value10", ref mValue10))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value10);
            }
            #endregion
            #region Value11
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value11) || reading) &&
                s.StreamElementOpt("Value11", ref mValue11))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value11);
            }
            #endregion
            #region Value12
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value12) || reading) &&
                s.StreamElementOpt("Value12", ref mValue12))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value12);
            }
            #endregion
            #region Value13
            if ((EnumFlags.Test(Modifiers, WeaponTuningModifiers.Value13) || reading) &&
                s.StreamElementOpt("Value13", ref mValue13))
            {
                EnumFlags.Add(ref Modifiers, WeaponTuningModifiers.Value13);
            }
            #endregion
        }
Пример #8
0
 T?GetImpl <T>(T value, WeaponTuningModifiers modifer)
     where T : struct
 {
     return(EnumFlags.Test(Modifiers, modifer) ? value : (T?)null);
 }
Пример #9
0
 public void Serialize(IO.BitStream s)
 {
     s.Stream(ref Modifiers, Bits.kInt64BitCount, BarrelModifiersBitStreamer.Instance);
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value0))
     {
         s.Stream(ref mValue0);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value1))
     {
         s.Stream(ref mValue1);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value2))
     {
         s.Stream(ref mValue2);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value3))
     {
         s.Stream(ref mValue3);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value4))
     {
         s.Stream(ref mValue4, 7);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value5))
     {
         s.Stream(ref mValue5, 7);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value6))
     {
         s.Stream(ref mValue6);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value7))
     {
         s.Stream(ref mValue7);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value8))
     {
         s.Stream(ref mValue8);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value9))
     {
         s.Stream(ref mValue9);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value10))
     {
         s.Stream(ref mValue10);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value11))
     {
         s.Stream(ref mValue11, 0f, 130f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value12))
     {
         s.Stream(ref mValue12, 0f, 130f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value13))
     {
         s.Stream(ref mValue13, 0f, 10f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value14))
     {
         s.Stream(ref mValue14, 0f, 6.2831855f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value15))
     {
         s.Stream(ref mValue15, 0f, 6.2831855f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value16))
     {
         s.Stream(ref mValue16, 0f, 6.2831855f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value17))
     {
         s.Stream(ref mValue17);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value18))
     {
         s.Stream(ref mValue18);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value19))
     {
         s.Stream(ref mValue19, 0f, 10f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value20))
     {
         s.Stream(ref mValue20, 0f, 3000f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value21))
     {
         s.Stream(ref mValue21, 0f, 3000f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value22))
     {
         s.Stream(ref mValue22, 0f, 3000f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value23))
     {
         s.Stream(ref mValue23, 0f, 1000f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value24))
     {
         s.Stream(ref mValue24, 0f, 1000f, 20, true, true);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value25))
     {
         s.Stream(ref mValue25);
     }
     if (EnumFlags.Test(Modifiers, WeaponTuningBarrelModifiers.Value26))
     {
         s.Stream(ref mValue26);
     }
 }