// returns the fallen distance of the piece public int Drop(Tetrimino next) { int distance = Board.DropDistance(Piece); // TODO: check this again! if (distance < 0 && Board.Intersects(Piece)) { throw new GameOverException(); } // let piece fall Piece.Fall(distance); Board.Place(Piece); Piece = null; // remove lines int lines = Board.RemoveLines(); Lines += lines; // calculate score Score += TetrisScore.GetSoftdropScore(distance); Score += TetrisScore.GetLineScore(lines, Level); if (NextPiece.HasValue) { // TODO: only generate new piece if this is explicitly wanted! Piece = new Piece(NextPiece.Value); NextPiece = next; } return(distance); }
private void Awake() { scoringSystem = GetComponent <TetrisScore> (); garbageGenerator = GetComponent <GarbageGenerator>(); board = GetComponent <TetrisBoard>(); game = GetComponent <TetrisGame>(); }
void Awake() { Instance = this; string hs = PlayerPrefs.GetString("HIGHSCORE"); _highS = (string.IsNullOrEmpty(hs)) ? 0 : int.Parse(hs); _scoreH.text = "" + _highS; _score.text = "0"; _clearColor = _clear.color; _clearPos = _clear.transform.position; }
internal void DropUnchecked(int distance) { // let piece fall Piece.Fall(distance); Board.PlaceUnchecked(Piece); Pieces.Push(new Piece(Piece)); // we need to remember the dropped pieces for the landing height feature (heuristic) Piece = null; // remove lines int lines = Board.RemoveLines(); Lines += lines; // calculate score Score += TetrisScore.GetSoftdropScore(distance); Score += TetrisScore.GetLineScore(lines, Level); if (NextPiece.HasValue) { Piece = new Piece(NextPiece.Value); NextPiece = Tetriminos.GetRandom(); } }