private void GameOver() { Debug.LogWarning("GAME OVER"); TetrominoBehaviour.ClearOccupiedMatrix(); onGameOver?.Invoke(); TetrominoBehaviour.endedMovement -= UpdateGameState; }
private void GenerateNextTetromino() { nextTetromino = Instantiate(tetrominoes[UnityEngine.Random.Range(0, tetrominoes.Length)], spawnPosition, Quaternion.identity); nextTetromino.transform.position = previewPosition; nextTetromino.transform.localScale = Vector3.one * .5f; Utils.ChangeChildTags(nextTetromino.transform, previewTag); }
private void MoveDownBlocksAboveY(int y) { float halfWidth = gameArea.x / 2f; float halfHeigth = (gameArea.y - y) / 2f; float centerX = halfWidth; float centerY = y + halfHeigth; Collider[] colliders = Physics.OverlapBox(new Vector3(centerX, centerY), new Vector3(halfWidth, halfHeigth), Quaternion.identity, blockLayerMask); Transform[] blocks = Utils.GetTransformsFromColliders(colliders); TetrominoBehaviour.RemoveFromOccupiedMatrix(blocks); // Moving blocks down foreach (var block in blocks) { Vector3Int position = Vector3Int.RoundToInt(block.transform.position); if (position.y > y && block.CompareTag(inGameTag)) { //Moving down TetrominoBehaviour.MoveDown(block.transform); } } TetrominoBehaviour.AddToOccupiedMatrix(Utils.GetTransformsByTag(blocks, inGameTag)); }
private void SpawnTetromino() { currentTetromino = nextTetromino; currentTetromino.transform.position = spawnPosition; currentTetromino.transform.localScale = Vector3.one; Utils.ChangeChildTags(currentTetromino.transform, inGameTag); currentTetromino.Initialize(gameArea, speed); }
private bool ClearCompleteRow(out int rowY) { bool hadCompleteRow = false; rowY = -1; if (GetCompleteRow(out Transform[] rowBlocks)) { hadCompleteRow = true; Debug.Log(rowBlocks.Length); rowY = Mathf.RoundToInt(rowBlocks[0].position.y); foreach (var block in rowBlocks) { TetrominoBehaviour.Destroy(block); Score += 50; onScored?.Invoke(Score); } //numberOfClearedRows++; } IncreaseDifficulty(); return(hadCompleteRow); }
private void OnDisable() { TetrominoBehaviour.endedMovement -= UpdateGameState; TetrominoBehaviour.ClearOccupiedMatrix(); }