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 }
public static CreateNewLevelWindow Init() { instance = GetWindow <CreateNewLevelWindow>(true) as CreateNewLevelWindow; instance.maxSize = new Vector2(256, 128); instance.minSize = instance.maxSize; instance.ShowPopup(); return(instance); }
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(); }