From 3a688e03f0ee8fb746c05b4cd3755f75edb4fce2 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Tue, 31 Dec 2019 15:15:48 +0000 Subject: [PATCH] Add multiple levels of fallback. --- OpenRA.Mods.Common/Activities/Move/Move.cs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/OpenRA.Mods.Common/Activities/Move/Move.cs b/OpenRA.Mods.Common/Activities/Move/Move.cs index b542c3e30b..aef51b1bed 100644 --- a/OpenRA.Mods.Common/Activities/Move/Move.cs +++ b/OpenRA.Mods.Common/Activities/Move/Move.cs @@ -30,6 +30,14 @@ namespace OpenRA.Mods.Common.Activities readonly Actor ignoreActor; readonly Color? targetLineColor; + static readonly BlockedByActor[] PathSearchOrder = + { + BlockedByActor.All, + BlockedByActor.Immovable, + BlockedByActor.Stationary, + BlockedByActor.None + }; + List path; CPos? destination; @@ -150,9 +158,12 @@ namespace OpenRA.Mods.Common.Activities } // TODO: Change this to BlockedByActor.Stationary after improving the local avoidance behaviour - path = EvalPath(BlockedByActor.All); - if (path.Count == 0) - path = EvalPath(BlockedByActor.None); + foreach (var check in PathSearchOrder) + { + path = EvalPath(check); + if (path.Count > 0) + return; + } } public override bool Tick(Actor self)