public void BakeDropDown(DropdownLocalizationSetter setter)
        {
            var dropdown = new ParadoxDropdownLocalizationData();

            _objectNames.Add(setter.name);

            dropdown.data = setter.GetDropdownOptions().ToArray();
            dropdown.id   = setter.GetLocalizationID().ToByteArray();

            _cacheData.Add(dropdown);
            EditorUtility.SetDirty(setter);
            setter          = null;
            _addingDropdown = false;

            _endElement = _cacheData.Count - (_endElement + 5) <= 0 ? _cacheData.Count : _endElement + 5;
            EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene());

            Repaint();
        }
        private void DataView()
        {
            GUILayout.Label($"Start: {_startElement}, End: {_endElement}");

            EditorGUILayout.BeginVertical();
            _pos = EditorGUILayout.BeginScrollView(_pos, GUILayout.Width(_width));

            if (_cacheData == null || !_cacheData.Any())
            {
                GUILayout.BeginVertical("BOX");

                GUILayout.Label("The Language data don't have any data.");

                GUILayout.EndVertical();
            }

            else
            {
                if (_cacheData.Count > 5)
                {
                    GUILayout.BeginHorizontal();

                    if (_startElement > 0)
                    {
                        if (GUILayout.Button("<< Previous"))
                        {
                            _endElement    = _endElement < _cacheData.Count ? _endElement - 5 : _startElement;
                            _startElement -= 5;
                        }
                    }

                    GUILayout.FlexibleSpace();

                    if (_endElement < _cacheData.Count)
                    {
                        if (GUILayout.Button("Next >>"))
                        {
                            _startElement += 5;
                            _endElement    = _cacheData.Count - (_endElement + 5) <= 0 ? _cacheData.Count : _endElement + 5;
                        }
                    }

                    GUILayout.EndHorizontal();
                }

                GUILayout.Space(10);

                string names = string.Empty;

                for (int i = 0; i < _objectNames.Count; i++)
                {
                    names += i == _objectNames.Count ? $"{_objectNames[i]}.": $"{_objectNames[i]}, ";
                }

                GUILayout.BeginVertical("BOX");
                GUILayout.Label($"Objects baked: {names}", _description);
                GUILayout.EndVertical();

                ParadoxAnswerNodeLocalizationData answerData;
                ParadoxTextNodeLocalizationData   textData;
                ParadoxDropdownLocalizationData   dropdownData;
                ParadoxTextLocalizationData       simpleData;


                for (int i = _startElement; i < _endElement; i++)
                {
                    GUILayout.BeginVertical("BOX");

                    GUILayout.Label($"ID: {new Guid(_cacheData[i].id).ToString()}");

                    if (_cacheData[i].filterType == ELanguageGraphFilter.AnswerNode)
                    {
                        answerData      = (ParadoxAnswerNodeLocalizationData)_cacheData[i];
                        answerData.data = GUILayout.TextField(answerData.data);
                    }

                    else if (_cacheData[i].filterType == ELanguageGraphFilter.TextNode)
                    {
                        textData = (ParadoxTextNodeLocalizationData)_cacheData[i];

                        GUILayout.BeginVertical("BOX");
                        ParadoxTextNodeData nodeData;

                        for (int x = 0; x < textData.data.Count; x++)
                        {
                            nodeData = textData.data[x];

                            if (nodeData.IsDialogue)
                            {
                                GUILayout.Label(textData.data[x].Character.name);
                            }

                            nodeData.Text    = GUILayout.TextArea(nodeData.Text);
                            textData.data[x] = nodeData;

                            GUILayout.Space(2);
                        }

                        GUILayout.EndVertical();
                    }

                    else if (_cacheData[i].filterType == ELanguageGraphFilter.Dropdown)
                    {
                        dropdownData = (ParadoxDropdownLocalizationData)_cacheData[i];

                        for (int y = 0; y < dropdownData.data.Length; y++)
                        {
                            dropdownData.data[y] = GUILayout.TextField(dropdownData.data[y]);
                            GUILayout.Space(2);
                        }
                    }

                    else
                    {
                        simpleData = (ParadoxTextLocalizationData)_cacheData[i];

                        GUILayout.BeginHorizontal();

                        GUILayout.Label("Text:");
                        simpleData.data = GUILayout.TextField(simpleData.data);

                        GUILayout.EndHorizontal();
                    }

                    if (GUILayout.Button("Unsuscribe data"))
                    {
                        int tempI = i;
                        OnRepaint += () => _cacheData.RemoveAt(tempI);
                    }

                    GUILayout.EndVertical();

                    GUILayout.Space(5);
                }
            }

            GUILayout.Space(10);

            if (_addingGraph)
            {
                GUILayout.Label("Graph:");
                _graphToAdd = (EngineGraph)EditorGUILayout.ObjectField(_graphToAdd, typeof(EngineGraph), false);


                GUILayout.BeginHorizontal("BOX");

                if (GUILayout.Button("Bake graph data"))
                {
                    if (_graphToAdd == null)
                    {
                        Debug.Log("Paradox Engine: The graph field can't be null.");
                        return;
                    }

                    BakeGraph();
                }

                if (GUILayout.Button("Cancel"))
                {
                    _graphToAdd  = null;
                    _addingGraph = false;
                }

                GUILayout.EndHorizontal();
            }

            else if (_addingText)
            {
                GUILayout.Label("Text component:");
                _textToAdd = (TextLocalizationSetter)EditorGUILayout.ObjectField(_textToAdd, typeof(TextLocalizationSetter), true);

                GUILayout.BeginHorizontal("BOX");

                if (GUILayout.Button("Bake text data"))
                {
                    if (_textToAdd == null)
                    {
                        Debug.Log("Paradox Engine: The text field can't be null.");
                        return;
                    }

                    if (_cacheData.Any(x => new Guid(x.id).Equals(_textToAdd.GetLocalizationID())))
                    {
                        Debug.LogError("Paradox Engine: The text is already in the data.");
                        return;
                    }

                    BakeText();
                }

                if (GUILayout.Button("Bake all"))
                {
                    var temp = GameObject.FindObjectsOfType <TextLocalizationSetter>().ToList();

                    for (int i = 0; i < temp.Count; i++)
                    {
                        if (_cacheData.Any(x => new Guid(x.id).Equals(temp[i].GetLocalizationID())))
                        {
                            Debug.LogError("Paradox Engine: The text is already in the data.");
                            continue;
                        }

                        BakeText(temp[i]);
                    }
                }

                if (GUILayout.Button("Cancel"))
                {
                    _textToAdd  = null;
                    _addingText = false;
                }

                GUILayout.EndHorizontal();
            }

            else if (_addingDropdown)
            {
                GUILayout.Label("Dropdown component:");
                _dropwdownToAdd = (DropdownLocalizationSetter)EditorGUILayout.ObjectField(_dropwdownToAdd, typeof(DropdownLocalizationSetter), true);

                GUILayout.BeginHorizontal("BOX");

                if (GUILayout.Button("Bake dropdown data"))
                {
                    if (_dropwdownToAdd == null)
                    {
                        Debug.Log("Paradox Engine: The text field can't be null.");
                        return;
                    }

                    if (_cacheData.Any(x => new Guid(x.id).Equals(_dropwdownToAdd.GetLocalizationID())))
                    {
                        Debug.LogError("Paradox Engine: The dropdown is already in the data.");
                        return;
                    }

                    BakeDropDown();
                }

                if (GUILayout.Button("Bake all"))
                {
                    var temp = GameObject.FindObjectsOfType <DropdownLocalizationSetter>().ToList();

                    for (int i = 0; i < temp.Count; i++)
                    {
                        if (_cacheData.Any(x => new Guid(x.id).Equals(temp[i].GetLocalizationID())))
                        {
                            Debug.LogError("Paradox Engine: The dropdown is already in the data.");
                            continue;
                        }

                        BakeDropDown(temp[i]);
                    }
                }

                if (GUILayout.Button("Cancel"))
                {
                    _dropwdownToAdd = null;
                    _addingDropdown = false;
                }

                GUILayout.EndHorizontal();
            }

            else
            {
                if (GUILayout.Button("Add Graph"))
                {
                    _addingGraph = true;
                }

                GUILayout.Space(5);

                if (GUILayout.Button("Add Text component"))
                {
                    _addingText = true;
                }

                GUILayout.Space(5);

                if (GUILayout.Button("Add Dropddown component"))
                {
                    _addingDropdown = true;
                }
            }

            EditorGUILayout.EndScrollView();
            EditorGUILayout.EndVertical();

            OnRepaint();
            OnRepaint = delegate { };
        }