internal KeyPieceDictionary SetupKeyPieceDictionary(int piecePivotIndex, int pieceRendererIndex) { var pivot = TopPivot(); ScramblePiecesAndAssignToSnapablePoints(piecePivotIndex, pieceRendererIndex); var goalKeyPieceDictionary = KeyPieceDictionary.SetupKeyPieceDictionary(pivot, pivot.pieces); foreach (var snapablePoint in pivot.snapablePoints) { snapablePoint.piece = null; } return(goalKeyPieceDictionary); }
public static KeyPieceDictionary SetupKeyPieceDictionary(PuzzlePivot pivot, List <Piece> pieces) { var keyPiece = pieces[0]; var keyPieceDictionary = new KeyPieceDictionary(keyPiece); var keyPieceSnapablePoint = SnapablePoint.GetSnapablePointWithPieceId(pivot, keyPiece.id); var keyPieceId = pivot.snapablePoints.IndexOf(keyPieceSnapablePoint); foreach (var piece in pieces) { var snapablePoint = SnapablePoint.GetSnapablePointWithPieceId(pivot, piece.id); var relativePos = SnapablePoint.GetRelativePosition(pivot, keyPieceId, pivot.snapablePoints.IndexOf(snapablePoint)); keyPieceDictionary.pieceDictionary.Add(relativePos, piece.FullId); } return(keyPieceDictionary); }
public void SetupGoalKeypieceDictionary() { int i = 0; foreach (var snapablePoint in snapablePoints) { pieces[i].transform.localPosition = new Vector3(snapablePoint.position.x, snapablePoint.position.y, pieces[i].transform.localPosition.z); snapablePoint.piece = pieces[i]; i++; } goalKeyPieceDictionary = KeyPieceDictionary.SetupKeyPieceDictionary(this, pieces); foreach (var snapablePoint in snapablePoints) { snapablePoint.piece = null; } }
public void SetupCollectableLayerForPieces(PuzzlePivot pivot) { int piecesOnX = (int)pivot.numberOfPieces.x; int piecesOnY = (int)pivot.numberOfPieces.y; var scale = new Vector2(1f / piecesOnX, 1f / piecesOnY); var shuffledPieces = pivot.pieces.OrderBy(x => UnityEngine.Random.Range(0, pivot.pieces.Count)).ToList( ); int i = 0; foreach (var piece in shuffledPieces) { var x = Mathf.FloorToInt((float)i / piecesOnY); var y = i % piecesOnY; piece.CollectableLayerRenderer.gameObject.SetActive(true); piece.CollectableLayerRenderer.material.SetTextureScale("_MainTex", scale); piece.CollectableLayerRenderer.material.SetTextureOffset("_MainTex", new Vector2(x * scale.x, y * scale.y)); piece.CollectableLayerRenderer.material.SetTexture("_MainTex", snapShotCollectableLayer); i++; } i = 0; foreach (var snapablePoint in pivot.snapablePoints) { shuffledPieces[i].transform.localPosition = new Vector3(snapablePoint.position.x, snapablePoint.position.y, shuffledPieces[i].transform.localPosition.z); snapablePoint.piece = shuffledPieces[i]; i++; } var importantPieces = GetImportantPieces(pivot); collectableKeyPieceDictionary = KeyPieceDictionary.SetupKeyPieceDictionary(pivot, importantPieces); foreach (var snapablePoint in pivot.snapablePoints) { snapablePoint.piece = null; } }