private void Callback(object state) { Dispatcher.InvokeAsync(() => { if (Board.ActiveFigure == null) { Board.ActiveFigure = Board.NextFigure ?? Figure.GetFigure((Figures) new Random().Next(0, 5)); Board.NextFigure = Figure.GetFigure((Figures) new Random().Next(0, 5)); Board.NextFigure.X = 2; Board.NextFigure.Y = 2; DrawNextFigure(); Board.ActiveFigure.X = Board.Width / 2; Board.ActiveFigure.Y = Board.Height - 2; DrawTiles(); return; } if (CheckBounds(Direction.Down)) { Board.ActiveFigure.Y -= 1; DrawTiles(); return; } else { if (Board.ActiveFigure.Y < Board.Height - 2) { Board.Tiles.AddRange(Board.ActiveFigure.Tiles.Select(tile => new Tile(tile.X + Board.ActiveFigure.X, tile.Y + Board.ActiveFigure.Y))); Board.ActiveFigure = null; RemoveLines(); return; } else { if (linesRecord < linesCompleted) { linesRecord = linesCompleted; } LinesRecord.Text = linesRecord.ToString(); Board.ActiveFigure = null; Board.Tiles = new List <Tile>(); linesCompleted = 0; timer.Change(int.MaxValue, 0); Announcement.Text = "Game Over!!"; Announcement.Visibility = Visibility.Visible; } } }); }
public static Figure GetFigure(Figures f) { switch (f) { case Figures.Cube: return(new Figure { Tiles = new List <Tile>(new Tile[] { new Tile(-1, -1), new Tile(-1, 0), new Tile(0, 0), new Tile(0, -1) }) }); case Figures.Stick: return(new Figure { Tiles = new List <Tile>(new Tile[] { new Tile(-1, 0), new Tile(0, 0), new Tile(1, 0), new Tile(2, 0) }) }); case Figures.Left: return(new Figure { Tiles = new List <Tile>(new Tile[] { new Tile(-1, 0), new Tile(0, 0), new Tile(1, 0), new Tile(1, 1) }) }); case Figures.Rigth: return(new Figure { Tiles = new List <Tile>(new Tile[] { new Tile(-1, 0), new Tile(-1, 1), new Tile(0, 0), new Tile(1, 0) }) }); case Figures.RigthS: return(new Figure { Tiles = new List <Tile>(new Tile[] { new Tile(-1, -1), new Tile(-1, 0), new Tile(0, 0), new Tile(0, 1) }) }); case Figures.LeftS: return(new Figure { Tiles = new List <Tile>(new Tile[] { new Tile(0, -1), new Tile(0, 0), new Tile(-1, 0), new Tile(-1, 1) }) }); } return(Figure.GetFigure(Figures.Cube)); }