private void displaySolutionSection(DigicodePuzzle myScript, GUIStyle style_Yellow_01) { EditorGUILayout.BeginVertical(style_Yellow_01); EditorGUILayout.HelpBox("Section : Puzzle Solution.", MessageType.Info); _helpBox(2); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Reset Solution")) { resultCode.stringValue = ""; } EditorGUILayout.EndHorizontal(); EditorGUILayout.HelpBox("When you write the solution :" + "\n\nCase 1 : Write directly the solution in the next field." + "\nCase 2 : unselect the next field if needed then use the button below to write the solution.", MessageType.Info); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Puzzle Solution :", GUILayout.Width(100)); EditorGUILayout.PropertyField(resultCode, new GUIContent("")); EditorGUILayout.EndHorizontal(); EditorGUILayout.LabelField(""); EditorGUILayout.EndVertical(); displayKeysInTheInspector(myScript, style_Yellow_01, 1); EditorGUILayout.LabelField(""); }
private void otherSection(DigicodePuzzle myScript, GUIStyle style_Orange) { EditorGUILayout.BeginVertical(style_Orange); EditorGUILayout.HelpBox("Section : Other Options.", MessageType.Info); EditorGUILayout.BeginHorizontal(); GUILayout.Label("Validation Button Joystick : ", GUILayout.Width(150)); validationButtonJoystick.intValue = EditorGUILayout.Popup(validationButtonJoystick.intValue, s_inputListJoystickButton.ToArray()); EditorGUILayout.EndHorizontal(); GUILayout.Label(""); EditorGUILayout.BeginHorizontal(); GUILayout.Label("Play Audio when Key is pressed : ", GUILayout.Width(180)); EditorGUILayout.PropertyField(a_KeyPressed, new GUIContent(""), GUILayout.Width(100)); GUILayout.Label("Volume : ", GUILayout.Width(60)); a_KeyPressedVolume.floatValue = EditorGUILayout.Slider(a_KeyPressedVolume.floatValue, 0, 1); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label("Play Audio when puzzle is Reset : ", GUILayout.Width(180)); EditorGUILayout.PropertyField(a_Reset, new GUIContent(""), GUILayout.Width(100)); GUILayout.Label("Volume : ", GUILayout.Width(60)); a_ResetVolume.floatValue = EditorGUILayout.Slider(a_ResetVolume.floatValue, 0, 1); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label("Play Audio when code is wrong : ", GUILayout.Width(180)); EditorGUILayout.PropertyField(a_WrongCode, new GUIContent(""), GUILayout.Width(100)); GUILayout.Label("Volume : ", GUILayout.Width(60)); a_WrongCodeVolume.floatValue = EditorGUILayout.Slider(a_WrongCodeVolume.floatValue, 0, 1); EditorGUILayout.EndHorizontal(); GUILayout.Label(""); EditorGUILayout.BeginVertical(style_Orange); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Actions when the puzzle start the first time : ", EditorStyles.boldLabel); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); EditorGUILayout.BeginHorizontal(); GUILayout.Label("PopUp an object : ", GUILayout.Width(100)); EditorGUILayout.PropertyField(popUpObject, new GUIContent(""), GUILayout.Width(160)); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Label("PopUp Speed : ", GUILayout.Width(100)); EditorGUILayout.PropertyField(popupSpeed, new GUIContent(""), GUILayout.Width(30)); EditorGUILayout.EndHorizontal(); //-> Display feedback ID used when the puzzle is not available displayFeedbackWhenPuzzleIsLocked(); EditorGUILayout.EndVertical(); }
void OnEnable() { // Setup the SerializedProperties. SeeInspector = serializedObject.FindProperty("SeeInspector"); helpBoxEditor = serializedObject.FindProperty("helpBoxEditor"); DigicodePuzzle myScript = (DigicodePuzzle)target; _NumberOfKey = serializedObject.FindProperty("_NumberOfKey"); _Column = serializedObject.FindProperty("_Column"); toolbarCurrentValue = serializedObject.FindProperty("toolbarCurrentValue"); SquareSize = serializedObject.FindProperty("SquareSize"); tilesList = serializedObject.FindProperty("tilesList"); currentSelectedSprite = serializedObject.FindProperty("currentSelectedSprite"); keyStringList = serializedObject.FindProperty("keyStringList"); VisualizeSprite = serializedObject.FindProperty("VisualizeSprite"); validationButtonJoystick = serializedObject.FindProperty("validationButtonJoystick"); a_KeyPressed = serializedObject.FindProperty("a_KeyPressed"); a_KeyPressedVolume = serializedObject.FindProperty("a_KeyPressedVolume"); a_Reset = serializedObject.FindProperty("a_Reset"); a_ResetVolume = serializedObject.FindProperty("a_ResetVolume"); a_WrongCode = serializedObject.FindProperty("a_WrongCode"); a_WrongCodeVolume = serializedObject.FindProperty("a_WrongCodeVolume"); popUpObject = serializedObject.FindProperty("popUpObject"); popupSpeed = serializedObject.FindProperty("popupSpeed"); feedbackIDList = serializedObject.FindProperty("feedbackIDList"); b_feedbackActivated = serializedObject.FindProperty("b_feedbackActivated"); resultCode = serializedObject.FindProperty("resultCode"); GameObject tmp = GameObject.Find("InputsManager"); if (tmp) { for (var i = 0; i < tmp.GetComponent <MM_MenuInputs>().remapButtons[1].buttonsList.Count; i++) { s_inputListJoystickButton.Add(tmp.GetComponent <MM_MenuInputs>().remapButtons[1].buttonsList[i].name); } } Tex_01 = MakeTex(2, 2, new Color(1, .5f, 0.3F, .4f)); Tex_02 = MakeTex(2, 2, new Color(1, .5f, 0.3F, .4f)); Tex_03 = MakeTex(2, 2, new Color(1, .5f, 0.3F, .4f)); Tex_04 = MakeTex(2, 2, new Color(1, .5f, 0.3F, .4f)); Tex_05 = MakeTex(2, 2, new Color(1, .5f, 0.3F, .4f)); }
private void displayGeneratePuzzleSection(DigicodePuzzle myScript, GUIStyle style_Orange) { EditorGUILayout.BeginVertical(style_Orange); EditorGUILayout.HelpBox("Section : Generate Keys. (Minimum : 1)", MessageType.Info); _helpBox(0); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Column :", GUILayout.Width(100)); EditorGUILayout.PropertyField(_Column, new GUIContent(""), GUILayout.Width(30)); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("How many Keys :", GUILayout.Width(100)); EditorGUILayout.PropertyField(_NumberOfKey, new GUIContent(""), GUILayout.Width(30)); EditorGUILayout.EndHorizontal(); if (GUILayout.Button("Generate Keys")) { GenerateKeys(myScript); } EditorGUILayout.EndVertical(); }
private void GenerateKeys(DigicodePuzzle myScript) { currentSelectedSprite.intValue = 0; Undo.RegisterFullObjectHierarchyUndo(myScript, myScript.name); Transform[] ts = myScript.gameObject.GetComponentsInChildren <Transform>(); foreach (Transform child in ts) { if (child != null && child.name.Contains("Key")) { Undo.DestroyObjectImmediate(child.gameObject); } } tilesList.ClearArray(); keyStringList.ClearArray(); for (var i = 0; i < _NumberOfKey.intValue; i++) { tilesList.InsertArrayElementAtIndex(0); keyStringList.InsertArrayElementAtIndex(0); } int number = 0; int raw = 0; for (var i = 0; i < _NumberOfKey.intValue; i++) { GameObject newTile = Instantiate(myScript.defaultTile, myScript.gameObject.transform); if (raw != 0) { newTile.transform.localPosition = new Vector3(.25f * (i % _Column.intValue), -.25f * raw, 0); } else { newTile.transform.localPosition = new Vector3(.25f * i, -.25f * raw, 0); } //Debug.Log("number : " + number); if (number < 10) { newTile.name = "Key_0" + number; } else { newTile.name = "Key_" + number; } newTile.transform.GetChild(0).name = number.ToString(); Undo.RegisterCreatedObjectUndo(newTile, newTile.name); tilesList.GetArrayElementAtIndex(number).objectReferenceValue = newTile; //positionList.GetArrayElementAtIndex(number).intValue = number; if (i % _Column.intValue == _Column.intValue - 1) { raw++; } number++; } }
private void displayKeysInTheInspector(DigicodePuzzle myScript, GUIStyle style_Blue, int WhichSection) { EditorGUILayout.LabelField(""); int number = 0; int raw = Mathf.RoundToInt(_NumberOfKey.intValue / _Column.intValue); //Debug.Log("raw : " + raw + " : _Column :" + _Column.intValue + " : _NumberOfKey :" + _NumberOfKey.intValue); for (var i = 0; i <= raw; i++) { EditorGUILayout.BeginHorizontal(); for (var j = 0; j < _Column.intValue; j++) { tmpText = null; if (tilesList.arraySize > number) { EditorGUILayout.BeginVertical(GUILayout.Width(SquareSize.intValue)); Transform[] ts3 = myScript.tilesList[number].GetComponentsInChildren <Transform>(); for (var k = 0; k < ts3.Length; k++) { if (ts3[k].name.Contains("Text")) { tmpText = ts3[k].GetComponent <Text>(); } } if (tmpText) { EditorGUILayout.LabelField("Key : " + tmpText.text as String, GUILayout.Width(SquareSize.intValue)); } else { EditorGUILayout.LabelField("Key : No Text", GUILayout.Width(SquareSize.intValue)); } EditorGUILayout.LabelField("Result : " + keyStringList.GetArrayElementAtIndex(number).stringValue as String, GUILayout.Width(SquareSize.intValue)); Transform[] ts = myScript.tilesList[number].GetComponentsInChildren <Transform>(); spriteTransform = null; for (var k = 0; k < ts.Length; k++) { if (ts[k].name.Contains("Sprite")) { spriteTransform = ts[k]; } if (ts[k].name.Contains("Text")) { objText = ts[k]; } } if (spriteTransform && VisualizeSprite.boolValue || objText && !VisualizeSprite.boolValue) { GameObject objSprite = spriteTransform.gameObject; if (objSprite && VisualizeSprite.boolValue || objText && !VisualizeSprite.boolValue) { Texture2D DisplayTexture = null; if (spriteTransform.GetComponent <SpriteRenderer>().sprite) { DisplayTexture = (Texture2D)spriteTransform.GetComponent <SpriteRenderer>().sprite.texture; } if (VisualizeSprite.boolValue) { if (currentSelectedSprite.intValue != number) { GUI.backgroundColor = _cGray; } else { GUI.backgroundColor = _cBlue; } if (GUILayout.Button(DisplayTexture, GUILayout.Width(SquareSize.intValue), GUILayout.Height(SquareSize.intValue))) { currentSelectedSprite.intValue = number; if (WhichSection == 1) { //-> Section : Solution resultCode.stringValue += keyStringList.GetArrayElementAtIndex(currentSelectedSprite.intValue).stringValue; } } } else { if (currentSelectedSprite.intValue != number) { GUI.backgroundColor = _cGray; } else { GUI.backgroundColor = _cBlue; } if (GUILayout.Button(keyStringList.GetArrayElementAtIndex(number).stringValue, GUILayout.Width(SquareSize.intValue), GUILayout.Height(SquareSize.intValue))) { currentSelectedSprite.intValue = number; if (WhichSection == 1) { //-> Section : Solution resultCode.stringValue += keyStringList.GetArrayElementAtIndex(currentSelectedSprite.intValue).stringValue; } } } } number++; } else { if (GUILayout.Button("No Sprite", GUILayout.Width(SquareSize.intValue), GUILayout.Height(SquareSize.intValue))) { currentSelectedSprite.intValue = number; if (WhichSection == 1) //-> Section : Solution { resultCode.stringValue += keyStringList.GetArrayElementAtIndex(currentSelectedSprite.intValue).stringValue; } } number++; } EditorGUILayout.EndVertical(); } } EditorGUILayout.EndHorizontal(); } }
private void displaySelectSpriteSection(DigicodePuzzle myScript, GUIStyle style_Blue) { EditorGUILayout.LabelField(""); EditorGUILayout.BeginVertical(style_Blue); EditorGUILayout.HelpBox("Section :Select a tile and change its sprite.", MessageType.Info); _helpBox(1); EditorGUILayout.BeginVertical(style_Blue); EditorGUILayout.LabelField("Current selected Tile : " + currentSelectedSprite.intValue, EditorStyles.boldLabel); EditorGUILayout.EndVertical(); if (tilesList.arraySize > currentSelectedSprite.intValue) { Transform[] ts = myScript.tilesList[currentSelectedSprite.intValue].GetComponentsInChildren <Transform>(); bool b_SpriteExist = false; for (var i = 0; i < ts.Length; i++) { if (ts[i].name.Contains("Sprite")) { spriteTransform = ts[i]; b_SpriteExist = true; break; } } if (spriteTransform != null && b_SpriteExist) { GameObject objSprite = spriteTransform.gameObject; if (objSprite) { EditorGUILayout.BeginHorizontal(); //-> Display srite thumbail Texture2D DisplayTexture = null; if (spriteTransform.GetComponent <SpriteRenderer>().sprite) { DisplayTexture = (Texture2D)spriteTransform.GetComponent <SpriteRenderer>().sprite.texture; } GUILayout.Label(DisplayTexture, GUILayout.Width(20), GUILayout.Height(20)); //-> Display sprite slot SerializedObject serializedObject3 = new UnityEditor.SerializedObject(spriteTransform.GetComponent <SpriteRenderer>()); SerializedProperty m_Sprite = serializedObject3.FindProperty("m_Sprite"); serializedObject3.Update(); EditorGUILayout.PropertyField(m_Sprite, new GUIContent(""), GUILayout.Width(200)); serializedObject3.ApplyModifiedProperties(); EditorGUILayout.EndHorizontal(); //--> Display sprite Local scale EditorGUILayout.BeginHorizontal(); SerializedObject serializedObject4 = new UnityEditor.SerializedObject(spriteTransform.transform); SerializedProperty m_localScale = serializedObject4.FindProperty("m_LocalScale"); serializedObject4.Update(); EditorGUILayout.PropertyField(m_localScale, new GUIContent(""), GUILayout.Width(200)); serializedObject4.ApplyModifiedProperties(); if (GUILayout.Button("Apply to all", GUILayout.Width(80))) { for (var i = 0; i < tilesList.arraySize; i++) { Transform[] ts2 = myScript.tilesList[i].GetComponentsInChildren <Transform>(); spriteTransform = null; for (var k = 0; k < ts2.Length; k++) { if (ts2[k].name.Contains("Sprite")) { spriteTransform = ts2[k]; } } if (spriteTransform) { SerializedObject serializedObject5 = new UnityEditor.SerializedObject(spriteTransform.transform); SerializedProperty m_localScale2 = serializedObject5.FindProperty("m_LocalScale"); serializedObject5.Update(); m_localScale2.vector3Value = m_localScale.vector3Value; serializedObject5.ApplyModifiedProperties(); } } } EditorGUILayout.EndHorizontal(); //--> Display Text on Key Transform[] ts3 = myScript.tilesList[currentSelectedSprite.intValue].GetComponentsInChildren <Transform>(); for (var i = 0; i < ts3.Length; i++) { if (ts3[i].name.Contains("Text")) { tmpText = ts3[i].GetComponent <Text>(); } } if (tmpText != null) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Text displayed on KEY:", GUILayout.Width(200)); SerializedObject serializedObject6 = new UnityEditor.SerializedObject(tmpText); SerializedProperty m_Text = serializedObject6.FindProperty("m_Text"); serializedObject6.Update(); m_Text.stringValue = EditorGUILayout.TextField(m_Text.stringValue, GUILayout.Width(80)); serializedObject6.ApplyModifiedProperties(); EditorGUILayout.EndHorizontal(); } else { EditorGUILayout.HelpBox("Text : Not available (Object doesn't exist in the Hierarchy).", MessageType.Info); } //--> Display Text on Result Screen EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Text displayed on Result Screen :", GUILayout.Width(200)); EditorGUILayout.PropertyField(keyStringList.GetArrayElementAtIndex(currentSelectedSprite.intValue), new GUIContent(""), GUILayout.Width(80)); EditorGUILayout.EndHorizontal(); } } else { EditorGUILayout.HelpBox("No Sprites are available", MessageType.Info); } } EditorGUILayout.EndVertical(); displayKeysInTheInspector(myScript, style_Blue, 0); }
public override void OnInspectorGUI() { if (SeeInspector.boolValue) // If true Default Inspector is drawn on screen { DrawDefaultInspector(); } serializedObject.Update(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("See Inspector :", GUILayout.Width(85)); EditorGUILayout.PropertyField(SeeInspector, new GUIContent(""), GUILayout.Width(30)); EditorGUILayout.LabelField("See Help Boxes :", GUILayout.Width(85)); EditorGUILayout.PropertyField(helpBoxEditor, new GUIContent(""), GUILayout.Width(30)); EditorGUILayout.EndHorizontal(); GUIStyle style_Yellow_01 = new GUIStyle(GUI.skin.box); style_Yellow_01.normal.background = Tex_01; GUIStyle style_Blue = new GUIStyle(GUI.skin.box); style_Blue.normal.background = Tex_03; GUIStyle style_Purple = new GUIStyle(GUI.skin.box); style_Purple.normal.background = Tex_04; GUIStyle style_Orange = new GUIStyle(GUI.skin.box); style_Orange.normal.background = Tex_05; GUIStyle style_Yellow_Strong = new GUIStyle(GUI.skin.box); style_Yellow_Strong.normal.background = Tex_02; DigicodePuzzle myScript = (DigicodePuzzle)target; if (Application.isPlaying) { EditorGUILayout.HelpBox("Puzzle could not be edited in play mode", MessageType.Info); } else { // --> Display Tab sections in the Inspector toolbarCurrentValue.intValue = GUILayout.Toolbar(toolbarCurrentValue.intValue, toolbarStrings); bool b_TilesExist = true; if (tilesList.arraySize > 0) { for (var i = 0; i < tilesList.arraySize; i++) { if (tilesList.GetArrayElementAtIndex(i).objectReferenceValue == null) { b_TilesExist = false; break; } } } // --> Display GeneratePuzzleSection if (toolbarCurrentValue.intValue == 0) { displayGeneratePuzzleSection(myScript, style_Orange); } // --> Display Other Section if (toolbarCurrentValue.intValue == 3) { otherSection(myScript, style_Orange); } if (tilesList.arraySize > 0) { if (b_TilesExist) { // --> Display Select Sprites if (toolbarCurrentValue.intValue == 1) { displaySelectSpriteSection(myScript, style_Blue); } // --> Display Mix Section if (toolbarCurrentValue.intValue == 2) { displaySolutionSection(myScript, style_Yellow_01); } } else { if (toolbarCurrentValue.intValue == 1 || toolbarCurrentValue.intValue == 2) { puzzleNeedToBeGenerated(); } } } } serializedObject.ApplyModifiedProperties(); EditorGUILayout.LabelField(""); }