Example #1
0
    void CheckBoardAfterFirstCreate()
    {
        Jewel.EJewelType curJewelType        = Jewel.EJewelType.jewelTypeEnd;
        Jewel.EJewelType JewelTypeRight      = Jewel.EJewelType.jewelTypeEnd;
        Jewel.EJewelType JewelTypeLeft       = Jewel.EJewelType.jewelTypeEnd;
        Jewel.EJewelType JewelTypeDown       = Jewel.EJewelType.jewelTypeEnd;
        Jewel.EJewelType JewelTypeUp         = Jewel.EJewelType.jewelTypeEnd;
        bool             haveThreeMatchRight = false;
        bool             haveThreeMatchDown  = false;

        for (int y = gameBoardMinY; y < gameBoardMaxY; y++)
        {
            for (int x = gameBoardMinX; x < gameBoardMaxX; x++)
            {
                haveThreeMatchRight = false;
                haveThreeMatchDown  = false;
                curJewelType        = jewelArray[y, x].GetComponent <Jewel>().GetJewelType();

                for (int addIdx = 1; addIdx < 3; addIdx++)
                {
                    if (x + addIdx < gameBoardMaxX)
                    {
                        JewelTypeRight = jewelArray[y, x + addIdx].GetComponent <Jewel>().GetJewelType();
                        if (curJewelType == JewelTypeRight)
                        {
                            haveThreeMatchRight = true;
                        }
                        else
                        {
                            haveThreeMatchRight = false;
                        }
                    }
                    else
                    {
                        JewelTypeRight      = Jewel.EJewelType.jewelTypeEnd;
                        haveThreeMatchRight = false;
                    }

                    if (y + addIdx < gameBoardMaxY)
                    {
                        JewelTypeDown = jewelArray[y + addIdx, x].GetComponent <Jewel>().GetJewelType();
                        if (curJewelType == JewelTypeDown)
                        {
                            haveThreeMatchDown = true;
                        }
                        else
                        {
                            haveThreeMatchDown = false;
                        }
                    }
                    else
                    {
                        JewelTypeDown      = Jewel.EJewelType.jewelTypeEnd;
                        haveThreeMatchDown = false;
                    }

                    if (haveThreeMatchRight || haveThreeMatchDown)
                    {
                        if (0 <= x - 1)
                        {
                            JewelTypeLeft = jewelArray[y, x - 1].GetComponent <Jewel>().GetJewelType();
                        }
                        else
                        {
                            JewelTypeLeft = Jewel.EJewelType.jewelTypeEnd;
                        }

                        if (reservJewelSetCount * arraySize <= y - 1)
                        {
                            JewelTypeUp = jewelArray[y - 1, x].GetComponent <Jewel>().GetJewelType();
                        }
                        else
                        {
                            JewelTypeLeft = Jewel.EJewelType.jewelTypeEnd;
                        }


                        jewelArray[y, x].GetComponent <Jewel>().SetJewelWithExceptionType(JewelTypeLeft, JewelTypeRight, JewelTypeUp, JewelTypeDown);
                    }
                }
            }
        }
    }
Example #2
0
    bool CheckThreeMatchAfterSwap(GameObject threeMatchBaseJewel)
    {
        Jewel   jewelScript     = threeMatchBaseJewel.GetComponent <Jewel>();
        Vector2 idxOnBoardJewel = jewelScript.GetIdxOnBoard();

        Jewel.EJewelType baseJewelType = jewelScript.GetJewelType();
        int  threeMatchCountHor        = 0;
        int  threeMatchCountVer        = 0;
        bool bHaveThreeMatch           = false;

        List <GameObject> willDestroyHorJewelList = new List <GameObject>();
        List <GameObject> willDestroyVerJewelList = new List <GameObject>();

        int addIdx = 1;

        while ((int)idxOnBoardJewel.y + addIdx < gameBoardMaxY &&
               jewelArray[(int)idxOnBoardJewel.y + addIdx, (int)idxOnBoardJewel.x].GetComponent <Jewel>().GetJewelType() == baseJewelType)
        {
            willDestroyVerJewelList.Add(jewelArray[(int)idxOnBoardJewel.y + addIdx, (int)idxOnBoardJewel.x]);
            addIdx++;
            threeMatchCountVer++;
        }

        addIdx = 1;
        while ((int)idxOnBoardJewel.y - addIdx >= gameBoardMinY &&
               jewelArray[(int)idxOnBoardJewel.y - addIdx, (int)idxOnBoardJewel.x].GetComponent <Jewel>().GetJewelType() == baseJewelType)
        {
            willDestroyVerJewelList.Add(jewelArray[(int)idxOnBoardJewel.y - addIdx, (int)idxOnBoardJewel.x]);
            addIdx++;
            threeMatchCountVer++;
        }

        addIdx = 1;
        while ((int)idxOnBoardJewel.x + addIdx < gameBoardMaxX &&
               jewelArray[(int)idxOnBoardJewel.y, (int)idxOnBoardJewel.x + addIdx].GetComponent <Jewel>().GetJewelType() == baseJewelType)
        {
            willDestroyHorJewelList.Add(jewelArray[(int)idxOnBoardJewel.y, (int)idxOnBoardJewel.x + addIdx]);
            addIdx++;
            threeMatchCountHor++;
        }

        addIdx = 1;
        while ((int)idxOnBoardJewel.x - addIdx >= gameBoardMinX &&
               jewelArray[(int)idxOnBoardJewel.y, (int)idxOnBoardJewel.x - addIdx].GetComponent <Jewel>().GetJewelType() == baseJewelType)
        {
            willDestroyHorJewelList.Add(jewelArray[(int)idxOnBoardJewel.y, (int)idxOnBoardJewel.x - addIdx]);
            addIdx++;
            threeMatchCountHor++;
        }

        if (threeMatchCountHor >= 2 || threeMatchCountVer >= 2)
        {
            bHaveThreeMatch = true;
            willDestroyJewelList.Add(threeMatchBaseJewel);
        }

        if (threeMatchCountHor >= 2)
        {
            foreach (var jewel in willDestroyHorJewelList)
            {
                willDestroyJewelList.Add(jewel);
            }
        }

        if (threeMatchCountVer >= 2)
        {
            foreach (var jewel in willDestroyVerJewelList)
            {
                willDestroyJewelList.Add(jewel);
            }
        }

        return(bHaveThreeMatch);
    }