public void DrawCommonList() { GUILayout.BeginArea(new Rect(10, 45, 500, 100)); var rect = EditorGUILayout.BeginVertical(); EditorGUILayout.LabelField(TabName, EditorStyles.boldLabel); SelectedItemId = EditorGUILayout.IntPopup(ListName, SelectedItemId, PopupDataList.Select(x => x.Name).ToArray(), PopupDataList.Select(x => x.Id).ToArray()); if (SelectedItemId > 0) { IsEmpty = false; string tagName = PopupDataList.Where(x => x.Id == SelectedItemId).Select(x => x.TagName).FirstOrDefault(); if (!string.IsNullOrEmpty(tagName)) { Data = (T)DataDictionary.Data.Values.Cast <IData>().SingleOrDefault(x => x.TagName == tagName); } else { Debug.LogError("Tag Name is null or empty"); } } if (SelectedItemId == 0) { IsEmpty = true; } else if (!IsNew && SelectedItemId == 0) { Clear(); } if (GUI.Button(new Rect(rect.x, rect.y + rect.height, 50, 25), "New")) { New(); SelectedItemId = 0; } if (IsNew) { if (GUI.Button(new Rect(rect.x + 50, rect.y + rect.height, 50, 25), "Save")) { Save(Data); } } else if (!IsEmpty) { if (GUI.Button(new Rect(rect.x + 50, rect.y + rect.height, 50, 25), "Update")) { Save(Data); } } EditorGUILayout.EndVertical(); GUILayout.EndArea(); }
public void Save(T data) { if (!DataDictionary.Data.ContainsKey(((IData)data).TagName)) { DataDictionary.Add(((IData)data).TagName, data); JsonData.SaveJson(Constants.CountriesFileName, DataDictionary, Application.dataPath); int maxId = PopupDataList.Select(x => x.Id).Max(); PopupDataList.Add(new PopupData { Id = maxId, Name = ((IData)data).Name, TagName = ((IData)data).TagName }); SelectedItemId = maxId; IsNew = false; } }
public void Load() { DataDictionary = DataManager.Load <StaticDictionary <T> >(FileName, Application.dataPath); if (DataDictionary == null) { DataDictionary = new StaticDictionary <T>(); } PopupDataList.Add(new PopupData { Id = 0, Name = "Empty", TagName = "empty" }); int count = 1; foreach (var data in DataDictionary.Data) { PopupDataList.Add(new PopupData { Id = count, Name = ((IData)data.Value).Name, TagName = ((IData)data.Value).TagName }); count++; } }