Exemplo n.º 1
0
        public async Task <bool> ApproachAsync(string verb, IObject obj)
        {
            ApproachHotspots approachStyle = getApproachStyle(verb);

            switch (approachStyle)
            {
            case ApproachHotspots.NeverWalk:
                break;

            case ApproachHotspots.FaceOnly:
                await _faceDirection.FaceDirectionAsync(obj);

                break;

            case ApproachHotspots.WalkIfHaveWalkPoint:
                if (obj.WalkPoint == null)
                {
                    await _faceDirection.FaceDirectionAsync(obj);
                }
                else
                {
                    if (!await _walk.WalkAsync(new AGSLocation(obj.WalkPoint.Value)))
                    {
                        return(false);
                    }
                    await _faceDirection.FaceDirectionAsync(obj);
                }
                break;

            case ApproachHotspots.AlwaysWalk:
                PointF?walkPoint = obj.WalkPoint ?? obj.CenterPoint ?? obj.Location.XY;
                if (!await _walk.WalkAsync(new AGSLocation(walkPoint.Value)))
                {
                    return(false);
                }
                await _faceDirection.FaceDirectionAsync(obj);

                break;

            default:
                throw new NotSupportedException("Approach style is not supported: " + approachStyle.ToString());
            }
            return(true);
        }
Exemplo n.º 2
0
        private void setNextWalk(IObject target, IFollowSettings settings)
        {
            PointF targetPoint;

            if (MathUtils.Random().Next(100) <= settings.WanderOffPercentage)
            {
                targetPoint = wanderOff();
            }
            else
            {
                targetPoint = follow(target, settings);
            }

            _currentWalk = _walk.WalkAsync(new AGSLocation(targetPoint.X, targetPoint.Y));
        }
Exemplo n.º 3
0
 public Task <Boolean> WalkAsync(ILocation location)
 {
     return(_walkBehavior.WalkAsync(location));
 }