void OnGUI() { if (_isInitTabButton) { MissionTabButtonStyle = new GUIStyle(SampleStyle.GetButtonStyle(SampleStyle.ButtonType.Left, SampleStyle.ButtonColor.Blue)); SpaceTabButtonStyle = new GUIStyle(SampleStyle.GetButtonStyle(SampleStyle.ButtonType.Right, SampleStyle.ButtonColor.Blue)); _isInitTabButton = false; } SampleStyle.DrawWindowBackground(SampleStyle.ColorGrey); // Buttons for switching mission graph and space graph. GUILayout.BeginVertical(SampleStyle.Frame(SampleStyle.ColorLightestGrey)); LayoutStateButtons(); // Dropdown for strating node. int startingIndex = Mission.Alphabet.Nodes.FindIndex(n => n == Mission.Alphabet.StartingNode); startingIndex = SampleStyle.PopupLabeled(Languages.GetText("GenerateMission-StartingNode"), startingIndex, Mission.Alphabet.Nodes.Select(n => n.ExpressName).ToArray(), SampleStyle.PopUpLabel, SampleStyle.PopUp, Screen.width - 15); Mission.Alphabet.StartingNode = Mission.Alphabet.Nodes[startingIndex]; GUILayout.EndVertical(); // Canvas to draw current mission graph. LayoutMissionGraphCanvas(); // Layout the list of mission group. LayoutMissionGroupList(); // Buttons for operating the graph. LayoutFunctionButtons(); }
void OnGUI() { SampleStyle.DrawWindowBackground(SampleStyle.ColorGrey); GUILayout.BeginVertical(SampleStyle.Frame(SampleStyle.ColorLightestGrey)); _name = SampleStyle.TextFieldLabeled(Languages.GetText("LevelSetting-LevelName"), _name, SampleStyle.TextFieldLabel, SampleStyle.TextField, SampleStyle.TextFieldHeight); _abbreviation = SampleStyle.TextFieldLabeled(Languages.GetText("LevelSetting-LevelAbbreviation"), _abbreviation, SampleStyle.TextFieldLabel, SampleStyle.TextField, SampleStyle.TextFieldHeight); _description = SampleStyle.TextAreaLabeled(Languages.GetText("LevelSetting-Description"), _description, SampleStyle.TextAreaLabel, SampleStyle.TextArea, SampleStyle.TextAreaHeight); _tag = SampleStyle.TextFieldLabeled(Languages.GetText("LevelSetting-Tag"), _tag, SampleStyle.TextFieldLabel, SampleStyle.TextField, SampleStyle.TextFieldHeight); EditorGUILayout.HelpBox(FormValidation(), MessageType.Info, true); // If error occur, disable apply button. EditorGUI.BeginDisabledGroup(_errorType != ErrorType.NoError); // Apply button and popup if (GUILayout.Button(Languages.GetText("LevelSetting-Apply"), SampleStyle.GetButtonStyle(SampleStyle.ButtonType.Regular, SampleStyle.ButtonColor.Green), SampleStyle.SubmitButtonHeight)) { if (EditorUtility.DisplayDialog(Languages.GetText("LevelSetting-Dialog-Title"), Languages.GetText("LevelSetting-Dialog-Content"), Languages.GetText("LevelSetting-Dialog-Yes"), Languages.GetText("LevelSetting-Dialog-No"))) { // Commit changes Debug.Log(Languages.GetText("LevelSetting-Dialog-Yes-Content")); } else { // Cancel changes; Debug.Log(Languages.GetText("LevelSetting-Dialog-No-Content")); } } EditorGUI.EndDisabledGroup(); GUILayout.EndVertical(); }
// Content of submition. void LayoutSubmitionButton() { // When click apply button. switch (_editingMode) { case EditingMode.Create: GUI.enabled = (_messageType != MessageType.Error && _messageType != MessageType.Warning); if (GUILayout.Button(Languages.GetText("MissionAlphabet-AddSymbol"), SampleStyle.GetButtonStyle(SampleStyle.ButtonType.Regular, SampleStyle.ButtonColor.Green), SampleStyle.SubmitButtonHeight)) { // When click the button, revoke all selected symbols and add the symbon in list. switch (_currentTab) { case AlphabetWindowTab.Nodes: Alphabet.RevokeAllSelected(); Alphabet.AddNode(new GraphGrammarNode(_node)); Alphabet.Nodes.Last().Selected = true; break; case AlphabetWindowTab.Connections: Alphabet.RevokeAllSelected(); Alphabet.AddConnection(new GraphGrammarConnection(_connection)); Alphabet.Connections.Last().Selected = true; break; } // Make the scroll position in list to bottom, and switch to modify mode. _scrollPosition.y = Mathf.Infinity; _editingMode = EditingMode.Modify; // Unfocus from the field. GUI.FocusControl("FocusToNothing"); } GUI.enabled = true; break; case EditingMode.Modify: GUI.enabled = (_messageType != MessageType.Error && _messageType != MessageType.Warning); if (GUILayout.Button(Languages.GetText("MissionAlphabet-UpdateChanges"), SampleStyle.GetButtonStyle(SampleStyle.ButtonType.Regular, SampleStyle.ButtonColor.Green), SampleStyle.SubmitButtonHeight)) { // When click the button, update the symbol informations. switch (_currentTab) { case AlphabetWindowTab.Nodes: // Update in alphabet and mission grammar. UpdateNode(Alphabet.SelectedNode); MissionGrammar.OnAlphabetUpdated(Alphabet.SelectedNode); break; case AlphabetWindowTab.Connections: // Update in alphabet and mission grammar. UpdateConnection(Alphabet.SelectedConnection); MissionGrammar.OnAlphabetUpdated(Alphabet.SelectedConnection); break; } // Unfocus from the field. GUI.FocusControl("FocusToNothing"); } GUI.enabled = true; break; } }
// Buttons about adding new symbol, modifying and deleting. void LayoutEditingModeButtonGroup() { EditorGUILayout.BeginHorizontal(); if (GUILayout.Button(Languages.GetText("MissionAlphabet-AddNew"), SampleStyle.GetButtonStyle(SampleStyle.ButtonType.Left, SampleStyle.ButtonColor.Blue), SampleStyle.ButtonHeight)) { // Switch the mode. _editingMode = EditingMode.Create; // Initial the preview node and connection. _node = new GraphGrammarNode(); _connection = new GraphGrammarConnection(); // Initial all fields and repaint. Alphabet.RevokeAllSelected(); InitFields(); Repaint(); } switch (_currentTab) { case AlphabetWindowTab.Nodes: EditorGUI.BeginDisabledGroup(Alphabet.SelectedNode == null || Alphabet.IsAnyNode(Alphabet.SelectedNode.AlphabetID)); break; case AlphabetWindowTab.Connections: EditorGUI.BeginDisabledGroup(Alphabet.SelectedConnection == null); break; } if (GUILayout.Button(Languages.GetText("MissionAlphabet-Modify"), SampleStyle.GetButtonStyle(SampleStyle.ButtonType.Mid, SampleStyle.ButtonColor.Blue), SampleStyle.ButtonHeight)) { // Switch the mode. _editingMode = EditingMode.Modify; } if (GUILayout.Button(Languages.GetText("MissionAlphabet-Delete"), SampleStyle.GetButtonStyle(SampleStyle.ButtonType.Right, SampleStyle.ButtonColor.Blue), SampleStyle.ButtonHeight)) { // Switch the mode. _editingMode = EditingMode.Delete; // Remove the node or connection from alphabet and repaint. switch (_currentTab) { case AlphabetWindowTab.Nodes: Alphabet.RemoveNode(Alphabet.SelectedNode); break; case AlphabetWindowTab.Connections: Alphabet.RemoveConnection(Alphabet.SelectedConnection); break; } Repaint(); } EditorGUI.EndDisabledGroup(); EditorGUILayout.EndHorizontal(); }
// Native function for Editor Window. void OnGUI() { if (_isInitTabButton) { NodeTabButtonStyle = new GUIStyle(SampleStyle.GetButtonStyle(SampleStyle.ButtonType.Left, SampleStyle.ButtonColor.Blue)); ConnectionTabButtonStyle = new GUIStyle(SampleStyle.GetButtonStyle(SampleStyle.ButtonType.Right, SampleStyle.ButtonColor.Blue)); _isInitTabButton = false; } SampleStyle.DrawWindowBackground(SampleStyle.ColorGrey); // Buttons - Nodes or Connections. GUILayout.BeginVertical(SampleStyle.Frame(SampleStyle.ColorLightestGrey)); EditorGUILayout.BeginHorizontal(); if (GUILayout.Toggle(_currentTab == AlphabetWindowTab.Nodes, Languages.GetText("MissionAlphabet-Tab-Nodes"), NodeTabButtonStyle, SampleStyle.TabButtonHeight)) { _editingMode = (_currentTab != AlphabetWindowTab.Nodes) ? EditingMode.None : _editingMode; _currentTab = AlphabetWindowTab.Nodes; } if (GUILayout.Toggle(_currentTab == AlphabetWindowTab.Connections, Languages.GetText("MissionAlphabet-Tab-Connections"), ConnectionTabButtonStyle, SampleStyle.TabButtonHeight)) { _editingMode = (_currentTab != AlphabetWindowTab.Connections) ? EditingMode.None : _editingMode; _currentTab = AlphabetWindowTab.Connections; } EditorGUILayout.EndHorizontal(); // Toggle for nodes interface and connection interface. switch (_currentTab) { case AlphabetWindowTab.Nodes: // Header. GUILayout.Label(Languages.GetText("MissionAlphabet-List-Nodes"), SampleStyle.HeaderTwo, SampleStyle.HeaderTwoHeightLayout); // Content of nodes. LayoutNodesInterface(); break; case AlphabetWindowTab.Connections: // Header. GUILayout.Label(Languages.GetText("MissionAlphabet-List-Connections"), SampleStyle.HeaderTwo, SampleStyle.HeaderTwoHeightLayout); // Content of connections. LayoutConnectionsInterface(); break; } // Event controller. EventController(); GUILayout.EndVertical(); }
// Symbol list in node tab and connection tab. void LayoutSymbolList() { // Set the scroll position. _scrollPosition = GUILayout.BeginScrollView(_scrollPosition, SymbolList.HeightLayout); // Content of scroll area. _symbolListArea = Container.SymbolListArea; _symbolListArea.height = Alphabet.Nodes.Count >= Alphabet.Connections.Count ? (Alphabet.Nodes.Count + 1) * 50 : (Alphabet.Connections.Count + 1) * 50; GUILayout.BeginArea(_symbolListArea); _symbolListCanvas = Container.SymbolListCanvas; _symbolListCanvas.height = Alphabet.Nodes.Count >= Alphabet.Connections.Count ? (Alphabet.Nodes.Count + 1) * 50 : (Alphabet.Connections.Count + 1) * 50; SampleStyle.DrawGrid(_symbolListCanvas, SampleStyle.MinorGridSize, SampleStyle.MajorGridSize, SampleStyle.GridBackgroundColor, SampleStyle.GridColor); GUILayout.EndArea(); // Layout each symbols in list. switch (_currentTab) { case AlphabetWindowTab.Nodes: foreach (var node in Alphabet.Nodes) { Alphabet.DrawNodeInList(node); // Custom style to modify padding and margin for label. GUILayout.Label(node.ExpressName, SymbolList.NodeElement); } break; case AlphabetWindowTab.Connections: foreach (var connection in Alphabet.Connections) { Alphabet.DrawConnectionInList(connection); // Custom style to modify padding and margin for label. GUILayout.Label(connection.Name, SymbolList.ConnectionElement); } break; } GUILayout.EndScrollView(); // Get the Rect object from the last control when the event is Repaint. if (Event.current.type == EventType.Repaint) { _symbolListCanvasInWindow = GUILayoutUtility.GetLastRect(); } }
// Content of connections. void LayoutConnectionsInterface() { // Show the canvas, that is the list of nodes. LayoutSymbolList(); // Buttons for switching editing mode. LayoutEditingModeButtonGroup(); // Canvas for preview symbol. GUILayout.BeginArea(Container.SymbolPreviewArea); EditorGUI.DrawRect(Container.SymbolPreviewCanvas, SampleStyle.ColorDarkestGrey); // [TODO] This part (value assign) is temporary. _centerPosition.x = Screen.width / 2 - 25; _connection.StartPosition = _centerPosition; _centerPosition.x = Screen.width / 2 + 25; _connection.EndPosition = _centerPosition; // Draw this connection. _connection.Draw(); GUILayout.EndArea(); switch (_editingMode) { case EditingMode.Create: case EditingMode.Modify: // Content of property. GUILayout.BeginArea(Container.SymbolPropertiesArea); GUILayout.Space(SampleStyle.PaddingBlock); EditorGUILayout.BeginVertical(SampleStyle.Frame(SampleStyle.ColorLightestGrey)); // Information of connection. _symbolName = SampleStyle.TextFieldLabeled(Languages.GetText("MissionAlphabet-Name"), _symbolName, SampleStyle.TextFieldLabel, SampleStyle.TextField, SampleStyle.TextFieldHeight); _symbolDescription = SampleStyle.TextAreaLabeled(Languages.GetText("MissionAlphabet-Description"), _symbolDescription, SampleStyle.TextAreaLabel, SampleStyle.TextArea, SampleStyle.TextAreaHeight); _symbolOutlineColor = SampleStyle.ColorFieldLabeled(Languages.GetText("MissionAlphabet-OutlineColor"), _symbolOutlineColor, SampleStyle.ColorFieldLabel, SampleStyle.ColorField); _connectionType = (ConnectionType)SampleStyle.EnumPopupLabeled(Languages.GetText("MissionAlphabet-ConnectionType"), _connectionType, SampleStyle.EnumPopUpLabel, SampleStyle.EnumPopUp, SampleStyle.EnumPopUpHeight); _connectionArrowType = (ConnectionArrowType)SampleStyle.EnumPopupLabeled(Languages.GetText("MissionAlphabet-ArrowType"), _connectionArrowType, SampleStyle.EnumPopUpLabel, SampleStyle.EnumPopUp, SampleStyle.EnumPopUpHeight); // Update the conntection. UpdateConnection(_connection); // Show content of submition. LayoutSubmitionHint(); LayoutSubmitionButton(); EditorGUILayout.EndVertical(); GUILayout.EndArea(); break; } }
// Content of nodes. void LayoutNodesInterface() { // Show the canvas, that is the list of nodes. LayoutSymbolList(); // Buttons for switching editing mode. LayoutEditingModeButtonGroup(); // Canvas for preview symbol. GUILayout.BeginArea(Container.SymbolPreviewArea); EditorGUI.DrawRect(Container.SymbolPreviewCanvas, SampleStyle.ColorDarkestGrey); _centerPosition.x = Screen.width / 2; _node.Position = _centerPosition; _node.Draw(); GUILayout.EndArea(); // Area for input fields. switch (_editingMode) { case EditingMode.Create: case EditingMode.Modify: // Content of property. GUILayout.BeginArea(Container.SymbolPropertiesArea); GUILayout.Space(SampleStyle.PaddingBlock); EditorGUILayout.BeginVertical(SampleStyle.Frame(SampleStyle.ColorLightestGrey)); // Information of node. _symbolTerminal = (NodeTerminalType)SampleStyle.EnumPopupLabeled(Languages.GetText("MissionAlphabet-SymbolType"), _symbolTerminal, SampleStyle.EnumPopUpLabel, SampleStyle.EnumPopUp, SampleStyle.EnumPopUpHeight); _symbolName = SampleStyle.TextFieldLabeled(Languages.GetText("MissionAlphabet-Name"), _symbolName, SampleStyle.TextFieldLabel, SampleStyle.TextField, SampleStyle.TextFieldHeight); _symbolAbbreviation = SampleStyle.TextFieldLabeled(Languages.GetText("MissionAlphabet-Abbreviation"), _symbolAbbreviation, SampleStyle.TextFieldLabel, SampleStyle.TextField, SampleStyle.TextFieldHeight); _symbolDescription = SampleStyle.TextAreaLabeled(Languages.GetText("MissionAlphabet-Description"), _symbolDescription, SampleStyle.TextAreaLabel, SampleStyle.TextArea, SampleStyle.TextAreaHeight); _symbolOutlineColor = SampleStyle.ColorFieldLabeled(Languages.GetText("MissionAlphabet-OutlineColor"), _symbolOutlineColor, SampleStyle.ColorFieldLabel, SampleStyle.ColorField); _symbolFilledColor = SampleStyle.ColorFieldLabeled(Languages.GetText("MissionAlphabet-FilledColor"), _symbolFilledColor, SampleStyle.ColorFieldLabel, SampleStyle.ColorField); _symbolTextColor = SampleStyle.ColorFieldLabeled(Languages.GetText("MissionAlphabet-TextColor"), _symbolTextColor, SampleStyle.ColorFieldLabel, SampleStyle.ColorField); // Update the node. UpdateNode(_node); // Show content of submition. LayoutSubmitionHint(); LayoutSubmitionButton(); EditorGUILayout.EndVertical(); GUILayout.EndArea(); break; } }
// Canvas to draw current mission graph. private void LayoutMissionGraphCanvas() { GUILayout.BeginArea(Container.MissionGraphArea); GUILayout.BeginVertical(SampleStyle.Frame(SampleStyle.ColorLightestGrey)); _canvasScrollPosition = GUILayout.BeginScrollView(_canvasScrollPosition, GUILayout.Width(Screen.width - 15), GUILayout.Height(300 - 5)); Container.ResizeMissionGraphCanvas(_missionGraphCanvasSizeWidth, _missionGraphCanvasSizeHeight); SampleStyle.DrawGrid(Container.MissionGraphCanvas, SampleStyle.MinorGridSize, SampleStyle.MajorGridSize, SampleStyle.GridBackgroundColor, SampleStyle.GridColor); GUILayout.Label(string.Empty, Container.MissionGraphCanvasContent); // Connection foreach (Mission.GraphGrammarConnection connection in _currentGraph.Connections) { connection.Draw(); } // Node // Draw and get right bottom position. Vector2 positionRightBotton = new Vector2(0, 0); foreach (Mission.GraphGrammarNode node in _currentGraph.Nodes) { // Get right position if (node.PositionX > positionRightBotton.x) { positionRightBotton.x = node.PositionX; } // Get bottom position if (node.PositionY > positionRightBotton.y) { positionRightBotton.y = node.PositionY; } node.Draw(); } // Compare with screen size. _missionGraphCanvasSizeWidth = Mathf.Max((int)Container.MissionGraphArea.width, (int)positionRightBotton.x + 25); _missionGraphCanvasSizeHeight = Mathf.Max((int)Container.MissionGraphArea.height, (int)positionRightBotton.y + 25); GUILayout.EndScrollView(); GUILayout.EndVertical(); GUILayout.EndArea(); }
// Buttons for operating the graph. private void LayoutFunctionButtons() { GUILayout.BeginArea(Container.FunctionButtonsArea); GUILayout.BeginVertical(SampleStyle.Frame(SampleStyle.ColorLightestGrey)); GUILayout.BeginHorizontal(); // Random seed. Seed = SampleStyle.IntFieldLabeled(Languages.GetText("GenerateMission-Seed"), Seed, SampleStyle.IntFieldLabel, SampleStyle.IntField, SampleStyle.IntFieldHeight); if (GUILayout.Button(Languages.GetText("GenerateMission-Random"), SampleStyle.GetButtonStyle(SampleStyle.ButtonType.Regular, SampleStyle.ButtonColor.Blue), SampleStyle.ButtonHeight)) { Seed = Random.Range(1, 1000000); // Unfocus from the field. GUI.FocusControl("FocusToNothing"); } GUILayout.EndHorizontal(); // If error occur, disable apply button. EditorGUI.BeginDisabledGroup(_errorType != ErrorType.None); // Mission and Space Graph button. GUILayout.BeginHorizontal(); if (GUILayout.Button(Languages.GetText("GenerateMission-Initial"), SampleStyle.GetButtonStyle(SampleStyle.ButtonType.Left, SampleStyle.ButtonColor.Blue), SampleStyle.ButtonHeight)) { // Rewrite system initialization. Mission.RewriteSystem.Initial(Seed); _isRuleChanged = false; // Update the current graph. _currentGraph = Mission.RewriteSystem.TransformFromGraph(); // Setting root node for CreVoxAttach. Mission.CreVoxAttach.SetCreVoxNodeRoot(_currentGraph.Nodes[0]); } EditorGUI.BeginDisabledGroup(_isRuleChanged); if (GUILayout.Button(Languages.GetText("GenerateMission-Iterate"), SampleStyle.GetButtonStyle(SampleStyle.ButtonType.Mid, SampleStyle.ButtonColor.Blue), SampleStyle.ButtonHeight)) { // Rewrite system iteration. Mission.RewriteSystem.Iterate(); // Update the current graph. _currentGraph = Mission.RewriteSystem.TransformFromGraph(); // Setting root node for CreVoxAttach. Mission.CreVoxAttach.SetCreVoxNodeRoot(_currentGraph.Nodes[0]); } if (GUILayout.Button(Languages.GetText("GenerateMission-Complete"), SampleStyle.GetButtonStyle(SampleStyle.ButtonType.Right, SampleStyle.ButtonColor.Blue), SampleStyle.ButtonHeight)) { var stopWatch = System.Diagnostics.Stopwatch.StartNew(); // Iterate until finish. while ( ( // Still exist non-terminal nodes. _currentGraph.Nodes.Exists(n => n.Terminal == Mission.NodeTerminalType.NonTerminal) // Have to exhauste all rules that set minimum. || Mission.RewriteSystem.Rules.Sum(r => r.QuantityLimitMin) > 0 ) // Time limit is 3,000 ms. && stopWatch.ElapsedMilliseconds <= 3000 ) { // Rewrite system iteration. Mission.RewriteSystem.Iterate(); // Update the current graph. _currentGraph = Mission.RewriteSystem.TransformFromGraph(); } stopWatch.Stop(); // Setting root node for CreVoxAttach. Mission.CreVoxAttach.SetCreVoxNodeRoot(_currentGraph.Nodes[0]); } EditorGUI.EndDisabledGroup(); GUILayout.EndHorizontal(); EditorGUI.EndDisabledGroup(); GUILayout.EndVertical(); GUILayout.EndArea(); }
private void LayoutMissionGroupList() { GUILayout.BeginArea(Container.MissionGroupListArea); GUILayout.BeginVertical(SampleStyle.Frame(SampleStyle.ColorLightestGrey)); // HelpBox EditorGUILayout.HelpBox(FormValidation(), MessageType.Info, true); // Check boxies. _scrollView = EditorGUILayout.BeginScrollView(_scrollView, GUILayout.Height(150)); int indentLevel = EditorGUI.indentLevel; foreach (Mission.MissionGroup missionGroup in Mission.MissionGrammar.Groups) { EditorGUI.indentLevel = 0; GUILayout.BeginHorizontal(); missionGroup.Selected = EditorGUILayout.Foldout(missionGroup.Selected, missionGroup.Name, SampleStyle.FoldoutLabel); tempGroupEnable = missionGroup.AllEnable; missionGroup.AllEnable = EditorGUILayout.Toggle("", missionGroup.AllEnable); if (tempGroupEnable != missionGroup.AllEnable) { _isRuleChanged = true; foreach (Mission.MissionRule missionRule in missionGroup.Rules) { missionRule.Enable = missionGroup.AllEnable & missionRule.Valid; } } missionGroup.AllEnable = true; foreach (Mission.MissionRule missionRule in missionGroup.Rules) { if (missionRule.Valid && missionGroup.AllEnable && !missionRule.Enable) { missionGroup.AllEnable = false; } } GUILayout.EndHorizontal(); if (missionGroup.Selected) { foreach (Mission.MissionRule missionRule in missionGroup.Rules) { EditorGUI.indentLevel = 2; tempRuleEnable = missionRule.Enable; GUILayout.BeginHorizontal(); // If not legal disable button. EditorGUI.BeginDisabledGroup(!missionRule.Valid); missionRule.Enable = EditorGUILayout.Toggle(missionRule.Name, missionRule.Enable); EditorGUI.EndDisabledGroup(); // Hint user this rule is disable because it's illegal. if (!missionRule.Valid) { EditorGUILayout.LabelField(Languages.GetText("GenerateMission-IllegalRule")); } GUILayout.EndHorizontal(); if (tempRuleEnable != missionRule.Enable) { _isRuleChanged = true; } if (missionRule.Valid && missionGroup.AllEnable && !missionRule.Enable) { missionGroup.AllEnable = false; } } } } EditorGUILayout.EndScrollView(); GUILayout.EndVertical(); GUILayout.EndArea(); }
void OnGUI() { Languages.Initialize(); _description = Languages.GetText("Index-About"); SampleStyle.DrawWindowBackground(SampleStyle.ColorGrey); GUILayout.BeginArea(Container.IndexWindowSplashCanvasArea); EditorGUI.DrawPreviewTexture(Container.IndexWindowSplashCanvasArea, SampleStyle.SplashImage); GUILayout.EndArea(); GUILayout.BeginArea(Container.IndexWindowButtonsCanvasArea, SampleStyle.Box); GUILayout.BeginVertical(SampleStyle.Frame(SampleStyle.ColorLightestGrey)); GUILayout.Label(_description, EditorStyles.wordWrappedLabel); GUILayout.BeginHorizontal(); if (GUILayout.Button(Languages.GetText("Index-CreateLevel"), SampleStyle.ButtonLeft, SampleStyle.MainButtonHeight)) { // Safety. if (EditorUtility.DisplayDialog("Create new level.", "Are you sure want to create a new level, this will overwrite the origin level?", "Yes", "No")) { // Initialization. LevelSettingsWindow.Initial(); // Reset the windows of mission grammar system. MissionGrammarSystem.AlphabetWindow.Initialize(); MissionGrammarSystem.RulesWindow.Initialize(); GraphGeneration.MissionGraphWindow.Initialize(); // Reset mission alphabet, mission grammar and rewrite system. MissionGrammarSystem.Alphabet.Initial(); MissionGrammarSystem.MissionGrammar.Initial(); MissionGrammarSystem.RewriteSystem.Initial(GraphGeneration.MissionGraphWindow.Seed); } } if (GUILayout.Button(Languages.GetText("Index-ImportLevel"), SampleStyle.ButtonMid, SampleStyle.MainButtonHeight)) { // Import Level. } if (GUILayout.Button(Languages.GetText("Index-ImportRewrite"), SampleStyle.ButtonMid, SampleStyle.MainButtonHeight)) { // Import Rewrite. string path = EditorUtility.OpenFilePanel("Import xml", "", "xml"); if (path.Length > 0) { DungeonLevel.OperateXML.Unserialize.UnserializeFromXml(path); DungeonWindow.ShowMissionAlphabetWindow(); DungeonWindow.ShowMissionRulesWindow(); DungeonWindow.ShowGenerateMissionWindow(); } } if (GUILayout.Button(Languages.GetText("Index-ExportLevel"), SampleStyle.ButtonRight, SampleStyle.MainButtonHeight)) { // Export Level. string path = EditorUtility.SaveFilePanel("Export xml", "", "Level.xml", "xml"); if (path.Length > 0) { DungeonLevel.OperateXML.Serialize.SerializeToXml(path); } } GUILayout.EndHorizontal(); GUILayout.EndVertical(); GUILayout.EndArea(); }