Update source gen
authorLiza Carvelli <liza@carvel.li>
Sat, 20 Jul 2024 19:23:54 +0000 (21:23 +0200)
committerLiza Carvelli <liza@carvel.li>
Sat, 20 Jul 2024 19:23:54 +0000 (21:23 +0200)
QuestPathGenerator/QuestSourceGenerator.cs
QuestPathGenerator/RoslynShortcuts.cs

index 5ba7b36395ff2881b8c9596841e63a2dbadf6be2..5eb62a8838049cd3cd735bbce71ccbe2b85ba735 100644 (file)
@@ -365,6 +365,9 @@ public class QuestSourceGenerator : ISourceGenerator
                                                 .AsSyntaxNodeOrToken(),
                                             AssignmentList(nameof(QuestStep.SkipIf), step.SkipIf)
                                                 .AsSyntaxNodeOrToken(),
+                                            AssignmentList(nameof(QuestStep.RequiredQuestVariables),
+                                                    step.RequiredQuestVariables)
+                                                .AsSyntaxNodeOrToken(),
                                             AssignmentList(nameof(QuestStep.CompletionQuestVariablesFlags),
                                                     step.CompletionQuestVariablesFlags)
                                                 .AsSyntaxNodeOrToken(),
index 186de3e0d82f9650d405f7f38f3a15eaa8ff73b9..6364dca93c2926808dfb21381c4103c58510497e 100644 (file)
@@ -39,6 +39,8 @@ public static class RoslynShortcuts
             return LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(i16));
         else if (value is int i32)
             return LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(i32));
+        else if (value is byte u8)
+            return LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(u8));
         else if (value is ushort u16)
             return LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(u16));
         else if (value is uint u32)
@@ -173,15 +175,40 @@ public static class RoslynShortcuts
                             SyntaxNodeList(
                                 Assignment(nameof(ComplexCombatData.DataId), complexCombatData.DataId, default(uint))
                                     .AsSyntaxNodeOrToken(),
-                                Assignment(nameof(ComplexCombatData.MinimumKillCount), complexCombatData.MinimumKillCount, null)
+                                Assignment(nameof(ComplexCombatData.MinimumKillCount),
+                                        complexCombatData.MinimumKillCount, null)
                                     .AsSyntaxNodeOrToken(),
                                 Assignment(nameof(ComplexCombatData.RewardItemId), complexCombatData.RewardItemId, null)
                                     .AsSyntaxNodeOrToken(),
-                                Assignment(nameof(ComplexCombatData.RewardItemCount), complexCombatData.RewardItemCount, null)
+                                Assignment(nameof(ComplexCombatData.RewardItemCount), complexCombatData.RewardItemCount,
+                                        null)
                                     .AsSyntaxNodeOrToken(),
-                                AssignmentList(nameof(ComplexCombatData.CompletionQuestVariablesFlags), complexCombatData.CompletionQuestVariablesFlags)
+                                AssignmentList(nameof(ComplexCombatData.CompletionQuestVariablesFlags),
+                                        complexCombatData.CompletionQuestVariablesFlags)
                                     .AsSyntaxNodeOrToken()))));
-        }else if (value is null)
+        }
+        else if (value is QuestWorkValue qwv)
+        {
+            return ObjectCreationExpression(
+                    IdentifierName(nameof(QuestWorkValue)))
+                .WithArgumentList(
+                    ArgumentList(
+                        SeparatedList<ArgumentSyntax>(
+                            new SyntaxNodeOrToken[]
+                            {
+                                Argument(LiteralValue(qwv.High)),
+                                Token(SyntaxKind.CommaToken),
+                                Argument(LiteralValue(qwv.Low))
+                            })));
+        }
+        else if (value is List<QuestWorkValue> list)
+        {
+            return CollectionExpression(
+                SeparatedList<CollectionElementSyntax>(
+                    SyntaxNodeList(list.Select(x => ExpressionElement(
+                        LiteralValue(x)).AsSyntaxNodeOrToken()).ToArray())));
+        }
+        else if (value is null)
             return LiteralExpression(SyntaxKind.NullLiteralExpression);
         else
             throw new Exception($"Unsupported data type {value.GetType()} = {value}");