public async Task <PlayerUpdateResponse> Move(IGeoLocation targetLocation, Func <Task> functionExecutedWhileWalking, ISession session, CancellationToken cancellationToken, double customWalkingSpeed = 0.0) { cancellationToken.ThrowIfCancellationRequested(); // If the stretegies become bigger, create a factory for easy management return(await WalkStrategy.Walk(targetLocation, functionExecutedWhileWalking, session, cancellationToken, customWalkingSpeed)); }
public async Task Move(IGeoLocation targetLocation, Func <Task> functionExecutedWhileWalking, ISession session, CancellationToken cancellationToken, double customWalkingSpeed = 0.0) { cancellationToken.ThrowIfCancellationRequested(); TinyIoC.TinyIoCContainer.Current.Resolve <MultiAccountManager>().ThrowIfSwitchAccountRequested(); // If the stretegies become bigger, create a factory for easy management //Logging.Logger.Write($"Navigation - Walking speed {customWalkingSpeed}"); await WalkStrategy.Walk(targetLocation, functionExecutedWhileWalking, session, cancellationToken, customWalkingSpeed); }
public async Task Move(IGeoLocation targetLocation, Func <Task> functionExecutedWhileWalking, ISession session, CancellationToken cancellationToken, double customWalkingSpeed = 0.0) { distance = LocationUtils.CalculateDistanceInMeters(session.Client.CurrentLatitude, session.Client.CurrentLongitude, targetLocation.Latitude, targetLocation.Longitude); cancellationToken.ThrowIfCancellationRequested(); TinyIoC.TinyIoCContainer.Current.Resolve <MultiAccountManager>().ThrowIfSwitchAccountRequested(); // If the stretegies become bigger, create a factory for easy management //Logging.Logger.Write($"Navigation - Walking speed {customWalkingSpeed}"); InitializeWalkStrategies(session.LogicSettings); WalkStrategy = GetStrategy(session.LogicSettings); await WalkStrategy.Walk(targetLocation, functionExecutedWhileWalking, session, cancellationToken, customWalkingSpeed).ConfigureAwait(false); }
public override void Move(SidesToMove dir) { switch (dir) { case SidesToMove.Right: if (Map.Map[position.Y, position.X + 1] != Map.Wall) { if (Map.Map[position.Y, position.X + 1] == Map.PortalRight) { if (modeStatus != GhostStatus.Frightened) { ID = "images/ghosts/blinky/right.png"; } else { ID = "images/ghosts/scared.png"; } previousPosition.X = position.X; previousPosition.Y = position.Y; position.X = Map.PortalLeftPos.X; position.Y = Map.PortalLeftPos.Y; position.X++; } else { if (modeStatus != GhostStatus.Frightened) { ID = "images/ghosts/blinky/right.png"; } else { ID = "images/ghosts/scared.png"; } previousPosition.X = position.X; previousPosition.Y = position.Y; prevDirection = SidesToMove.Right; position.X++; } } break; case SidesToMove.Left: if (Map.Map[position.Y, position.X - 1] != Map.Wall) { if (Map.Map[position.Y, position.X - 1] == Map.PortalLeft) { if (modeStatus != GhostStatus.Frightened) { ID = "images/ghosts/blinky/left.png"; } else { ID = "images/ghosts/scared.png"; } previousPosition.X = position.X; previousPosition.Y = position.Y; position.X = Map.PortalRightPos.X; position.Y = Map.PortalRightPos.Y; position.X--; } else { if (modeStatus != GhostStatus.Frightened) { ID = "images/ghosts/blinky/left.png"; } else { ID = "images/ghosts/scared.png"; } previousPosition.X = position.X; previousPosition.Y = position.Y; prevDirection = SidesToMove.Left; position.X--; } } break; case SidesToMove.Up: if (Map.Map[position.Y - 1, position.X] != Map.Wall) { if (modeStatus != GhostStatus.Frightened) { ID = "images/ghosts/blinky/up.png"; } else { ID = "images/ghosts/scared.png"; } previousPosition.X = position.X; previousPosition.Y = position.Y; prevDirection = SidesToMove.Up; position.Y--; } break; case SidesToMove.Down: if (Map.Map[position.Y + 1, position.X] != Map.Wall) { if (modeStatus != GhostStatus.Frightened) { ID = "images/ghosts/blinky/down.png"; } else { ID = "images/ghosts/scared.png"; } previousPosition.X = position.X; previousPosition.Y = position.Y; prevDirection = SidesToMove.Down; position.Y++; } break; } if (position.X == Map.StartPointBlinky.X && position.Y == Map.StartPointBlinky.Y && modeStatus == GhostStatus.FirstStepInAGame) { modeStatus = GhostStatus.Walking; } if (modeStatus == GhostStatus.Chase) { Strategy = new ChaseStrategy(); Strategy.StartStrategy(aStar, pacman, Map, this, Map.StartPointBlinky); } if (modeStatus == GhostStatus.Walking) { Strategy = new WalkStrategyRight(); Strategy.StartStrategy(aStar, pacman, Map, this, Map.StartPointBlinky); } if (modeStatus == GhostStatus.Frightened) { Strategy = new WalkStrategy(); Strategy.StartStrategy(aStar, pacman, Map, this, Map.StartPointBlinky); } if (modeStatus == GhostStatus.FirstStepInAGame) { Strategy = new FromHomeStrategy(); Strategy.StartStrategy(aStar, pacman, Map, this, Map.StartPointBlinky); } }
public override async void Move(SidesToMove direction) { if (countToExit == 1) { await Task.Delay(3000); ++countToExit; } switch (direction) { case SidesToMove.Right: if (Map.Map[position.Y, position.X + 1] != Map.Wall) { if (Map.Map[position.Y, position.X + 1] == Map.PortalRight) { if (modeStatus != GhostStatus.Frightened) { ID = "images/ghosts/clyde/right.png"; } else { ID = "images/ghosts/scared.png"; } previousPosition.X = position.X; previousPosition.Y = position.Y; position.X = Map.PortalLeftPos.X; position.Y = Map.PortalLeftPos.Y; position.X++; } else { if (modeStatus != GhostStatus.Frightened) { ID = "images/ghosts/clyde/right.png"; } else { ID = "images/ghosts/scared.png"; } previousPosition.X = position.X; previousPosition.Y = position.Y; prevDirection = SidesToMove.Right; position.X++; } } break; case SidesToMove.Left: if (Map.Map[position.Y, position.X - 1] != Map.Wall) { if (Map.Map[position.Y, position.X - 1] == Map.PortalLeft) { if (modeStatus != GhostStatus.Frightened) { ID = "images/ghosts/clyde/left.png"; } else { ID = "images/ghosts/scared.png"; } previousPosition.X = position.X; previousPosition.Y = position.Y; position.X = Map.PortalRightPos.X; position.Y = Map.PortalRightPos.Y; position.X--; } else { if (modeStatus != GhostStatus.Frightened) { ID = "images/ghosts/clyde/left.png"; } else { ID = "images/ghosts/scared.png"; } previousPosition.X = position.X; previousPosition.Y = position.Y; prevDirection = SidesToMove.Left; position.X--; } } break; case SidesToMove.Up: if (Map.Map[position.Y - 1, position.X] != Map.Wall) { if (modeStatus != GhostStatus.Frightened) { ID = "images/ghosts/clyde/up.png"; } else { ID = "images/ghosts/scared.png"; } previousPosition.X = position.X; previousPosition.Y = position.Y; prevDirection = SidesToMove.Up; position.Y--; } break; case SidesToMove.Down: if (Map.Map[position.Y + 1, position.X] != Map.Wall) { if (modeStatus != GhostStatus.Frightened) { ID = "images/ghosts/clyde/down.png"; } else { ID = "images/ghosts/scared.png"; } previousPosition.X = position.X; previousPosition.Y = position.Y; prevDirection = SidesToMove.Down; position.Y++; } break; } if (position.X == Map.StartPointClyde.X && position.Y == Map.StartPointClyde.Y && modeStatus == GhostStatus.FirstStepInAGame) { modeStatus = GhostStatus.Walking; } if (modeStatus == GhostStatus.Chase) { if (Math.Sqrt(((pacman.position.X - position.X) * (pacman.position.X - position.X)) + ((pacman.position.Y - position.Y) * (pacman.position.Y - position.Y))) > 9) { Strategy = new ChaseStrategy(); Strategy.StartStrategy(aStar, pacman, Map, this, Map.StartPointClyde); } else { modeStatus = GhostStatus.FirstStepInAGame; } } if (modeStatus == GhostStatus.Walking) { Strategy = new WalkStrategy(); Strategy.StartStrategy(aStar, pacman, Map, this, Map.StartPointClyde); } if (modeStatus == GhostStatus.Frightened) { Strategy = new WalkStrategy(); Strategy.StartStrategy(aStar, pacman, Map, this, Map.StartPointClyde); } if (modeStatus == GhostStatus.FirstStepInAGame) { Strategy = new FromHomeStrategy(); Strategy.StartStrategy(aStar, pacman, Map, this, Map.StartPointClyde); } }