Esempio n. 1
0
        private void UpdateTiles(Dictionary <MapTile, BitmapRect> bitmapSquares)
        {
            foreach (KeyValuePair <MapTile, BitmapRect> square in bitmapSquares.ToArray())
            {
                if (!CheckBoundsIntersect(square.Value))
                {
                    bitmapSquares.Remove(square.Key);
                    _tileSet.RemoveTile(square.Key);
                }
            }
            if (_tileSet.Tiles.Count() == 0)
            {
                _tileSet.RegenerateTiles();
            }
            MapTile baseTile = _tileSet.Tiles.FirstOrDefault();
            MapTile horizontalAttemptTile = baseTile;
            MapTile verticalAttemptTile;

            while (CheckTileBoundsIntersect(horizontalAttemptTile = horizontalAttemptTile.Offset(1, 0)))
            {
                if (!bitmapSquares.ContainsKey(horizontalAttemptTile))
                {
                    bitmapSquares.Add(horizontalAttemptTile, GetSquareBitmapBounds(horizontalAttemptTile));
                    _tileSet.AddTile(horizontalAttemptTile);
                }
                verticalAttemptTile = horizontalAttemptTile;
                while (CheckTileBoundsIntersect(verticalAttemptTile = verticalAttemptTile.Offset(0, 1)))
                {
                    if (!bitmapSquares.ContainsKey(verticalAttemptTile))
                    {
                        bitmapSquares.Add(verticalAttemptTile, GetSquareBitmapBounds(verticalAttemptTile));
                        _tileSet.AddTile(verticalAttemptTile);
                    }
                }
                verticalAttemptTile = horizontalAttemptTile;
                while (CheckTileBoundsIntersect(verticalAttemptTile = verticalAttemptTile.Offset(0, -1)))
                {
                    if (!bitmapSquares.ContainsKey(verticalAttemptTile))
                    {
                        bitmapSquares.Add(verticalAttemptTile, GetSquareBitmapBounds(verticalAttemptTile));
                        _tileSet.AddTile(verticalAttemptTile);
                    }
                }
            }
            horizontalAttemptTile = baseTile;
            while (CheckTileBoundsIntersect(horizontalAttemptTile = horizontalAttemptTile.Offset(-1, 0)))
            {
                if (!bitmapSquares.ContainsKey(horizontalAttemptTile))
                {
                    bitmapSquares.Add(horizontalAttemptTile, GetSquareBitmapBounds(horizontalAttemptTile));
                    _tileSet.AddTile(horizontalAttemptTile);
                }
                verticalAttemptTile = horizontalAttemptTile;
                while (CheckTileBoundsIntersect(verticalAttemptTile = verticalAttemptTile.Offset(0, 1)))
                {
                    if (!bitmapSquares.ContainsKey(verticalAttemptTile))
                    {
                        bitmapSquares.Add(verticalAttemptTile, GetSquareBitmapBounds(verticalAttemptTile));
                        _tileSet.AddTile(verticalAttemptTile);
                    }
                }
                verticalAttemptTile = horizontalAttemptTile;
                while (CheckTileBoundsIntersect(verticalAttemptTile = verticalAttemptTile.Offset(0, -1)))
                {
                    if (!bitmapSquares.ContainsKey(verticalAttemptTile))
                    {
                        bitmapSquares.Add(verticalAttemptTile, GetSquareBitmapBounds(verticalAttemptTile));
                        _tileSet.AddTile(verticalAttemptTile);
                    }
                }
            }
            verticalAttemptTile = baseTile;
            while (CheckTileBoundsIntersect(verticalAttemptTile = verticalAttemptTile.Offset(0, 1)))
            {
                if (!bitmapSquares.ContainsKey(verticalAttemptTile))
                {
                    bitmapSquares.Add(verticalAttemptTile, GetSquareBitmapBounds(verticalAttemptTile));
                    _tileSet.AddTile(verticalAttemptTile);
                }
            }
            verticalAttemptTile = baseTile;
            while (CheckTileBoundsIntersect(verticalAttemptTile = verticalAttemptTile.Offset(0, -1)))
            {
                if (!bitmapSquares.ContainsKey(verticalAttemptTile))
                {
                    bitmapSquares.Add(verticalAttemptTile, GetSquareBitmapBounds(verticalAttemptTile));
                    _tileSet.AddTile(verticalAttemptTile);
                }
            }
        }