using System.Collections.Generic; using System.IO; namespace GMAssetCompiler { public class GMRoom { public string Caption { get; private set; } public int Width { get; private set; } public int Height { get; private set; } public int Speed { get; private set; } public bool Persistent { get; private set; } public int Colour { get; private set; } public bool ShowColour { get; private set; } public string Code { get; private set; } public IList Backgrounds { get; private set; } public bool EnableViews { get; private set; } public bool ViewClearScreen { get; private set; } public IList Views { get; private set; } public IList Instances { get; private set; } public IList Tiles { get; private set; } public GMRoom(GMAssets _a, Stream _stream) { int num = _stream.ReadInteger(); Caption = _stream.ReadString(); Width = _stream.ReadInteger(); Height = _stream.ReadInteger(); Speed = _stream.ReadInteger(); Persistent = _stream.ReadBoolean(); Colour = _stream.ReadInteger(); int num2 = _stream.ReadInteger(); ShowColour = ((num2 & 1) != 0); ViewClearScreen = ((num2 & 2) == 0); Code = _stream.ReadString(); int num3 = _stream.ReadInteger(); Backgrounds = new List(num3); for (int i = 0; i < num3; i++) { GMBack item = new GMBack(_stream); Backgrounds.Add(item); } EnableViews = _stream.ReadBoolean(); num3 = _stream.ReadInteger(); Views = new List(num3); for (int j = 0; j < num3; j++) { GMView item2 = new GMView(_stream); Views.Add(item2); } num3 = _stream.ReadInteger(); Instances = new List(num3); for (int k = 0; k < num3; k++) { GMInstance item3 = new GMInstance(_stream, num); Instances.Add(item3); } num3 = _stream.ReadInteger(); Tiles = new List(num3); for (int l = 0; l < num3; l++) { GMTile item4 = new GMTile(_stream, num); Tiles.Add(item4); } } public GMRoom(GMAssets _a, Stream _stream, bool _gmk) { int num = _stream.ReadInteger(); Caption = _stream.ReadString(); Width = _stream.ReadInteger(); Height = _stream.ReadInteger(); _stream.ReadInteger(); _stream.ReadInteger(); if (num >= 520) { _stream.ReadBoolean(); } Speed = _stream.ReadInteger(); Persistent = _stream.ReadBoolean(); Colour = _stream.ReadInteger(); ShowColour = _stream.ReadBoolean(); Code = _stream.ReadString(); int num2 = _stream.ReadInteger(); Backgrounds = new List(num2); for (int i = 0; i < num2; i++) { GMBack item = new GMBack(_stream); Backgrounds.Add(item); } EnableViews = _stream.ReadBoolean(); num2 = _stream.ReadInteger(); Views = new List(num2); for (int j = 0; j < num2; j++) { GMView item2 = new GMView(_stream); Views.Add(item2); } num2 = _stream.ReadInteger(); Instances = new List(num2); for (int k = 0; k < num2; k++) { GMInstance item3 = new GMInstance(_stream, true); Instances.Add(item3); } num2 = _stream.ReadInteger(); Tiles = new List(num2); for (int l = 0; l < num2; l++) { GMTile item4 = new GMTile(_stream, num); if (num >= 520) { _stream.ReadBoolean(); } Tiles.Add(item4); } _stream.ReadBoolean(); _stream.ReadInteger(); _stream.ReadInteger(); _stream.ReadBoolean(); _stream.ReadBoolean(); _stream.ReadBoolean(); if (num < 520) { _stream.ReadBoolean(); } _stream.ReadBoolean(); _stream.ReadBoolean(); _stream.ReadBoolean(); _stream.ReadBoolean(); _stream.ReadBoolean(); if (num < 520) { _stream.ReadBoolean(); } if (num < 541) { _stream.ReadInteger(); } if (num < 541) { _stream.ReadInteger(); } if (num < 541) { _stream.ReadInteger(); } if (num < 541) { _stream.ReadInteger(); } if (num >= 520 && num < 541) { _stream.ReadInteger(); } if (num >= 520 && num < 541) { _stream.ReadInteger(); } _stream.ReadInteger(); _stream.ReadInteger(); _stream.ReadInteger(); } } }