diff --git a/.gitignore b/.gitignore index 2f3dc51..6fb56e4 100644 --- a/.gitignore +++ b/.gitignore @@ -73,6 +73,9 @@ crashlytics-build.properties /[Aa]ssets/[Ss]treamingAssets/aa/* +# Excel +~$*.xlsx +~$*.xlsx.meta /.vs diff --git a/Assets/ExcelResolver.meta b/Assets/ExcelResolver.meta new file mode 100644 index 0000000..aad1c70 --- /dev/null +++ b/Assets/ExcelResolver.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2a48c7d10c6089e4bb6e64111fb6bf6a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ExcelResolver/Excel.meta b/Assets/ExcelResolver/Excel.meta new file mode 100644 index 0000000..3117772 --- /dev/null +++ b/Assets/ExcelResolver/Excel.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 14094f78fb2f4e14dbd21a413f1692f9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ExcelResolver/Excel/hero.xlsx b/Assets/ExcelResolver/Excel/hero.xlsx new file mode 100644 index 0000000..724bc1f Binary files /dev/null and b/Assets/ExcelResolver/Excel/hero.xlsx differ diff --git a/Assets/ExcelResolver/Excel/hero.xlsx.meta b/Assets/ExcelResolver/Excel/hero.xlsx.meta new file mode 100644 index 0000000..14c7859 --- /dev/null +++ b/Assets/ExcelResolver/Excel/hero.xlsx.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 48e32ca49f7fdd646ada9addf65fbe3f +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ExcelResolver/Json.meta b/Assets/ExcelResolver/Json.meta new file mode 100644 index 0000000..0a83683 --- /dev/null +++ b/Assets/ExcelResolver/Json.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4b8a2f5e75555654bb2bb7f8ebc41d49 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/EPPlus.meta b/Assets/Plugins/EPPlus.meta new file mode 100644 index 0000000..2d4b66d --- /dev/null +++ b/Assets/Plugins/EPPlus.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f2744b513842f984a9d48b88f16b2312 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/EPPlus/EPPlus.dll b/Assets/Plugins/EPPlus/EPPlus.dll new file mode 100644 index 0000000..085ef6a Binary files /dev/null and b/Assets/Plugins/EPPlus/EPPlus.dll differ diff --git a/Assets/Plugins/EPPlus/EPPlus.dll.meta b/Assets/Plugins/EPPlus/EPPlus.dll.meta new file mode 100644 index 0000000..3218d5d --- /dev/null +++ b/Assets/Plugins/EPPlus/EPPlus.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: c5ec07acbec7e284798856cc34f732b2 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts.meta b/Assets/Scripts.meta new file mode 100644 index 0000000..91de8cd --- /dev/null +++ b/Assets/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4a23589c1db39354cb54493bd3bd664a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Generator.meta b/Assets/Scripts/Generator.meta new file mode 100644 index 0000000..6eba16d --- /dev/null +++ b/Assets/Scripts/Generator.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2c7078626b1ca6d4e88f5ea9d7d9a660 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Generator/Excel.meta b/Assets/Scripts/Generator/Excel.meta new file mode 100644 index 0000000..b54da27 --- /dev/null +++ b/Assets/Scripts/Generator/Excel.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b99dda3f97115a843bdb608d51ec1648 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit.meta new file mode 100644 index 0000000..8a46bc2 --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5cd35fec940c4cb89f79b6c66901008e +timeCreated: 1735992114 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base.meta new file mode 100644 index 0000000..4780e1e --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 0fa6f94e2e704e0faeac90ef8e185f2f +timeCreated: 1735992174 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/CodeScope.cs b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/CodeScope.cs new file mode 100644 index 0000000..a242c44 --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/CodeScope.cs @@ -0,0 +1,31 @@ +using System.Collections.Generic; + +namespace Tools.Editor.CodeGenKit +{ + public abstract class CodeScope : ICodeScope + { + public bool Semicolon { get; set; } + + public virtual void Gen(ICodeWriter writer) + { + GenFirstLine(writer); + + new OpenBraceCode().Gen(writer); + + writer.IndentCount++; + + foreach (var code in Codes) + { + code.Gen(writer); + } + + writer.IndentCount--; + + new CloseBraceCode(Semicolon).Gen(writer); + } + + protected abstract void GenFirstLine(ICodeWriter writer); + + public List Codes { get; } = new(); + } +} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/CodeScope.cs.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/CodeScope.cs.meta new file mode 100644 index 0000000..ee6cca0 --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/CodeScope.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 737f0286aef24e158bf957af85f06c15 +timeCreated: 1735992259 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICode.cs b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICode.cs new file mode 100644 index 0000000..a37eb93 --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICode.cs @@ -0,0 +1,7 @@ +namespace Tools.Editor.CodeGenKit +{ + public interface ICode + { + void Gen(ICodeWriter writer); + } +} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICode.cs.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICode.cs.meta new file mode 100644 index 0000000..f31332b --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5b930fc6d1d247949af8177d796c4265 +timeCreated: 1735992194 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeScope.cs b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeScope.cs new file mode 100644 index 0000000..64b17b3 --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeScope.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; + +namespace Tools.Editor.CodeGenKit +{ + public interface ICodeScope : ICode + { + List Codes { get; } + } +} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeScope.cs.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeScope.cs.meta new file mode 100644 index 0000000..08de1b5 --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeScope.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 249dc2e076114187958bc580f2455fec +timeCreated: 1735992236 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeWriter.cs b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeWriter.cs new file mode 100644 index 0000000..982783f --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeWriter.cs @@ -0,0 +1,8 @@ +namespace Tools.Editor.CodeGenKit +{ + public interface ICodeWriter + { + int IndentCount { get; set; } + void WriteLine(string code = null); + } +} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeWriter.cs.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeWriter.cs.meta new file mode 100644 index 0000000..323485e --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeWriter.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 96536dd301a640eba7ff5c8d8a597663 +timeCreated: 1735992216 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl.meta new file mode 100644 index 0000000..1cb5d95 --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2362665fe861427fb3d22bfc213e7543 +timeCreated: 1735992283 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/ClassScope.cs b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/ClassScope.cs new file mode 100644 index 0000000..1ea3641 --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/ClassScope.cs @@ -0,0 +1,43 @@ +using System; + +namespace Tools.Editor.CodeGenKit +{ + public sealed class ClassScope : CodeScope + { + private readonly bool _isPartial; + private readonly bool _isStatic; + private readonly bool _isSealed; + private readonly string _parentClassName; + private readonly string _className; + + public bool IsStatic => _isStatic; + + public ClassScope(bool isPartial, bool isStatic, bool isSealed, string className, string parentClassName = "") + { + _isPartial = isPartial; + _isStatic = isStatic; + _isSealed = isSealed; + _parentClassName = parentClassName; + _className = className; + } + + protected override void GenFirstLine(ICodeWriter writer) + { + writer.WriteLine( + $"public {(_isSealed ? "sealed " : string.Empty)}{(_isStatic ? "static " : string.Empty)}{(_isPartial ? "partial " : string.Empty)}class {_className}{(string.IsNullOrEmpty(_parentClassName) ? string.Empty : " : " + _parentClassName)}"); + } + } + + public static partial class CodeScopeExtensions + { + public static ICodeScope Class(this ICodeScope self, string className, bool isPartial, bool isStatic, + bool isSealed, + string parentClassName = "", Action classScopeSetting = null) + { + var classScope = new ClassScope(isPartial, isStatic, isSealed, className, parentClassName); + classScopeSetting?.Invoke(classScope); + self.Codes.Add(classScope); + return self; + } + } +} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/ClassScope.cs.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/ClassScope.cs.meta new file mode 100644 index 0000000..64c9e24 --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/ClassScope.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 87bdee7f495f44fdab681a299935d76e +timeCreated: 1735993249 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CloseBraceCode.cs b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CloseBraceCode.cs new file mode 100644 index 0000000..79eb5b9 --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CloseBraceCode.cs @@ -0,0 +1,17 @@ +namespace Tools.Editor.CodeGenKit +{ + public sealed class CloseBraceCode : ICode + { + private readonly bool _semicolon; + + public CloseBraceCode(bool semicolon) + { + _semicolon = semicolon; + } + + public void Gen(ICodeWriter writer) + { + writer.WriteLine("}" + (_semicolon ? ";" : string.Empty)); + } + } +} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CloseBraceCode.cs.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CloseBraceCode.cs.meta new file mode 100644 index 0000000..d852bde --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CloseBraceCode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 21a1d549d9fc4c5893e8b5454e43e5af +timeCreated: 1735992305 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CustomCode.cs b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CustomCode.cs new file mode 100644 index 0000000..8897b14 --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CustomCode.cs @@ -0,0 +1,26 @@ +namespace Tools.Editor.CodeGenKit +{ + public sealed class CustomCode : ICode + { + private readonly string _content; + + public CustomCode(string content) + { + _content = content; + } + + public void Gen(ICodeWriter writer) + { + writer.WriteLine(_content); + } + } + + public static partial class CodeScopeExtensions + { + public static ICodeScope Custom(this ICodeScope self, string content) + { + self.Codes.Add(new CustomCode(content)); + return self; + } + } +} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CustomCode.cs.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CustomCode.cs.meta new file mode 100644 index 0000000..b5ff07c --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CustomCode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d6858c0550a54e8d9c5cf7065bf582a1 +timeCreated: 1735992474 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/NameSpaceScope.cs b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/NameSpaceScope.cs new file mode 100644 index 0000000..fff54ac --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/NameSpaceScope.cs @@ -0,0 +1,31 @@ +using System; + +namespace Tools.Editor.CodeGenKit +{ + public sealed class NameSpaceScope : CodeScope + { + private readonly string _nameSpace; + + public NameSpaceScope(string nameSpace) + { + _nameSpace = nameSpace; + } + + protected override void GenFirstLine(ICodeWriter writer) + { + writer.WriteLine($"namespace {_nameSpace}"); + } + } + + public static partial class CodeScopeExtensions + { + public static ICodeScope NameSpace(this ICodeScope self, string nameSpace, + Action nameSpaceSetting = null) + { + var nameSpaceCode = new NameSpaceScope(nameSpace); + nameSpaceSetting?.Invoke(nameSpaceCode); + self.Codes.Add(nameSpaceCode); + return self; + } + } +} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/NameSpaceScope.cs.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/NameSpaceScope.cs.meta new file mode 100644 index 0000000..f3d90ab --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/NameSpaceScope.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5fe126821e724abaaaf317cceac9d41b +timeCreated: 1735992680 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/OpenBraceCode.cs b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/OpenBraceCode.cs new file mode 100644 index 0000000..ab77c8c --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/OpenBraceCode.cs @@ -0,0 +1,10 @@ +namespace Tools.Editor.CodeGenKit +{ + public sealed class OpenBraceCode : ICode + { + public void Gen(ICodeWriter writer) + { + writer.WriteLine("{"); + } + } +} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/OpenBraceCode.cs.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/OpenBraceCode.cs.meta new file mode 100644 index 0000000..e2903af --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/OpenBraceCode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3702874220a7472bb4f3f83980744f72 +timeCreated: 1735992289 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/UsingCode.cs b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/UsingCode.cs new file mode 100644 index 0000000..71b1119 --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/UsingCode.cs @@ -0,0 +1,28 @@ +namespace Tools.Editor.CodeGenKit +{ + public sealed class UsingCode : ICode + { + private readonly string _nameSpace; + + public UsingCode(string nameSpace) + { + _nameSpace = nameSpace; + } + + public void Gen(ICodeWriter writer) + { + writer.WriteLine($"using {_nameSpace};"); + } + } + + + public static partial class CodeScopeExtensions + { + public static ICodeScope Using(this ICodeScope self, string nameSpace) + { + var code = new UsingCode(nameSpace); + self.Codes.Add(code); + return self; + } + } +} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/UsingCode.cs.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/UsingCode.cs.meta new file mode 100644 index 0000000..c186c18 --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/UsingCode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 299e6452df21426183f1622b56cfdd85 +timeCreated: 1735992567 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Writer.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Writer.meta new file mode 100644 index 0000000..4e52d84 --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Writer.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 541182aef19445418568c1693eda34de +timeCreated: 1735992180 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Writer/RootCode.cs b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Writer/RootCode.cs new file mode 100644 index 0000000..8f95b88 --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Writer/RootCode.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +namespace Tools.Editor.CodeGenKit +{ + public sealed class RootCode : ICodeScope + { + public void Gen(ICodeWriter writer) + { + foreach (var code in Codes) + { + code.Gen(writer); + } + } + + public List Codes { get; } = new(); + } +} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Writer/RootCode.cs.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Writer/RootCode.cs.meta new file mode 100644 index 0000000..242f5a4 --- /dev/null +++ b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Writer/RootCode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 26b647313d594f05b7ca562f2b34ce56 +timeCreated: 1735992153 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorConfig.asset b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorConfig.asset index 490fb01..e53f374 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorConfig.asset +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorConfig.asset @@ -12,5 +12,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 9247b1b02271436ca893eadb1fa8bdce, type: 3} m_Name: ExcelResolverEditorConfig m_EditorClassIdentifier: - ExcelPath: Assets/Unity-Tools/Core/ExcelResolver/Editor - JsonPath: + ExcelPathRoot: Assets/ExcelResolver/Excel + JsonPathRoot: Assets/ExcelResolver/Json + CodePathRoot: Assets/Scripts/Generator/Excel + GenerateDataClassNameSpace: Tools.ExcelResolver + isInit: 0 diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorConfig.asset.meta b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorConfig.asset.meta index dd47eb3..c2a5690 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorConfig.asset.meta +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorConfig.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4fd40b33958428a4ab4c705c25fc0ef5 +guid: fce9563db00525d4b85d1b45a82c6ede NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorConfig.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorConfig.cs index 7fb1305..939f5f7 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorConfig.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorConfig.cs @@ -5,17 +5,18 @@ using UnityEngine; namespace Tools.ExcelResolver.Editor { [InlineEditor(InlineEditorObjectFieldModes.CompletelyHidden)] + [CreateAssetMenu(fileName = "ExcelResolverEditorConfig", menuName = "ExcelResolver/ExcelResolverEditorConfig")] public sealed class ExcelResolverEditorConfig : ScriptableObject { [LabelText("Excel路径"), FolderPath] - public string ExcelPathRoot; + public string ExcelPathRoot = "Assets/ExcelResolver/Excel"; [LabelText("Json路径"), ValueDropdown("@Tools.Editor.DirectoryUtil.GetFilePaths()")] - public string JsonPathRoot; + public string JsonPathRoot = "Assets/ExcelResolver/Json"; [LabelText("代码路径"), ValueDropdown("@Tools.Editor.DirectoryUtil.GetFilePaths()")] - public string CodePathRoot; + public string CodePathRoot = "Assets/Scripts/Generator/Excel"; [LabelText("生成代码命名空间")] public string GenerateDataClassNameSpace = "Tools.ExcelResolver"; - + [HideInInspector] public bool isInit; public void MakeSureDirectory() diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs new file mode 100644 index 0000000..cec22fc --- /dev/null +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs @@ -0,0 +1,30 @@ +using System.IO; +using System.Linq; +using OfficeOpenXml; +using UnityEngine; + +namespace Tools.ExcelResolver.Editor +{ + public sealed partial class ExcelResolverEditorWindow + { + private void ReadExcel() + { + // 获取Excel文件 + config.MakeSureDirectory(); + var excelFiles = new DirectoryInfo(config.ExcelPathRoot).GetFiles("*.xlsx").Where(f => !f.Name.StartsWith("~$")); + foreach (var excelFile in excelFiles) + { + using FileStream stream = File.Open(excelFile.FullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); + using ExcelPackage package = new ExcelPackage(stream); + ExcelWorksheet worksheet = package.Workbook.Worksheets["Sheet1"]; + if (null == worksheet) + { + Debug.LogError($"Excel:{excelFile.Name} don't have Sheet1 !!"); + continue; + } + var first = worksheet.Cells[1, 1]; + Debug.Log(first.Value.ToString()); + } + } + } +} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs.meta b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs.meta new file mode 100644 index 0000000..91f0f1d --- /dev/null +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c9596183fe4b47ce844563a902dabd04 +timeCreated: 1735993822 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteDataCode.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteDataCode.cs new file mode 100644 index 0000000..b9dc91e --- /dev/null +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteDataCode.cs @@ -0,0 +1,31 @@ +using Tools.Editor.CodeGenKit; + +namespace Tools.ExcelResolver.Editor +{ + public sealed partial class ExcelResolverEditorWindow + { + private enum TableType + { + SingleKeyTable, // 单主键表 + UnionMultiKeyTable, // 多主键表(联合索引) + MultiKeyTable, // 多主键表(独立索引) + ColumnTable, // 纵表 + } + + + private void WriteTypeCode() + { + var code = new RootCode(); + code.Custom("//代码使用工具生成,请勿随意修改"); + code.Using("System"); + code.Using("System.Collections.Generic"); + code.Using("System.Linq"); + + code.NameSpace(config.GenerateDataClassNameSpace, cope => + { + cope.Custom("[Serializable]"); + // cope.Class($"") + }); + } + } +} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteDataCode.cs.meta b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteDataCode.cs.meta new file mode 100644 index 0000000..8598869 --- /dev/null +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteDataCode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4cf09c9741d243cd8c9002f7249aae06 +timeCreated: 1735991897 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOCode.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOCode.cs new file mode 100644 index 0000000..7bdfd2e --- /dev/null +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOCode.cs @@ -0,0 +1,7 @@ +namespace Tools.ExcelResolver.Editor +{ + public sealed partial class ExcelResolverEditorWindow + { + + } +} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOCode.cs.meta b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOCode.cs.meta new file mode 100644 index 0000000..93370dd --- /dev/null +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOCode.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1751ebb7e31442b2939a16c185a1bb43 +timeCreated: 1735991637 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.cs index 05d6325..d764444 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.cs @@ -1,18 +1,22 @@ using Sirenix.OdinInspector; using Sirenix.OdinInspector.Editor; +using Sirenix.Utilities; +using Sirenix.Utilities.Editor; using UnityEditor; using UnityEngine; namespace Tools.ExcelResolver.Editor { - public class ExcelResolverEditorWindow : OdinEditorWindow + public sealed partial class ExcelResolverEditorWindow : OdinEditorWindow { - public ExcelResolverEditorConfig config; + [SerializeField] private ExcelResolverEditorConfig config; - [MenuItem("Tools/ExcelResolver")] + [MenuItem("\u272dExcelResolver\u272d/ExcelResolverEditorWindow")] private static void OpenWindow() { - GetWindow().Show(); + var window = GetWindow(); + window.position = GUIHelper.GetEditorWindowRect().AlignCenter(800, 500); + window.titleContent = new GUIContent("ExcelResolverEditorWindow"); } protected override void Initialize() @@ -33,6 +37,7 @@ namespace Tools.ExcelResolver.Editor private void Generate() { // 按钮逻辑 + ReadExcel(); } } } \ No newline at end of file