void NewTetrimino() { if (!gameOver) { held = false; linesCleared += CheckLines(); nextTetrimino.UpdateRectangles(); tetriminos.Add(new Tetrimino(tileTexture, nextTetrimino.type)); currentTetriminoIndex++; nextTetrimino = new Tetrimino(tileTexture, (TetriminoType)randomBag.get()); nextTetrimino.active = false; nextTetrimino.topLeftPosition = nextPos; nextTetrimino.UpdateRectangles(); if (currentTetriminoIndex >= 0) { CalculateShadowPos(); if (CheckCollisions(CollisionCheckType.Tetrimino, MoveDirection.Down)) { GameOver(); } } } }
public void Reset() { gameOver = false; tetriminos = new List <Tetrimino>(); level = 1; linesCleared = 0; currentTetriminoIndex = -1; randomBag = new RandomBag(7); nextTetrimino = new Tetrimino(tileTexture, (TetriminoType)randomBag.get()); nextTetrimino.topLeftPosition = nextTextPos + new Vector2(0, 100); nextTetrimino.UpdateRectangles(); NewTetrimino(); }
public void Hold() { if (!held) { Tetrimino temp; if (holdTetrimino != null) { temp = new Tetrimino(tileTexture, holdTetrimino.type); } else { temp = null; } holdTetrimino = new Tetrimino(tileTexture, tetriminos[currentTetriminoIndex].type); holdTetrimino.active = false; holdTetrimino.topLeftPosition = holdPos; holdTetrimino.UpdateRectangles(); if (temp != null) { tetriminos[currentTetriminoIndex] = new Tetrimino(tileTexture, temp.type); } else { tetriminos[currentTetriminoIndex] = new Tetrimino(tileTexture, nextTetrimino.type); nextTetrimino = new Tetrimino(tileTexture, (TetriminoType)randomBag.get()); nextTetrimino.active = false; nextTetrimino.topLeftPosition = nextPos; nextTetrimino.UpdateRectangles(); } CalculateShadowPos(); } held = true; }