using UnityEngine; namespace Crosstales.FB.Wrapper { /// Base class for custom file browsers. public abstract class BaseCustomFileBrowser : MonoBehaviour, IFileBrowser { #region Variables protected byte[] openSingleFileData; protected string lastOpenFile; #endregion #region Implemented methods public abstract bool canOpenFile { get; } public abstract bool canOpenFolder { get; } public abstract bool canSaveFile { get; } public abstract bool canOpenMultipleFiles { get; } public abstract bool canOpenMultipleFolders { get; } public abstract bool isPlatformSupported { get; } public abstract bool isWorkingInEditor { get; } public abstract string CurrentOpenSingleFile { get; set; } public abstract string[] CurrentOpenFiles { get; set; } public abstract string CurrentOpenSingleFolder { get; set; } public abstract string[] CurrentOpenFolders { get; set; } public abstract string CurrentSaveFile { get; set; } public virtual byte[] CurrentOpenSingleFileData { get { if (!string.IsNullOrEmpty(CurrentOpenSingleFile) && CurrentOpenSingleFile != lastOpenFile) { lastOpenFile = CurrentOpenSingleFile; try { openSingleFileData = Crosstales.Common.Util.FileHelper.ReadAllBytes(CurrentOpenSingleFile); } catch (System.Exception ex) { openSingleFileData = null; //if (Util.Config.DEBUG) Debug.LogWarning($"Could not read file: {CurrentOpenSingleFile} - {ex}"); } } return openSingleFileData; } } public virtual byte[] CurrentSaveFileData { get; set; } public string OpenSingleFile(string title, string directory, string defaultName, params ExtensionFilter[] extensions) { string[] files = OpenFiles(title, directory, defaultName, false, extensions); string file = files?.Length > 0 ? files[0] : string.Empty; return file; } public abstract string[] OpenFiles(string title, string directory, string defaultName, bool multiselect, params ExtensionFilter[] extensions); public string OpenSingleFolder(string title, string directory) { string[] folders = OpenFolders(title, directory, false); return folders?.Length > 0 ? folders[0] : string.Empty; } public abstract string[] OpenFolders(string title, string directory, bool multiselect); public abstract string SaveFile(string title, string directory, string defaultName, params ExtensionFilter[] extensions); public abstract void OpenFilesAsync(string title, string directory, string defaultName, bool multiselect, ExtensionFilter[] extensions, System.Action cb); public abstract void OpenFoldersAsync(string title, string directory, bool multiselect, System.Action cb); public abstract void SaveFileAsync(string title, string directory, string defaultName, ExtensionFilter[] extensions, System.Action cb); #endregion #region Protected methods /* protected void resetOpenFiles(params string[] paths) { CurrentOpenFiles = System.Array.Empty(); CurrentOpenSingleFile = string.Empty; } protected void resetOpenFolders(params string[] paths) { CurrentOpenFolders = System.Array.Empty(); CurrentOpenSingleFolder = string.Empty; } protected void resetSaveFile(params string[] paths) { CurrentSaveFile = string.Empty; } */ #endregion } } // © 2020-2023 crosstales LLC (https://www.crosstales.com)