Пример #1
0
        internal static object Write(SubRecordWriteContext context)
        {
            var creatureData = (CreatureData)context.subRecord;

            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.Type));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.Level));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.Strength));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.Intelligence));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.Willpower));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.Agility));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.Speed));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.Endurance));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.Personality));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.Luck));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.Health));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.SpellPoints));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.Fatigue));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.Soul));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.Combat));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.Magic));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.Stealth));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.AttackMin1));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.AttackMax1));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.AttackMin2));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.AttackMax2));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.AttackMin3));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.AttackMax3));
            WriteBytes(context.stream, BitConverter.GetBytes(creatureData.Gold));
            return(null);
        }
Пример #2
0
        internal static object Write(SubRecordWriteContext context)
        {
            var factionData = (FactionData)context.subRecord;

            WriteBytes(context.stream, BitConverter.GetBytes(factionData.Attribute1));
            WriteBytes(context.stream, BitConverter.GetBytes(factionData.Attribute2));

            for (var i = 0; i < Constants.FACT_MAX_RANKS; ++i)
            {
                var rankData = factionData.RankData[i];
                WriteBytes(context.stream, BitConverter.GetBytes(rankData.Attribute1));
                WriteBytes(context.stream, BitConverter.GetBytes(rankData.Attribute2));
                WriteBytes(context.stream, BitConverter.GetBytes(rankData.FirstSkill));
                WriteBytes(context.stream, BitConverter.GetBytes(rankData.SecondSkill));
                WriteBytes(context.stream, BitConverter.GetBytes(rankData.Faction));
            }

            for (var i = 0; i < Constants.FACT_MAX_SKILL_IDS; ++i)
            {
                WriteBytes(context.stream, BitConverter.GetBytes(factionData.SkillIds[i]));
            }

            WriteBytes(context.stream, BitConverter.GetBytes(factionData.Flags));
            return(null);
        }
Пример #3
0
        internal static object Write(SubRecordWriteContext context)
        {
            var textureMap = (LandTextureSubRecord)context.subRecord;

            var map = textureMap.Data;
            var initiallyUnswizzled = !map.Swizzled;

            if (initiallyUnswizzled)
            {
                map.Swizzle();
            }

            for (var i = 0; i < 16; ++i)
            {
                for (var j = 0; j < 16; ++j)
                {
                    WriteBytes(context.stream, BitConverter.GetBytes(map[i, j]));
                }
            }

            if (initiallyUnswizzled)
            {
                map.UnSwizzle();
            }
            return(null);
        }
Пример #4
0
        internal static object Write(SubRecordWriteContext context)
        {
            var item = (InventoryItemSubRecord)context.subRecord;

            WriteBytes(context.stream, BitConverter.GetBytes(item.Count));
            WriteBytes(context.stream, GetBytes(item.ItemName, Constants.NPCO_ITEM_NAME_LENGTH, "CONT.NPCO.ItemName"));
            return(null);
        }
Пример #5
0
        internal static object Write(SubRecordWriteContext context)
        {
            var regionSoundData = (RegionSoundData)context.subRecord;

            WriteBytes(context.stream, GetBytes(regionSoundData.SoundName, Constants.REGN_SOUND_NAME_LENGTH, "REGN.SNAM.SoundName"));
            context.stream.WriteByte(regionSoundData.Chance);
            return(null);
        }
Пример #6
0
        internal static object Write(SubRecordWriteContext context)
        {
            var gridData = (GridSubRecord)context.subRecord;

            WriteBytes(context.stream, BitConverter.GetBytes(gridData.GridX));
            WriteBytes(context.stream, BitConverter.GetBytes(gridData.GridY));
            return(null);
        }
Пример #7
0
        internal static object Write(SubRecordWriteContext context)
        {
            var aiData = (AIActivateData)context.subRecord;

            WriteBytes(context.stream, GetBytes(aiData.TargetName, Constants.AI_X_ID_LENGTH, "NPC_.AI_A.TargetName"));
            context.stream.WriteByte(aiData.Unknown);
            return(null);
        }
Пример #8
0
        internal static object Write(SubRecordWriteContext context)
        {
            var spellData = (SpellData)context.subRecord;

            WriteBytes(context.stream, BitConverter.GetBytes(spellData.Type));
            WriteBytes(context.stream, BitConverter.GetBytes(spellData.SpellCost));
            WriteBytes(context.stream, BitConverter.GetBytes(spellData.Flags));
            return(null);
        }
Пример #9
0
        internal static object Write(SubRecordWriteContext context)
        {
            var miscItemData = (MiscItemData)context.subRecord;

            WriteBytes(context.stream, BitConverter.GetBytes(miscItemData.Weight));
            WriteBytes(context.stream, BitConverter.GetBytes(miscItemData.Value));
            WriteBytes(context.stream, BitConverter.GetBytes(miscItemData.Unknown));
            return(null);
        }
Пример #10
0
        internal static object Write(SubRecordWriteContext context)
        {
            var potionData = (PotionData)context.subRecord;

            WriteBytes(context.stream, BitConverter.GetBytes(potionData.Weight));
            WriteBytes(context.stream, BitConverter.GetBytes(potionData.Value));
            WriteBytes(context.stream, BitConverter.GetBytes(potionData.AutoCalc));
            return(null);
        }
Пример #11
0
        internal static object Write(SubRecordWriteContext context)
        {
            var soundData = (SoundData)context.subRecord;

            context.stream.WriteByte(soundData.Volume);
            context.stream.WriteByte(soundData.MinRange);
            context.stream.WriteByte(soundData.MaxRange);
            return(null);
        }
Пример #12
0
        internal static object Write(SubRecordWriteContext context)
        {
            var apparatusData = (AlchemyApparatusData)context.subRecord;

            WriteBytes(context.stream, BitConverter.GetBytes(apparatusData.Type));
            WriteBytes(context.stream, BitConverter.GetBytes(apparatusData.Quality));
            WriteBytes(context.stream, BitConverter.GetBytes(apparatusData.Weight));
            WriteBytes(context.stream, BitConverter.GetBytes(apparatusData.Value));
            return(null);
        }
Пример #13
0
        internal static object Write(SubRecordWriteContext context)
        {
            var repairData = (RepairData)context.subRecord;

            WriteBytes(context.stream, BitConverter.GetBytes(repairData.Weight));
            WriteBytes(context.stream, BitConverter.GetBytes(repairData.Value));
            WriteBytes(context.stream, BitConverter.GetBytes(repairData.Uses));
            WriteBytes(context.stream, BitConverter.GetBytes(repairData.Quality));
            return(null);
        }
Пример #14
0
        internal static object Write(SubRecordWriteContext context)
        {
            var enchantData = (EnchantData)context.subRecord;

            WriteBytes(context.stream, BitConverter.GetBytes(enchantData.Type));
            WriteBytes(context.stream, BitConverter.GetBytes(enchantData.Cost));
            WriteBytes(context.stream, BitConverter.GetBytes(enchantData.Charge));
            WriteBytes(context.stream, BitConverter.GetBytes(enchantData.AutoCalc));
            return(null);
        }
Пример #15
0
        internal static object Write(SubRecordWriteContext context)
        {
            var aiData = (AITravelData)context.subRecord;

            WriteBytes(context.stream, BitConverter.GetBytes(aiData.X));
            WriteBytes(context.stream, BitConverter.GetBytes(aiData.Y));
            WriteBytes(context.stream, BitConverter.GetBytes(aiData.Z));
            WriteBytes(context.stream, BitConverter.GetBytes(aiData.Unknown));
            return(null);
        }
Пример #16
0
        internal static object Write(SubRecordWriteContext context)
        {
            var clothingData = (ClothingData)context.subRecord;

            WriteBytes(context.stream, BitConverter.GetBytes(clothingData.Type));
            WriteBytes(context.stream, BitConverter.GetBytes(clothingData.Weight));
            WriteBytes(context.stream, BitConverter.GetBytes(clothingData.Value));
            WriteBytes(context.stream, BitConverter.GetBytes(clothingData.EnchantPoints));
            return(null);
        }
Пример #17
0
        internal static object Write(SubRecordWriteContext context)
        {
            var bodyData = (BodyPartData)context.subRecord;

            context.stream.WriteByte(bodyData.Part);
            context.stream.WriteByte(bodyData.Vampire);
            context.stream.WriteByte(bodyData.Flags);
            context.stream.WriteByte(bodyData.PartType);
            return(null);
        }
Пример #18
0
        internal static object Write(SubRecordWriteContext context)
        {
            var lightData = (InteriorLightSubRecord)context.subRecord;

            WriteColorRef(context.stream, lightData.AmbientColor);
            WriteColorRef(context.stream, lightData.SunlightColor);
            WriteColorRef(context.stream, lightData.FogColor);
            WriteBytes(context.stream, BitConverter.GetBytes(lightData.FogDensity));
            return(null);
        }
Пример #19
0
        internal static object Write(SubRecordWriteContext context)
        {
            var connectionData = (PathGridConnectionSubRecord)context.subRecord;

            foreach (var connection in connectionData.Connections)
            {
                WriteBytes(context.stream, BitConverter.GetBytes(connection));
            }
            return(null);
        }
Пример #20
0
        internal static object Write(SubRecordWriteContext context)
        {
            var pathGridData = (PathGridDataSubRecord)context.subRecord;

            WriteBytes(context.stream, BitConverter.GetBytes(pathGridData.GridX));
            WriteBytes(context.stream, BitConverter.GetBytes(pathGridData.GridY));
            WriteBytes(context.stream, BitConverter.GetBytes(pathGridData.Granularity));
            WriteBytes(context.stream, BitConverter.GetBytes(pathGridData.PointCount));
            return(null);
        }
Пример #21
0
        internal static object Write(SubRecordWriteContext context)
        {
            var fileHeader = (TES3HeaderData)context.subRecord;

            WriteBytes(context.stream, BitConverter.GetBytes(fileHeader.Version));
            WriteBytes(context.stream, BitConverter.GetBytes(fileHeader.FileType));
            WriteBytes(context.stream, GetBytes(fileHeader.CompanyName, Constants.TES3_COMPANY_NAME_LENGTH, "TES3.HEDR.CompanyName"));
            WriteBytes(context.stream, GetBytes(fileHeader.Description, Constants.TES3_DESCRIPTION_LENGTH, "TES3.HEDR.Description"));
            WriteBytes(context.stream, BitConverter.GetBytes(fileHeader.NumRecords));
            return(null);
        }
Пример #22
0
        internal static object Write(SubRecordWriteContext context)
        {
            var bookData = (BookData)context.subRecord;

            WriteBytes(context.stream, BitConverter.GetBytes(bookData.Weight));
            WriteBytes(context.stream, BitConverter.GetBytes(bookData.Value));
            WriteBytes(context.stream, BitConverter.GetBytes(bookData.Scroll));
            WriteBytes(context.stream, BitConverter.GetBytes(bookData.SkillId));
            WriteBytes(context.stream, BitConverter.GetBytes(bookData.EnchantPoints));
            return(null);
        }
Пример #23
0
        internal static object Write(SubRecordWriteContext context)
        {
            var armorData = (ArmorData)context.subRecord;

            WriteBytes(context.stream, BitConverter.GetBytes(armorData.Type));
            WriteBytes(context.stream, BitConverter.GetBytes(armorData.Weight));
            WriteBytes(context.stream, BitConverter.GetBytes(armorData.Value));
            WriteBytes(context.stream, BitConverter.GetBytes(armorData.Health));
            WriteBytes(context.stream, BitConverter.GetBytes(armorData.EnchantPoints));
            WriteBytes(context.stream, BitConverter.GetBytes(armorData.Armor));
            return(null);
        }
Пример #24
0
        internal static object Write(SubRecordWriteContext context)
        {
            var lightData = (LightData)context.subRecord;

            WriteBytes(context.stream, BitConverter.GetBytes(lightData.Weight));
            WriteBytes(context.stream, BitConverter.GetBytes(lightData.Value));
            WriteBytes(context.stream, BitConverter.GetBytes(lightData.Time));
            WriteBytes(context.stream, BitConverter.GetBytes(lightData.Radius));
            WriteColorRef(context.stream, lightData.Color);
            WriteBytes(context.stream, BitConverter.GetBytes(lightData.Flags));
            return(null);
        }
Пример #25
0
        internal static object Write(SubRecordWriteContext context)
        {
            var scriptHeader = (ScriptHeader)context.subRecord;

            WriteBytes(context.stream, GetBytes(scriptHeader.ScriptName, Constants.Script.SCHD_NAME_MAX_LENGTH, "SCPT.SCHD.ScriptName"));
            WriteBytes(context.stream, BitConverter.GetBytes(scriptHeader.NumShorts));
            WriteBytes(context.stream, BitConverter.GetBytes(scriptHeader.NumLongs));
            WriteBytes(context.stream, BitConverter.GetBytes(scriptHeader.NumFloats));
            WriteBytes(context.stream, BitConverter.GetBytes(scriptHeader.DataSize));
            WriteBytes(context.stream, BitConverter.GetBytes(scriptHeader.LocalVarSize));
            return(null);
        }
Пример #26
0
 internal static object Write(SubRecordWriteContext context)
 {
     if (context.subRecord is ByteSubRecord byteRecord)
     {
         context.stream.WriteByte(byteRecord.Data);
     }
     else if (context.subRecord is IntSubRecord intRecord)
     {
         WriteBytes(context.stream, BitConverter.GetBytes(intRecord.Data));
     }
     return(null);
 }
Пример #27
0
        internal static object Write(SubRecordWriteContext context)
        {
            var paletteData = (WorldMapPaletteSubRecord)context.subRecord;

            for (var i = 0; i < WorldMapPaletteSubRecord.PALETTE_SIDE_LENGTH; ++i)
            {
                for (var j = 0; j < WorldMapPaletteSubRecord.PALETTE_SIDE_LENGTH; ++j)
                {
                    context.stream.WriteByte(paletteData.Palette[i, j]);
                }
            }
            return(null);
        }
Пример #28
0
		internal static object Write(SubRecordWriteContext context)
		{
        
            var infoData = (DialogueInfoData) context.subRecord;

            WriteBytes(context.stream, BitConverter.GetBytes(infoData.Unknown));
            WriteBytes(context.stream, BitConverter.GetBytes(infoData.Disposition));
            context.stream.WriteByte(infoData.Rank);
            context.stream.WriteByte(infoData.Gender);
            context.stream.WriteByte(infoData.PCRank);
            context.stream.WriteByte(infoData.Unknown1);
			return null;
		}
Пример #29
0
        internal static object Write(SubRecordWriteContext context)
        {
            var skillData = (SkillData)context.subRecord;

            WriteBytes(context.stream, BitConverter.GetBytes(skillData.Attribute));
            WriteBytes(context.stream, BitConverter.GetBytes(skillData.Specialization));

            for (int i = 0; i < Constants.SKIL_USE_VALUE_LENGTH; ++i)
            {
                WriteBytes(context.stream, BitConverter.GetBytes(skillData.UseValue[i]));
            }
            return(null);
        }
Пример #30
0
        internal static object Write(SubRecordWriteContext context)
        {
            var aiData = (AIWanderData)context.subRecord;

            WriteBytes(context.stream, BitConverter.GetBytes(aiData.Distance));
            WriteBytes(context.stream, BitConverter.GetBytes(aiData.Duration));
            context.stream.WriteByte(aiData.TimeOfDay);

            WriteBytes(context.stream, aiData.Idle);

            context.stream.WriteByte(aiData.Unknown);
            return(null);
        }