From b7bf4f3d10560463e99200c43b0cd9f09ca89f5e Mon Sep 17 00:00:00 2001 From: Zenny Date: Fri, 7 Mar 2025 01:26:14 -0800 Subject: [PATCH] Move Player logic to other project --- .../Player/State}/PlayerLogic.Input.cs | 2 +- .../Player/State}/PlayerLogic.Output.cs | 6 +++++- .../Player/State}/PlayerLogic.Settings.cs | 2 +- .../Player/State}/PlayerLogic.State.cs | 2 +- .../Player/State}/PlayerLogic.cs | 2 +- .../Player/State}/PlayerLogic.g.puml | 0 .../States}/PlayerLogic.State.Alive.Attacking.cs | 2 +- .../States}/PlayerLogic.State.Alive.Idle.cs | 2 +- .../State/States}/PlayerLogic.State.Alive.cs | 5 ++--- .../State/States}/PlayerLogic.State.Dead.cs | 2 +- .../State/States}/PlayerLogic.State.Disabled.cs | 2 +- Zennysoft.Game.Ma/src/items/InventoryItem.cs | 3 +-- .../src/map/state/MapLogic.Input.cs | 7 ------- .../src/map/state/MapLogic.Input.cs.uid | 1 - .../src/map/state/MapLogic.State.cs | 16 ---------------- .../src/map/state/MapLogic.State.cs.uid | 1 - Zennysoft.Game.Ma/src/map/state/MapLogic.cs | 13 ------------- Zennysoft.Game.Ma/src/map/state/MapLogic.cs.uid | 1 - Zennysoft.Game.Ma/src/menu/Menu.cs | 1 - Zennysoft.Game.Ma/src/player/Player.cs | 4 ++++ .../src/player/state/PlayerLogic.Input.cs.uid | 1 - .../src/player/state/PlayerLogic.Output.cs.uid | 1 - .../src/player/state/PlayerLogic.Settings.cs.uid | 1 - .../src/player/state/PlayerLogic.State.cs.uid | 1 - .../src/player/state/PlayerLogic.cs.uid | 1 - .../PlayerLogic.State.Alive.Attacking.cs.uid | 1 - .../states/PlayerLogic.State.Alive.Idle.cs.uid | 1 - .../state/states/PlayerLogic.State.Alive.cs.uid | 1 - .../state/states/PlayerLogic.State.Dead.cs.uid | 1 - .../states/PlayerLogic.State.Disabled.cs.uid | 1 - 30 files changed, 20 insertions(+), 64 deletions(-) rename {Zennysoft.Game.Ma/src/player/state => Zennysoft.Game.Ma.Implementation/Player/State}/PlayerLogic.Input.cs (90%) rename {Zennysoft.Game.Ma/src/player/state => Zennysoft.Game.Ma.Implementation/Player/State}/PlayerLogic.Output.cs (62%) rename {Zennysoft.Game.Ma/src/player/state => Zennysoft.Game.Ma.Implementation/Player/State}/PlayerLogic.Settings.cs (81%) rename {Zennysoft.Game.Ma/src/player/state => Zennysoft.Game.Ma.Implementation/Player/State}/PlayerLogic.State.cs (79%) rename {Zennysoft.Game.Ma/src/player/state => Zennysoft.Game.Ma.Implementation/Player/State}/PlayerLogic.cs (89%) rename {Zennysoft.Game.Ma/src/player/state => Zennysoft.Game.Ma.Implementation/Player/State}/PlayerLogic.g.puml (100%) rename {Zennysoft.Game.Ma/src/player/state/states => Zennysoft.Game.Ma.Implementation/Player/State/States}/PlayerLogic.State.Alive.Attacking.cs (88%) rename {Zennysoft.Game.Ma/src/player/state/states => Zennysoft.Game.Ma.Implementation/Player/State/States}/PlayerLogic.State.Alive.Idle.cs (90%) rename {Zennysoft.Game.Ma/src/player/state/states => Zennysoft.Game.Ma.Implementation/Player/State/States}/PlayerLogic.State.Alive.cs (84%) rename {Zennysoft.Game.Ma/src/player/state/states => Zennysoft.Game.Ma.Implementation/Player/State/States}/PlayerLogic.State.Dead.cs (82%) rename {Zennysoft.Game.Ma/src/player/state/states => Zennysoft.Game.Ma.Implementation/Player/State/States}/PlayerLogic.State.Disabled.cs (93%) delete mode 100644 Zennysoft.Game.Ma/src/map/state/MapLogic.Input.cs delete mode 100644 Zennysoft.Game.Ma/src/map/state/MapLogic.Input.cs.uid delete mode 100644 Zennysoft.Game.Ma/src/map/state/MapLogic.State.cs delete mode 100644 Zennysoft.Game.Ma/src/map/state/MapLogic.State.cs.uid delete mode 100644 Zennysoft.Game.Ma/src/map/state/MapLogic.cs delete mode 100644 Zennysoft.Game.Ma/src/map/state/MapLogic.cs.uid delete mode 100644 Zennysoft.Game.Ma/src/player/state/PlayerLogic.Input.cs.uid delete mode 100644 Zennysoft.Game.Ma/src/player/state/PlayerLogic.Output.cs.uid delete mode 100644 Zennysoft.Game.Ma/src/player/state/PlayerLogic.Settings.cs.uid delete mode 100644 Zennysoft.Game.Ma/src/player/state/PlayerLogic.State.cs.uid delete mode 100644 Zennysoft.Game.Ma/src/player/state/PlayerLogic.cs.uid delete mode 100644 Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Alive.Attacking.cs.uid delete mode 100644 Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Alive.Idle.cs.uid delete mode 100644 Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Alive.cs.uid delete mode 100644 Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Dead.cs.uid delete mode 100644 Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Disabled.cs.uid diff --git a/Zennysoft.Game.Ma/src/player/state/PlayerLogic.Input.cs b/Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.Input.cs similarity index 90% rename from Zennysoft.Game.Ma/src/player/state/PlayerLogic.Input.cs rename to Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.Input.cs index ecc47105..844b3631 100644 --- a/Zennysoft.Game.Ma/src/player/state/PlayerLogic.Input.cs +++ b/Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.Input.cs @@ -1,6 +1,6 @@ using Godot; -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; public partial class PlayerLogic { diff --git a/Zennysoft.Game.Ma/src/player/state/PlayerLogic.Output.cs b/Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.Output.cs similarity index 62% rename from Zennysoft.Game.Ma/src/player/state/PlayerLogic.Output.cs rename to Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.Output.cs index 86468359..6e8a6558 100644 --- a/Zennysoft.Game.Ma/src/player/state/PlayerLogic.Output.cs +++ b/Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.Output.cs @@ -1,4 +1,6 @@ -namespace Zennysoft.Game.Ma; +using System.Numerics; + +namespace Zennysoft.Game.Ma.Implementation; public partial class PlayerLogic { @@ -10,5 +12,7 @@ public partial class PlayerLogic } public readonly record struct ThrowItem; + + public readonly record struct Move(float delta); } } diff --git a/Zennysoft.Game.Ma/src/player/state/PlayerLogic.Settings.cs b/Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.Settings.cs similarity index 81% rename from Zennysoft.Game.Ma/src/player/state/PlayerLogic.Settings.cs rename to Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.Settings.cs index b0f4c5e3..935b2186 100644 --- a/Zennysoft.Game.Ma/src/player/state/PlayerLogic.Settings.cs +++ b/Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.Settings.cs @@ -1,4 +1,4 @@ -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; public partial class PlayerLogic { diff --git a/Zennysoft.Game.Ma/src/player/state/PlayerLogic.State.cs b/Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.State.cs similarity index 79% rename from Zennysoft.Game.Ma/src/player/state/PlayerLogic.State.cs rename to Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.State.cs index bb49c006..e86662ec 100644 --- a/Zennysoft.Game.Ma/src/player/state/PlayerLogic.State.cs +++ b/Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.State.cs @@ -1,7 +1,7 @@ using Chickensoft.Introspection; using Chickensoft.LogicBlocks; -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; public partial class PlayerLogic { diff --git a/Zennysoft.Game.Ma/src/player/state/PlayerLogic.cs b/Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.cs similarity index 89% rename from Zennysoft.Game.Ma/src/player/state/PlayerLogic.cs rename to Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.cs index ebcefd9d..21667571 100644 --- a/Zennysoft.Game.Ma/src/player/state/PlayerLogic.cs +++ b/Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.cs @@ -1,7 +1,7 @@ using Chickensoft.Introspection; using Chickensoft.LogicBlocks; -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; public interface IPlayerLogic : ILogicBlock; diff --git a/Zennysoft.Game.Ma/src/player/state/PlayerLogic.g.puml b/Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.g.puml similarity index 100% rename from Zennysoft.Game.Ma/src/player/state/PlayerLogic.g.puml rename to Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.g.puml diff --git a/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Alive.Attacking.cs b/Zennysoft.Game.Ma.Implementation/Player/State/States/PlayerLogic.State.Alive.Attacking.cs similarity index 88% rename from Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Alive.Attacking.cs rename to Zennysoft.Game.Ma.Implementation/Player/State/States/PlayerLogic.State.Alive.Attacking.cs index 75d2ca01..ee28b6db 100644 --- a/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Alive.Attacking.cs +++ b/Zennysoft.Game.Ma.Implementation/Player/State/States/PlayerLogic.State.Alive.Attacking.cs @@ -1,6 +1,6 @@ using Chickensoft.Introspection; -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; public partial class PlayerLogic { diff --git a/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Alive.Idle.cs b/Zennysoft.Game.Ma.Implementation/Player/State/States/PlayerLogic.State.Alive.Idle.cs similarity index 90% rename from Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Alive.Idle.cs rename to Zennysoft.Game.Ma.Implementation/Player/State/States/PlayerLogic.State.Alive.Idle.cs index 830ff4b7..abe31f96 100644 --- a/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Alive.Idle.cs +++ b/Zennysoft.Game.Ma.Implementation/Player/State/States/PlayerLogic.State.Alive.Idle.cs @@ -1,7 +1,7 @@ using Chickensoft.Introspection; using Godot; -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; public partial class PlayerLogic { diff --git a/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Alive.cs b/Zennysoft.Game.Ma.Implementation/Player/State/States/PlayerLogic.State.Alive.cs similarity index 84% rename from Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Alive.cs rename to Zennysoft.Game.Ma.Implementation/Player/State/States/PlayerLogic.State.Alive.cs index 619cb8da..26422086 100644 --- a/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Alive.cs +++ b/Zennysoft.Game.Ma.Implementation/Player/State/States/PlayerLogic.State.Alive.cs @@ -1,7 +1,7 @@ using Chickensoft.Introspection; using Godot; -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; public partial class PlayerLogic { @@ -13,8 +13,7 @@ public partial class PlayerLogic public virtual Transition On(in Input.PhysicsTick input) { var delta = input.Delta; - var player = Get(); - player.Move((float)delta); + Output(new Output.Move((float)delta)); return ToSelf(); } diff --git a/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Dead.cs b/Zennysoft.Game.Ma.Implementation/Player/State/States/PlayerLogic.State.Dead.cs similarity index 82% rename from Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Dead.cs rename to Zennysoft.Game.Ma.Implementation/Player/State/States/PlayerLogic.State.Dead.cs index 0dd4f309..8bab436d 100644 --- a/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Dead.cs +++ b/Zennysoft.Game.Ma.Implementation/Player/State/States/PlayerLogic.State.Dead.cs @@ -1,6 +1,6 @@ using Chickensoft.Introspection; -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; public partial class PlayerLogic { diff --git a/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Disabled.cs b/Zennysoft.Game.Ma.Implementation/Player/State/States/PlayerLogic.State.Disabled.cs similarity index 93% rename from Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Disabled.cs rename to Zennysoft.Game.Ma.Implementation/Player/State/States/PlayerLogic.State.Disabled.cs index 3c8f663c..be17faae 100644 --- a/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Disabled.cs +++ b/Zennysoft.Game.Ma.Implementation/Player/State/States/PlayerLogic.State.Disabled.cs @@ -1,7 +1,7 @@ using Chickensoft.Introspection; using Zennysoft.Game.Abstractions; -namespace Zennysoft.Game.Ma; +namespace Zennysoft.Game.Ma.Implementation; public partial class PlayerLogic { diff --git a/Zennysoft.Game.Ma/src/items/InventoryItem.cs b/Zennysoft.Game.Ma/src/items/InventoryItem.cs index c5911521..705e2cc1 100644 --- a/Zennysoft.Game.Ma/src/items/InventoryItem.cs +++ b/Zennysoft.Game.Ma/src/items/InventoryItem.cs @@ -1,5 +1,4 @@ -using Chickensoft.GodotNodeInterfaces; -using Chickensoft.Introspection; +using Chickensoft.Introspection; using Chickensoft.Serialization; using Godot; using System; diff --git a/Zennysoft.Game.Ma/src/map/state/MapLogic.Input.cs b/Zennysoft.Game.Ma/src/map/state/MapLogic.Input.cs deleted file mode 100644 index 64d928fe..00000000 --- a/Zennysoft.Game.Ma/src/map/state/MapLogic.Input.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Zennysoft.Game.Ma; -public partial class MapLogic -{ - public static class Input - { - } -} \ No newline at end of file diff --git a/Zennysoft.Game.Ma/src/map/state/MapLogic.Input.cs.uid b/Zennysoft.Game.Ma/src/map/state/MapLogic.Input.cs.uid deleted file mode 100644 index a5522b72..00000000 --- a/Zennysoft.Game.Ma/src/map/state/MapLogic.Input.cs.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bn0l0ur7ih0ea diff --git a/Zennysoft.Game.Ma/src/map/state/MapLogic.State.cs b/Zennysoft.Game.Ma/src/map/state/MapLogic.State.cs deleted file mode 100644 index 1402f63b..00000000 --- a/Zennysoft.Game.Ma/src/map/state/MapLogic.State.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Chickensoft.Introspection; -using Chickensoft.LogicBlocks; - -namespace Zennysoft.Game.Ma; - -public partial class MapLogic -{ - [Meta] - public partial record State : StateLogic - { - public State() - { - - } - } -} diff --git a/Zennysoft.Game.Ma/src/map/state/MapLogic.State.cs.uid b/Zennysoft.Game.Ma/src/map/state/MapLogic.State.cs.uid deleted file mode 100644 index fb707a11..00000000 --- a/Zennysoft.Game.Ma/src/map/state/MapLogic.State.cs.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bf2bas1ky7ae1 diff --git a/Zennysoft.Game.Ma/src/map/state/MapLogic.cs b/Zennysoft.Game.Ma/src/map/state/MapLogic.cs deleted file mode 100644 index dc1477f1..00000000 --- a/Zennysoft.Game.Ma/src/map/state/MapLogic.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Chickensoft.Introspection; -using Chickensoft.LogicBlocks; - -namespace Zennysoft.Game.Ma; - -public interface IMapLogic : ILogicBlock; - -[Meta] -[LogicBlock(typeof(State))] -public partial class MapLogic : LogicBlock, IMapLogic -{ - public override Transition GetInitialState() => To(); -} diff --git a/Zennysoft.Game.Ma/src/map/state/MapLogic.cs.uid b/Zennysoft.Game.Ma/src/map/state/MapLogic.cs.uid deleted file mode 100644 index 7e9eeafb..00000000 --- a/Zennysoft.Game.Ma/src/map/state/MapLogic.cs.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dhjrhbhvpduqn diff --git a/Zennysoft.Game.Ma/src/menu/Menu.cs b/Zennysoft.Game.Ma/src/menu/Menu.cs index e21d17b2..fed52a1c 100644 --- a/Zennysoft.Game.Ma/src/menu/Menu.cs +++ b/Zennysoft.Game.Ma/src/menu/Menu.cs @@ -1,7 +1,6 @@ using Chickensoft.AutoInject; using Chickensoft.GodotNodeInterfaces; using Chickensoft.Introspection; -using Zennysoft.Game.Ma; using Godot; namespace Zennysoft.Game.Ma; diff --git a/Zennysoft.Game.Ma/src/player/Player.cs b/Zennysoft.Game.Ma/src/player/Player.cs index 3ceb5c07..c10bd8b0 100644 --- a/Zennysoft.Game.Ma/src/player/Player.cs +++ b/Zennysoft.Game.Ma/src/player/Player.cs @@ -209,6 +209,10 @@ public partial class Player : CharacterBody3D, IPlayer }) .Handle((in PlayerLogic.Output.ThrowItem output) => { + }) + .Handle((in PlayerLogic.Output.Move output) => + { + Move(output.delta); }); GameChunk.AddChunk(PlayerChunk); diff --git a/Zennysoft.Game.Ma/src/player/state/PlayerLogic.Input.cs.uid b/Zennysoft.Game.Ma/src/player/state/PlayerLogic.Input.cs.uid deleted file mode 100644 index b5df40d3..00000000 --- a/Zennysoft.Game.Ma/src/player/state/PlayerLogic.Input.cs.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ch6oc0relbray diff --git a/Zennysoft.Game.Ma/src/player/state/PlayerLogic.Output.cs.uid b/Zennysoft.Game.Ma/src/player/state/PlayerLogic.Output.cs.uid deleted file mode 100644 index b5479581..00000000 --- a/Zennysoft.Game.Ma/src/player/state/PlayerLogic.Output.cs.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cylnjf8jadgo6 diff --git a/Zennysoft.Game.Ma/src/player/state/PlayerLogic.Settings.cs.uid b/Zennysoft.Game.Ma/src/player/state/PlayerLogic.Settings.cs.uid deleted file mode 100644 index 8bf7b152..00000000 --- a/Zennysoft.Game.Ma/src/player/state/PlayerLogic.Settings.cs.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cmbt77ty7pmvc diff --git a/Zennysoft.Game.Ma/src/player/state/PlayerLogic.State.cs.uid b/Zennysoft.Game.Ma/src/player/state/PlayerLogic.State.cs.uid deleted file mode 100644 index 89ff958a..00000000 --- a/Zennysoft.Game.Ma/src/player/state/PlayerLogic.State.cs.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c46w8aytsajoe diff --git a/Zennysoft.Game.Ma/src/player/state/PlayerLogic.cs.uid b/Zennysoft.Game.Ma/src/player/state/PlayerLogic.cs.uid deleted file mode 100644 index 0a26466a..00000000 --- a/Zennysoft.Game.Ma/src/player/state/PlayerLogic.cs.uid +++ /dev/null @@ -1 +0,0 @@ -uid://beqr05mbwbg3b diff --git a/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Alive.Attacking.cs.uid b/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Alive.Attacking.cs.uid deleted file mode 100644 index 9e80937f..00000000 --- a/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Alive.Attacking.cs.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dyrl0x5q3q5j7 diff --git a/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Alive.Idle.cs.uid b/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Alive.Idle.cs.uid deleted file mode 100644 index cea13311..00000000 --- a/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Alive.Idle.cs.uid +++ /dev/null @@ -1 +0,0 @@ -uid://i0g8tve28n70 diff --git a/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Alive.cs.uid b/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Alive.cs.uid deleted file mode 100644 index 3408288f..00000000 --- a/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Alive.cs.uid +++ /dev/null @@ -1 +0,0 @@ -uid://demor6ic4xcwn diff --git a/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Dead.cs.uid b/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Dead.cs.uid deleted file mode 100644 index 2fcf5cf3..00000000 --- a/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Dead.cs.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bsxp82sus11pv diff --git a/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Disabled.cs.uid b/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Disabled.cs.uid deleted file mode 100644 index e397f895..00000000 --- a/Zennysoft.Game.Ma/src/player/state/states/PlayerLogic.State.Disabled.cs.uid +++ /dev/null @@ -1 +0,0 @@ -uid://pbj8nbyp8iwr