Skip to content

Commit 12cb46c

Browse files
feat(combat): serialize RemoveSelectedStatusNode via CombatJson (#2)
Registers node.removeSelectedStatus so a status-instance-targeting program round-trips (selector + StatusSelectionSpec via existing converters). The op is now data-authorable end to end.
1 parent 65fbaec commit 12cb46c

2 files changed

Lines changed: 5 additions & 0 deletions

File tree

src/RogueDeck.Core/Combat/Serialization/CombatJson.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ private static void RegisterNodes(CombatJsonRegistry r)
238238
.Register("node.applyStatus", typeof(ApplyStatusNode<>))
239239
.Register("node.removeStatus", typeof(RemoveStatusNode<>))
240240
.Register("node.removeStatusesByPolarity", typeof(RemoveStatusesByPolarityNode<>))
241+
.Register("node.removeSelectedStatus", typeof(RemoveSelectedStatusNode<>))
241242
.Register("node.modifyStatusStacks", typeof(ModifyStatusStacksNode<>))
242243
.Register("node.modifyStatusDuration", typeof(ModifyStatusDurationNode<>))
243244
.Register("node.modifyStatusCharges", typeof(ModifyStatusChargesNode<>))

tests/RogueDeck.Core.Tests/CombatJsonBroadNodeTests.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ public void Status_and_card_nodes_round_trip()
4444
var burn = new StatusDefinitionId("burn");
4545
RoundTrips(new RemoveStatusNode<CardPlayContext>(Enemy, burn));
4646
RoundTrips(new RemoveStatusesByPolarityNode<CardPlayContext>(Source, StatusPolarity.Debuff));
47+
RoundTrips(new RemoveSelectedStatusNode<CardPlayContext>(Enemy,
48+
new StatusSelectionSpec(StatusPolarityFilter.Buff, StatusPick.Random)));
49+
RoundTrips(new RemoveSelectedStatusNode<CardPlayContext>(Enemy,
50+
new StatusSelectionSpec(StatusPolarityFilter.Debuff, StatusPick.First, Index: 2)));
4751
RoundTrips(new ModifyStatusStacksNode<CardPlayContext>(Enemy, burn, Const(2)));
4852
RoundTrips(new ModifyStatusDurationNode<CardPlayContext>(Enemy, burn, Const(1)));
4953
RoundTrips(new ModifyStatusChargesNode<CardPlayContext>(Enemy, burn, Const(1)));

0 commit comments

Comments
 (0)