Fix WaitForObjectPosition to use actual data
authorLiza Carvelli <liza@carvel.li>
Sun, 9 Jun 2024 20:43:45 +0000 (22:43 +0200)
committerLiza Carvelli <liza@carvel.li>
Sun, 9 Jun 2024 20:43:45 +0000 (22:43 +0200)
Questionable/Controller/Steps/BaseFactory/WaitAtEnd.cs

index 01d5c75392bff0daeebabdc944cf17a057f44b8e..e0519faf60d2c8398b5fac92c17423f61febe41d 100644 (file)
@@ -43,7 +43,16 @@ internal static class WaitAtEnd
                     return [new NextStep()];
 
                 case EInteractionType.WaitForObjectAtPosition:
-                    return [serviceProvider.GetRequiredService<WaitObjectAtPosition>(), new NextStep()];
+                    ArgumentNullException.ThrowIfNull(step.DataId);
+                    ArgumentNullException.ThrowIfNull(step.Position);
+
+                    return
+                    [
+                        serviceProvider.GetRequiredService<WaitObjectAtPosition>()
+                            .With(step.DataId.Value, step.Position.Value),
+                        serviceProvider.GetRequiredService<WaitDelay>(),
+                        new NextStep()
+                    ];
 
                 default:
                     return [serviceProvider.GetRequiredService<WaitDelay>(), new NextStep()];
@@ -103,6 +112,13 @@ internal static class WaitAtEnd
         public uint DataId { get; set; }
         public Vector3 Destination { get; set; }
 
+        public ITask With(uint dataId, Vector3 destination)
+        {
+            DataId = dataId;
+            Destination = destination;
+            return this;
+        }
+
         public bool Start() => true;
 
         public ETaskResult Update() =>