예제 #1
0
 public void read(ref GDBlockReader gdbr)
 {
     for (uint i = 0; i < 16; i++)
     {
         id[i] = gdbr.read_byte();
     }
 }
예제 #2
0
        public void read(ref GDBlockReader gdc)
        {
            GDBlock b = new GDBlock();

            gdc.read_block_start(ref b);
            uint ver = gdc.read_int();

            if (ver != 8)             // version
            {
                throw new Exception();
            }

            level          = gdc.read_int();
            experience     = gdc.read_int();
            modifierPoints = gdc.read_int();
            skillPoints    = gdc.read_int();
            devotionPoints = gdc.read_int();
            totalDevotion  = gdc.read_int();
            physique       = gdc.read_float();
            cunning        = gdc.read_float();
            spirit         = gdc.read_float();
            health         = gdc.read_float();
            energy         = gdc.read_float();

            gdc.read_block_end(ref b);
        }
예제 #3
0
        public void read(ref GDBlockReader gdc)
        {
            GDBlock b = new GDBlock();

            if (gdc.read_block_start(ref b) != 1)
            {
                throw new Exception();
            }
            uint ver = gdc.read_int();

            if (ver < 3)             // version
            {
                throw new Exception();
            }

            isInMainQuest      = gdc.read_byte();
            hasBeenInGame      = gdc.read_byte();
            difficulty         = gdc.read_byte();
            greatestDifficulty = gdc.read_byte();
            money = gdc.read_int();

            if (ver >= 4)
            {
                gdc.read_byte();
                gdc.read_int();
            }
            compassState           = gdc.read_byte();
            lootMode               = gdc.read_int();
            skillWindowShowHelp    = gdc.read_byte();
            alternateConfig        = gdc.read_byte();
            alternateConfigEnabled = gdc.read_byte();
            texture = gdc.read_str();

            gdc.read_block_end(ref b);
        }
예제 #4
0
 public void read(ref GDBlockReader gdbr)
 {
     name     = gdbr.read_wide_str();
     sex      = gdbr.read_byte();
     tag      = gdbr.read_str();
     level    = gdbr.read_int();
     hardcore = gdbr.read_byte();
 }
예제 #5
0
        public void read(ref GDBlockReader gdbr)
        {
            GDBlock b = new GDBlock();
            uint    ver;

            if (gdbr.read_block_start(ref b) != 3)
            {
                new IOException();
            }
            ver = gdbr.read_int();
            if (ver < 4)             // version
            {
                new IOException();
            }
            flag = gdbr.read_byte();
            if (flag != 0)
            {
                uint numBags = gdbr.read_int();
                focused  = gdbr.read_int();
                selected = gdbr.read_int();

                Bags = new List <GDStashBag>((int)numBags);

                for (int i = 0; i < numBags; i++)
                {
                    GDStashBag bag = new GDStashBag();
                    bag.Read(gdbr, null, true);
                    bag.Index = i;
                    Bags.Add(bag);
                }

                useAlternate = gdbr.read_byte();

                for (uint i = 0; i < 12; i++)
                {
                    equipment[i].Read(gdbr, true);
                    gdbr.read_byte();
                }

                alternate1 = gdbr.read_byte();

                for (uint i = 0; i < 2; i++)
                {
                    weapon1[i].Read(gdbr, true);
                    gdbr.read_byte();
                }

                alternate2 = gdbr.read_byte();

                for (uint i = 0; i < 2; i++)
                {
                    weapon2[i].Read(gdbr, true);
                    gdbr.read_byte();
                }
            }

            gdbr.read_block_end(ref b);
        }
예제 #6
0
        public void Open(string filename)
        {
            BlockReader = new GDBlockReader();
            using (BlockReader.File = new BinaryReader(File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.Read), ASCIIEncoding.ASCII))
            {
                FileName = filename;
                UInt32 n, ver;
                BlockReader.read_key();

                if (BlockReader.read_int() != 2)
                {
                    throw new IOException();
                }

                GDBlock b = new GDBlock();

                if (BlockReader.read_block_start(ref b) != 18)
                {
                    throw new IOException();
                }
                ver = BlockReader.read_int();
                if (ver < 4)                 // version
                {
                    throw new IOException("Version Mismatch <4");
                }
                n = BlockReader.next_int();
                if (n != 0)
                {
                    throw new IOException();
                }

                mod = BlockReader.read_str();
                if (ver >= 5)
                {
                    BlockReader.read_byte();
                }
                n    = BlockReader.read_int();
                Bags = new List <GDStashBag>((int)n);

                for (int i = 0; i < n; i++)
                {
                    GDStashBag bag = new GDStashBag();
                    bag.Read(this.BlockReader, this);
                    bag.Index = i;
                    Bags.Add(bag);
                }

                BlockReader.read_block_end(ref b);
            }
        }
예제 #7
0
 internal void Read(GDBlockReader gdbr, bool isInventory = false)
 {
     baseName = gdbr.read_str();
     if (!string.IsNullOrEmpty(baseName))
     {
         string folder = Path.GetDirectoryName(baseName);
         _DbrFileName = Path.GetFileNameWithoutExtension(baseName);
         _SubCategory = folder.Substring(folder.LastIndexOf('\\') + 1).Replace("gear", String.Empty);
         folder       = folder.Substring(0, folder.LastIndexOf('\\') - 1);
         _Category    = folder.Substring(folder.LastIndexOf('\\') + 1).Replace("gear", String.Empty);
     }
     else
     {
         //System.Diagnostics.Debugger.Break();
     }
     prefixName    = gdbr.read_str();
     suffixName    = gdbr.read_str();
     modifierName  = gdbr.read_str();
     transmuteName = gdbr.read_str();
     seed          = gdbr.read_int();
     relicName     = gdbr.read_str();
     relicBonus    = gdbr.read_str();
     relicSeed     = gdbr.read_int();
     augmentName   = gdbr.read_str();
     unknown       = gdbr.read_int();
     augmentSeed   = gdbr.read_int();
     var1          = gdbr.read_int();
     stackCount    = gdbr.read_int();
     if (isInventory)
     {
         //uint n=gdbr.read_int();
         //xOffset = n;
         //n=gdbr.read_int();
         //yOffset = n;
     }
     else
     {
         xOffset = gdbr.read_float();
         yOffset = gdbr.read_float();
     }
 }
예제 #8
0
        internal void Read(GDBlockReader gdbr, GDStash parentStash = null, bool isCharacterBag = false)
        {
            GDBlock b = new GDBlock();

            gdbr.read_block_start(ref b);
            if (!isCharacterBag)
            {
                width  = gdbr.read_int();
                height = gdbr.read_int();
            }
            else
            {
                gdbr.read_byte();
            }
            uint numItems = gdbr.read_int();

            ParentStash = parentStash;
            Items       = new List <GDStashItem>((int)numItems);

            for (int i = 0; i < numItems; i++)
            {
                GDStashItem item = new GDStashItem();
                item.Read(gdbr);
                item.ParentStashBag = this;
                if (!string.IsNullOrEmpty(item.SubCategory))
                {
                    string subcat = item.SubCategory.ToLower();
                    if (!(subcat.Contains("potion") || subcat.Contains("consumable") || subcat.Contains("questitem")))
                    {
                        Items.Add(item);
                    }
                }
                else if (string.IsNullOrEmpty(item.SubCategory))
                {
                    Items.Add(item);
                }
            }

            gdbr.read_block_end(ref b);
        }
예제 #9
0
        public void read(ref GDBlockReader gdbr)
        {
            GDBlock b = new GDBlock();


            if (gdbr.read_block_start(ref b) != 4)
            {
                throw new Exception();
            }
            uint ver = gdbr.read_int();

            if (ver != 5 && ver != 6)             // version
            {
                throw new Exception();
            }

            uint numBags;

            if (ver >= 6)
            {
                numBags = numBags = gdbr.read_int();
            }
            else
            {
                numBags = 1;
            }

            Bags = new List <GDStashBag>((int)numBags);

            for (int i = 0; i < numBags; i++)
            {
                GDStashBag bag = new GDStashBag();
                bag.Read(gdbr);
                bag.Index = i;
                Bags.Add(bag);
            }

            gdbr.read_block_end(ref b);
        }
예제 #10
0
        //respawn_list respawns;
        //teleport_list teleports;
        //marker_list markers;
        //shrine_list shrines;
        //character_skills skills;
        //lore_notes notes;
        //faction_pack factions;
        //ui_settings ui;
        //tutorial_pages tutorials;
        //play_stats stats;

        //void read(const char*);
        //void write(const char*);

        public void read(string filename)
        {
            GDBlockReader gdbr = new GDBlockReader();

            using (gdbr.File = new BinaryReader(File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.Read), ASCIIEncoding.ASCII))
            {
                uint n, ver;
                gdbr.read_key();

                if (gdbr.read_int() != 0x58434447)
                {
                    throw new IOException();
                }

                ver = gdbr.read_int();
                if (ver != 1 && ver != 2)
                {
                    throw new IOException("Unsupported Version");
                }
                //read Header
                hdr.read(ref gdbr);
                if (ver == 2)
                {
                    gdbr.read_byte();
                }

                n = gdbr.next_int();
                if (n != 0)
                {
                    throw new IOException();
                }

                ver = gdbr.read_int();
                if (ver < 6)                 // version
                {
                    throw new IOException("Version Mismatch reading Player file, ver<6");
                }

                id.read(ref gdbr);

                info.read(ref gdbr);
                bio.read(ref gdbr);
                inv.read(ref gdbr);

                //foreach (GDStashItem item in inv.Items)
                //{
                //	item.FriendlyName = hdr.name;
                //}

                stash.read(ref gdbr);

                //foreach (GDStashItem item in stash.Items)
                //{
                //	item.FriendlyName = hdr.name;
                //}

                //respawns.read(this);
                //teleports.read(this);
                //markers.read(this);
                //shrines.read(this);
                //skills.read(this);
                //notes.read(this);
                //factions.read(this);
                //ui.read(this);
                //tutorials.read(this);
                //stats.read(this);

                gdbr.File.Close();
            }
        }