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 { }; }