/** <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> */ internal ObjectData(ObjectDataHeader objectHeader, ChunkHeader chunkHeader) { this.objectHeader = objectHeader; this.chunkHeader = chunkHeader; this.stringTable = new StringTable(); this.groupInfo = new GroupInfo(); this.imageDirectory = new ImageDirectory(); this.graphicsData = new GraphicsData(this.imageDirectory); }
/** <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); }
//========= CONSTRUCTORS ========= #region Constructors /** <summary> Constructs the default track design. </summary> */ public TrackDesign() { this.TrackType = TrackTypes.None; this.Unknown0x01 = 0; this.SpecialTrackFlags = 0; this.OperatingMode = OperatingModes.NormalMode; this.VehicleColorScheme = 0; this.VehicleColorSpecifiers = new RemapColors[64]; this.Unknown0x48 = 0; this.EntranceType = EntranceTypes.Normal; this.AirTime = 0; this.DepartureControlFlags = DepartureControlFlags.UseMaximumTime | DepartureControlFlags.FullLoad; this.NumberOfTrains = 0; this.CarsPerTrain = 0; this.MinimumWaitTime = 10; this.MaximumWaitTime = 60; this.PoweredSpeedLapsMaxPeople = 0; this.MaximumSpeed = 0; this.AverageSpeed = 0; this.RideLength = 0; this.PositiveGForce = 0; this.NegativeGForce = 0; this.LateralGForce = 0; this.NumberOfInversions = 0; this.NumberOfDrops = 0; this.HighestDrop = 0; this.Excitement = 0; this.Intensity = 0; this.Nausea = 0; this.Unknown0x5E = 0; this.Unknown0x5F = 0; this.TrackSpineColors = new RemapColors[4]; this.TrackRailColors = new RemapColors[4]; this.TrackSupportColors = new RemapColors[4]; this.Unknown0x6C = 0; this.Unknown0x6D = 0; this.Unknown0x6E = 0; this.SixFlagsRide = 0; this.ObjectHeader = new ObjectDataHeader(); this.RideMapWidth = 0; this.RideMapHeight = 0; this.VehicleAdditionalColors = new RemapColors[32]; this.CircuitsChainLiftSpeed = 0; this.MazeTiles = new List <MazeTile>(); this.TrackPieces = new List <TrackPiece>(); }