From d720b034802f36c32698cdb0ca3090e800a482a9 Mon Sep 17 00:00:00 2001 From: hzhang Date: Wed, 19 Feb 2025 17:09:07 +0000 Subject: [PATCH] add: registry pass through --- Package/build/Polonium.targets | 10 +++++++--- Package/build/editorconfig | 2 ++ Package/embedded/Patches/GlobalRegistry.p.cs | 1 - Polonium.csproj | 12 ++++++++++-- src/Attributes/RegistryPassThrough.cs | 6 ++++++ src/PoloniumRegistry.cs | 11 +++++++++-- 6 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 Package/build/editorconfig create mode 100644 src/Attributes/RegistryPassThrough.cs diff --git a/Package/build/Polonium.targets b/Package/build/Polonium.targets index d7ec3f6..c16770c 100644 --- a/Package/build/Polonium.targets +++ b/Package/build/Polonium.targets @@ -40,9 +40,13 @@ - + diff --git a/Package/build/editorconfig b/Package/build/editorconfig new file mode 100644 index 0000000..3662e2f --- /dev/null +++ b/Package/build/editorconfig @@ -0,0 +1,2 @@ +[embedded/*] +generated_code = true diff --git a/Package/embedded/Patches/GlobalRegistry.p.cs b/Package/embedded/Patches/GlobalRegistry.p.cs index ee28e05..0d6d66e 100644 --- a/Package/embedded/Patches/GlobalRegistry.p.cs +++ b/Package/embedded/Patches/GlobalRegistry.p.cs @@ -45,7 +45,6 @@ public static partial class GlobalRegistry } public static PoloniumRegistry PoloniumRegistry => PoloniumRegistry.Instance; public static bool Paused { get; set; } - public static HashSet TimeConsumers { get; } = []; public static void Prepare() => PoloniumRegistry.Prepare(); // ReSharper disable once PartialTypeWithSinglePart diff --git a/Polonium.csproj b/Polonium.csproj index 6e1222f..28556b7 100644 --- a/Polonium.csproj +++ b/Polonium.csproj @@ -24,17 +24,25 @@ TemplateDirectory="$(ProjectDir)Package/embedded/polonium_templates" AttributeName="ProxyNode" /> + + - - + + + + + diff --git a/src/Attributes/RegistryPassThrough.cs b/src/Attributes/RegistryPassThrough.cs new file mode 100644 index 0000000..9da061a --- /dev/null +++ b/src/Attributes/RegistryPassThrough.cs @@ -0,0 +1,6 @@ +namespace Polonium.Attributes; +[AttributeUsage(AttributeTargets.Property)] +public class RegistryPassThrough(bool getterOnly = false) : Attribute +{ + public bool GetterOnly { get; set; } = getterOnly; +} \ No newline at end of file diff --git a/src/PoloniumRegistry.cs b/src/PoloniumRegistry.cs index 5298889..d3dd4d3 100644 --- a/src/PoloniumRegistry.cs +++ b/src/PoloniumRegistry.cs @@ -1,5 +1,6 @@ using Godot; using Polonium.Agents; +using Polonium.Attributes; using Polonium.Interfaces; using Polonium.Resources; @@ -9,16 +10,22 @@ public class PoloniumRegistry { private static PoloniumRegistry InternalInstance { get; set; } public static PoloniumRegistry Instance => InternalInstance ??= new PoloniumRegistry(); + [RegistryPassThrough] public Config Config { get; set; } + [RegistryPassThrough] public Save Save { get; set; } public static void Prepare() { DirAccess.MakeDirAbsolute("user://saves"); } - public Dictionary Agents { get; set; } = new(); + // ReSharper disable once CollectionNeverQueried.Global + [RegistryPassThrough(true)] + public Dictionary Agents { get; } = new(); - public HashSet TimeConsumers { get; set; } = new(); + // ReSharper disable once CollectionNeverQueried.Global + [RegistryPassThrough(true)] + public HashSet TimeConsumers { get; } = new(); } \ No newline at end of file