public override void OnInspectorGUI() { serializedObject.Update(); EditorGUILayout.LabelField("Refer to the Google Drive Documentation for instructions"); mapEditor = (MapEditor)target; EditorGUILayout.BeginHorizontal(); mapEditor.GridHexRows = EditorGUILayout.IntSlider("Number of Rows", (int)mapEditor.GridHexRows, 1, 20); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); mapEditor.GridHexColumns = EditorGUILayout.IntSlider("Number of Columns", (int)mapEditor.GridHexColumns, 1, 20); EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); if (mapEditor.transform.childCount == 0 && mapEditor.initialized == true) //If there are no hexagons, it is not initialized { mapEditor.initialized = false; } else if (GUILayout.Button(mapEditor.initialized ? "Recreate Grid" : "Create Grid")) //Button to recreate grid { mapEditor.Recreate(); } if (mapEditor.transform.childCount < mapEditor.GetArrayLength()) //Error if the hexagons have been tampered with in a nonpermitted way { Debug.LogError("Do not manually delete Hexagons, flag them as impassable or null.\nUndo the deletion or recreate the grid to continue."); GUILayout.Label("A hexagon is missing from the grid, undo its deletion\nor reset the grid to continue"); return; } EditorGUILayout.LabelField("Brush and View Mode"); EditorGUILayout.BeginHorizontal(); mapEditor.HexTypeMode = GUILayout.SelectionGrid(mapEditor.HexTypeMode, hexTypeModeStrings, 4); EditorGUILayout.EndHorizontal(); if (mapEditor.HexTypeMode == 0) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Hexagon Type Brush (TODO: Needs Textures)"); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); mapEditor.CurrentBrushType = (Hexagon.HexType)GUILayout.SelectionGrid((int)mapEditor.CurrentBrushType, currentBrushStrings, 4); EditorGUILayout.EndHorizontal(); } else if (mapEditor.HexTypeMode == 1) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Hexagon Texture Brush"); EditorGUILayout.EndHorizontal(); // if (boardManager.textures.Count == 0) { // EditorGUILayout.LabelField ("\tDrag materials below to start using them"); // } ShowIcons(mapEditor.textures); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Click to Remove selected texture", GUILayout.MaxWidth(200)); if (GUILayout.Button("Remove")) { if (mapEditor.textures.Count > 0) { mapEditor.RemoveCurrentTexture(); } } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Drag New Materials Here", GUILayout.MaxWidth(200)); EditorGUILayout.PropertyField(serializedObject.FindProperty("newTexture"), GUIContent.none); if (mapEditor.newTexture != null) { mapEditor.AddNewTexture(); } EditorGUILayout.EndHorizontal(); } else if (mapEditor.HexTypeMode == 2) { EditorGUILayout.Space(); EditorGUILayout.LabelField("Hexagon Spawn Type Brush (TODO: Needs Textures)"); mapEditor.CurrentBrushSpawn = (Hexagon.SpawnType)GUILayout.SelectionGrid((int)mapEditor.CurrentBrushSpawn, currentSpawnStrings, 3); } else if (mapEditor.HexTypeMode == 3) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Hexagon Height"); mapEditor.CurrentHeightBrush = EditorGUILayout.IntSlider(mapEditor.CurrentHeightBrush, 0, 8); EditorGUILayout.EndHorizontal(); } EditorGUILayout.Space(); EditorGUILayout.Separator(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button((mapEditor.boardManager.Maps[mapEditor.mapSliderIndex] != null) ? "Load Map" : "", GUILayout.Width(150))) { if (mapEditor.boardManager.Maps[mapEditor.mapSliderIndex] != null) { if (mapEditor.mapSliderIndex < mapEditor.boardManager.Maps.Count) { mapEditor.LoadMap(); } else { Debug.Log("No Map in slot: " + mapEditor.mapSliderIndex); } } } if (GUILayout.Button(mapEditor.initialized ? "Save Map" : "")) { if (mapEditor.initialized) { mapEditor.SaveMap(); } } if (GUILayout.Button(mapEditor.initialized ? "Save New Map" : "")) { if (mapEditor.initialized) { mapEditor.SaveNewMap(); } } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Current Level Loaded: ", GUILayout.MaxWidth(175)); // if (GUILayout.Button ("Create New Map")) { // mapEditor.CreateNewMap(); // } if (GUILayout.Button("Delete Map")) { mapEditor.DeleteMap(); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Level #", GUILayout.MaxWidth(175)); mapEditor.mapSliderIndex = EditorGUILayout.IntSlider(mapEditor.mapSliderIndex, 0, mapEditor.boardManager.Maps.Count - 1); EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); mapEditor.inDebug = EditorGUILayout.Toggle("Debug Mode", mapEditor.inDebug); if (mapEditor.inDebug) { serializedObject.Update(); mapEditor.collapse = EditorGUILayout.Foldout(mapEditor.collapse, "HexagonArray"); ShowList(serializedObject.FindProperty("HexagonArray"), mapEditor.collapse); serializedObject.ApplyModifiedProperties(); } serializedObject.ApplyModifiedProperties(); }