diff --git a/.gitignore b/.gitignore index f771725..6b905c0 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ .idea/ .vscode/ _ReSharper.CSharp/ +.sln #svn */.svn/ @@ -41,3 +42,4 @@ obj/ Temp/ yoo /Assets/DemoGame/GameScript/Hotfix/Generate +/Packages diff --git a/Assets/ZXL/Scripts/FileSystem.meta b/Assets/ZXL/Scripts/FileSystem.meta new file mode 100644 index 0000000..3026ebe --- /dev/null +++ b/Assets/ZXL/Scripts/FileSystem.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4df538268f04411baf7e6ed3f6f30196 +timeCreated: 1734530869 \ No newline at end of file diff --git a/Assets/ZXL/Scripts/FileSystem/DirectoryInfo.cs b/Assets/ZXL/Scripts/FileSystem/DirectoryInfo.cs new file mode 100644 index 0000000..93c5fb8 --- /dev/null +++ b/Assets/ZXL/Scripts/FileSystem/DirectoryInfo.cs @@ -0,0 +1,42 @@ +using System.Collections.Generic; + +namespace ZXLT.FileSystem +{ + public sealed class DirectoryInfo : FileSystemInfo + { + // List directories = new List(); + // List files = new List(); + + public override bool Exists { get; } + public override string Name => _name; + public override FileSystemInfoType FileSystemInfoType { get; } + + public DirectoryInfo Parent + { + get + { + var parentPath = FullPath.Split("\\")[^1]; + var directoryInfo = new DirectoryInfo(System.IO.Path.GetFullPath(parentPath)); + return directoryInfo; + } + } + + public DirectoryInfo Root => new DirectoryInfo(System.IO.Path.GetPathRoot(this.FullPath)); + + public DirectoryInfo(string path) + { + FullPath = System.IO.Path.GetFullPath(path); + _name = System.IO.Path.GetDirectoryName(path); + } + + // public DirectoryInfo[] GetDirectories() + // { + // return directories.ToArray(); + // } + // + // public FileInfo[] GetFiles() + // { + // return files.ToArray(); + // } + } +} \ No newline at end of file diff --git a/Assets/ZXL/Scripts/FileSystem/DirectoryInfo.cs.meta b/Assets/ZXL/Scripts/FileSystem/DirectoryInfo.cs.meta new file mode 100644 index 0000000..2467ec0 --- /dev/null +++ b/Assets/ZXL/Scripts/FileSystem/DirectoryInfo.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 65370db5c69842b881243c312e0c3ce2 +timeCreated: 1734532009 \ No newline at end of file diff --git a/Assets/ZXL/Scripts/FileSystem/FileInfo.cs b/Assets/ZXL/Scripts/FileSystem/FileInfo.cs new file mode 100644 index 0000000..2ff9529 --- /dev/null +++ b/Assets/ZXL/Scripts/FileSystem/FileInfo.cs @@ -0,0 +1,31 @@ +using System; +using System.IO; + +namespace ZXLT.FileSystem +{ + public sealed class FileInfo : FileSystemInfo + { + public string Extension => Path.GetExtension(this.FullName); + public override bool Exists { get; } + public override string Name => _name; + public override FileSystemInfoType FileSystemInfoType { get; } + public string? DirectoryName => Path.GetDirectoryName(this.FullPath); + + public DirectoryInfo Directory + { + get + { + string directoryName = this.DirectoryName; + return new DirectoryInfo(directoryName); + } + } + + public FileInfo(string fileName) + { + fileName = fileName ?? throw new ArgumentNullException(nameof(fileName)); + _name = Path.GetFileName(fileName); + this.FullPath = Path.GetFullPath(fileName); + FileSystemInfoType = FileSystemInfoType.File; + } + } +} \ No newline at end of file diff --git a/Assets/ZXL/Scripts/FileSystem/FileInfo.cs.meta b/Assets/ZXL/Scripts/FileSystem/FileInfo.cs.meta new file mode 100644 index 0000000..5a8eb6b --- /dev/null +++ b/Assets/ZXL/Scripts/FileSystem/FileInfo.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: fdedcd6447e4414195754ba8f1f67072 +timeCreated: 1734532019 \ No newline at end of file diff --git a/Assets/ZXL/Scripts/FileSystem/FileSystem.cs b/Assets/ZXL/Scripts/FileSystem/FileSystem.cs new file mode 100644 index 0000000..e171212 --- /dev/null +++ b/Assets/ZXL/Scripts/FileSystem/FileSystem.cs @@ -0,0 +1,126 @@ +using System; +using System.Collections.Generic; +using ZXL.Helper; + +namespace ZXLT.FileSystem +{ + class FileBase + { + } + + class Directory : FileBase + { + DirectoryInfo directoryInfo; + + List directories = new List(); + List files = new List(); + + public Directory(DirectoryInfo directoryInfo) + { + this.directoryInfo = directoryInfo; + } + + public void AddDirectory(Directory dir) + { + directories.Add(dir); + } + + public void AddFile(File file) + { + files.Add(file); + } + + public void RemoveDirectory(Directory dir) + { + directories.Remove(dir); + } + + public void RemoveFile(File file) + { + files.Remove(file); + } + + public void Clear() + { + directories.Clear(); + } + } + + class File : FileBase + { + FileInfo fileInfo; + + public File(FileInfo fileInfo) + { + this.fileInfo = fileInfo; + } + } + + interface IFileSystem + { + event Action OnUpdateFileSystem; + void CreateDirectory(string path); + void DeleteDirectory(string path); + void DeleteFile(string path); + void MoveDirectory(string sourcePath, string destPath); + void MoveFile(string sourcePath, string destPath); + void RenameDirectory(string sourcePath, string destPath); + void RenameFile(string sourcePath, string destPath); + } + + public class FileSystem : IFileSystem + { + Directory rootDirectory; + SortedDictionary fileBases = new SortedDictionary(); + public event Action OnUpdateFileSystem; + + void UpdateFileSystem(FileSystemInfo systemInfo) + { + OnUpdateFileSystem?.Invoke(systemInfo); + } + + public void CreateDirectory(string path) + { + var directory = new Directory(new DirectoryInfo(path)); + fileBases.Add(path, directory); + FileHelper.CreateDirectory(path); + } + + public void CreateFile(string path) + { + var file = new File(new FileInfo(path)); + fileBases.Add(path, file); + FileHelper.CreateDirectory(path); + } + + public void DeleteDirectory(string path) + { + throw new NotImplementedException(); + } + + public void DeleteFile(string path) + { + throw new NotImplementedException(); + } + + public void MoveDirectory(string sourcePath, string destPath) + { + throw new NotImplementedException(); + } + + public void MoveFile(string sourcePath, string destPath) + { + throw new NotImplementedException(); + } + + public void RenameDirectory(string sourcePath, string destPath) + { + throw new NotImplementedException(); + } + + public void RenameFile(string sourcePath, string destPath) + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/Assets/ZXL/Scripts/FileSystem/FileSystem.cs.meta b/Assets/ZXL/Scripts/FileSystem/FileSystem.cs.meta new file mode 100644 index 0000000..21f4a27 --- /dev/null +++ b/Assets/ZXL/Scripts/FileSystem/FileSystem.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a1c6853ef5a44b3986a6a3854cc7ac1d +timeCreated: 1734530888 \ No newline at end of file diff --git a/Assets/ZXL/Scripts/FileSystem/FileSystemInfo.cs b/Assets/ZXL/Scripts/FileSystem/FileSystemInfo.cs new file mode 100644 index 0000000..77518b5 --- /dev/null +++ b/Assets/ZXL/Scripts/FileSystem/FileSystemInfo.cs @@ -0,0 +1,21 @@ +using System; + +namespace ZXLT.FileSystem +{ + public enum FileSystemInfoType + { + File, + Directory, + } + + public abstract class FileSystemInfo + { + protected string _name; + protected string FullPath; + public DateTime CreationTime { get; } + public abstract bool Exists { get; } + public abstract string Name { get; } + public virtual string FullName => FullPath; + public abstract FileSystemInfoType FileSystemInfoType { get; } + } +} \ No newline at end of file diff --git a/Assets/ZXL/Scripts/FileSystem/FileSystemInfo.cs.meta b/Assets/ZXL/Scripts/FileSystem/FileSystemInfo.cs.meta new file mode 100644 index 0000000..64d2f30 --- /dev/null +++ b/Assets/ZXL/Scripts/FileSystem/FileSystemInfo.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f977646b313a4fa3a7a98a2454009041 +timeCreated: 1734532034 \ No newline at end of file diff --git a/Assets/ZXL/Scripts/Manager/ZFileSystem.cs b/Assets/ZXL/Scripts/Manager/ZFileSystem.cs deleted file mode 100644 index c5151f9..0000000 --- a/Assets/ZXL/Scripts/Manager/ZFileSystem.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace ZXL.Manager -{ - public class ZFileSystem - { - - } -} \ No newline at end of file diff --git a/Assets/ZXL/Scripts/Manager/ZFileSystem.cs.meta b/Assets/ZXL/Scripts/Manager/ZFileSystem.cs.meta deleted file mode 100644 index 9ce9729..0000000 --- a/Assets/ZXL/Scripts/Manager/ZFileSystem.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 63f2843889a64090a60431d1d84b908c -timeCreated: 1734501412 \ No newline at end of file diff --git a/EditorTool3D.sln.DotSettings.user b/EditorTool3D.sln.DotSettings.user index 435a05b..013f128 100644 --- a/EditorTool3D.sln.DotSettings.user +++ b/EditorTool3D.sln.DotSettings.user @@ -1,4 +1,7 @@  ForceIncluded + ForceIncluded ForceIncluded + ForceIncluded + ForceIncluded ForceIncluded \ No newline at end of file