public static IEnumerable <ATopicReference> Factory(MutagenFrame frame) { while (frame.TryReadSubrecord(RecordTypes.PDTO, out var _)) { var type = (ATopicReference.TopicType)frame.ReadInt32(); switch (type) { case ATopicReference.TopicType.Ref: yield return(new TopicReference() { Reference = new FormLink <IDialogTopicGetter>(FormLinkBinaryTranslation.Instance.Parse(frame)) }); break; case ATopicReference.TopicType.Subtype: yield return(new TopicReferenceSubtype() { Subtype = new RecordType(frame.ReadInt32()) }); break; default: throw new NotImplementedException(); } } }
static partial void FillBinaryParameterParsingCustom(MutagenFrame frame, IFunctionConditionData item) { item.ParameterOneNumber = frame.ReadInt32(); item.ParameterTwoNumber = frame.ReadInt32(); item.ParameterOneRecord = FormKey.Factory(frame.MetaData.MasterReferences !, (uint)item.ParameterOneNumber); item.ParameterTwoRecord = FormKey.Factory(frame.MetaData.MasterReferences !, (uint)item.ParameterTwoNumber); item.Unknown3 = frame.ReadInt32(); item.Unknown4 = frame.ReadInt32(); item.Unknown5 = frame.ReadInt32(); }
public static partial void FillBinarySecondaryFlagsCustom(MutagenFrame frame, ICombatStyleData item) { int flags = frame.ReadInt32(); var otherFlag = (CombatStyle.Flag)(flags << 8); item.Flags |= otherFlag; }
public string Parse( MutagenFrame reader, bool parseWhole = true, StringBinaryType stringBinaryType = StringBinaryType.NullTerminate) { switch (stringBinaryType) { case StringBinaryType.Plain: case StringBinaryType.NullTerminate: if (parseWhole) { return(BinaryStringUtility.ProcessWholeToZString(reader.ReadMemory(checked ((int)reader.Remaining)))); } else { return(BinaryStringUtility.ParseUnknownLengthString(reader.Reader)); } case StringBinaryType.PrependLength: { var len = reader.ReadInt32(); return(BinaryStringUtility.ToZString(reader.ReadMemory(len))); } case StringBinaryType.PrependLengthUShort: { var len = reader.ReadInt16(); return(BinaryStringUtility.ToZString(reader.ReadMemory(len))); } default: throw new NotImplementedException(); } }
static partial void FillBinaryLengthLogicCustom(MutagenFrame frame, IANavigationMeshInternal item) { frame.Position += frame.MetaData.Constants.SubConstants.HeaderLength; var xxxxSize = frame.ReadInt32(); HeaderTranslation.ReadNextSubrecordType(frame, out var len); frame = frame.SpawnWithLength(xxxxSize, checkFraming: false); GetSetData(frame, item); }
public static ALocationTarget GetLocationTarget(MutagenFrame frame) { var type = (LocationTargetRadius.LocationType)frame.ReadInt32(); switch (type) { case LocationTargetRadius.LocationType.NearReference: return(new LocationTarget() { Link = FormKeyBinaryTranslation.Instance.Parse(frame).AsLink <ILocationTargetableGetter>() }); case LocationTargetRadius.LocationType.InCell: return(new LocationCell() { Link = FormKeyBinaryTranslation.Instance.Parse(frame).AsLink <ICellGetter>() }); case LocationTargetRadius.LocationType.ObjectID: return(new LocationObjectId() { Link = FormKeyBinaryTranslation.Instance.Parse(frame).AsLink <IObjectIdGetter>() }); case LocationTargetRadius.LocationType.ObjectType: return(new LocationObjectType() { Type = (TargetObjectType)frame.ReadInt32() }); case LocationTargetRadius.LocationType.LinkedReference: return(new LocationKeyword() { Link = FormKeyBinaryTranslation.Instance.Parse(frame).AsLink <IKeywordGetter>() }); default: return(new LocationFallback() { Type = type, Data = frame.ReadInt32() }); } }
static partial void FillBinaryCoverTrianglesLogicCustom(MutagenFrame frame, IANavigationMeshData item) { var count = frame.ReadInt32(); for (int i = 0; i < count; i++) { var index = frame.ReadInt16(); item.Triangles[index].IsCover = true; } }
public static APackageTarget CreateFromBinary(MutagenFrame frame) { APackageTarget target = ((APackageTarget.Type)frame.ReadUInt32()) switch { APackageTarget.Type.SpecificReference => new PackageTargetSpecificReference() { Reference = FormKeyBinaryTranslation.Instance.Parse(frame) }, APackageTarget.Type.ObjectID => new PackageTargetObjectID() { Reference = FormKeyBinaryTranslation.Instance.Parse(frame) }, APackageTarget.Type.ObjectType => new PackageTargetObjectType() { Type = (TargetObjectType)frame.ReadInt32() }, APackageTarget.Type.LinkedReference => new PackageTargetReference() { Reference = FormKeyBinaryTranslation.Instance.Parse(frame) }, APackageTarget.Type.RefAlias => new PackageTargetAlias() { Alias = frame.ReadInt32() }, APackageTarget.Type.Unknown => new PackageTargetUnknown() { Data = frame.ReadInt32() }, APackageTarget.Type.Self => new PackageTargetSelf() { Data = frame.ReadInt32() }, _ => throw new NotImplementedException(), }; target.CountOrDistance = frame.ReadInt32(); return(target); }
public static partial void FillBinaryTeachesCustom(MutagenFrame frame, IBookInternal item) { if ((((int)item.Flags) & SpellFlag) > 0) { item.Teaches = new BookSpell() { Spell = new FormLink <ISpellGetter>(FormLinkBinaryTranslation.Instance.Parse(frame)) }; } else if ((((int)item.Flags) & SkillFlag) > 0) { item.Teaches = new BookSkill { Skill = (Skill)frame.ReadInt32() }; } else { item.Teaches = new BookTeachesNothing() { RawContent = frame.ReadUInt32() }; } }
public static MagicEffectArchetype ReadArchetype(MutagenFrame frame) { // Jump back and read in association FormKey var curPos = frame.Position; frame.Position -= 56; FormKey associatedItemKey = FormKeyBinaryTranslation.Instance.Parse(frame); frame.Position = curPos; // Finish reading archetype MagicEffectArchetype.TypeEnum archetypeEnum = (MagicEffectArchetype.TypeEnum)frame.ReadInt32(); MagicEffectArchetype archetype; switch (archetypeEnum) { case MagicEffectArchetype.TypeEnum.Light: archetype = new MagicEffectLightArchetype(); break; case MagicEffectArchetype.TypeEnum.Bound: archetype = new MagicEffectBoundArchetype(); break; case MagicEffectArchetype.TypeEnum.SummonCreature: archetype = new MagicEffectNpcArchetype(); break; case MagicEffectArchetype.TypeEnum.Guide: archetype = new MagicEffectGuideArchetype(); break; case MagicEffectArchetype.TypeEnum.SpawnHazard: archetype = new MagicEffectSpawnHazardArchetype(); break; case MagicEffectArchetype.TypeEnum.PeakValueModifier: archetype = new MagicEffectKeywordArchetype(); break; case MagicEffectArchetype.TypeEnum.Cloak: archetype = new MagicEffectSpellArchetype(); break; case MagicEffectArchetype.TypeEnum.Werewolf: archetype = new MagicEffectWerewolfArchetype(); break; case MagicEffectArchetype.TypeEnum.VampireLord: archetype = new MagicEffectVampireArchetype(); break; case MagicEffectArchetype.TypeEnum.EnhanceWeapon: archetype = new MagicEffectEnchantmentArchetype(); break; case MagicEffectArchetype.TypeEnum.Calm: case MagicEffectArchetype.TypeEnum.Frenzy: archetype = new MagicEffectArchetype(archetypeEnum) { ActorValue = ActorValue.Aggression }; break; case MagicEffectArchetype.TypeEnum.Invisibility: archetype = new MagicEffectArchetype(archetypeEnum) { ActorValue = ActorValue.Invisibility }; break; case MagicEffectArchetype.TypeEnum.Paralysis: archetype = new MagicEffectArchetype(archetypeEnum) { ActorValue = ActorValue.Paralysis }; break; case MagicEffectArchetype.TypeEnum.Demoralize: case MagicEffectArchetype.TypeEnum.TurnUndead: case MagicEffectArchetype.TypeEnum.Rally: case MagicEffectArchetype.TypeEnum.Banish: archetype = new MagicEffectArchetype(archetypeEnum) { ActorValue = ActorValue.Confidence }; break; default: archetype = new MagicEffectArchetype(archetypeEnum) { ActorValue = ActorValue.None }; break; } archetype.AssociationKey = associatedItemKey; archetype.ActorValue = (ActorValue)frame.ReadInt32(); return(archetype); }