Beispiel #1
0
            public static LayerType2 Read(BinaryReader reader)
            {
                LayerType2 layer = new LayerType2();

                layer.Name = reader.ReadTString();

                uint i1 = reader.ReadUInt32();                 //as float
                uint i2 = reader.ReadUInt32();                 //as float

                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();

                        uint i3 = reader.ReadUInt32();
                    }
                }

                return(layer);
            }
Beispiel #2
0
        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);
        }