Example #1
0
 private void GameOver()
 {
     Debug.LogWarning("GAME OVER");
     TetrominoBehaviour.ClearOccupiedMatrix();
     onGameOver?.Invoke();
     TetrominoBehaviour.endedMovement -= UpdateGameState;
 }
Example #2
0
 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);
 }
Example #3
0
    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));
    }
Example #4
0
 private void SpawnTetromino()
 {
     currentTetromino = nextTetromino;
     currentTetromino.transform.position   = spawnPosition;
     currentTetromino.transform.localScale = Vector3.one;
     Utils.ChangeChildTags(currentTetromino.transform, inGameTag);
     currentTetromino.Initialize(gameArea, speed);
 }
Example #5
0
    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);
    }
Example #6
0
 private void OnDisable()
 {
     TetrominoBehaviour.endedMovement -= UpdateGameState;
     TetrominoBehaviour.ClearOccupiedMatrix();
 }