CodeGen update
authorLiza Carvelli <liza@carvel.li>
Wed, 22 Jan 2025 17:37:15 +0000 (18:37 +0100)
committerLiza Carvelli <liza@carvel.li>
Wed, 22 Jan 2025 17:37:15 +0000 (18:37 +0100)
QuestPathGenerator/RoslynElements/CombatItemUseExtensions.cs [new file with mode: 0644]
QuestPathGenerator/RoslynElements/QuestStepExtensions.cs
QuestPathGenerator/RoslynShortcuts.cs

diff --git a/QuestPathGenerator/RoslynElements/CombatItemUseExtensions.cs b/QuestPathGenerator/RoslynElements/CombatItemUseExtensions.cs
new file mode 100644 (file)
index 0000000..93e5d69
--- /dev/null
@@ -0,0 +1,29 @@
+using Microsoft.CodeAnalysis.CSharp;
+using Microsoft.CodeAnalysis.CSharp.Syntax;
+using Questionable.Model.Questing;
+using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
+using static Questionable.QuestPathGenerator.RoslynShortcuts;
+
+namespace Questionable.QuestPathGenerator.RoslynElements;
+
+internal static class CombatItemUseExtensions
+{
+    public static ExpressionSyntax ToExpressionSyntax(this CombatItemUse combatItemuse)
+    {
+        var emptyItemuse = new CombatItemUse();
+        return ObjectCreationExpression(
+                IdentifierName(nameof(CombatItemUse)))
+            .WithInitializer(
+                InitializerExpression(
+                    SyntaxKind.ObjectInitializerExpression,
+                    SeparatedList<ExpressionSyntax>(
+                        SyntaxNodeList(
+                            Assignment(nameof(CombatItemUse.ItemId), combatItemuse.ItemId,
+                                    emptyItemuse.ItemId)
+                                .AsSyntaxNodeOrToken(),
+                            Assignment(nameof(CombatItemUse.Condition), combatItemuse.Condition, emptyItemuse.Condition)
+                                .AsSyntaxNodeOrToken(),
+                            Assignment(nameof(combatItemuse.Value), combatItemuse.Value, emptyItemuse.Value)
+                                .AsSyntaxNodeOrToken()))));
+    }
+}
index 6b76bb95ee36e7e4d4e50eee6fcf317908fb4909..2d3ec8034483668bf7ffe106a26d71da00bc5051 100644 (file)
@@ -107,6 +107,9 @@ internal static class QuestStepExtensions
                                 .AsSyntaxNodeOrToken(),
                             AssignmentList(nameof(QuestStep.ComplexCombatData), step.ComplexCombatData)
                                 .AsSyntaxNodeOrToken(),
+                            Assignment(nameof(QuestStep.CombatItemUse), step.CombatItemUse,
+                                emptyStep.CombatItemUse)
+                                .AsSyntaxNodeOrToken(),
                             Assignment(nameof(QuestStep.CombatDelaySecondsAtStart),
                                     step.CombatDelaySecondsAtStart,
                                     emptyStep.CombatDelaySecondsAtStart)
index c5fb47f5b8f592fe47c18ace73a44a7fd0444364..2c1df09fbc2db5a6a3660df524a394fd33d4be39 100644 (file)
@@ -71,6 +71,7 @@ public static class RoslynShortcuts
                 GatheringNodeGroup nodeGroup => nodeGroup.ToExpressionSyntax(),
                 GatheringNode nodeLocation => nodeLocation.ToExpressionSyntax(),
                 GatheringLocation location => location.ToExpressionSyntax(),
+                CombatItemUse combatItemUse => combatItemUse.ToExpressionSyntax(),
                 not null when value.GetType().IsEnum => MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression,
                     IdentifierName(value.GetType().Name), IdentifierName(value.GetType().GetEnumName(value)!)),
                 _ => throw new Exception($"Unsupported data type {value.GetType()} = {value}")