Esempio n. 1
0
 void Start()
 {
     sliderHandler = GameObject.Find("SliderHandler").GetComponent <SliderHandler>();
     dialogHandler = GameObject.Find("DialogBorder").GetComponent <DialogHandler>();
     computerAI    = GameObject.Find("ComputerAI").GetComponent <ComputerAI>();
     diceHandler   = GameObject.Find("DicePanel").GetComponent <DiceHandler>();
     buttonHandler = GameObject.Find("ButtonHandler").GetComponent <ButtonHandler>();
 }
 public void DiceFourTest()
 {
     for (int i = 0; i < 100000; i++)
     {
         int testNumber = DiceHandler.DiceFour();
         if (testNumber <= 0 || testNumber > 4)
         {
             Assert.Fail();
         }
     }
 }
Esempio n. 3
0
    private bool CheckThreeVertical(DiceHandler die, out DiceHandler[] diceList)
    {
        diceList = new DiceHandler[3];

        if (die.gridPosition.y - 2 >= 0)
        {
            DiceHandler twoDown = board[(int)die.gridPosition.x, (int)(die.gridPosition.y - 2)].GetComponent <DiceHandler>();
            DiceHandler oneDown = board[(int)die.gridPosition.x, (int)(die.gridPosition.y - 1)].GetComponent <DiceHandler>();

            if ((twoDown.dieColor == die.dieColor && twoDown.value == die.value) &&
                (oneDown.dieColor == die.dieColor && oneDown.value == die.value))
            {
                diceList[0] = die;
                diceList[1] = oneDown;
                diceList[2] = twoDown;

                return(true);
            }
        }

        if (die.gridPosition.y - 1 >= 0 && die.gridPosition.y + 1 < height)
        {
            DiceHandler oneDown = board[(int)die.gridPosition.x, (int)(die.gridPosition.y - 1)].GetComponent <DiceHandler>();
            DiceHandler oneUp   = board[(int)die.gridPosition.x, (int)(die.gridPosition.y + 1)].GetComponent <DiceHandler>();

            if ((oneDown.dieColor == die.dieColor && oneDown.value == die.value) &&
                (oneUp.dieColor == die.dieColor && oneUp.value == die.value))
            {
                diceList[0] = oneUp;
                diceList[1] = die;
                diceList[2] = oneDown;

                return(true);
            }
        }

        if (die.gridPosition.y + 2 < height)
        {
            DiceHandler oneUp = board[(int)die.gridPosition.x, (int)(die.gridPosition.y + 1)].GetComponent <DiceHandler>();
            DiceHandler twoUp = board[(int)die.gridPosition.x, (int)(die.gridPosition.y + 2)].GetComponent <DiceHandler>();

            if ((oneUp.dieColor == die.dieColor && oneUp.value == die.value) &&
                (twoUp.dieColor == die.dieColor && twoUp.value == die.value))
            {
                diceList[0] = twoUp;
                diceList[1] = oneUp;
                diceList[2] = die;

                return(true);
            }
        }

        return(false);
    }
Esempio n. 4
0
    private bool CheckThreeHorizontal(DiceHandler die, out DiceHandler[] diceList)
    {
        diceList = new DiceHandler[3];

        if (die.gridPosition.x - 2 >= 0)
        {
            DiceHandler twoLeft = board[(int)(die.gridPosition.x - 2), (int)die.gridPosition.y].GetComponent <DiceHandler>();
            DiceHandler oneLeft = board[(int)(die.gridPosition.x - 1), (int)die.gridPosition.y].GetComponent <DiceHandler>();

            if ((twoLeft.dieColor == die.dieColor && twoLeft.value == die.value) &&
                (oneLeft.dieColor == die.dieColor && oneLeft.value == die.value))
            {
                diceList[0] = twoLeft;
                diceList[1] = oneLeft;
                diceList[2] = die;

                return(true);
            }
        }

        if (die.gridPosition.x - 1 >= 0 && die.gridPosition.x + 1 < width)
        {
            DiceHandler oneLeft  = board[(int)(die.gridPosition.x - 1), (int)die.gridPosition.y].GetComponent <DiceHandler>();
            DiceHandler oneRight = board[(int)(die.gridPosition.x + 1), (int)die.gridPosition.y].GetComponent <DiceHandler>();

            if ((oneLeft.dieColor == die.dieColor && oneLeft.value == die.value) &&
                (oneRight.dieColor == die.dieColor && oneRight.value == die.value))
            {
                diceList[0] = oneLeft;
                diceList[1] = die;
                diceList[2] = oneRight;

                return(true);
            }
        }

        if (die.gridPosition.x + 2 < width)
        {
            DiceHandler oneRight = board[(int)(die.gridPosition.x + 1), (int)die.gridPosition.y].GetComponent <DiceHandler>();
            DiceHandler twoRight = board[(int)(die.gridPosition.x + 2), (int)die.gridPosition.y].GetComponent <DiceHandler>();

            if ((oneRight.dieColor == die.dieColor && oneRight.value == die.value) &&
                (twoRight.dieColor == die.dieColor && twoRight.value == die.value))
            {
                diceList[0] = die;
                diceList[1] = oneRight;
                diceList[2] = twoRight;

                return(true);
            }
        }

        return(false);
    }
Esempio n. 5
0
    public void InstantiateBoard()
    {
        board      = new GameObject[width, height];
        isSwapping = true;

        timer = maxTime;

        int leftVal = 0;
        int prevVal = 0;

        // Set material by difficulty
        int maxCount = (int)difficulty;
        int count    = 0;

        for (int x = 0; x < width; x++)
        {
            for (int y = 0; y < height; y++)
            {
                GameObject tempDie = DicePool.instance.RetrieveDie();
                tempDie.transform.position = new Vector3(transform.position.x + (x * xOffset), transform.position.y + (y * yOffset) + 10, 0);

                board[x, y] = tempDie;

                DiceHandler diceHandler = tempDie.GetComponent <DiceHandler>();
                diceHandler.gridPosition = new Vector2(x, y);
                diceHandler.fallDelay    = (y * 1.5f) + (x * 0.2f);

                diceHandler.GetComponent <MeshRenderer>().material = dieMaterials[count];
                diceHandler.dieColor = (DiceColor)count;

                count++;
                if (count > maxCount)
                {
                    count = 0;
                }

                if (x > 0)
                {
                    leftVal = board[x - 1, y].GetComponent <DiceHandler>().value;
                }

                do
                {
                    diceHandler.value = Random.Range(1, 7);
                }while (diceHandler.value == leftVal || diceHandler.value == prevVal);

                prevVal = diceHandler.value;

                Vector3 startPosition = diceHandler.transform.position;
                endPosition = new Vector3(transform.position.x + (x * xOffset), transform.position.y + (y * yOffset), 0);
                StartCoroutine(diceHandler.FallingRoutine(startPosition, endPosition));
            }
        }
    }
Esempio n. 6
0
    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);
        }
    }
Esempio n. 7
0
    private bool CheckStraightSixVertical(DiceHandler die)
    {
        DiceHandler otherDie;

        // Check 2-6
        int upCount = die.value - 2;

        for (int i = upCount; i > 0; i--)
        {
            if (die.gridPosition.y + i >= height)
            {
                return(false);
            }
            else
            {
                otherDie = board[(int)die.gridPosition.x, (int)(die.gridPosition.y + i)].GetComponent <DiceHandler>();
                if (otherDie.dieColor != die.dieColor || otherDie.value != die.value - i)
                {
                    return(false);
                }
                else
                {
                    continue;
                }
            }
        }

        int downCount = 6 - die.value;

        for (int i = downCount; i > 0; i--)
        {
            if (die.gridPosition.y - i < 0)
            {
                return(false);
            }
            else
            {
                otherDie = board[(int)die.gridPosition.x, (int)(die.gridPosition.y - i)].GetComponent <DiceHandler>();
                if (otherDie.dieColor != die.dieColor || otherDie.value != die.value + i)
                {
                    return(false);
                }
                else
                {
                    continue;
                }
            }
        }

        return(true);
    }
Esempio n. 8
0
    private bool CheckStraightSixHorizontal(DiceHandler die)
    {
        DiceHandler otherDie;

        // Check 2-6
        int leftCount = die.value - 2;

        for (int i = leftCount; i > 0; i--)
        {
            if (die.gridPosition.x - i < 0)
            {
                return(false);
            }
            else
            {
                otherDie = board[(int)(die.gridPosition.x - i), (int)die.gridPosition.y].GetComponent <DiceHandler>();
                if (otherDie.dieColor != die.dieColor || otherDie.value != die.value - i)
                {
                    return(false);
                }
                else
                {
                    continue;
                }
            }
        }

        int rightCount = 6 - die.value;

        for (int i = rightCount; i > 0; i--)
        {
            if (die.gridPosition.x + i >= width)
            {
                return(false);
            }
            else
            {
                otherDie = board[(int)(die.gridPosition.x + i), (int)die.gridPosition.y].GetComponent <DiceHandler>();
                if (otherDie.dieColor != die.dieColor || otherDie.value != die.value + i)
                {
                    return(false);
                }
                else
                {
                    continue;
                }
            }
        }

        return(true);
    }
Esempio n. 9
0
    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;
    }
Esempio n. 10
0
    public void OnSelect(InputValue value)
    {
        Ray        ray = Camera.main.ScreenPointToRay(mousePosition);
        RaycastHit hit;

        Physics.Raycast(ray, out hit, 20.0f);
        Debug.DrawRay(ray.origin, ray.direction, Color.blue, 1.0f);

        if (hit.transform != null && hit.transform.CompareTag("Die") && hit.transform.gameObject == gameObject)
        {
            if (GameManager.instance.IsSwapping)
            {
                return;
            }

            if (isSelected)
            {
                isSelected = false;

                GameManager.instance.selectedDie = null;
            }
            else
            {
                if (GameManager.instance.selectedDie == null)
                {
                    isSelected = true;

                    GameManager.instance.selectedDie = this;
                }
                else
                {
                    DiceHandler selected = GameManager.instance.selectedDie;

                    if ((gridPosition.x >= selected.gridPosition.x - 1 && gridPosition.x <= selected.gridPosition.x + 1 && gridPosition.y == selected.gridPosition.y) ||
                        (gridPosition.y >= selected.gridPosition.y - 1 && gridPosition.y <= selected.gridPosition.y + 1 && gridPosition.x == selected.gridPosition.x))
                    {
                        GameManager.instance.SwapDice(gameObject);
                    }
                }
            }
        }
    }
Esempio n. 11
0
 void Start()
 {
     stateHandler = GameObject.Find("StateHandler").GetComponent <StateHandler>();
     diceHandler  = GameObject.Find("DicePanel").GetComponent <DiceHandler>();
 }
Esempio n. 12
0
 // Use this for initialization
 void Start()
 {
     diceHandler = gameObject.GetComponent<DiceHandler>();
     diceResults = new int[diceHandler.maxNoDice];
 }
Esempio n. 13
0
    public void CheckMatch(DiceHandler die)
    {
        DiceHandler[] diceList;

        if (CheckStraightFiveHorizontal(die))
        {
            score += 250;
            UIManager.instance.SetScore(score);

            int         left        = die.value - 1;
            DiceHandler leftMostDie = board[(int)die.gridPosition.x - left, (int)die.gridPosition.y].GetComponent <DiceHandler>();

            diceList = new DiceHandler[5];
            for (int i = 0; i < 5; i++)
            {
                diceList[i] = board[(int)leftMostDie.gridPosition.x + i, (int)leftMostDie.gridPosition.y].GetComponent <DiceHandler>();
            }

            ResetHorizontal(diceList);

            Debug.Log("Horizontal Straight 5 Made!");
            return;
        }

        if (CheckStraightSixHorizontal(die))
        {
            score += 250;
            UIManager.instance.SetScore(score);

            int         left        = die.value - 2;
            DiceHandler leftMostDie = board[(int)die.gridPosition.x - left, (int)die.gridPosition.y].GetComponent <DiceHandler>();

            diceList = new DiceHandler[5];
            for (int i = 0; i < 5; i++)
            {
                diceList[i] = board[(int)leftMostDie.gridPosition.x + i, (int)leftMostDie.gridPosition.y].GetComponent <DiceHandler>();
            }

            ResetHorizontal(diceList);

            Debug.Log("Horizontal Straight 6 Made!");
            return;
        }

        if (CheckStraightFiveVertical(die))
        {
            score += 250;
            UIManager.instance.SetScore(score);

            int         up        = die.value - 1;
            DiceHandler upMostDie = board[(int)die.gridPosition.x, (int)die.gridPosition.y + up].GetComponent <DiceHandler>();

            diceList = new DiceHandler[5];
            for (int i = 0; i < 5; i++)
            {
                diceList[i] = board[(int)upMostDie.gridPosition.x, (int)upMostDie.gridPosition.y - i].GetComponent <DiceHandler>();
            }

            ResetVertical(diceList);

            Debug.Log("Vertical Straight 5 Made!");
            return;
        }

        if (CheckStraightSixVertical(die))
        {
            score += 250;
            UIManager.instance.SetScore(score);

            int         up        = die.value - 2;
            DiceHandler upMostDie = board[(int)die.gridPosition.x, (int)die.gridPosition.y + up].GetComponent <DiceHandler>();

            diceList = new DiceHandler[5];
            for (int i = 0; i < 5; i++)
            {
                diceList[i] = board[(int)upMostDie.gridPosition.x, (int)upMostDie.gridPosition.y - i].GetComponent <DiceHandler>();
            }

            ResetVertical(diceList);

            Debug.Log("Vertical Straight 6 Made!");
            return;
        }

        if (CheckThreeHorizontal(die, out diceList))
        {
            score += 100;
            UIManager.instance.SetScore(score);

            ResetHorizontal(diceList);

            Debug.Log("Match Three Horizontal!");
            return;
        }

        if (CheckThreeVertical(die, out diceList))
        {
            score += 100;
            UIManager.instance.SetScore(score);

            ResetVertical(diceList);

            Debug.Log("Match Three Vertical!");
            return;
        }
    }