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); } }