public static void CreateAtEmpty(ref PuzzleData puzzleData,PuzzleOperaterParam puzzleParam,Material[] puzzleColorList) { // Rearranged in ascending order of ID puzzles puzzleData.Sort(); // Create puzzleData.pieceObjectList.ForEach((GameObject pieceObject) => { PuzzlePiece targetPiece = pieceObject.GetComponent<PuzzlePiece>(); // Create a new puzzle piece ID that is not used if(targetPiece.used == false) { // Resume Puzzle Piece targetPiece.Resume(); // Set Puzzle position Vector3 endPos = PuzzleCalculator.GetPiecePosition(puzzleParam,targetPiece.ID); Vector3 startPos = endPos; endPos.z = -50; targetPiece.Move(startPos,endPos,puzzleParam.moveTime); // Set the color to random. int typeNo = Random.Range(0,puzzleColorList.Length); targetPiece.SetColor(typeNo,puzzleColorList[typeNo]); } } ); }
public static void SortByRefEmpty(ref PuzzleData puzzleData,PuzzleOperaterParam puzzleParam) { // Rearranged in ascending order of ID puzzles puzzleData.Sort(); for(int puzzleNo = puzzleData.pieceObjectList.Count - 1; puzzleNo >= 0;puzzleNo--) { Vector3 puzzlePos = Vector3.zero; PuzzlePiece nowPiece = puzzleData.pieceObjectList[puzzleNo].GetComponent<PuzzlePiece>(); // It moves one on the target is empty int targetRowNo = PuzzleCalculator.GetPieceRowNo(puzzleParam,nowPiece.ID); if(targetRowNo < puzzleParam.maxRows - 1) { // Check until it can move for(int id = nowPiece.ID + puzzleParam.maxColumns;id < puzzleParam.maxPuzzles;id += puzzleParam.maxColumns) { GameObject emptyTemp = puzzleData.pieceObjectList[puzzleData.FindPieceObjectIndex(id)]; PuzzlePiece emptyPuzzle = emptyTemp.GetComponent<PuzzlePiece>(); if(emptyPuzzle.used == false) { emptyPuzzle.ID = nowPiece.ID; nowPiece.ID = id; emptyPuzzle.Stop(); emptyTemp.transform.position = PuzzleCalculator.GetPiecePosition(puzzleParam,emptyPuzzle.ID); } } } nowPiece.MoveAmountClear(); // Move puzzle piece Vector3 nowPos = puzzleData.pieceObjectList[puzzleNo].transform.position; Vector3 targetPos = PuzzleCalculator.GetPiecePosition(puzzleParam,nowPiece.ID); if(Vector3.Distance(nowPos,targetPos) > PuzzleCalculator.GetPieceSpaceOffset(puzzleParam)) nowPiece.Move(targetPos,puzzleParam.moveTime); } }
public static void SortByRefID(ref PuzzleData puzzleData,PuzzleOperaterParam puzzleParam) { // Rearranged in ascending order of ID puzzles puzzleData.Sort(); puzzleData.pieceObjectList.ForEach((GameObject pieceObject) => { PuzzlePiece targetPiece = pieceObject.GetComponent<PuzzlePiece>(); Vector3 targetPos = PuzzleCalculator.GetPiecePosition(puzzleParam,targetPiece.ID); targetPiece.Move(targetPos,puzzleParam.moveTime); }); }