예제 #1
0
        public override void Load(ref System.IO.FileStream File, ref System.IO.BinaryReader Reader)
        {
            File.Position = Offset + Base;
            if (File.Position < File.Length && Size > 0)
            {
                Header      = Reader.ReadUInt32();
                Records     = (int)Reader.ReadUInt32();
                ContentSize = Reader.ReadUInt32();
                Array.Resize(ref _Item, Records);
                for (int i = 0; i <= Records - 1; i++)
                {
                    uint ElementOffset = Reader.ReadUInt32();
                    uint ElementSize   = Reader.ReadUInt32();
                    uint ElementID     = Reader.ReadUInt32();
                    uint Pos           = (uint)File.Position;
                    switch (ElementID)
                    {
                    case 0:
                    {
                        GameObjects GObjs = new GameObjects();
                        GObjs.Offset = ElementOffset;
                        GObjs.Base   = Offset + Base;
                        GObjs.Size   = ElementSize;
                        GObjs.ID     = ElementID;
                        GObjs.Load(ref File, ref Reader);
                        _Item[i] = GObjs;
                        break;
                    }

                    case 1:
                    {
                        Scripts Srpts = new Scripts();
                        Srpts.Offset = ElementOffset;
                        Srpts.Base   = Offset + Base;
                        Srpts.Size   = ElementSize;
                        Srpts.ID     = ElementID;
                        Srpts.Load(ref File, ref Reader);
                        _Item[i] = Srpts;
                        break;
                    }

                    case 2:
                    {
                        Animations Anims = new Animations();
                        Anims.Offset = ElementOffset;
                        Anims.Base   = Offset + Base;
                        Anims.Size   = ElementSize;
                        Anims.ID     = ElementID;
                        Anims.Load(ref File, ref Reader);
                        _Item[i] = Anims;
                        break;
                    }

                    case 3:
                    {
                        OGIs OGInfos = new OGIs();
                        OGInfos.Offset = ElementOffset;
                        OGInfos.Base   = Offset + Base;
                        OGInfos.Size   = ElementSize;
                        OGInfos.ID     = ElementID;
                        OGInfos.Load(ref File, ref Reader);
                        _Item[i] = OGInfos;
                        break;
                    }

                    case 4:
                    {
                        BaseSection BS = new BaseSection();
                        BS.Offset = ElementOffset;
                        BS.Base   = Offset + Base;
                        BS.Size   = ElementSize;
                        BS.ID     = ElementID;
                        BS.Load(ref File, ref Reader);
                        _Item[i] = BS;
                        break;
                    }

                    case 6:
                    {
                        Sound S = new Sound();
                        if (_Item[i - 1] is SoundDescriptions)
                        {
                            S.Shift = (_Item[i - 1].Records + 1) * 12;
                            for (int j = 0; j <= _Item[i - 1].Records - 1; j++)
                            {
                                S.Shift += (int)_Item[i - 1]._Item[j].Size;
                            }
                        }
                        else
                        {
                            S.Shift = 0;
                        }
                        S.Offset = ElementOffset;
                        S.Base   = Offset + Base;
                        S.Size   = ElementSize;
                        S.ID     = ElementID;
                        S.Load(ref File, ref Reader);
                        _Item[i] = S;
                        break;
                    }

                    case 5:
                    {
                        SoundDescriptions SDs = new SoundDescriptions();
                        SDs.Offset = ElementOffset;
                        SDs.Base   = Offset + Base;
                        SDs.Size   = ElementSize;
                        SDs.ID     = ElementID;
                        SDs.Load(ref File, ref Reader);
                        _Item[i] = SDs;
                        break;
                    }

                    default:
                    {
                        SoundbankDescriptions SDs = new SoundbankDescriptions();
                        SDs.Offset = ElementOffset;
                        SDs.Base   = Offset + Base;
                        SDs.Size   = ElementSize;
                        SDs.ID     = ElementID;
                        SDs.Load(ref File, ref Reader);
                        _Item[i] = SDs;
                        break;
                    }
                    }
                    File.Position = Pos;
                }
            }
        }
        public override void Load(ref System.IO.FileStream File, ref System.IO.BinaryReader Reader)
        {
            File.Position = Offset + Base;
            if (File.Position < File.Length && Size > 0)
            {
                Header      = Reader.ReadUInt32();
                Records     = (int)Reader.ReadUInt32();
                ContentSize = Reader.ReadUInt32();
                Array.Resize(ref _Item, Records);
                for (int i = 0; i <= Records - 1; i++)
                {
                    uint ElementOffset = Reader.ReadUInt32();
                    uint ElementSize   = Reader.ReadUInt32();
                    uint ElementID     = Reader.ReadUInt32();
                    uint Pos           = (uint)File.Position;
                    switch (ElementID)
                    {
                    case 1:
                    {
                        Behaviors Insts = new Behaviors();
                        Insts.Offset = ElementOffset;
                        Insts.Base   = Offset + Base;
                        Insts.Size   = ElementSize;
                        Insts.ID     = ElementID;
                        Insts.Load(ref File, ref Reader);
                        _Item[i] = Insts;
                        break;
                    }

                    case 2:
                    {
                        FuckingShits Insts = new FuckingShits();
                        Insts.Offset = ElementOffset;
                        Insts.Base   = Offset + Base;
                        Insts.Size   = ElementSize;
                        Insts.ID     = ElementID;
                        Insts.Load(ref File, ref Reader);
                        _Item[i] = Insts;
                        break;
                    }

                    case 3:
                    {
                        Positions Insts = new Positions();
                        Insts.Offset = ElementOffset;
                        Insts.Base   = Offset + Base;
                        Insts.Size   = ElementSize;
                        Insts.ID     = ElementID;
                        Insts.Load(ref File, ref Reader);
                        _Item[i] = Insts;
                        break;
                    }

                    case 4:
                    {
                        Paths Insts = new Paths();
                        Insts.Offset = ElementOffset;
                        Insts.Base   = Offset + Base;
                        Insts.Size   = ElementSize;
                        Insts.ID     = ElementID;
                        Insts.Load(ref File, ref Reader);
                        _Item[i] = Insts;
                        break;
                    }

                    case 5:
                    {
                        SurfaceBehaviours Insts = new SurfaceBehaviours();
                        Insts.Offset = ElementOffset;
                        Insts.Base   = Offset + Base;
                        Insts.Size   = ElementSize;
                        Insts.ID     = ElementID;
                        Insts.Load(ref File, ref Reader);
                        _Item[i] = Insts;
                        break;
                    }

                    case 6:
                    {
                        Instances Insts = new Instances();
                        Insts.Offset = ElementOffset;
                        Insts.Base   = Offset + Base;
                        Insts.Size   = ElementSize;
                        Insts.ID     = ElementID;
                        Insts.Load(ref File, ref Reader);
                        _Item[i] = Insts;
                        break;
                    }

                    case 7:
                    {
                        Triggers Trigs = new Triggers();
                        Trigs.Offset = ElementOffset;
                        Trigs.Base   = Offset + Base;
                        Trigs.Size   = ElementSize;
                        Trigs.ID     = ElementID;
                        Trigs.Load(ref File, ref Reader);
                        _Item[i] = Trigs;
                        break;
                    }

                    default:
                    {
                        BaseSection BS = new BaseSection();
                        BS.Offset = ElementOffset;
                        BS.Base   = Offset + Base;
                        BS.Size   = ElementSize;
                        BS.ID     = ElementID;
                        BS.Load(ref File, ref Reader);
                        _Item[i] = BS;
                        break;
                    }
                    }
                    File.Position = Pos;
                }
            }
        }
예제 #3
0
        public override void Load(ref System.IO.FileStream File, ref System.IO.BinaryReader Reader)
        {
            File.Position = Offset + Base;
            if (File.Position < File.Length && Size > 0)
            {
                Header      = Reader.ReadUInt32();
                Records     = (int)Reader.ReadUInt32();
                ContentSize = Reader.ReadUInt32();
                Array.Resize(ref _Item, Records);
                for (int i = 0; i <= Records - 1; i++)
                {
                    uint ElementOffset = Reader.ReadUInt32();
                    uint ElementSize   = Reader.ReadUInt32();
                    uint ElementID     = Reader.ReadUInt32();
                    uint Pos           = (uint)File.Position;
                    switch (ElementID)
                    {
                    case 0:
                    {
                        Textures Texs = new Textures();
                        Texs.Offset = ElementOffset;
                        Texs.Base   = Offset + Base;
                        Texs.Size   = ElementSize;
                        Texs.ID     = ElementID;
                        Texs.Load(ref File, ref Reader);
                        _Item[i] = Texs;
                        break;
                    }

                    case 1:
                    {
                        Materials Mtrls = new Materials();
                        Mtrls.Offset = ElementOffset;
                        Mtrls.Base   = Offset + Base;
                        Mtrls.Size   = ElementSize;
                        Mtrls.ID     = ElementID;
                        Mtrls.Load(ref File, ref Reader);
                        _Item[i] = Mtrls;
                        break;
                    }

                    case 2:
                    {
                        Models Mdls = new Models();
                        Mdls.Offset = ElementOffset;
                        Mdls.Base   = Offset + Base;
                        Mdls.Size   = ElementSize;
                        Mdls.ID     = ElementID;
                        Mdls.Load(ref File, ref Reader);
                        _Item[i] = Mdls;
                        break;
                    }

                    case 3:
                    case 6:
                    {
                        GCs GCs = new GCs();
                        GCs.Offset = ElementOffset;
                        GCs.Base   = Offset + Base;
                        GCs.Size   = ElementSize;
                        GCs.ID     = ElementID;
                        GCs.Load(ref File, ref Reader);
                        _Item[i] = GCs;
                        break;
                    }

                    case 7:
                    {
                        Terrains Ts = new Terrains();
                        Ts.Offset = ElementOffset;
                        Ts.Base   = Offset + Base;
                        Ts.Size   = ElementSize;
                        Ts.ID     = ElementID;
                        Ts.Load(ref File, ref Reader);
                        _Item[i] = Ts;
                        break;
                    }

                    case 4:
                    {
                        ID4Models Mdls = new ID4Models();
                        Mdls.Offset = ElementOffset;
                        Mdls.Base   = Offset + Base;
                        Mdls.Size   = ElementSize;
                        Mdls.ID     = ElementID;
                        Mdls.Load(ref File, ref Reader);
                        _Item[i] = Mdls;
                        break;
                    }

                    default:
                    {
                        BaseSection BS = new BaseSection();
                        BS.Offset = ElementOffset;
                        BS.Base   = Offset + Base;
                        BS.Size   = ElementSize;
                        BS.ID     = ElementID;
                        BS.Load(ref File, ref Reader);
                        _Item[i] = BS;
                        break;
                    }
                    }
                    File.Position = Pos;
                }
            }
        }