Пример #1
0
    public override void OnInspectorGUI()
    {
        MPPuzzleController myTarget = (MPPuzzleController)target;

        EditorGUILayout.Space();

        EditorGUILayout.HelpBox("Flipped piece image will be shown when the piece is not selected open by user.", MessageType.None);

        EditorGUIUtility.LookLikeInspector();
        myTarget.FlippedPieceImage =
            (Texture2D)EditorGUILayout.ObjectField("FlippedPieceImage", myTarget.FlippedPieceImage, typeof(Texture2D), false);
        EditorGUIUtility.LookLikeControls();


        int ChngNoPiecesToFind = myTarget.NoPiecesToFind;
        int ChngTotalTypes     = myTarget.TotalTypes;

        EditorGUILayout.Space();
        EditorGUILayout.HelpBox("Total pieces a user will have to flip open  for matches to be successfull.", MessageType.None);
        myTarget.NoPiecesToFind = EditorGUILayout.IntSlider("NoPiecesToFind", myTarget.NoPiecesToFind, 2, 5);


        EditorGUILayout.Space();
        EditorGUILayout.HelpBox("Total different types of images hidden in this puzzle", MessageType.None);
        myTarget.TotalTypes = EditorGUILayout.IntSlider("TotalPieceTypes", myTarget.TotalTypes, 2, 10);

        if (myTarget.HiddenImages.Length != myTarget.TotalTypes)
        {
            Texture2D[] prevImages = myTarget.HiddenImages;
            myTarget.HiddenImages = new Texture2D[myTarget.TotalTypes];

            //Get previous images back
            int Range = prevImages.Length > myTarget.HiddenImages.Length ? myTarget.HiddenImages.Length : prevImages.Length;

            for (int i = 0; i < Range; i++)
            {
                myTarget.HiddenImages[i] = prevImages[i];
            }
        }

        //Get these images
        bool ImagesNotNull = true;

        EditorGUIUtility.LookLikeInspector();
        for (int i = 0; i < myTarget.TotalTypes; i++)
        {
            myTarget.HiddenImages[i] = (Texture2D)EditorGUILayout.ObjectField("Hidden Image " + (i + 1).ToString(),
                                                                              myTarget.HiddenImages[i], typeof(Texture2D), false);

            ImagesNotNull = myTarget.HiddenImages[i] != null && ImagesNotNull;
        }
        EditorGUIUtility.LookLikeControls();

        if (!ImagesNotNull)
        {
            EditorGUILayout.HelpBox("You must provide all hidden images", MessageType.Error);
        }


        EditorGUILayout.Space();
        EditorGUILayout.HelpBox("Swap TotalRows And cols for final puzzle which will be created", MessageType.None);
        bool TempIsFlip = _swapRowsCol;

        _swapRowsCol = EditorGUILayout.Toggle("SwapRowCol", _swapRowsCol);
        if (_swapRowsCol != TempIsFlip)
        {
            int TempSVar = myTarget.TotalRows;
            myTarget.TotalRows = myTarget.TotalCols;
            myTarget.TotalCols = TempSVar;
        }

        //Calculate total rows and cols in the grid according to previous selections
        if (ChngNoPiecesToFind != myTarget.NoPiecesToFind || ChngTotalTypes != myTarget.TotalTypes)
        {
            FindClosestProduct(myTarget.NoPiecesToFind * myTarget.TotalTypes, myTarget.NoPiecesToFind, myTarget.TotalTypes,
                               out myTarget.TotalRows, out myTarget.TotalCols);
        }


        //Display resulted total rows and cols
        EditorGUILayout.Space();
        EditorGUILayout.HelpBox("Final puzzle will have " + myTarget.TotalRows + " rows and " + myTarget.TotalCols + " columns", MessageType.None);

        EditorGUILayout.Space();
        myTarget.AnimateColorOnWrongPiece = EditorGUILayout.Toggle("AnimateColorOnWrongPiece ", myTarget.AnimateColorOnWrongPiece);

        if (myTarget.AnimateColorOnWrongPiece)
        {
            myTarget.WrongPieceAnimationColor = EditorGUILayout.ColorField("Animation Color", myTarget.WrongPieceAnimationColor);
            myTarget.NoOfTimesToBlink         = EditorGUILayout.IntSlider("No Of Times To Blink", myTarget.NoOfTimesToBlink,
                                                                          1, 5);
            myTarget.BlinkSpeed = ((float)EditorGUILayout.IntSlider("Effect speed", (int)(myTarget.BlinkSpeed * 100f), 1, 300)) / 100;
        }

        //Audio editor setup
        EditorGUILayout.Space();
        EditorGUILayout.Space();
        EditorGUILayout.HelpBox("Leave empty if you dont want to play audio", MessageType.Info);
        myTarget.CorrectPairOpened     = (AudioClip)EditorGUILayout.ObjectField("Correct Pair Sound ", myTarget.CorrectPairOpened, typeof(AudioClip));
        myTarget.IncorrectPairOpened   = (AudioClip)EditorGUILayout.ObjectField("Incorrect Pair Sound ", myTarget.IncorrectPairOpened, typeof(AudioClip));
        myTarget.PuzzleCompletionSound = (AudioClip)EditorGUILayout.ObjectField("Puzzle Completion Sound ", myTarget.PuzzleCompletionSound, typeof(AudioClip));
        myTarget.BackgroundMusic       = (AudioClip)EditorGUILayout.ObjectField("Background Music ", myTarget.BackgroundMusic, typeof(AudioClip));


        EditorGUILayout.Space();
        EditorGUILayout.Space();
        EditorGUILayout.Space();
        SerializedProperty sprop = serializedObject.FindProperty("OnWrongPiecesOpened");

        EditorGUILayout.PropertyField(sprop);

        sprop = serializedObject.FindProperty("OnMatchedPiecesOpened");
        EditorGUILayout.PropertyField(sprop);

        sprop = serializedObject.FindProperty("OnAllPiecesOpened");
        EditorGUILayout.PropertyField(sprop);

        serializedObject.ApplyModifiedProperties();

        EditorUtility.SetDirty(target);
    }
Пример #2
0
    public override void OnInspectorGUI()
    {
        MPPuzzleController myTarget = (MPPuzzleController)target;

        EditorGUILayout.Space();

        EditorGUILayout.HelpBox("Flipped piece image will be shown when the piece is not selected open by user.", MessageType.None);

        EditorGUIUtility.LookLikeInspector();
        myTarget.FlippedPieceImage =
            (Texture2D)EditorGUILayout.ObjectField("FlippedPieceImage", myTarget.FlippedPieceImage, typeof(Texture2D), false);
        EditorGUIUtility.LookLikeControls();


        int ChngNoPiecesToFind = myTarget.NoPiecesToFind;
        int ChngTotalTypes     = myTarget.TotalTypes;

        EditorGUILayout.Space();
        EditorGUILayout.HelpBox("Total pieces a user will have to flip open  for matches to be successfull.", MessageType.None);
        myTarget.NoPiecesToFind = EditorGUILayout.IntSlider("NoPiecesToFind", myTarget.NoPiecesToFind, 2, 5);


        EditorGUILayout.Space();
        EditorGUILayout.HelpBox("Total different types of images hidden in this puzzle", MessageType.None);
        myTarget.TotalTypes = EditorGUILayout.IntSlider("TotalPieceTypes", myTarget.TotalTypes, 2, 10);

        if (myTarget.HiddenImages.Length != myTarget.TotalTypes)
        {
            Texture2D[] prevImages = myTarget.HiddenImages;
            myTarget.HiddenImages = new Texture2D[myTarget.TotalTypes];

            //Get previous images back
            int Range = prevImages.Length > myTarget.HiddenImages.Length ? myTarget.HiddenImages.Length : prevImages.Length;

            for (int i = 0; i < Range; i++)
            {
                myTarget.HiddenImages[i] = prevImages[i];
            }
        }

        //Get these images
        bool ImagesNotNull = true;

        EditorGUIUtility.LookLikeInspector();
        for (int i = 0; i < myTarget.TotalTypes; i++)
        {
            myTarget.HiddenImages[i] = (Texture2D)EditorGUILayout.ObjectField("Hidden Image " + (i + 1).ToString(),
                                                                              myTarget.HiddenImages[i], typeof(Texture2D), false);

            ImagesNotNull = myTarget.HiddenImages[i] != null && ImagesNotNull;
        }
        EditorGUIUtility.LookLikeControls();

        if (!ImagesNotNull)
        {
            EditorGUILayout.HelpBox("You must provide all hidden images", MessageType.Error);
        }


        EditorGUILayout.Space();
        EditorGUILayout.HelpBox("Swap TotalRows And cols for final puzzle which will be created", MessageType.None);
        bool TempIsFlip = _swapRowsCol;

        _swapRowsCol = EditorGUILayout.Toggle("SwapRowCol", _swapRowsCol);
        if (_swapRowsCol != TempIsFlip)
        {
            int TempSVar = myTarget.TotalRows;
            myTarget.TotalRows = myTarget.TotalCols;
            myTarget.TotalCols = TempSVar;
        }

        //Calculate total rows and cols in the grid according to previous selections
        if (ChngNoPiecesToFind != myTarget.NoPiecesToFind || ChngTotalTypes != myTarget.TotalTypes)
        {
            FindClosestProduct(myTarget.NoPiecesToFind * myTarget.TotalTypes, myTarget.NoPiecesToFind, myTarget.TotalTypes,
                               out myTarget.TotalRows, out myTarget.TotalCols);
        }


        //Display resulted total rows and cols
        EditorGUILayout.Space();
        EditorGUILayout.HelpBox("Final puzzle will have " + myTarget.TotalRows + " rows and " + myTarget.TotalCols + " columns", MessageType.None);

        EditorUtility.SetDirty(target);
    }