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;
        }
    }
Beispiel #4
0
    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;
        }
    }