Exemple #1
0
        public void Read(BytesReader buffer)
        {
            id     = buffer.ReadInt32();
            type   = buffer.ReadInt32();
            localX = buffer.ReadFloat();
            localY = buffer.ReadFloat();
            isRoot = buffer.ReadInt32();

            grids.Clear();
            int numOfGrids = buffer.ReadInt32();

            for (int i = 0; i < MaxGrid; i++)
            {
                int col = buffer.ReadInt32();
                int row = buffer.ReadInt32();
                if (i < numOfGrids)
                {
                    grids.Add(new GridPosition(col, row));
                }
            }

            connections.Clear();
            int numOfConnection = buffer.ReadInt32();

            for (int i = 0; i < MaxConnection; i++)
            {
                int n = buffer.ReadInt32();
                if (i < numOfConnection)
                {
                    connections.Add(n);
                }
            }
        }
Exemple #2
0
        private bool ReadHeader(BytesReader buffer)
        {
            uint flag = buffer.ReadUInt32();

            if (flag != HeaderFlag)
            {
                return(false);
            }

            mapType    = (ELevelMapType)buffer.ReadInt32();
            minCol     = buffer.ReadInt32();
            maxBallId  = buffer.ReadInt32();
            ballRadius = buffer.ReadFloat();

            return(true);
        }
Exemple #3
0
        private bool ReadBalls(BytesReader buffer)
        {
            uint flag = buffer.ReadUInt32();

            if (flag != BallFlag)
            {
                return(false);
            }

            int numOfBall = buffer.ReadInt32();

            if (numOfBall > 0)
            {
                for (int i = 0; i < numOfBall; i++)
                {
                    BallData ball = new BallData();
                    ball.Read(buffer);
                    balls.Add(ball);
                }
            }

            return(true);
        }
Exemple #4
0
        public bool LoadFromBytes(byte[] data)
        {
            balls.Clear();

            try
            {
                BytesReader buffer = new BytesReader(data);

                uint flag    = buffer.ReadUInt32();
                int  version = buffer.ReadInt32();

                if (flag != FileFlag || version != FileVersion)
                {
                    Debug.LogError("LevelMapData format error.");
                    return(false);
                }

                if (!ReadHeader(buffer))
                {
                    Debug.LogError("Level file format error.");
                    return(false);
                }

                if (!ReadBalls(buffer))
                {
                    Debug.LogError("Level file format error.");
                    return(false);
                }

                return(true);
            }
            catch
            {
                return(false);
            }
        }