private void Navigate() { if (Robot.TurnRemaining == 0) { double distance = Robot.DetermineDistance(Robot.CurrentDirection); if (Robot.DistanceRemaining <= 0 && currentMeetAndGreetPhase == MeetAndGreetStep.DriveCurve) { if (distance > SMALLER_OFFSET) { Robot.SetAhead(distance - OFFSET); } currentMeetAndGreetPhase = MeetAndGreetStep.MoveForward; } else if (Robot.DistanceRemaining <= 0 && currentMeetAndGreetPhase == MeetAndGreetStep.MoveForward) { if (Robot.DetermineDistance(Robot.DetermineLeftDirection(Robot.CurrentDirection)) > SMALLER_OFFSET && distance >= SMALLER_OFFSET) { Robot.SetAhead(50); } Robot.SetTurnLeft(90); currentMeetAndGreetPhase = MeetAndGreetStep.DriveCurve; } } }
public override void ActivatePhase(RoboPhase previousPhase) { base.ActivatePhase(previousPhase); currentMeetAndGreetPhase = MeetAndGreetStep.MoveForward; Robot.SetTurnLeft(Robot.Heading % 90); }