示例#1
0
 public PBDTField(BinaryFileReader r, int dataSize)
 {
     Weight  = r.ReadSingle();
     Value   = r.ReadInt32();
     Quality = r.ReadSingle();
     Uses    = r.ReadInt32();
 }
示例#2
0
 public AI_TField(BinaryFileReader r, int dataSize)
 {
     X       = r.ReadSingle();
     Y       = r.ReadSingle();
     Z       = r.ReadSingle();
     Unknown = r.ReadSingle();
 }
 public FNAMField(BinaryFileReader r, int dataSize)
 {
     DayNear   = r.ReadSingle();
     DayFar    = r.ReadSingle();
     NightNear = r.ReadSingle();
     NightFar  = r.ReadSingle();
 }
示例#4
0
 public DATAField(BinaryFileReader r, int dataSize, GameFormat format)
 {
     if (format == GameFormat.TES3)
     {
         Weight          = r.ReadSingle();
         Value           = r.ReadInt32();
         Time            = r.ReadInt32();
         Radius          = r.ReadInt32();
         LightColor      = r.ReadT <ColorRef4>(4);
         Flags           = r.ReadInt32();
         FalloffExponent = 1;
         FOV             = 90;
         return;
     }
     Time       = r.ReadInt32();
     Radius     = r.ReadInt32();
     LightColor = r.ReadT <ColorRef4>(4);
     Flags      = r.ReadInt32();
     if (dataSize == 32)
     {
         FalloffExponent = r.ReadSingle();
         FOV             = r.ReadSingle();
     }
     else
     {
         FalloffExponent = 1;
         FOV             = 90;
     }
     Value  = r.ReadInt32();
     Weight = r.ReadSingle();
 }
 public DATAField(BinaryFileReader r, int dataSize)
 {
     Flags     = r.ReadUInt32();
     BaseCost  = r.ReadSingle();
     AssocItem = r.ReadInt32();
     //wbUnion('Assoc. Item', wbMGEFFAssocItemDecider, [
     //  wbFormIDCk('Unused', [NULL]),
     //  wbFormIDCk('Assoc. Weapon', [WEAP]),
     //  wbFormIDCk('Assoc. Armor', [ARMO, NULL{?}]),
     //  wbFormIDCk('Assoc. Creature', [CREA, LVLC, NPC_]),
     //  wbInteger('Assoc. Actor Value', itS32, wbActorValueEnum)
     MagicSchool        = r.ReadInt32();
     ResistValue        = r.ReadInt32();
     CounterEffectCount = r.ReadUInt16();
     r.Skip(2); // Unused
     Light           = new FormId <LIGHRecord>(r.ReadUInt32());
     ProjectileSpeed = r.ReadSingle();
     EffectShader    = new FormId <EFSHRecord>(r.ReadUInt32());
     if (dataSize == 36)
     {
         return;
     }
     EnchantEffect = new FormId <EFSHRecord>(r.ReadUInt32());
     CastingSound  = new FormId <SOUNRecord>(r.ReadUInt32());
     BoltSound     = new FormId <SOUNRecord>(r.ReadUInt32());
     HitSound      = new FormId <SOUNRecord>(r.ReadUInt32());
     AreaSound     = new FormId <SOUNRecord>(r.ReadUInt32());
     ConstantEffectEnchantmentFactor = r.ReadSingle();
     ConstantEffectBarterFactor      = r.ReadSingle();
 }
示例#6
0
 public DATAField(BinaryFileReader r, int dataSize)
 {
     Speed  = r.ReadSingle();
     Flags  = r.ReadUInt32();
     Value  = r.ReadUInt32();
     Weight = r.ReadSingle();
     Damage = r.ReadUInt16();
 }
示例#7
0
 public void RPLDField(BinaryFileReader r, int dataSize)
 {
     Points = new Vector2[dataSize >> 3];
     for (var i = 0; i < Points.Length; i++)
     {
         Points[i] = new Vector2(r.ReadSingle(), r.ReadSingle());
     }
 }
示例#8
0
 public AI_FField(BinaryFileReader r, int dataSize)
 {
     X        = r.ReadSingle();
     Y        = r.ReadSingle();
     Z        = r.ReadSingle();
     Duration = r.ReadInt16();
     Id       = r.ReadASCIIString(32, ASCIIFormat.ZeroPadded);
     Unknown  = r.ReadInt16();
 }
示例#9
0
 public DATAField(BinaryFileReader r, int dataSize, GameFormat format)
 {
     if (format == GameFormat.TES3)
     {
         Weight = r.ReadSingle();
         return;
     }
     Flags  = r.ReadByte();
     Weight = r.ReadSingle();
 }
示例#10
0
 public MEDTField(BinaryFileReader r, int dataSize)
 {
     SpellSchool = r.ReadInt32();
     BaseCost    = r.ReadSingle();
     Flags       = r.ReadInt32();
     Color       = new ColorRef4 {
         Red = (byte)r.ReadInt32(), Green = (byte)r.ReadInt32(), Blue = (byte)r.ReadInt32(), Null = 255
     };
     SpeedX  = r.ReadSingle();
     SizeX   = r.ReadSingle();
     SizeCap = r.ReadSingle();
 }
示例#11
0
 public DATAField(BinaryFileReader r, int dataSize, GameFormat format)
 {
     if (format == GameFormat.TES3)
     {
         Weight  = r.ReadSingle();
         Value   = r.ReadUInt32();
         Unknown = r.ReadUInt32();
         return;
     }
     Value   = r.ReadUInt32();
     Weight  = r.ReadSingle();
     Unknown = 0;
 }
            public uint Flags; // 1 = Playable 2 = Beast Race

            public DATAField(BinaryFileReader r, int dataSize, GameFormat format)
            {
                if (format == GameFormat.TES3)
                {
                    for (var i = 0; i < SkillBoosts.Length; i++)
                    {
                        SkillBoosts[i] = new SkillBoost(r, 8, format);
                    }
                    Male.Strength     = (byte)r.ReadInt32(); Female.Strength = (byte)r.ReadInt32();
                    Male.Intelligence = (byte)r.ReadInt32(); Female.Intelligence = (byte)r.ReadInt32();
                    Male.Willpower    = (byte)r.ReadInt32(); Female.Willpower = (byte)r.ReadInt32();
                    Male.Agility      = (byte)r.ReadInt32(); Female.Agility = (byte)r.ReadInt32();
                    Male.Speed        = (byte)r.ReadInt32(); Female.Speed = (byte)r.ReadInt32();
                    Male.Endurance    = (byte)r.ReadInt32(); Female.Endurance = (byte)r.ReadInt32();
                    Male.Personality  = (byte)r.ReadInt32(); Female.Personality = (byte)r.ReadInt32();
                    Male.Luck         = (byte)r.ReadInt32(); Female.Luck = (byte)r.ReadInt32();
                    Male.Height       = r.ReadSingle(); Female.Height = r.ReadSingle();
                    Male.Weight       = r.ReadSingle(); Female.Weight = r.ReadSingle();
                    Flags             = r.ReadUInt32();
                    return;
                }
                for (var i = 0; i < SkillBoosts.Length; i++)
                {
                    SkillBoosts[i] = new SkillBoost(r, 2, format);
                }
                r.ReadInt16(); // padding
                Male.Height = r.ReadSingle(); Female.Height = r.ReadSingle();
                Male.Weight = r.ReadSingle(); Female.Weight = r.ReadSingle();
                Flags       = r.ReadUInt32();
            }
示例#13
0
 public DATAField(BinaryFileReader r, int dataSize, GameFormat format)
 {
     if (format == GameFormat.TES3)
     {
         Type    = (byte)r.ReadInt32();
         Quality = r.ReadSingle();
         Weight  = r.ReadSingle();
         Value   = r.ReadInt32();
         return;
     }
     Type    = r.ReadByte();
     Value   = r.ReadInt32();
     Weight  = r.ReadSingle();
     Quality = r.ReadSingle();
 }
示例#14
0
 public DATAField(BinaryFileReader r, int dataSize, GameFormat format)
 {
     if (format == GameFormat.TES3)
     {
         Type       = r.ReadInt32();
         Weight     = r.ReadSingle();
         Value      = r.ReadInt16();
         EnchantPts = r.ReadInt16();
         return;
     }
     Value      = r.ReadInt32();
     Weight     = r.ReadSingle();
     Type       = 0;
     EnchantPts = 0;
 }
示例#15
0
            public int    Parameter2; // Parameter #2

            public CTDAField(BinaryFileReader r, int dataSize, GameFormat format)
            {
                if (format == GameFormat.TES3)
                {
                    Index           = r.ReadByte();
                    Type            = r.ReadByte();
                    FunctionId      = r.ReadASCIIString(2);
                    CompareOp       = (byte)(r.ReadByte() << 1);
                    Name            = r.ReadASCIIString(dataSize - 5);
                    ComparisonValue = Parameter1 = Parameter2 = 0;
                    return;
                }
                CompareOp = r.ReadByte();
                r.Skip(3); // Unused
                ComparisonValue = r.ReadSingle();
                FunctionId      = r.ReadASCIIString(4);
                Parameter1      = r.ReadInt32();
                Parameter2      = r.ReadInt32();
                if (dataSize != 24)
                {
                    r.Skip(4); // Unused
                }
                Index = Type = 0;
                Name  = null;
            }
示例#16
0
 public DATAField(BinaryFileReader r, int dataSize)
 {
     Density  = r.ReadByte();
     MinSlope = r.ReadByte();
     MaxSlope = r.ReadByte();
     r.ReadByte();
     UnitFromWaterAmount = r.ReadUInt16();
     r.Skip(2);
     UnitFromWaterType = r.ReadUInt32();
     PositionRange     = r.ReadSingle();
     HeightRange       = r.ReadSingle();
     ColorRange        = r.ReadSingle();
     WavePeriod        = r.ReadSingle();
     Flags             = r.ReadByte();
     r.Skip(3);
 }
示例#17
0
 public HEDRField(BinaryFileReader r, int dataSize)
 {
     Version         = r.ReadSingle();
     FileType        = r.ReadUInt32();
     CompanyName     = r.ReadASCIIString(32, ASCIIFormat.ZeroPadded);
     FileDescription = r.ReadASCIIString(256, ASCIIFormat.ZeroPadded);
     NumRecords      = r.ReadUInt32();
 }
示例#18
0
 public DATAField(BinaryFileReader r, int dataSize, GameFormat format)
 {
     if (format == GameFormat.TES3)
     {
         Weight     = r.ReadSingle();
         Value      = r.ReadInt32();
         Flags      = (byte)r.ReadInt32();
         Teaches    = (byte)r.ReadInt32();
         EnchantPts = r.ReadInt32();
         return;
     }
     Flags      = r.ReadByte();
     Teaches    = r.ReadByte();
     Value      = r.ReadInt32();
     Weight     = r.ReadSingle();
     EnchantPts = 0;
 }
示例#19
0
            public int Flags; //: AutoCalc

            public DATAField(BinaryFileReader r, int dataSize, GameFormat format)
            {
                Weight = r.ReadSingle();
                if (format == GameFormat.TES3)
                {
                    Value = r.ReadInt32();
                    Flags = r.ReadInt32();
                }
            }
示例#20
0
            public sbyte[] HeightData;      // HeightData

            public VHGTField(BinaryFileReader r, int dataSize)
            {
                ReferenceHeight = r.ReadSingle();
                var count = dataSize - 4 - 3;

                HeightData = r.ReadTArray <sbyte>(count, count);
                //HeightData = new sbyte[count];
                //for (var i = 0; i < HeightData.Length; i++) HeightData[i] = r.ReadSByte();
                r.Skip(3); // Unused
            }
示例#21
0
            public float[] UseValue;       // The use types for each skill are hard-coded.

            public DATAField(BinaryFileReader r, int dataSize, GameFormat format)
            {
                Action         = format == GameFormat.TES3 ? 0 : r.ReadInt32();
                Attribute      = r.ReadInt32();
                Specialization = r.ReadUInt32();
                UseValue       = new float[format == GameFormat.TES3 ? 4 : 2];
                for (var i = 0; i < UseValue.Length; i++)
                {
                    UseValue[i] = r.ReadSingle();
                }
            }
示例#22
0
            public int    Flags; // 0 = ?, 1 = Ignore Normal Weapon Resistance?

            public DATAField(BinaryFileReader r, int dataSize, GameFormat format)
            {
                if (format == GameFormat.TES3)
                {
                    Weight    = r.ReadSingle();
                    Value     = r.ReadInt32();
                    Type      = r.ReadUInt16();
                    Health    = r.ReadInt16();
                    Speed     = r.ReadSingle();
                    Reach     = r.ReadSingle();
                    Damage    = r.ReadInt16();
                    ChopMin   = r.ReadByte();
                    ChopMax   = r.ReadByte();
                    SlashMin  = r.ReadByte();
                    SlashMax  = r.ReadByte();
                    ThrustMin = r.ReadByte();
                    ThrustMax = r.ReadByte();
                    Flags     = r.ReadInt32();
                    return;
                }
                Type    = (ushort)r.ReadUInt32();
                Speed   = r.ReadSingle();
                Reach   = r.ReadSingle();
                Flags   = r.ReadInt32();
                Value   = r.ReadInt32();
                Health  = (short)r.ReadInt32();
                Weight  = r.ReadSingle();
                Damage  = r.ReadInt16();
                ChopMin = ChopMax = SlashMin = SlashMax = ThrustMin = ThrustMax = 0;
            }
示例#23
0
 public CNAMField(BinaryFileReader r, int dataSize)
 {
     LeafCurvature      = r.ReadSingle();
     MinimumLeafAngle   = r.ReadSingle();
     MaximumLeafAngle   = r.ReadSingle();
     BranchDimmingValue = r.ReadSingle();
     LeafDimmingValue   = r.ReadSingle();
     ShadowRadius       = r.ReadInt32();
     RockSpeed          = r.ReadSingle();
     RustleSpeed        = r.ReadSingle();
 }
 public DODTField(BinaryFileReader r, int dataSize)
 {
     XPos = r.ReadSingle();
     YPos = r.ReadSingle();
     ZPos = r.ReadSingle();
     XRot = r.ReadSingle();
     YRot = r.ReadSingle();
     ZRot = r.ReadSingle();
 }
示例#25
0
            public int[] AttributeId; // only for Attribute related effects, 0 or -1 otherwise

            public IRDTField(BinaryFileReader r, int dataSize)
            {
                Weight   = r.ReadSingle();
                Value    = r.ReadInt32();
                EffectId = new int[4];
                for (var i = 0; i < EffectId.Length; i++)
                {
                    EffectId[i] = r.ReadInt32();
                }
                SkillId = new int[4];
                for (var i = 0; i < SkillId.Length; i++)
                {
                    SkillId[i] = r.ReadInt32();
                }
                AttributeId = new int[4];
                for (var i = 0; i < AttributeId.Length; i++)
                {
                    AttributeId[i] = r.ReadInt32();
                }
            }
示例#26
0
        public static DATVField ReadDATV(this BinaryFileReader r, int length, char type)
        {
            switch (type)
            {
            case 'b': return(new DATVField {
                    B = r.ReadInt32() != 0
                });

            case 'i': return(new DATVField {
                    I = r.ReadInt32()
                });

            case 'f': return(new DATVField {
                    F = r.ReadSingle()
                });

            case 's': return(new DATVField {
                    S = r.ReadASCIIString(length, ASCIIFormat.PossiblyNullTerminated)
                });

            default: throw new InvalidOperationException($"{type}");
            }
        }
示例#27
0
            public ColorRef4       VertexShading; // RGB + Shading radius (0 - 200) %

            public RDOTField(BinaryFileReader r, int dataSize)
            {
                Object    = new FormId <Record>(r.ReadUInt32());
                ParentIdx = r.ReadUInt16();
                r.Skip(2); // Unused
                Density         = r.ReadSingle();
                Clustering      = r.ReadByte();
                MinSlope        = r.ReadByte();
                MaxSlope        = r.ReadByte();
                Flags           = r.ReadByte();
                RadiusWrtParent = r.ReadUInt16();
                Radius          = r.ReadUInt16();
                MinHeight       = r.ReadSingle();
                MaxHeight       = r.ReadSingle();
                Sink            = r.ReadSingle();
                SinkVariance    = r.ReadSingle();
                SizeVariance    = r.ReadSingle();
                AngleVariance   = new Vector3Int(r.ReadUInt16(), r.ReadUInt16(), r.ReadUInt16());
                r.Skip(2); // Unused
                VertexShading = r.ReadT <ColorRef4>(dataSize);
            }
示例#28
0
 public DATAField(BinaryFileReader r, int dataSize)
 {
     Uses   = r.ReadByte();
     Value  = r.ReadInt32();
     Weight = r.ReadSingle();
 }
 public DATAField(BinaryFileReader r, int dataSize)
 {
     if (dataSize != 102 && dataSize != 86 && dataSize != 62 && dataSize != 42 && dataSize != 2)
     {
         WindVelocity = 1;
     }
     if (dataSize == 2)
     {
         Damage = r.ReadUInt16();
         return;
     }
     WindVelocity          = r.ReadSingle();
     WindDirection         = r.ReadSingle();
     WaveAmplitude         = r.ReadSingle();
     WaveFrequency         = r.ReadSingle();
     SunPower              = r.ReadSingle();
     ReflectivityAmount    = r.ReadSingle();
     FresnelAmount         = r.ReadSingle();
     ScrollXSpeed          = r.ReadSingle();
     ScrollYSpeed          = r.ReadSingle();
     FogDistance_NearPlane = r.ReadSingle();
     if (dataSize == 42)
     {
         Damage = r.ReadUInt16();
         return;
     }
     FogDistance_FarPlane = r.ReadSingle();
     ShallowColor         = r.ReadT <ColorRef4>(dataSize);
     DeepColor            = r.ReadT <ColorRef4>(dataSize);
     ReflectionColor      = r.ReadT <ColorRef4>(dataSize);
     TextureBlend         = r.ReadByte();
     r.Skip(3); // Unused
     if (dataSize == 62)
     {
         Damage = r.ReadUInt16();
         return;
     }
     RainSimulator_Force         = r.ReadSingle();
     RainSimulator_Velocity      = r.ReadSingle();
     RainSimulator_Falloff       = r.ReadSingle();
     RainSimulator_Dampner       = r.ReadSingle();
     RainSimulator_StartingSize  = r.ReadSingle();
     DisplacementSimulator_Force = r.ReadSingle();
     if (dataSize == 86)
     {
         //DisplacementSimulator_Velocity = DisplacementSimulator_Falloff = DisplacementSimulator_Dampner = DisplacementSimulator_StartingSize = 0F;
         Damage = r.ReadUInt16();
         return;
     }
     DisplacementSimulator_Velocity     = r.ReadSingle();
     DisplacementSimulator_Falloff      = r.ReadSingle();
     DisplacementSimulator_Dampner      = r.ReadSingle();
     DisplacementSimulator_StartingSize = r.ReadSingle();
     Damage = r.ReadUInt16();
 }
示例#30
0
 public HNAMField(BinaryFileReader r, int dataSize)
 {
     EyeAdaptSpeed  = r.ReadSingle();
     BlurRadius     = r.ReadSingle();
     BlurPasses     = r.ReadSingle();
     EmissiveMult   = r.ReadSingle();
     TargetLUM      = r.ReadSingle();
     UpperLUMClamp  = r.ReadSingle();
     BrightScale    = r.ReadSingle();
     BrightClamp    = r.ReadSingle();
     LUMRampNoTex   = r.ReadSingle();
     LUMRampMin     = r.ReadSingle();
     LUMRampMax     = r.ReadSingle();
     SunlightDimmer = r.ReadSingle();
     GrassDimmer    = r.ReadSingle();
     TreeDimmer     = r.ReadSingle();
 }