Пример #1
0
        public override void ReadData(ESPReader reader, long dataEnd)
        {
            while (reader.BaseStream.Position < dataEnd)
            {
                string subTag = reader.PeekTag();

                switch (subTag)
                {
                case "EDID":
                    if (EditorID == null)
                    {
                        EditorID = new SimpleSubrecord <String>();
                    }

                    EditorID.ReadBinary(reader);
                    break;

                case "PKDT":
                    if (Data == null)
                    {
                        Data = new PackageData();
                    }

                    Data.ReadBinary(reader);
                    break;

                case "PLDT":
                    if (Location1 == null)
                    {
                        Location1 = new PackageLocation();
                    }

                    Location1.ReadBinary(reader);
                    break;

                case "PLD2":
                    if (Location2 == null)
                    {
                        Location2 = new PackageLocation();
                    }

                    Location2.ReadBinary(reader);
                    break;

                case "PSDT":
                    if (Schedule == null)
                    {
                        Schedule = new PackageScheduleData();
                    }

                    Schedule.ReadBinary(reader);
                    break;

                case "PTDT":
                    if (Target1 == null)
                    {
                        Target1 = new PackageTarget();
                    }

                    Target1.ReadBinary(reader);
                    break;

                case "CTDA":
                    if (Conditions == null)
                    {
                        Conditions = new List <Condition>();
                    }

                    Condition tempCTDA = new Condition();
                    tempCTDA.ReadBinary(reader);
                    Conditions.Add(tempCTDA);
                    break;

                case "IDLF":
                    if (IdleFlags == null)
                    {
                        IdleFlags = new SimpleSubrecord <PackageIdleFlags>();
                    }

                    IdleFlags.ReadBinary(reader);
                    break;

                case "IDLC":
                    if (IdleCount == null)
                    {
                        IdleCount = new SimpleSubrecord <Byte>();
                    }

                    IdleCount.ReadBinary(reader);
                    break;

                case "IDLT":
                    if (IdleTimerSetting == null)
                    {
                        IdleTimerSetting = new SimpleSubrecord <Single>();
                    }

                    IdleTimerSetting.ReadBinary(reader);
                    break;

                case "IDLA":
                    if (IdleAnimations == null)
                    {
                        IdleAnimations = new FormArray();
                    }

                    IdleAnimations.ReadBinary(reader);
                    break;

                case "IDLB":
                    if (Unused == null)
                    {
                        Unused = new SimpleSubrecord <Byte[]>();
                    }

                    Unused.ReadBinary(reader);
                    break;

                case "CNAM":
                    if (CombatStyle == null)
                    {
                        CombatStyle = new RecordReference();
                    }

                    CombatStyle.ReadBinary(reader);
                    break;

                case "PKED":
                    if (EatMarker == null)
                    {
                        EatMarker = new SubMarker();
                    }

                    EatMarker.ReadBinary(reader);
                    break;

                case "PKE2":
                    if (EscortDistance == null)
                    {
                        EscortDistance = new SimpleSubrecord <UInt32>();
                    }

                    EscortDistance.ReadBinary(reader);
                    break;

                case "PKFD":
                    if (FollowDistance_StartLocation_TriggerRadius == null)
                    {
                        FollowDistance_StartLocation_TriggerRadius = new SimpleSubrecord <UInt32>();
                    }

                    FollowDistance_StartLocation_TriggerRadius.ReadBinary(reader);
                    break;

                case "PKPT":
                    if (PatrolIsRepeatable == null)
                    {
                        PatrolIsRepeatable = new SimpleSubrecord <NoYesByte>();
                    }

                    PatrolIsRepeatable.ReadBinary(reader);
                    break;

                case "PKW3":
                    if (UseWeaponData == null)
                    {
                        UseWeaponData = new PackageUseWeaponData();
                    }

                    UseWeaponData.ReadBinary(reader);
                    break;

                case "PTD2":
                    if (Target2 == null)
                    {
                        Target2 = new PackageTarget();
                    }

                    Target2.ReadBinary(reader);
                    break;

                case "PUID":
                    if (UseItemMarker == null)
                    {
                        UseItemMarker = new SubMarker();
                    }

                    UseItemMarker.ReadBinary(reader);
                    break;

                case "PKAM":
                    if (AmbushMarker == null)
                    {
                        AmbushMarker = new SubMarker();
                    }

                    AmbushMarker.ReadBinary(reader);
                    break;

                case "PKDD":
                    if (DialogData == null)
                    {
                        DialogData = new PackageDialogData();
                    }

                    DialogData.ReadBinary(reader);
                    break;

                case "DUMY":
                    if (DummyIgnore == null)
                    {
                        DummyIgnore = new PackageLocation();
                    }

                    DummyIgnore.ReadBinary(reader);
                    break;

                case "POBA":
                    if (OnBegin == null)
                    {
                        OnBegin = new PackageEvent();
                    }

                    OnBegin.ReadBinary(reader);
                    break;

                case "POEA":
                    if (OnEnd == null)
                    {
                        OnEnd = new PackageEvent();
                    }

                    OnEnd.ReadBinary(reader);
                    break;

                case "POCA":
                    if (OnChange == null)
                    {
                        OnChange = new PackageEvent();
                    }

                    OnChange.ReadBinary(reader);
                    break;

                default:
                    throw new Exception();
                }
            }
        }
Пример #2
0
        public override void ReadData(ESPReader reader, long dataEnd)
        {
            while (reader.BaseStream.Position < dataEnd)
            {
                string subTag = reader.PeekTag();

                switch (subTag)
                {
                case "EDID":
                    if (EditorID == null)
                    {
                        EditorID = new SimpleSubrecord <String>();
                    }

                    EditorID.ReadBinary(reader);
                    break;

                case "OBND":
                    if (ObjectBounds == null)
                    {
                        ObjectBounds = new ObjectBounds();
                    }

                    ObjectBounds.ReadBinary(reader);
                    break;

                case "FULL":
                    if (Name == null)
                    {
                        Name = new SimpleSubrecord <String>();
                    }

                    Name.ReadBinary(reader);
                    break;

                case "MODL":
                    if (Model == null)
                    {
                        Model = new Model();
                    }

                    Model.ReadBinary(reader);
                    break;

                case "ACBS":
                    if (BaseStats == null)
                    {
                        BaseStats = new NPCBaseStats();
                    }

                    BaseStats.ReadBinary(reader);
                    break;

                case "SNAM":
                    if (Factions == null)
                    {
                        Factions = new List <FactionMembership>();
                    }

                    FactionMembership tempSNAM = new FactionMembership();
                    tempSNAM.ReadBinary(reader);
                    Factions.Add(tempSNAM);
                    break;

                case "INAM":
                    if (DeathItem == null)
                    {
                        DeathItem = new RecordReference();
                    }

                    DeathItem.ReadBinary(reader);
                    break;

                case "VTCK":
                    if (VoiceType == null)
                    {
                        VoiceType = new RecordReference();
                    }

                    VoiceType.ReadBinary(reader);
                    break;

                case "TPLT":
                    if (Template == null)
                    {
                        Template = new RecordReference();
                    }

                    Template.ReadBinary(reader);
                    break;

                case "RNAM":
                    if (Race == null)
                    {
                        Race = new RecordReference();
                    }

                    Race.ReadBinary(reader);
                    break;

                case "SPLO":
                    if (ActorEffects == null)
                    {
                        ActorEffects = new List <RecordReference>();
                    }

                    RecordReference tempSPLO = new RecordReference();
                    tempSPLO.ReadBinary(reader);
                    ActorEffects.Add(tempSPLO);
                    break;

                case "EITM":
                    if (UnarmedAttackEffect == null)
                    {
                        UnarmedAttackEffect = new RecordReference();
                    }

                    UnarmedAttackEffect.ReadBinary(reader);
                    break;

                case "EAMT":
                    if (UnarmedAttackAnimation == null)
                    {
                        UnarmedAttackAnimation = new SimpleSubrecord <UInt16>();
                    }

                    UnarmedAttackAnimation.ReadBinary(reader);
                    break;

                case "DEST":
                    if (Destructable == null)
                    {
                        Destructable = new Destructable();
                    }

                    Destructable.ReadBinary(reader);
                    break;

                case "SCRI":
                    if (Script == null)
                    {
                        Script = new RecordReference();
                    }

                    Script.ReadBinary(reader);
                    break;

                case "CNTO":
                    if (Contents == null)
                    {
                        Contents = new List <InventoryItem>();
                    }

                    InventoryItem tempCNTO = new InventoryItem();
                    tempCNTO.ReadBinary(reader);
                    Contents.Add(tempCNTO);
                    break;

                case "AIDT":
                    if (AIData == null)
                    {
                        AIData = new AIData();
                    }

                    AIData.ReadBinary(reader);
                    break;

                case "PKID":
                    if (Packages == null)
                    {
                        Packages = new List <RecordReference>();
                    }

                    RecordReference tempPKID = new RecordReference();
                    tempPKID.ReadBinary(reader);
                    Packages.Add(tempPKID);
                    break;

                case "CNAM":
                    if (Class == null)
                    {
                        Class = new RecordReference();
                    }

                    Class.ReadBinary(reader);
                    break;

                case "DATA":
                    if (Data == null)
                    {
                        Data = new NPCData();
                    }

                    Data.ReadBinary(reader);
                    break;

                case "DNAM":
                    if (Skills == null)
                    {
                        Skills = new NPCSkills();
                    }

                    Skills.ReadBinary(reader);
                    break;

                case "PNAM":
                    if (HeadParts == null)
                    {
                        HeadParts = new List <RecordReference>();
                    }

                    RecordReference tempPNAM = new RecordReference();
                    tempPNAM.ReadBinary(reader);
                    HeadParts.Add(tempPNAM);
                    break;

                case "HNAM":
                    if (HairType == null)
                    {
                        HairType = new RecordReference();
                    }

                    HairType.ReadBinary(reader);
                    break;

                case "LNAM":
                    if (HairLength == null)
                    {
                        HairLength = new SimpleSubrecord <Single>();
                    }

                    HairLength.ReadBinary(reader);
                    break;

                case "ENAM":
                    if (Eyes == null)
                    {
                        Eyes = new RecordReference();
                    }

                    Eyes.ReadBinary(reader);
                    break;

                case "HCLR":
                    if (HairColor == null)
                    {
                        HairColor = new SimpleSubrecord <Color>();
                    }

                    HairColor.ReadBinary(reader);
                    break;

                case "ZNAM":
                    if (CombatStyle == null)
                    {
                        CombatStyle = new RecordReference();
                    }

                    CombatStyle.ReadBinary(reader);
                    break;

                case "NAM4":
                    if (ImpactMaterialType == null)
                    {
                        ImpactMaterialType = new SimpleSubrecord <MaterialTypeUInt>();
                    }

                    ImpactMaterialType.ReadBinary(reader);
                    break;

                case "FGGS":
                    if (FaceGenGeometrySymmetric == null)
                    {
                        FaceGenGeometrySymmetric = new SimpleSubrecord <Byte[]>();
                    }

                    FaceGenGeometrySymmetric.ReadBinary(reader);
                    break;

                case "FGGA":
                    if (FaceGenGeometryAsymmetric == null)
                    {
                        FaceGenGeometryAsymmetric = new SimpleSubrecord <Byte[]>();
                    }

                    FaceGenGeometryAsymmetric.ReadBinary(reader);
                    break;

                case "FGTS":
                    if (FaceGenTexture == null)
                    {
                        FaceGenTexture = new SimpleSubrecord <Byte[]>();
                    }

                    FaceGenTexture.ReadBinary(reader);
                    break;

                case "NAM5":
                    if (Unknown == null)
                    {
                        Unknown = new SimpleSubrecord <UInt16>();
                    }

                    Unknown.ReadBinary(reader);
                    break;

                case "NAM6":
                    if (Height == null)
                    {
                        Height = new SimpleSubrecord <Single>();
                    }

                    Height.ReadBinary(reader);
                    break;

                case "NAM7":
                    if (Weight == null)
                    {
                        Weight = new SimpleSubrecord <Single>();
                    }

                    Weight.ReadBinary(reader);
                    break;

                default:
                    throw new Exception();
                }
            }
        }
Пример #3
0
        public override void ReadData(ESPReader reader, long dataEnd)
        {
            while (reader.BaseStream.Position < dataEnd)
            {
                string subTag = reader.PeekTag();

                switch (subTag)
                {
                case "EDID":
                    if (EditorID == null)
                    {
                        EditorID = new SimpleSubrecord <String>();
                    }

                    EditorID.ReadBinary(reader);
                    break;

                case "OBND":
                    if (ObjectBounds == null)
                    {
                        ObjectBounds = new ObjectBounds();
                    }

                    ObjectBounds.ReadBinary(reader);
                    break;

                case "FULL":
                    if (Name == null)
                    {
                        Name = new SimpleSubrecord <String>();
                    }

                    Name.ReadBinary(reader);
                    break;

                case "MODL":
                    if (Model == null)
                    {
                        Model = new Model();
                    }

                    Model.ReadBinary(reader);
                    break;

                case "SPLO":
                    if (ActorEffects == null)
                    {
                        ActorEffects = new List <RecordReference>();
                    }

                    RecordReference tempSPLO = new RecordReference();
                    tempSPLO.ReadBinary(reader);
                    ActorEffects.Add(tempSPLO);
                    break;

                case "EITM":
                    if (UnarmedAttackEffect == null)
                    {
                        UnarmedAttackEffect = new RecordReference();
                    }

                    UnarmedAttackEffect.ReadBinary(reader);
                    break;

                case "EAMT":
                    if (UnarmedAttackAnimation == null)
                    {
                        UnarmedAttackAnimation = new SimpleSubrecord <UInt16>();
                    }

                    UnarmedAttackAnimation.ReadBinary(reader);
                    break;

                case "NIFZ":
                    if (Models == null)
                    {
                        Models = new SubNullStringList();
                    }

                    Models.ReadBinary(reader);
                    break;

                case "NIFT":
                    if (TextureHashes == null)
                    {
                        TextureHashes = new SimpleSubrecord <Byte[]>();
                    }

                    TextureHashes.ReadBinary(reader);
                    break;

                case "ACBS":
                    if (BaseStats == null)
                    {
                        BaseStats = new CreatureBaseStats();
                    }

                    BaseStats.ReadBinary(reader);
                    break;

                case "SNAM":
                    if (Factions == null)
                    {
                        Factions = new List <FactionMembership>();
                    }

                    FactionMembership tempSNAM = new FactionMembership();
                    tempSNAM.ReadBinary(reader);
                    Factions.Add(tempSNAM);
                    break;

                case "INAM":
                    if (DeathItem == null)
                    {
                        DeathItem = new RecordReference();
                    }

                    DeathItem.ReadBinary(reader);
                    break;

                case "VTCK":
                    if (VoiceType == null)
                    {
                        VoiceType = new RecordReference();
                    }

                    VoiceType.ReadBinary(reader);
                    break;

                case "TPLT":
                    if (Template == null)
                    {
                        Template = new RecordReference();
                    }

                    Template.ReadBinary(reader);
                    break;

                case "DEST":
                    if (Destructable == null)
                    {
                        Destructable = new Destructable();
                    }

                    Destructable.ReadBinary(reader);
                    break;

                case "SCRI":
                    if (Script == null)
                    {
                        Script = new RecordReference();
                    }

                    Script.ReadBinary(reader);
                    break;

                case "CNTO":
                    if (Contents == null)
                    {
                        Contents = new List <InventoryItem>();
                    }

                    InventoryItem tempCNTO = new InventoryItem();
                    tempCNTO.ReadBinary(reader);
                    Contents.Add(tempCNTO);
                    break;

                case "AIDT":
                    if (AIData == null)
                    {
                        AIData = new AIData();
                    }

                    AIData.ReadBinary(reader);
                    break;

                case "PKID":
                    if (Packages == null)
                    {
                        Packages = new List <RecordReference>();
                    }

                    RecordReference tempPKID = new RecordReference();
                    tempPKID.ReadBinary(reader);
                    Packages.Add(tempPKID);
                    break;

                case "KFFZ":
                    if (Animations == null)
                    {
                        Animations = new SubNullStringList();
                    }

                    Animations.ReadBinary(reader);
                    break;

                case "DATA":
                    if (Data == null)
                    {
                        Data = new CreatureData();
                    }

                    Data.ReadBinary(reader);
                    break;

                case "RNAM":
                    if (AttackReach == null)
                    {
                        AttackReach = new SimpleSubrecord <Byte>();
                    }

                    AttackReach.ReadBinary(reader);
                    break;

                case "ZNAM":
                    if (CombatStyle == null)
                    {
                        CombatStyle = new RecordReference();
                    }

                    CombatStyle.ReadBinary(reader);
                    break;

                case "PNAM":
                    if (BodyPartData == null)
                    {
                        BodyPartData = new RecordReference();
                    }

                    BodyPartData.ReadBinary(reader);
                    break;

                case "TNAM":
                    if (TurningSpeed == null)
                    {
                        TurningSpeed = new SimpleSubrecord <Single>();
                    }

                    TurningSpeed.ReadBinary(reader);
                    break;

                case "BNAM":
                    if (BaseScale == null)
                    {
                        BaseScale = new SimpleSubrecord <Single>();
                    }

                    BaseScale.ReadBinary(reader);
                    break;

                case "WNAM":
                    if (FootWeight == null)
                    {
                        FootWeight = new SimpleSubrecord <Single>();
                    }

                    FootWeight.ReadBinary(reader);
                    break;

                case "NAM4":
                    if (ImpactMaterialType == null)
                    {
                        ImpactMaterialType = new SimpleSubrecord <MaterialTypeUInt>();
                    }

                    ImpactMaterialType.ReadBinary(reader);
                    break;

                case "NAM5":
                    if (SoundLevel == null)
                    {
                        SoundLevel = new SimpleSubrecord <SoundLevel>();
                    }

                    SoundLevel.ReadBinary(reader);
                    break;

                case "CSCR":
                    if (SoundTemplate == null)
                    {
                        SoundTemplate = new RecordReference();
                    }

                    SoundTemplate.ReadBinary(reader);
                    break;

                case "CSDT":
                    if (SoundData == null)
                    {
                        SoundData = new List <CreatureSoundData>();
                    }

                    CreatureSoundData tempCSDT = new CreatureSoundData();
                    tempCSDT.ReadBinary(reader);
                    SoundData.Add(tempCSDT);
                    break;

                case "CNAM":
                    if (ImpactDataset == null)
                    {
                        ImpactDataset = new RecordReference();
                    }

                    ImpactDataset.ReadBinary(reader);
                    break;

                case "LNAM":
                    if (MeleeWeaponList == null)
                    {
                        MeleeWeaponList = new RecordReference();
                    }

                    MeleeWeaponList.ReadBinary(reader);
                    break;

                default:
                    throw new Exception();
                }
            }
        }