void OnGUI()
    {
        ScriptableObject   target          = this;
        SerializedObject   so              = new SerializedObject(target);
        SerializedProperty stringsProperty = so.FindProperty("tiles");

        string[] brushNames = System.Enum.GetNames(typeof(Brushes));

        brushSelected = GUILayout.SelectionGrid(brushSelected, brushNames, brushNames.Length, EditorStyles.miniButtonMid, GUILayout.Height(50f));

        EditorGUILayout.Space();

        if (GUILayout.Button("Generate Level"))
        {
            GenerateLevelWindow.Init();
        }

        GUILayout.BeginHorizontal();

        if (GUILayout.Button("Save Level"))
        {
            ImportExport.Export(MainWindow.lvl.Tex);
        }
        if (GUILayout.Button("Load Level"))
        {
            MainWindow.lvl.Tex = ImportExport.Import();
        }
        if (GUILayout.Button("New Level"))
        {
            CreateNewLevelWindow.Init();
        }

        GUILayout.EndHorizontal();


        if (tiles != null)
        {
            string[] tileNames = new string[tiles.Length];

            for (int i = 0; i < tiles.Length; i++)
            {
                if (tiles[i].name == "")
                {
                    tiles[i].name = "Tile " + i;
                }

                tileNames[i] = tiles[i].name;
            }

            tileSelected = GUILayout.SelectionGrid(tileSelected, tileNames, 1, EditorStyles.radioButton);
        }


        EditorGUILayout.PropertyField(stringsProperty, true); // True means show children
        so.ApplyModifiedProperties();                         // Remember to apply modified properties
    }
示例#2
0
    public static CreateNewLevelWindow Init()
    {
        instance         = GetWindow <CreateNewLevelWindow>(true) as CreateNewLevelWindow;
        instance.maxSize = new Vector2(256, 128);
        instance.minSize = instance.maxSize;

        instance.ShowPopup();

        return(instance);
    }
示例#3
0
    void OnGUI()
    {
        if (lvl == null)
        {
            if (GUI.Button(new Rect(instance.position.width / 2f - 140, instance.position.height / 2f - 25, 130, 50), "New Level"))
            {
                CreateNewLevelWindow.Init();
            }

            if (GUI.Button(new Rect(instance.position.width / 2f + 10, instance.position.height / 2f - 25, 130, 50), "Open Image"))
            {
                Texture2D tex = ImportExport.Import();

                lvl = new Level(tex.width, tex.height)
                {
                    Tex = tex,
                };
            }

            return;
        }
        if (!lvl.Tex)
        {
            lvl = null;
            return;
        }

        e = Event.current;

        DrawImage(lvl);

        Vector2 mousePos = e.mousePosition;

        if (e.button == 0)
        {
            // Mouse buttons
            if (e.isMouse & (e.type == EventType.MouseDrag | e.type == EventType.MouseDown))
            {
                if (mouseOverWindow == this)
                {
                    if (toolwnd.brushSelected == 0)
                    {
                        if (toolwnd.tiles != null)
                        {
                            if (!toolwnd.tiles[toolwnd.tileSelected].prefab)
                            {
                                Debug.LogWarning("Current Tile has no Prefab");
                            }

                            lvl.SetPixelByPos(toolwnd.tiles[toolwnd.tileSelected].color, mousePos);
                        }
                    }

                    if (toolwnd.brushSelected == 1)
                    {
                        lvl.SetPixelByPos(Color.clear, mousePos);
                    }
                }
            }


            if (e.type == EventType.KeyDown)
            {
                if (e.keyCode == KeyCode.W)
                {
                    GridOffsetY += 20f;
                }
                if (e.keyCode == KeyCode.S)
                {
                    GridOffsetY -= 20f;
                }
                if (e.keyCode == KeyCode.A)
                {
                    GridOffsetX += 20f;
                }
                if (e.keyCode == KeyCode.D)
                {
                    GridOffsetX -= 20f;
                }

                if (e.keyCode == KeyCode.UpArrow)
                {
                    GridSpacing *= 1.2f;
                }
                if (e.keyCode == KeyCode.DownArrow)
                {
                    GridSpacing *= 0.8f;
                    GridSpacing -= 2;
                }
            }
        }

        Repaint();
    }