예제 #1
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);
        }
예제 #2
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();
 }
예제 #3
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);
            }
        }
예제 #4
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();
     }
 }