private void ResetVertical(DiceHandler[] diceList) { isSwapping = true; float delay = 0.5f; // Move cleared dice to the top for (int i = 0; i < diceList.Length; i++) { diceList[i].isTumbling = true; int xPos = (int)diceList[i].gridPosition.x; int yPos = (int)diceList[i].gridPosition.y; Vector3 pos = diceList[i].transform.position; pos.y = resetHeight + (yOffset * i); diceList[i].transform.position = pos; diceList[i].value = Random.Range(1, 7); diceList[i].fallDelay = delay * i; } // Slide other dice down DiceHandler topDie = diceList[0]; if (topDie.gridPosition.y != height - 1) { for (int y = (int)(topDie.gridPosition.y + 1); y < height; y++) { DiceHandler die = board[(int)topDie.gridPosition.x, y].GetComponent <DiceHandler>(); Vector3 endPos = die.transform.position; endPos.y -= 1.1f * diceList.Length; StartCoroutine(die.SwapPosition(die.transform.position, endPos)); board[(int)die.gridPosition.x, y - diceList.Length] = die.gameObject; die.gridPosition = new Vector2(die.gridPosition.x, y - diceList.Length); } } // Drop cleared dice for (int i = 0; i < diceList.Length; i++) { Vector3 endPos = diceList[i].transform.position; endPos.y = 3.8f - (yOffset * (diceList.Length - i - 1)); StartCoroutine(diceList[i].FallingRoutine(diceList[i].transform.position, endPos)); int gridY = height - (diceList.Length - i); board[(int)diceList[i].gridPosition.x, gridY] = diceList[i].gameObject; diceList[i].gridPosition = new Vector2(diceList[i].gridPosition.x, gridY); } }
public void SwapDice(GameObject secondDie) { isSwapping = true; DiceHandler secondHandler = secondDie.GetComponent <DiceHandler>(); Vector2 tempGrid = secondHandler.gridPosition; Vector3 tempPos = secondDie.transform.position; secondHandler.gridPosition = selectedDie.gridPosition; board[(int)selectedDie.gridPosition.x, (int)selectedDie.gridPosition.y] = secondDie; selectedDie.gridPosition = tempGrid; board[(int)tempGrid.x, (int)tempGrid.y] = selectedDie.gameObject; StartCoroutine(secondHandler.SwapPosition(secondDie.transform.position, selectedDie.transform.position)); StartCoroutine(selectedDie.SwapPosition(selectedDie.transform.position, tempPos)); selectedDie = null; }