Exemple #1
0
 public static void Initialize()
 {
     // Initial whole fields in window.
     _symbolName         = string.Empty;
     _symbolAbbreviation = string.Empty;
     _symbolDescription  = string.Empty;
     _symbolOutlineColor = Color.black;
     _symbolFilledColor  = Color.white;
     _symbolTextColor    = Color.black;
     _symbolTerminal     = NodeTerminalType.Terminal;
     // Set the first values.
     _currentTab               = AlphabetWindowTab.Nodes;
     _isInitTabButton          = true;
     _editingMode              = EditingMode.None;
     _scrollPosition           = Vector2.zero;
     _messageHint              = string.Empty;
     _messageType              = MessageType.Info;
     _node                     = new GraphGrammarNode(NodeTerminalType.Terminal);
     _connection               = new GraphGrammarConnection();
     _symbolListCanvas         = new Rect(0, 0, Screen.width, Screen.height);
     _symbolListCanvasInWindow = _symbolListCanvas;
     _symbolListArea           = new Rect(0, 0, Screen.width, Screen.height);
     _centerPosition           = new Vector2(Screen.width / 2, 75);
     _connectionType           = ConnectionType.WeakRequirement;
     _connectionArrowType      = ConnectionArrowType.Normal;
     // Revoke all.
     Alphabet.RevokeAllSelected();
 }
Exemple #2
0
        // 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;
            }
        }
Exemple #3
0
        // 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();
        }
Exemple #4
0
        // [TODO] Temporary. The click event listener for list canvas.
        void OnClickedElementInList(float y)
        {
            if (y > 0 && y < SymbolList.Height)
            {
                // [TODO] This is temporary to assign value, will promote it soon.
                int index = (int)(y + _scrollPosition.y) / 50;
                Alphabet.RevokeAllSelected();
                switch (_currentTab)
                {
                case AlphabetWindowTab.Nodes:
                    if (index < Alphabet.Nodes.Count)
                    {
                        Alphabet.Nodes[index].Selected = true;
                        UpdateFields(Alphabet.Nodes[index]);
                    }
                    else
                    {
                        // Initial the fields.
                        InitFields();
                    }
                    break;

                case AlphabetWindowTab.Connections:
                    if (index < Alphabet.Connections.Count)
                    {
                        Alphabet.Connections[index].Selected = true;
                        UpdateFields(Alphabet.Connections[index]);
                    }
                    else
                    {
                        // Initial the fields.
                        InitFields();
                    }
                    break;
                }
                // Switch to the normal mode.
                _editingMode = EditingMode.None;
            }
        }