public void LoadStorage(string path, Storage.EncodingType encodingType) { _capsuleUIItems.Clear(); IStorageCapsule[] storageCapsuleInstances = GetStorageCapsuleInstances(); _currentlyViewingStorage = new Storage(path, encodingType, storageCapsuleInstances); _capsuleUIItems.AddRange(LoadCapsuleItems(path, encodingType, storageCapsuleInstances)); }
public static CorruptionState ValidateStorage(string storagePath, Storage.EncodingType encodingType, CorruptionState openOnState = CorruptionState.Warning | CorruptionState.Error) { CorruptionState worstCorruptionState = CorruptionState.None; IStorageCapsule[] capsuleInstances = GetStorageCapsuleInstances(); CapsuleItem[] capsuleItems = LoadCapsuleItems(storagePath, encodingType, capsuleInstances); for (int i = 0; i < capsuleItems.Length; i++) { CapsuleItem capsuleItem = capsuleItems[i]; if (capsuleItem.StorageItem.IsEmpty) { continue; } if (worstCorruptionState < capsuleItem.CorruptionState) { worstCorruptionState = capsuleItem.CorruptionState; } if (openOnState.HasFlag(worstCorruptionState)) { OpenWindow().LoadStorage(storagePath, encodingType); } } return(worstCorruptionState); }
protected void OnGUI() { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Save Files Directory Path:"); _pathInputValue = EditorGUILayout.TextField(_pathInputValue); if (GUILayout.Button("Try Open Location")) { string path = Storage.GetPathToStorage(_pathInputValue); if (System.IO.Directory.Exists(path)) { EditorUtility.RevealInFinder(path); } else { Debug.LogWarning($"Path {path} does not exist!"); } } EditorGUILayout.EndHorizontal(); EditorGUILayout.LabelField("Encoding Type:"); _encodingTypeInputValue = (Storage.EncodingType)EditorGUILayout.EnumPopup(_encodingTypeInputValue); if (GUILayout.Button("Load Storage")) { LoadStorage(_pathInputValue, _encodingTypeInputValue); } if (_currentlyViewingStorage != null) { if (GUILayout.Button("Refresh")) { LoadStorage(_currentlyViewingStorage.StorageLocationPath, _currentlyViewingStorage.EncodingOption); } } if (_capsuleUIItems != null) { _scroll = EditorGUILayout.BeginScrollView(_scroll); for (int i = 0; i < _capsuleUIItems.Count; i++) { _capsuleUIItems[i].RenderGUI(0); } EditorGUILayout.EndScrollView(); } }
private static CapsuleItem[] LoadCapsuleItems(string storagePath, Storage.EncodingType encodingType, IStorageCapsule[] storageCapsules) { List <CapsuleItem> loadedItems = new List <CapsuleItem>(); Storage storage = new Storage(storagePath, encodingType, storageCapsules); List <ReadStorageResult> results = storage.Read(storageCapsules.Select(x => x.ID).ToArray()); for (int i = 0; i < results.Count; i++) { ReadStorageResult result = results[i]; IStorageCapsule storageCapsuleInstance = storageCapsules.FirstOrDefault(x => x.ID == result.CapsuleID); if (storageCapsuleInstance != null) { Dictionary <string, StorageKeyEntry> keyEntries = new Dictionary <string, StorageKeyEntry>(); if (storageCapsuleInstance != null) { keyEntries = GetKeyEntries(storageCapsuleInstance.GetType()); } loadedItems.Add(new CapsuleItem(result.CapsuleID, result.CapsuleStorage, keyEntries)); } } return(loadedItems.ToArray()); }