: ITask
{
private bool _unmountTriggered;
- private DateTime _unmountedAt = DateTime.MinValue;
+ private DateTime _continueAt = DateTime.MinValue;
public bool Start()
{
return false;
logger.LogInformation("Step explicitly wants no mount, trying to unmount...");
+ if (condition[ConditionFlag.InFlight])
+ {
+ gameFunctions.Unmount();
+ return true;
+ }
+
_unmountTriggered = gameFunctions.Unmount();
- if (_unmountTriggered)
- _unmountedAt = DateTime.Now;
+ _continueAt = DateTime.Now.AddSeconds(1);
return true;
}
public ETaskResult Update()
{
+ if (_continueAt >= DateTime.Now)
+ return ETaskResult.StillRunning;
+
if (!_unmountTriggered)
{
- _unmountTriggered = gameFunctions.Unmount();
- if (_unmountTriggered)
- _unmountedAt = DateTime.Now;
+ // if still flying, we still need to land
+ if (condition[ConditionFlag.InFlight])
+ gameFunctions.Unmount();
+ else
+ _unmountTriggered = gameFunctions.Unmount();
+ _continueAt = DateTime.Now.AddSeconds(0.5);
return ETaskResult.StillRunning;
}
- if (DateTime.Now < _unmountedAt.AddSeconds(1))
- return ETaskResult.StillRunning;
-
return condition[ConditionFlag.Mounted]
? ETaskResult.StillRunning
: ETaskResult.TaskComplete;