コード例 #1
0
        private void DrawTile(int x, int y, bool addDirtyRect = true, ImageDrawingMode mode = ImageDrawingMode.IgnoreAlpha)
        {
            var tile       = this.boardTiles[x, y];
            var tilePoint  = this.GetBoardCoordinatesFromTilePoint(x, y);
            var tileIsMine = tile.Type == TileType.Mine;

            if (!tile.Shown || tileIsMine)
            {
                if (this.useTileShader)
                {
                    this.boardTop.FillRectangle(tilePoint.X, tilePoint.Y, tilePoint.X + this.tileWidth, tilePoint.Y + this.tileHeight, Colors.Transparent);
                }
                else
                {
                    this.proxy.DrawImagePixels(this.tileUnsetData, tilePoint.X, tilePoint.Y, mode);
                }
            }
            else
            {
                if (!this.useTileShader)
                {
                    this.proxy.DrawImagePixels(this.tileUnsetData, tilePoint.X, tilePoint.Y, ImageDrawingMode.IgnoreAlpha);
                    this.proxy.DrawImagePixels(this.tileSetData, tilePoint.X, tilePoint.Y, ImageDrawingMode.IgnoreAlpha);
                }
                else
                {
                    this.proxy.DrawImagePixels(this.tileSetData, tilePoint.X, tilePoint.Y, mode);
                }
            }

            if (tile.Type != TileType.EmptySpace)
            {
                if (tile.Type != TileType.Unset && tile.Shown)
                {
                    this.DrawImageWithOffsets(TileBoard.tileTypeImageData[tile.Type], tilePoint, tile.Type == TileType.Mine ? false : true);
                }

                if (tile.ExtraTileData == ExtraTileData.Flag)
                {
                    this.DrawImageWithOffsets(TileBoard.flagImageData, tilePoint);
                }
                else if (tile.ExtraTileData == ExtraTileData.QuestionMark)
                {
                    this.DrawImageWithOffsets(TileBoard.questionMarkImageData, tilePoint);
                }
            }

            if (addDirtyRect)
            {
                this.proxy.AddDirtyRect(this.GetTileRectangleFromCoordinates(x, y));
            }
        }
コード例 #2
0
        private void DrawTile(int x, int y, bool addDirtyRect = true, ImageDrawingMode mode = ImageDrawingMode.IgnoreAlpha)
        {
            var tile = this.boardTiles[x, y];
            var tilePoint = this.GetBoardCoordinatesFromTilePoint(x, y);
            var tileIsMine = tile.Type == TileType.Mine;

            if (!tile.Shown || tileIsMine)
            {
                if (this.useTileShader)
                {
                    this.boardTop.FillRectangle(tilePoint.X, tilePoint.Y, tilePoint.X + this.tileWidth, tilePoint.Y + this.tileHeight, Colors.Transparent);
                }
                else
                {
                    this.proxy.DrawImagePixels(this.tileUnsetData, tilePoint.X, tilePoint.Y, mode);
                }
            }
            else
            {
                if (!this.useTileShader)
                {
                    this.proxy.DrawImagePixels(this.tileUnsetData, tilePoint.X, tilePoint.Y, ImageDrawingMode.IgnoreAlpha);
                    this.proxy.DrawImagePixels(this.tileSetData, tilePoint.X, tilePoint.Y, ImageDrawingMode.IgnoreAlpha);
                }
                else
                {
                    this.proxy.DrawImagePixels(this.tileSetData, tilePoint.X, tilePoint.Y, mode);
                }
            }

            if (tile.Type != TileType.EmptySpace)
            {
                if (tile.Type != TileType.Unset && tile.Shown)
                {
                    this.DrawImageWithOffsets(TileBoard.tileTypeImageData[tile.Type], tilePoint, tile.Type == TileType.Mine ? false : true);
                }

                if (tile.ExtraTileData == ExtraTileData.Flag)
                {
                    this.DrawImageWithOffsets(TileBoard.flagImageData, tilePoint);
                }
                else if (tile.ExtraTileData == ExtraTileData.QuestionMark)
                {
                    this.DrawImageWithOffsets(TileBoard.questionMarkImageData, tilePoint);
                }
            }

            if (addDirtyRect)
            {
                this.proxy.AddDirtyRect(this.GetTileRectangleFromCoordinates(x, y));
            }
        }