public static void FillBinaryStructs( IRegionInternal item, MutagenFrame frame) { Fallout4MajorRecordBinaryCreateTranslation.FillBinaryStructs( item: item, frame: frame); }
static void ParseRegionData(MutagenFrame frame, IRegionInternal item) { var rdatFrame = frame.GetSubrecordFrame(); RegionData.RegionDataType dataType = (RegionData.RegionDataType)BinaryPrimitives.ReadUInt32LittleEndian(rdatFrame.Content); var subMeta = frame.GetSubrecord(offset: rdatFrame.TotalLength); int len = rdatFrame.TotalLength; if (IsExpected(dataType, subMeta.RecordType)) { len += subMeta.TotalLength; } switch (dataType) { case RegionData.RegionDataType.Object: item.Objects = RegionObjects.CreateFromBinary(frame.SpawnWithLength(len, checkFraming: false)); break; case RegionData.RegionDataType.Map: item.MapName = RegionMap.CreateFromBinary(frame.SpawnWithLength(len, checkFraming: false)); break; case RegionData.RegionDataType.Grass: item.Grasses = RegionGrasses.CreateFromBinary(frame.SpawnWithLength(len, checkFraming: false)); break; case RegionData.RegionDataType.Sound: if (frame.Reader.TryGetSubrecord(out var nextRec, offset: len) && (nextRec.RecordType.Equals(RDSD) || nextRec.RecordType.Equals(RDMD))) { len += nextRec.TotalLength; } item.Sounds = RegionSounds.CreateFromBinary(frame.SpawnWithLength(len, checkFraming: false)); break; case RegionData.RegionDataType.Weather: item.Weather = RegionWeather.CreateFromBinary(frame.SpawnWithLength(len, checkFraming: false)); break; case RegionData.RegionDataType.Icon: frame.Position += frame.MetaData.Constants.SubConstants.HeaderLength + rdatFrame.TotalLength; len = len - frame.MetaData.Constants.SubConstants.HeaderLength - rdatFrame.TotalLength; if (StringBinaryTranslation.Instance.Parse( frame.SpawnWithLength(len, checkFraming: false), out var iconVal)) { item.Icon = iconVal; } else { item.Icon = null; } break; default: throw new NotImplementedException(); } }
static void ParseRegionData(MutagenFrame frame, IRegionInternal item) { var rdatFrame = frame.Reader.GetSubrecordFrame(); int len = rdatFrame.TotalLength; RegionData.RegionDataType dataType = (RegionData.RegionDataType)BinaryPrimitives.ReadUInt32LittleEndian(rdatFrame.Content); if (frame.Reader.TryGetSubrecord(out var subMeta, offset: len)) { var recType = subMeta.RecordType; if (recType == RecordTypes.ICON) { len += subMeta.TotalLength; // Skip icon subrecord for now subMeta = frame.Reader.GetSubrecord(offset: rdatFrame.TotalLength + subMeta.TotalLength); } if (IsExpected(dataType, recType)) { len += subMeta.TotalLength; } } switch (dataType) { case RegionData.RegionDataType.Object: item.Objects = RegionObjects.CreateFromBinary(frame.SpawnWithLength(len, checkFraming: false)); break; case RegionData.RegionDataType.Map: item.Map = RegionMap.CreateFromBinary(frame.SpawnWithLength(len, checkFraming: false)); break; case RegionData.RegionDataType.Grass: item.Grasses = RegionGrasses.CreateFromBinary(frame.SpawnWithLength(len, checkFraming: false)); break; case RegionData.RegionDataType.Sound: if (frame.Reader.TryGetSubrecord(out var nextRec, offset: len) && (nextRec.RecordType.Equals(RDSA) || nextRec.RecordType.Equals(RDMO))) { len += nextRec.TotalLength; } item.Sounds = RegionSounds.CreateFromBinary(frame.SpawnWithLength(len, checkFraming: false)); break; case RegionData.RegionDataType.Weather: item.Weather = RegionWeather.CreateFromBinary(frame.SpawnWithLength(len, checkFraming: false)); break; case RegionData.RegionDataType.Land: item.Land = RegionLand.CreateFromBinary(frame.SpawnWithLength(len, checkFraming: false)); break; default: throw new NotImplementedException(); } }
public static void CopyInFromBinary( this IRegionInternal item, MutagenFrame frame, TypedParseParams?translationParams = null) { ((RegionSetterCommon)((IRegionGetter)item).CommonSetterInstance() !).CopyInFromBinary( item: item, frame: frame, translationParams: translationParams); }
public virtual void CopyInFromBinary( IRegionInternal item, MutagenFrame frame, TypedParseParams?translationParams = null) { PluginUtilityTranslation.MajorRecordParse <IRegionInternal>( record: item, frame: frame, translationParams: translationParams, fillStructs: RegionBinaryCreateTranslation.FillBinaryStructs, fillTyped: RegionBinaryCreateTranslation.FillBinaryRecordTypes); }
public static void DeepCopyIn( this IRegionInternal lhs, IRegionGetter rhs, ErrorMaskBuilder?errorMask, TranslationCrystal?copyMask) { ((RegionSetterTranslationCommon)((IRegionGetter)lhs).CommonSetterTranslationInstance() !).DeepCopyIn( item: lhs, rhs: rhs, errorMask: errorMask, copyMask: copyMask, deepCopy: false); }
static partial void FillBinaryRegionAreaLogicCustom(MutagenFrame frame, IRegionInternal item) { var rdat = HeaderTranslation.GetNextSubrecordType(frame.Reader, out var rdatType); while (rdat.Equals(RecordTypes.RDAT)) { ParseRegionData(frame, item); if (frame.Complete) { break; } rdat = HeaderTranslation.GetNextSubrecordType(frame.Reader, out rdatType); } }
public void DeepCopyIn( IRegionInternal item, IRegionGetter rhs, ErrorMaskBuilder?errorMask, TranslationCrystal?copyMask, bool deepCopy) { base.DeepCopyIn( item, rhs, errorMask, copyMask, deepCopy: deepCopy); }
public static void DeepCopyIn( this IRegionInternal lhs, IRegionGetter rhs, out Region.ErrorMask errorMask, Region.TranslationMask?copyMask = null) { var errorMaskBuilder = new ErrorMaskBuilder(); ((RegionSetterTranslationCommon)((IRegionGetter)lhs).CommonSetterTranslationInstance() !).DeepCopyIn( item: lhs, rhs: rhs, errorMask: errorMaskBuilder, copyMask: copyMask?.GetCrystal(), deepCopy: false); errorMask = Region.ErrorMask.Factory(errorMaskBuilder); }
public void Clear(IRegionInternal item) { ClearPartial(); base.Clear(item); }
public static void Clear(this IRegionInternal item) { ((RegionSetterCommon)((IRegionGetter)item).CommonSetterInstance() !).Clear(item: item); }