コード例 #1
0
        public static void LoadDesignHeaders()
        {
            if (File.Exists(INDEX_FILE))
            {
                BinaryFileReader reader = new BinaryFileReader(File.Open(INDEX_FILE, FileMode.Open, FileAccess.Read, FileShare.Read));

                try
                {
                    int count   = reader.ReadInt();
                    int version = reader.ReadInt();

                    m_DesignHeaders = new ArrayList(count);

                    for (int i = 0; i < count; ++i)
                    {
                        DesignData header = new DesignData();

                        switch (version)
                        {
                        case 0:
                            header.Name         = reader.ReadString();
                            header.Category     = reader.ReadString();
                            header.Subsection   = reader.ReadString();
                            header.Width        = reader.ReadInt();
                            header.Height       = reader.ReadInt();
                            header.UserWidth    = reader.ReadInt();
                            header.UserHeight   = reader.ReadInt();
                            header.FilePosition = reader.ReadLong();
                            header.RecordCount  = reader.ReadInt();
                            break;
                        }

                        m_DesignHeaders.Add(header);
                    }
                }
                catch (Exception e)
                {
                    m_DesignHeaders.Clear();
                    System.Windows.Forms.MessageBox.Show("Unable to load the designs\n" + e.Message);
                }
                finally
                {
                    reader.Close();
                }
            }
            else
            {
                m_DesignHeaders = new ArrayList();
            }
        }
コード例 #2
0
        private static void WriteSavedComponentData(BinaryFileReader oldBinReader, BinaryFileWriter binWriter)
        {
            for (int i = 0; i < m_DesignHeaders.Count; ++i)
            {
                DesignData header = (DesignData)m_DesignHeaders[i];

                oldBinReader.Seek(header.FilePosition, SeekOrigin.Begin);
                // update record start position
                header.FilePosition = binWriter.Position;

                // write component data
                WriteSavedComponentData(header, oldBinReader, binWriter);
            }
        }
コード例 #3
0
        public void Deserialize(BinaryFileReader reader)
        {
            Version = reader.ReadInt();

            switch (Version)
            {
            case 0:
                Index = reader.ReadInt();
                X     = reader.ReadInt();
                Y     = reader.ReadInt();
                Z     = reader.ReadInt();
                Level = reader.ReadInt();
                break;
            }
        }
コード例 #4
0
        public ArrayList ImportDesigns()
        {
            ArrayList designs = new ArrayList();

            string[] filenames = GetImportFileNames();

            if (filenames == null)
            {
                return(designs);
            }

            foreach (string filename in filenames)
            {
                if (!File.Exists(filename))
                {
                    continue;
                }

                BinaryFileReader reader = new BinaryFileReader(File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.Read));

                short version = reader.ReadShort();

                switch (version)
                {
                case 1:
                    // file contains only one design (old format)
                    designs.Add(ImportDesign(reader, version));
                    break;

                case 2:
                    // file may contain multiple designs
                    int designCount = reader.ReadShort();

                    for (int i = 0; i < designCount; ++i)
                    {
                        designs.Add(ImportDesign(reader, version));
                    }

                    break;
                }

                reader.Close();
            }

            return(designs);
        }
コード例 #5
0
        public override DesignData ImportDesign()
        {
            string filename = GetImportFileName();

            if (!File.Exists(filename))
            {
                return(null);
            }

            BinaryFileReader reader = new BinaryFileReader(File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.Read));

            short version = reader.ReadShort();

            DesignData design = new DesignData();

            if (version == 1)
            {
                design.Name       = reader.ReadString();
                design.Category   = reader.ReadString();
                design.Subsection = reader.ReadString();
                design.Width      = reader.ReadInt();
                design.Height     = reader.ReadInt();
                design.UserWidth  = reader.ReadInt();
                design.UserHeight = reader.ReadInt();

                int count = reader.ReadInt();

                for (int i = 0; i < count; ++i)
                {
                    short index = reader.ReadShort();
                    short x     = reader.ReadShort();
                    short y     = reader.ReadShort();
                    short z     = reader.ReadShort();
                    short level = reader.ReadShort();
                    short hue   = reader.ReadShort();

                    design.Items.Add(new DesignItem(index, x, y, z, level, hue));
                }
            }

            reader.Close();

            return(design);
        }
コード例 #6
0
        private DesignData ImportDesign(BinaryFileReader reader, short version)
        {
            DesignData design = new DesignData();

            switch (version)
            {
            case 1:
            case 2:
                design.Name       = reader.ReadString();
                design.Category   = reader.ReadString();
                design.Subsection = reader.ReadString();
                design.Width      = reader.ReadInt();
                design.Height     = reader.ReadInt();
                design.UserWidth  = reader.ReadInt();
                design.UserHeight = reader.ReadInt();

                int count = reader.ReadInt();

                for (int i = 0; i < count; ++i)
                {
                    short index = reader.ReadShort();
                    short x     = reader.ReadShort();
                    short y     = reader.ReadShort();
                    short z     = reader.ReadShort();
                    short level = reader.ReadShort();
                    short hue   = reader.ReadShort();

                    design.Items.Add(new DesignItem(index, x, y, z, level, hue));

                    _itemCount++;
                }
                break;
            }

            return(design);
        }
コード例 #7
0
        private static void WriteBinFile()
        {
            bool             fileExists = File.Exists(BIN_FILE);
            BinaryFileWriter binWriter  = new BinaryFileWriter(File.Open(TMP_BIN_FILE, FileMode.Create, FileAccess.Write, FileShare.None));

            if (fileExists)
            {
                BinaryFileReader oldBinReader = new BinaryFileReader(File.Open(BIN_FILE, FileMode.Open, FileAccess.Read, FileShare.None));
                WriteSavedComponentData(oldBinReader, binWriter);
                oldBinReader.Close();
            }

            foreach (DesignData unsavedDesign in m_UnsavedDesigns)
            {
                unsavedDesign.FilePosition = binWriter.Position;
                unsavedDesign.RecordCount  = unsavedDesign.Items.Count;
                WriteUpdatedDesignComponentData(unsavedDesign.Items, binWriter);
                m_DesignHeaders.Add(unsavedDesign);
            }

            m_UnsavedDesigns.Clear();

            binWriter.Close();
        }