Dwarrowdelf.Jobs.Assignments.FleeMoveAssignment.DoMove C# (CSharp) Method

DoMove() private method

private DoMove ( Direction dir ) : GameAction
dir Direction
return GameAction
        GameAction DoMove(Direction dir)
        {
            IntVector2 ov = dir.ToIntVector2();

            if (ov.IsNull)
                return new WaitAction(1);

            var env = this.Worker.Environment;

            for (int i = 0; i < 7; ++i)
            {
                var v = ov.FastRotate(((i + 1) >> 1) * (((i % 2) << 1) - 1));
                var d = env.AdjustMoveDir(this.Worker.Location, v.ToDirection());

                if (d != Direction.None)
                    return new MoveAction(d);
            }

            if (this.Worker.CanMoveTo(Direction.Up))
                return new MoveAction(Direction.Up);

            if (this.Worker.CanMoveTo(Direction.Down))
                return new MoveAction(Direction.Down);

            return new WaitAction(1);
        }