Skip to content

Commit cb47050

Browse files
committed
[#142] Split Res enum
1 parent 4837c6a commit cb47050

File tree

5 files changed

+52
-51
lines changed

5 files changed

+52
-51
lines changed

Godot 4 Tests/TestScenes/Feature148.ResourceTree/ResourceTreeTests.cs

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,29 +8,29 @@ namespace GodotTests.TestScenes;
88

99
#region Test Cases
1010

11-
[ResourceTree("", Res.Load, xclude: ["TestScenes"])]
11+
[ResourceTree("", ResI.LoadRes, xclude: ["TestScenes"])]
1212
public static partial class RootResWithLoad;
1313

14-
[ResourceTree("", Res.ResPaths, xclude: ["TestScenes"])]
14+
[ResourceTree("", ResI.ResPaths, xclude: ["TestScenes"])]
1515
public static partial class RootResWithResPaths;
1616

17-
[ResourceTree("/", Res.DirPaths, xclude: ["TestScenes"])]
17+
[ResourceTree("/", ResI.DirPaths, xclude: ["TestScenes"])]
1818
public static partial class RootResWithDirPaths;
1919

20-
[ResourceTree(".", Res.Load | Res.ResPaths, xclude: ["TestScenes"])]
20+
[ResourceTree(".", ResI.LoadRes | ResI.ResPaths, xclude: ["TestScenes"])]
2121
public static partial class RootResWithLoadAndResPaths;
2222

23-
[ResourceTree("Assets", Res.DirPaths)]
23+
[ResourceTree("Assets", ResI.DirPaths)]
2424
public static partial class AbsoluteRes;
2525

26-
[ResourceTree("Resources", Res.DirPaths)]
26+
[ResourceTree("Resources", ResI.DirPaths)]
2727
public static partial class RelativeRes;
2828

29-
[ResourceTree("Resources", res: Res.Default | Res.AllIn, xtras: ["csv", "cfg", "txt", "zip"])]
30-
public static partial class ResTypes;
29+
[ResourceTree("Resources", resx: ResX.All, xtras: ["csv", "cfg", "txt", "zip"])]
30+
public static partial class ResWithTypes;
3131

32-
[ResourceTree(res: Res.Default | Res.Scenes)]
33-
public static partial class ResTypesWithScenes;
32+
[ResourceTree(resx: ResX.Scenes)]
33+
public static partial class ResWithScenes;
3434

3535
//[ResourceTree("Invalid")]
3636
//public static partial class InvalidRes;
@@ -111,20 +111,20 @@ static void TestRelativeRes()
111111

112112
static void TestResTypes()
113113
{
114-
ResTypes.MyCsShaderCs.Should().BeOfType<CSharpScript>().And.NotBeNull();
115-
ResTypes.MyCsShaderCsUid.Should().Be("uid://dmex1g7fv35a");
116-
ResTypes.MyCsShaderTres.Should().BeOfType<MyCsShader>().And.NotBeNull();
114+
ResWithTypes.MyCsShaderCs.Should().BeOfType<CSharpScript>().And.NotBeNull();
115+
ResWithTypes.MyCsShaderCsUid.Should().Be("uid://dmex1g7fv35a");
116+
ResWithTypes.MyCsShaderTres.Should().BeOfType<MyCsShader>().And.NotBeNull();
117117

118-
ResTypes.MyGdShaderGd.Should().BeOfType<GDScript>().And.NotBeNull();
119-
ResTypes.MyGdShaderGdUid.Should().Be("uid://dwdevd03t3rpx");
120-
ResTypes.MyGdShaderTres.Should().BeOfType<ShaderMaterial>().And.NotBeNull();
118+
ResWithTypes.MyGdShaderGd.Should().BeOfType<GDScript>().And.NotBeNull();
119+
ResWithTypes.MyGdShaderGdUid.Should().Be("uid://dwdevd03t3rpx");
120+
ResWithTypes.MyGdShaderTres.Should().BeOfType<ShaderMaterial>().And.NotBeNull();
121121

122-
ResTypes.Xtras._3DModelTxt.Should().Be("res://TestScenes/Feature148.ResourceTree/Resources/xtras/3DModel.txt");
123-
ResTypes.Xtras.Model3DTxt.Should().Be("res://TestScenes/Feature148.ResourceTree/Resources/xtras/Model3D.txt");
124-
ResTypes.Xtras.MyResCfg.Should().Be("res://TestScenes/Feature148.ResourceTree/Resources/xtras/MyRes.cfg");
125-
ResTypes.Xtras.MyResCsv.Should().Be("res://TestScenes/Feature148.ResourceTree/Resources/xtras/MyRes.csv");
122+
ResWithTypes.Xtras._3DModelTxt.Should().Be("res://TestScenes/Feature148.ResourceTree/Resources/xtras/3DModel.txt");
123+
ResWithTypes.Xtras.Model3DTxt.Should().Be("res://TestScenes/Feature148.ResourceTree/Resources/xtras/Model3D.txt");
124+
ResWithTypes.Xtras.MyResCfg.Should().Be("res://TestScenes/Feature148.ResourceTree/Resources/xtras/MyRes.cfg");
125+
ResWithTypes.Xtras.MyResCsv.Should().Be("res://TestScenes/Feature148.ResourceTree/Resources/xtras/MyRes.csv");
126126

127-
ResTypesWithScenes.ResourceTreeTestsTscn.Should().BeOfType<PackedScene>().And.NotBeNull();
127+
ResWithScenes.ResourceTreeTestsTscn.Should().BeOfType<PackedScene>().And.NotBeNull();
128128
}
129129
}
130130
}

SourceGenerators/ResourceTreeExtensions/ResourceTreeAttribute.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@
33
namespace Godot;
44

55
[AttributeUsage(AttributeTargets.Class)]
6-
public sealed class ResourceTreeAttribute(string source = null, Res res = Res.Default, string[] xtras = null, string[] xclude = null) : Attribute, IResourceTreeConfig
6+
public sealed class ResourceTreeAttribute(string source = null, ResI resi = ResI.LoadRes, ResX resx = ResX.None, string[] xtras = null, string[] xclude = null) : Attribute, IResourceTreeConfig
77
{
88
public string Source { get; } = source;
9-
public bool Uid { get; } = (res & Res.Uid) != 0;
10-
public bool Load { get; } = (res & Res.Load) != 0;
11-
public bool Scenes { get; } = (res & Res.Scenes) != 0;
12-
public bool Scripts { get; } = (res & Res.Scripts) != 0;
13-
public bool ShowResPaths { get; } = (res & Res.ResPaths) != 0;
14-
public bool ShowDirPaths { get; } = (res & Res.DirPaths) != 0;
9+
public bool Uid { get; } = (resx & ResX.Uid) != 0;
10+
public bool Scenes { get; } = (resx & ResX.Scenes) != 0;
11+
public bool Scripts { get; } = (resx & ResX.Scripts) != 0;
12+
public bool UseGdLoad { get; } = (resi & ResI.LoadRes) != 0;
13+
public bool UseResPaths { get; } = (resi & ResI.ResPaths) != 0;
14+
public bool ShowDirPaths { get; } = (resi & ResI.DirPaths) != 0;
1515
public HashSet<string> Xtras { get; } = [.. xtras ?? []];
1616
public HashSet<string> Xclude { get; } = [.. xclude ?? []];
1717

1818
public override string ToString() => $"ResourceTreeAttribute [Source: {Source}, {((IResourceTreeConfig)this).ToString()}]";
19-
string IResourceTreeConfig.ToString() => $"{res}, Xtras: {string.Join("|", Xtras)}, Xclude: {string.Join("|", Xclude)}";
19+
string IResourceTreeConfig.ToString() => $"ResI: {resi}, ResX: {resx}, Xtras: {string.Join("|", Xtras)}, Xclude: {string.Join("|", Xclude)}";
2020
}

SourceGenerators/ResourceTreeExtensions/ResourceTreeConfig.cs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
11
namespace GodotSharp.SourceGenerators.ResourceTreeExtensions;
22

33
[Flags]
4-
public enum Res
4+
public enum ResX // (Res Xtras)
55
{
6+
None,
67
Uid = 1,
7-
Load = 2,
8-
Scenes = 4,
9-
Scripts = 8,
10-
ResPaths = 16,
11-
DirPaths = 32,
12-
13-
All = AllIn | AllOut,
14-
AllIn = Uid | Scenes | Scripts,
15-
AllOut = Load | ResPaths | DirPaths,
16-
17-
Default = Load,
8+
Scenes = 2,
9+
Scripts = 3,
10+
All = Uid | Scenes | Scripts
11+
}
1812

19-
None = 0,
13+
[Flags]
14+
public enum ResI // (Res Include)
15+
{
16+
LoadRes = 1,
17+
ResPaths = 2,
18+
DirPaths = 4,
19+
All = LoadRes | ResPaths | DirPaths
2020
}
2121

2222
public interface IResourceTreeConfig
2323
{
2424
bool Uid { get; }
25-
bool Load { get; }
2625
bool Scenes { get; }
2726
bool Scripts { get; }
28-
bool ShowResPaths { get; }
27+
bool UseGdLoad { get; }
28+
bool UseResPaths { get; }
2929
bool ShowDirPaths { get; }
3030
HashSet<string> Xtras { get; }
3131
HashSet<string> Xclude { get; }

SourceGenerators/ResourceTreeExtensions/ResourceTreeScraper.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,10 @@ void ScanFiles()
7272

7373
void AddFile(string file, string name, string type)
7474
{
75-
var show = cfg.ShowResPaths;
75+
var show = cfg.UseResPaths;
7676
GetResource(out var res);
7777
name = name.ToPascalCase();
78-
type = cfg.Load ? type : null;
78+
type = cfg.UseGdLoad ? type : null;
7979
var node = new ResourceTreeFile(name, res, type, show);
8080
Log.Debug($" - {node}");
8181
parent.Add(node);
@@ -93,12 +93,12 @@ void GetResource(out string res)
9393

9494
void AddExports(string[] exports, string type)
9595
{
96-
type = cfg.Load ? type : null;
96+
type = cfg.UseGdLoad ? type : null;
9797

9898
foreach (var res in exports)
9999
{
100100
var name = Path.GetFileName(res).ToPascalCase();
101-
var node = new ResourceTreeFile(name, res, type, cfg.ShowResPaths);
101+
var node = new ResourceTreeFile(name, res, type, cfg.UseResPaths);
102102
Log.Debug($" - {node}");
103103
parent.Add(node);
104104
}

SourceGenerators/ResourceTreeExtensions/ResourceTreeSourceGenerator.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,9 @@ protected override (string GeneratedCode, DiagnosticDetail Error) GenerateCode(C
2727

2828
Godot.ResourceTreeAttribute ReconstructAttribute() => new(
2929
(string)attribute.ConstructorArguments[0].Value,
30-
(Res)attribute.ConstructorArguments[1].Value,
31-
attribute.ConstructorArguments[2].Values.Args<string>(),
32-
attribute.ConstructorArguments[3].Values.Args<string>());
30+
(ResI)attribute.ConstructorArguments[1].Value,
31+
(ResX)attribute.ConstructorArguments[2].Value,
32+
attribute.ConstructorArguments[3].Values.Args<string>(),
33+
attribute.ConstructorArguments[4].Values.Args<string>());
3334
}
3435
}

0 commit comments

Comments
 (0)