Exemplo n.º 1
0
    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();
    }