Ejemplo n.º 1
0
        /// <summary>
        /// Iterates a MajorRecordFrame's subrecords and locates the first occurance of the desired type
        /// </summary>
        /// <param name="majorFrame">Frame to read from</param>
        /// <param name="type">Type to search for</param>
        /// <param name="offset">Offset within the Major Record's contents to start searching</param>
        /// <param name="pin">SubrecordPinFrame if found</param>
        /// <returns>True if matching subrecord is found</returns>
        public static bool TryLocateSubrecordPinFrame(this MajorRecordFrame majorFrame, RecordType type, int offset, out SubrecordPinFrame pin)
        {
            var find = PluginUtilityTranslation.FindFirstSubrecord(majorFrame.Content.Slice(offset - majorFrame.HeaderLength), majorFrame.Meta, type, navigateToContent: false);

            if (find == null)
            {
                pin = default;
                return(false);
            }
            pin = new SubrecordPinFrame(majorFrame.Meta, majorFrame.Content.Slice(find.Value + offset - majorFrame.HeaderLength), find.Value + offset);
            return(true);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Interprets a subrecord's content as a double.
 /// </summary>
 /// <param name="pin">Frame to read from</param>
 /// <exception cref="System.ArgumentException">Thrown if frame's content is not exactly 8</exception>
 /// <returns>Subrecord's content as a double</returns>
 public static double AsDouble(this SubrecordPinFrame pin) => pin.Frame.AsDouble();
Ejemplo n.º 3
0
 /// <summary>
 /// Interprets a subrecord's content as a string.
 /// </summary>
 /// <param name="pin">Frame to read from</param>
 /// <param name="encoding">Encoding to use</param>
 /// <returns>Subrecord's content as a string, null trimmed if applicable</returns>
 public static string AsString(this SubrecordPinFrame pin, IMutagenEncoding encoding) => pin.Frame.AsString(encoding);
Ejemplo n.º 4
0
 /// <summary>
 /// Interprets a subrecord's content as a float.
 /// </summary>
 /// <param name="pin">Frame to read from</param>
 /// <exception cref="System.ArgumentException">Thrown if frame's content is not exactly 4</exception>
 /// <returns>Subrecord's content as a float</returns>
 public static float AsFloat(this SubrecordPinFrame pin) => pin.Frame.AsFloat();
Ejemplo n.º 5
0
 /// <summary>
 /// Interprets a subrecord's content as a long.
 /// </summary>
 /// <param name="pin">Frame to read from</param>
 /// <exception cref="System.ArgumentException">Thrown if frame's content is not exactly 8</exception>
 /// <returns>Subrecord's content as a long</returns>
 public static long AsInt64(this SubrecordPinFrame pin) => pin.Frame.AsInt64();
Ejemplo n.º 6
0
 /// <summary>
 /// Interprets a subrecord's content as a int.
 /// </summary>
 /// <param name="pin">Frame to read from</param>
 /// <exception cref="System.ArgumentException">Thrown if frame's content is not exactly 4</exception>
 /// <returns>Subrecord's content as a int</returns>
 public static int AsInt32(this SubrecordPinFrame pin) => pin.Frame.AsInt32();
Ejemplo n.º 7
0
 /// <summary>
 /// Interprets a subrecord's content as a short.
 /// </summary>
 /// <param name="pin">Frame to read from</param>
 /// <exception cref="System.ArgumentException">Thrown if frame's content is not exactly 2</exception>
 /// <returns>Subrecord's content as a short</returns>
 public static short AsInt16(this SubrecordPinFrame pin) => pin.Frame.AsInt16();
Ejemplo n.º 8
0
 /// <summary>
 /// Interprets a subrecord's content as a sbyte.
 /// </summary>
 /// <param name="pin">Frame to read from</param>
 /// <exception cref="System.ArgumentException">Thrown if frame's content is not exactly 1</exception>
 /// <returns>Subrecord's content as a sbyte</returns>
 public static sbyte AsInt8(this SubrecordPinFrame pin) => pin.Frame.AsInt8();