예제 #1
0
            public static partial void FillBinaryFlagsCustom(MutagenFrame frame, IFurnitureInternal item)
            {
                var subFrame = frame.ReadSubrecordFrame();

                // Read flags like normal
                item.Flags = (Furniture.Flag)BinaryPrimitives.ReadUInt16LittleEndian(subFrame.Content);
            }
예제 #2
0
 static partial void FillBinaryPatrolScriptMarkerCustom(MutagenFrame frame, IPatrol item)
 {
     if (frame.ReadSubrecordFrame().Content.Length != 0)
     {
         throw new ArgumentException($"Marker had unexpected length.");
     }
 }
예제 #3
0
            static partial void FillBinaryBoundDataCustom(MutagenFrame frame, IPlacedObjectInternal item)
            {
                var header = frame.ReadSubrecordFrame();

                if (header.Content.Length != 4)
                {
                    throw new ArgumentException($"Unexpected data header length: {header.Content.Length} != 4");
                }
                item.Unknown = BinaryPrimitives.ReadInt16LittleEndian(header.Content.Slice(2));
                while (frame.Reader.TryReadSubrecord(out var subHeader))
                {
                    switch (subHeader.RecordTypeInt)
                    {
                    case RecordTypeInts.LNAM:
                        item.LightingTemplate = FormKeyBinaryTranslation.Instance.Parse(frame);
                        break;

                    case RecordTypeInts.INAM:
                        item.ImageSpace = FormKeyBinaryTranslation.Instance.Parse(frame);
                        break;

                    case RecordTypeInts.XLRM:
                        item.LinkedRooms.Add(new FormLink <PlacedObject>(FormKeyBinaryTranslation.Instance.Parse(frame)));
                        break;

                    default:
                        frame.Reader.Position -= subHeader.HeaderLength;
                        return;
                    }
                }
            }
예제 #4
0
            public static partial ParseResult FillBinaryPatrolScriptMarkerCustom(MutagenFrame frame, IPatrol item, PreviousParse lastParsed)
            {
                if (frame.ReadSubrecordFrame().Content.Length != 0)
                {
                    throw new ArgumentException($"Marker had unexpected length.");
                }

                return(lastParsed);
            }
예제 #5
0
            public static partial void FillBinaryUnusedConditionsLogicCustom(MutagenFrame frame, IQuestInternal item)
            {
                var nextHeader = frame.ReadSubrecordFrame();

                if (nextHeader.RecordType != RecordTypes.NEXT ||
                    nextHeader.Content.Length != 0)
                {
                    throw new ArgumentException("Unexpected NEXT header");
                }
                ConditionBinaryCreateTranslation.FillConditionsList(item.UnusedConditions, frame);
            }
예제 #6
0
            public static void FillBinaryDisabledCloudLayers(MutagenFrame frame, CloudLayer[] clouds)
            {
                var  subRec = frame.ReadSubrecordFrame();
                var  raw    = BinaryPrimitives.ReadUInt32LittleEndian(subRec.Content);
                uint index  = 1;

                for (int i = 0; i < NumLayers; i++)
                {
                    // Inverse because we're exposing as enabled
                    clouds[i].Enabled = !EnumExt.HasFlag(raw, index);
                    index           <<= 1;
                }
            }
예제 #7
0
            public static partial void FillBinaryZoomCustom(MutagenFrame frame, ICameraPathInternal item)
            {
                var subFrame = frame.ReadSubrecordFrame();

                if (subFrame.Content.Length != 1)
                {
                    throw new ArgumentException();
                }
                var e = subFrame.Content[0];

                item.Zoom = (CameraPath.ZoomType)(e % 128);
                item.ZoomMustHaveCameraShots = e < 128;
            }
예제 #8
0
            public static partial ParseResult FillBinaryTrapFormCustom(MutagenFrame frame, IAPlacedTrapInternal item)
            {
                var subRec = frame.ReadSubrecordFrame();

                if (subRec.Content.Length != 4)
                {
                    throw new ArgumentException("Unexpected length");
                }
                var form = FormKeyBinaryTranslation.Instance.Parse(subRec.Content, frame.MetaData.MasterReferences !);

                switch (item)
                {
                case IPlacedArrow arrow:
                    arrow.Projectile.FormKey = form;
                    break;

                case IPlacedBeam beam:
                    beam.Projectile.FormKey = form;
                    break;

                case IPlacedFlame flame:
                    flame.Projectile.FormKey = form;
                    break;

                case IPlacedCone cone:
                    cone.Projectile.FormKey = form;
                    break;

                case IPlacedBarrier barrier:
                    barrier.Projectile.FormKey = form;
                    break;

                case IPlacedTrap trap:
                    trap.Projectile.FormKey = form;
                    break;

                case IPlacedHazard hazard:
                    hazard.Hazard.FormKey = form;
                    break;

                case IPlacedMissile missile:
                    missile.Projectile.FormKey = form;
                    break;

                default:
                    throw new NotImplementedException();
                }

                return(null);
            }
예제 #9
0
            static partial void FillBinaryPackageTemplateCustom(MutagenFrame frame, IPackageInternal item)
            {
                var pkcuRecord = frame.ReadSubrecordFrame();

                if (pkcuRecord.Content.Length != 12)
                {
                    throw new ArgumentException();
                }
                var dataCount = checked ((int)BinaryPrimitives.ReadUInt32LittleEndian(pkcuRecord.Content));

                item.PackageTemplate.FormKey = FormKeyBinaryTranslation.Instance.Parse(pkcuRecord.Content.Slice(4, 4), frame.MetaData.MasterReferences !);
                item.DataInputVersion        = BinaryPrimitives.ReadInt32LittleEndian(pkcuRecord.Content.Slice(8));

                FillPackageData(frame.Reader, dataCount, item.Data);
            }
예제 #10
0
            public static partial void FillBinaryAliasIndexCustom(MutagenFrame frame, IFindMatchingRefNearAlias item)
            {
                var subrecord = frame.ReadSubrecordFrame();

                item.AliasIndex = checked ((short)BinaryPrimitives.ReadInt32LittleEndian(subrecord.Content));
            }
예제 #11
0
파일: Npc.cs 프로젝트: erri120/Mutagen
 public static partial void FillBinaryDataMarkerCustom(MutagenFrame frame, INpcInternal item)
 {
     // Skip marker
     frame.ReadSubrecordFrame();
 }
예제 #12
0
 public static partial void FillBinaryResponseCountCustom(MutagenFrame frame, IDialogTopicInternal item)
 {
     // Skip counter
     frame.ReadSubrecordFrame();
 }
예제 #13
0
 static partial void FillBinaryCompletionConditionsCustom(MutagenFrame frame, IScenePhase item)
 {
     frame.ReadSubrecordFrame();
     ConditionBinaryCreateTranslation.FillConditionsList(item.CompletionConditions, frame);
 }
예제 #14
0
 public static partial ParseResult FillBinaryResponseCountCustom(MutagenFrame frame, IDialogTopicInternal item)
 {
     // Skip counter
     frame.ReadSubrecordFrame();
     return(null);
 }
예제 #15
0
 public static partial void FillBinaryNextAliasIDCustom(MutagenFrame frame, IQuestInternal item)
 {
     // Skip
     frame.ReadSubrecordFrame();
 }
예제 #16
0
 public static partial void FillBinaryAnimationCountCustom(MutagenFrame frame, IIdleMarkerInternal item)
 {
     // Skip. Don't care
     frame.ReadSubrecordFrame();
 }
예제 #17
0
 static partial void FillBinaryEndCustom(MutagenFrame frame, IQuestAlias item)
 {
     // Skip
     frame.ReadSubrecordFrame();
 }
예제 #18
0
 public static partial ParseResult FillBinaryDataMarkerCustom(MutagenFrame frame, INpcInternal item)
 {
     // Skip marker
     frame.ReadSubrecordFrame();
     return(null);
 }
예제 #19
0
            public static partial void FillBinaryDataCustom(MutagenFrame frame, IGameSettingBoolInternal item)
            {
                var subFrame = frame.ReadSubrecordFrame();

                item.Data = (bool)(BinaryPrimitives.ReadUInt32LittleEndian(subFrame.Content) != 0);
            }
예제 #20
0
 public static partial ParseResult FillBinaryNextAliasIDCustom(MutagenFrame frame, IQuestInternal item)
 {
     // Skip
     frame.ReadSubrecordFrame();
     return(null);
 }
예제 #21
0
 public static partial ParseResult FillBinaryEndCustom(MutagenFrame frame, IQuestAlias item, PreviousParse lastParsed)
 {
     // Skip
     frame.ReadSubrecordFrame();
     return(lastParsed);
 }
예제 #22
0
 public static partial ParseResult FillBinaryAnimationCountCustom(MutagenFrame frame, IIdleMarkerInternal item)
 {
     // Skip. Don't care
     frame.ReadSubrecordFrame();
     return null;
 }