public override void AddScore(List <Block> blocksToRemove, List <Block> blocksBombed, int seqMultiplier = 1) { if (_currentLevel > 1) { var blocksByColor = blocksToRemove.GroupBy(x => x.BlockObject.GetColor()); foreach (var piece in blocksByColor) { if (piece.Count() > pieceSize) { var blocks = piece.ToList(); while (blocks.Count >= pieceSize) { AddNewPiece(blocks.Take(pieceSize).ToList()); blocks.RemoveRange(0, pieceSize); } } else { AddNewPiece(piece.ToList()); } } } var pieceCount = blocksToRemove.Count / pieceSize; var specialPieces = blocksToRemove.Where(x => Math.Round(x.BlockObject.GetColor().r, 2) == 0.32).ToList(); var specialPieceCount = specialPieces.Count / pieceSize; var scoreToAdd = (pieceCount + specialPieceCount) * (Math.Pow(2, pieceSize) * seqMultiplier); scoreToAdd += blocksBombed.Count * pieceSize; var newScore = ScoreController.AddScore((int)scoreToAdd); if (newScore >= _scoreToNextLevel) { _currentLevel = LevelController.AddLevel(); _scoreToNextLevel += _nextScoreAddition; _nextScoreAddition = (int)(_nextScoreAddition * 1.5); if (_currentLevel == 2) { StartCoroutine(RaisePieceSize()); PieceSizeText.gameObject.GetComponent <Text>().text = "" + pieceSize; } if (_currentLevel == 5) { StartCoroutine(RaisePieceSize()); PieceSizeText.gameObject.GetComponent <Text>().text = "" + pieceSize; } if (_currentLevel == 7) { ColorTetrisSpawnerController.AddNextColor(); ColorTetrisSpawnerController.BombProb = 0.05f; //ColorTetrisSpawnerController.AddNextColor(); } if (_currentLevel == 9) { StartCoroutine(RaisePieceSize()); PieceSizeText.gameObject.GetComponent <Text>().text = "" + pieceSize; } } }
void Start() { _colorTetrisSpawnerController = (ColorTetrisSpawnerController)SpawnerController; }