public static LayerType1 Read(BinaryReader reader) { LayerType1 layer = new LayerType1(); layer.Name = reader.ReadTString(); uint i1 = reader.ReadUInt32(); uint i2 = reader.ReadUInt32(); layer.TilesX = reader.ReadUInt32(); layer.TilesY = reader.ReadUInt32(); layer.TileData = new int[layer.TilesX * layer.TilesY]; for (int x = 0; x < layer.TileData.Length; x++) { byte data = reader.ReadByte(); if (data == 0) { layer.TileData[x] = -1; } else { layer.TileData[x] = reader.ReadInt32(); } } return(layer); }
public static LevelData Read(BinaryReader reader) { LevelData level = new LevelData(); level.Name = reader.ReadTString(); uint dataLength = reader.ReadUInt32(); long dataEnd = reader.BaseStream.Position + dataLength; //Read level { uint widthPixel = reader.ReadUInt32(); uint heightPixel = reader.ReadUInt32(); uint i1 = reader.ReadUInt32(); uint layerCount = reader.ReadUInt32(); level.Layers = new Layer[layerCount]; for (uint x = 0; x < layerCount; x++) { uint type = reader.ReadUInt32(); Layer layer = null; switch (type) { case 0: layer = LayerType0.Read(reader); break; case 1: layer = LayerType1.Read(reader); break; case 2: layer = LayerType2.Read(reader); break; case 3: layer = LayerType3.Read(reader); break; default: throw new Exception(); } level.Layers[x] = layer; } } uint levelActions = reader.ReadUInt32(); for (uint x = 0; x < levelActions; x++) { GameFunction func = GameFunction.ReadFunction(reader); } if (reader.BaseStream.Position != dataEnd) { throw new Exception(); } return(level); }