/**<summary>Saves the object data to the specified file path.</summary>*/
        public static ObjectDataHeader FromFile(string path)
        {
            ObjectDataHeader obj    = new ObjectDataHeader();
            BinaryReader     reader = new BinaryReader(new FileStream(path, FileMode.Open, FileAccess.Read));

            obj.Read(reader);
            return(obj);
        }
 /**<summary>Constructs the base object data.</summary>*/
 public ObjectData(ObjectDataHeader objectHeader, ChunkHeader chunkHeader)
 {
     this.objectHeader = objectHeader;
     this.chunkHeader  = chunkHeader;
     stringTable       = new StringTable();
     groupInfo         = new GroupInfo();
     imageDirectory    = new ImageDirectory();
     graphicsData      = new GraphicsData(this.imageDirectory);
 }
        //========= CONSTRUCTORS =========
        #region Constructors

        /**<summary>Constructs the base object data.</summary>*/
        public ObjectData()
        {
            objectHeader   = new ObjectDataHeader();
            chunkHeader    = new ChunkHeader();
            stringTable    = new StringTable();
            groupInfo      = new GroupInfo();
            imageDirectory = new ImageDirectory();
            graphicsData   = new GraphicsData(this.imageDirectory);
        }
Esempio n. 4
0
        //========= CONSTRUCTORS =========
        #region Constructors

        /**<summary>Constructs the base object data.</summary>*/
        internal ObjectData()
        {
            this.objectHeader   = new ObjectDataHeader();
            this.chunkHeader    = new ChunkHeader();
            this.stringTable    = new StringTable();
            this.groupInfo      = new GroupInfo();
            this.imageDirectory = new ImageDirectory();
            this.graphicsData   = new GraphicsData(this.imageDirectory);
        }
Esempio n. 5
0
        /**<summary>Returns an object loaded from the specified stream.</summary>*/
        public static ObjectData FromStream(Stream stream, bool quickLoad = false)
        {
            ObjectData       obj          = null;
            ObjectDataHeader objectHeader = new ObjectDataHeader();
            ChunkHeader      chunkHeader  = new ChunkHeader();

            try {
                BinaryReader reader = new BinaryReader(stream, Encoding.Unicode);
                objectHeader.Read(reader);

                byte[] data = null;
                //if ((ObjectTypes)(objectHeader.Flags & 0xF) != ObjectTypes.ScenarioText) {
                data = ObjectData.ReadChunk(reader, chunkHeader);
                reader.Close();
                reader = new BinaryReader(new MemoryStream(data));
                //}

                switch ((ObjectTypes)(objectHeader.Flags & 0xF))
                {
                case ObjectTypes.Attraction: obj = new Attraction(objectHeader, chunkHeader); break;

                case ObjectTypes.SmallScenery: obj = new SmallScenery(objectHeader, chunkHeader); break;

                case ObjectTypes.LargeScenery: obj = new LargeScenery(objectHeader, chunkHeader); break;

                case ObjectTypes.Wall: obj = new Wall(objectHeader, chunkHeader); break;

                case ObjectTypes.PathBanner: obj = new PathBanner(objectHeader, chunkHeader); break;

                case ObjectTypes.Path: obj = new Pathing(objectHeader, chunkHeader); break;

                case ObjectTypes.PathAddition: obj = new PathAddition(objectHeader, chunkHeader); break;

                case ObjectTypes.SceneryGroup: obj = new SceneryGroup(objectHeader, chunkHeader); break;

                case ObjectTypes.ParkEntrance: obj = new ParkEntrance(objectHeader, chunkHeader); break;

                case ObjectTypes.Water: obj = new Water(objectHeader, chunkHeader); break;

                case ObjectTypes.ScenarioText:  obj = new ScenarioText(objectHeader, chunkHeader); break;

                default: objectHeader.Flags = (uint)ObjectTypes.None; break;                 // Set as invalid
                }
                if (obj != null)
                {
                    obj.Read(reader, quickLoad);
                }
                reader.Close();
            }
            catch (System.Exception) {
                objectHeader.Flags = (uint)ObjectTypes.None;
                obj = new ObjectData(objectHeader, chunkHeader);
            }

            return(obj);
        }
        //=========== LOADING ============
        #region Loading

        /**<summary>Returns an object loaded from the specified stream.</summary>*/
        public static ObjectData FromStream(Stream stream, bool quickLoad = false)
        {
            ObjectData       obj          = null;
            ObjectDataHeader objectHeader = new ObjectDataHeader();
            ChunkHeader      chunkHeader  = new ChunkHeader();

            byte[] decodedChunkData;

            BinaryReader reader = new BinaryReader(stream);

            objectHeader.Read(reader);
            chunkHeader.Read(reader);
            decodedChunkData = Chunk.Read(reader, chunkHeader);

            using (MemoryStream chunkStream = new MemoryStream(decodedChunkData)) {
                reader = new BinaryReader(chunkStream);
                switch ((ObjectTypes)(objectHeader.Flags & 0xF))
                {
                case ObjectTypes.Attraction: obj = new Attraction(objectHeader, chunkHeader); break;

                case ObjectTypes.SmallScenery: obj = new SmallScenery(objectHeader, chunkHeader); break;

                case ObjectTypes.LargeScenery: obj = new LargeScenery(objectHeader, chunkHeader); break;

                case ObjectTypes.Wall: obj = new Wall(objectHeader, chunkHeader); break;

                case ObjectTypes.PathBanner: obj = new PathBanner(objectHeader, chunkHeader); break;

                case ObjectTypes.Footpath: obj = new Footpath(objectHeader, chunkHeader); break;

                case ObjectTypes.PathAddition: obj = new PathAddition(objectHeader, chunkHeader); break;

                case ObjectTypes.SceneryGroup: obj = new SceneryGroup(objectHeader, chunkHeader); break;

                case ObjectTypes.ParkEntrance: obj = new ParkEntrance(objectHeader, chunkHeader); break;

                case ObjectTypes.Water: obj = new Water(objectHeader, chunkHeader); break;

                case ObjectTypes.ScenarioText: obj = new ScenarioText(objectHeader, chunkHeader); break;

                default: objectHeader.Flags = (uint)ObjectTypes.None; break;                 // Set as invalid
                }
                if (obj != null)
                {
                    obj.Read(reader, quickLoad);
                }
            }
            return(obj);
        }