Esempio n. 1
0
    public bool DestroyBlock(string col)
    {
        switch (blockType)
        {
        case BlockType.Single:
            if (color == col)
            {
                isDestroy = true;
                mainController.AddBlocks(1);
                mainController.TimeBonus(.5f);
                mainController.GenerateMessages(true);
                return(true);
            }
            mainController.BreakCombo();
            mainController.TimeBonus(-1f);
            mainController.GenerateMessages(false);
            return(false);

        case BlockType.Triple:

            int currentSub = transform.childCount;
            for (int i = 0; i < transform.childCount; i++)
            {
                if (transform.GetChild(i).GetComponent <Block>().color == col)
                {
                    Destroy(transform.GetChild(i).gameObject);
                    currentSub--;
                    break;
                }
                else
                {
                    mainController.TimeBonus(-1f);
                    mainController.BreakCombo();
                    mainController.GenerateMessages(false);
                }
            }

            if (currentSub == 0)
            {
                isDestroy = true;
                mainController.AddBlocks(3);
                mainController.TimeBonus(1f);
                mainController.GenerateMessages(true);
                return(true);
            }
            return(false);

        case BlockType.Clear:
            RaycastHit2D[] hit         = Physics2D.RaycastAll(transform.position, Vector2.up, 1f);
            float          lowestBlock = Mathf.Infinity;

            for (int i = 0; i < hit.Length; i++)
            {
                if (hit[i].transform.gameObject.GetInstanceID() != gameObject.GetInstanceID())
                {
                    if (hit[i].transform.position.y < lowestBlock)
                    {
                        blockObjectTemp = hit[i].transform.gameObject;
                        lowestBlock     = hit[i].transform.position.y;
                    }
                }
            }

            if (hit.Length > 0 && blockObjectTemp.GetComponent <Block>().DestroyBlock(col))
            {
                mainController.AddBlocks(1);
                mainController.TimeBonus(.2f);
                isDestroy = true;
                return(true);
            }
            return(false);

        case BlockType.Anti:
            if (color != col)
            {
                isDestroy = true;
                mainController.AddBlocks(1);
                mainController.TimeBonus(.5f);
                mainController.GenerateMessages(true);
                return(true);
            }
            mainController.BreakCombo();
            mainController.TimeBonus(-1f);
            mainController.GenerateMessages(false);
            return(false);

        case BlockType.CrushTop:
            if (color == col)
            {
                isDestroy = true;
                mainController.AddBlocks(1);
                mainController.TimeBonus(.5f);
                mainController.GenerateMessages(true);
                return(true);
            }
            mainController.BreakCombo();
            mainController.TimeBonus(-1f);
            mainController.GenerateMessages(false);
            return(false);

        case BlockType.CrushBottom:
            if (color == col)
            {
                isDestroy = true;
                mainController.AddBlocks(1);
                mainController.TimeBonus(.5f);
                mainController.GenerateMessages(true);
                return(true);
            }
            mainController.BreakCombo();
            mainController.TimeBonus(-1f);
            mainController.GenerateMessages(false);
            return(false);

        default:
            return(false);
        }
    }