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