private void SetInstruction(NavigationInstruction instruction, out string stepLabel, out string stepImage, out string firstDirectionImage, out int rotation, out int location, out int instructionValue) { var currentLanguage = CrossMultilingual.Current.CurrentCultureInfo; string connectionTypeString = ""; string nextWaypointName = instruction._nextWaypointName; nextWaypointName = _xmlInformation.GiveWaypointName(instruction._nextWaypointGuid); string nextRegionName = instruction._information._regionName; firstDirectionImage = null; rotation = 0; stepImage = ""; instructionValue = _originalInstructionScale; location = _originalInstructionLocation; nextRegionName = _xmlInformation.GiveRegionName(instruction._nextRegionGuid); switch (instruction._information._turnDirection) { case TurnDirection.FirstDirection: string firstDirection_Landmark = _firstDirectionInstruction.returnLandmark(instruction._currentWaypointGuid); CardinalDirection firstDirection_Direction = _firstDirectionInstruction.returnDirection(instruction._currentWaypointGuid); int faceDirection = (int)firstDirection_Direction; int turnDirection = (int)instruction._information._relatedDirectionOfFirstDirection; string initialDirectionString = ""; int directionFaceorBack = _firstDirectionInstruction.returnFaceOrBack(instruction._currentWaypointGuid); if (faceDirection > turnDirection) { turnDirection = (turnDirection + 8) - faceDirection; } else { turnDirection = turnDirection - faceDirection; } if (directionFaceorBack == _initialFaceDirection) { initialDirectionString = _resourceManager.GetString( "DIRECTION_INITIAIL_FACE_STRING", currentLanguage); } else if (directionFaceorBack == _initialBackDirection) { initialDirectionString = _resourceManager.GetString( "DIRECTION_INITIAIL_BACK_STRING", currentLanguage); if (turnDirection < 4) { turnDirection = turnDirection + 4; } else if (turnDirection >= 4) { turnDirection = turnDirection - 4; } } string instructionDirection = ""; string stepImageString = ""; CardinalDirection cardinalDirection = (CardinalDirection)turnDirection; switch (cardinalDirection) { case CardinalDirection.North: instructionDirection = _resourceManager.GetString( "GO_STRAIGHT_STRING", currentLanguage); stepImageString = "Arrow_up"; break; case CardinalDirection.Northeast: instructionDirection = _resourceManager.GetString( "GO_RIGHT_FRONT_STRING", currentLanguage); stepImageString = "Arrow_frontright"; break; case CardinalDirection.East: instructionDirection = _resourceManager.GetString( "TURN_RIGHT_STRING", currentLanguage); stepImageString = "Arrow_right"; break; case CardinalDirection.Southeast: instructionDirection = _resourceManager.GetString( "TURN_RIGHT_REAR_STRING", currentLanguage); stepImageString = "Arrow_rearright"; break; case CardinalDirection.South: instructionDirection = _resourceManager.GetString( "TURN_BACK_STRING", currentLanguage); stepImageString = "Arrow_down"; break; case CardinalDirection.Southwest: instructionDirection = _resourceManager.GetString( "TURN_RIGHT_REAR_STRING", currentLanguage); stepImageString = "Arrow_rearleft"; break; case CardinalDirection.West: instructionDirection = _resourceManager.GetString( "TURN_LEFT_STRING", currentLanguage); stepImageString = "Arrow_left"; break; case CardinalDirection.Northwest: instructionDirection = _resourceManager.GetString( "TURN_LEFT_FRONT_STRING", currentLanguage); stepImageString = "Arrow_frontleft"; break; } if (instruction._previousRegionGuid != Guid.Empty && instruction._previousRegionGuid != instruction._currentRegionGuid) { stepLabel = string.Format( _resourceManager.GetString( "DIRECTION_INITIAIL_CROSS_REGION_STRING", currentLanguage), instructionDirection, Environment.NewLine, nextWaypointName, Environment.NewLine, instruction._information._distance); stepImage = stepImageString; break; } else if (firstDirection_Landmark == _pictureType) { string pictureName; string regionString = instruction._currentRegionGuid.ToString(); string waypointString = instruction._currentWaypointGuid.ToString(); pictureName = _navigationGraph.GetBuildingName() + regionString.Substring(33, 3) + waypointString.Substring(31, 5); stepLabel = string.Format( initialDirectionString, _resourceManager.GetString( "PICTURE_DIRECTION_STRING", currentLanguage), Environment.NewLine, instructionDirection, Environment.NewLine, nextWaypointName, " ", instruction._information._distance); firstDirectionImage = pictureName; stepImage = stepImageString; rotation = 75; location = _firstDirectionInstructionLocation; instructionValue = _firstDirectionInstructionScale; break; } else { stepLabel = string.Format( initialDirectionString, firstDirection_Landmark, Environment.NewLine, instructionDirection, Environment.NewLine, nextWaypointName, Environment.NewLine, instruction._information._distance); stepImage = stepImageString; break; } case TurnDirection.Forward: stepLabel = string.Format( _resourceManager.GetString( "DIRECTION_STRAIGHT_STRING", currentLanguage), Environment.NewLine, instruction._information._distance, Environment.NewLine, nextWaypointName); stepImage = "Arrow_up"; break; case TurnDirection.Forward_Right: stepLabel = string.Format( _resourceManager.GetString( "DIRECTION_RIGHT_FRONT_STRING", currentLanguage), Environment.NewLine, instruction._information._distance, Environment.NewLine, nextWaypointName); stepImage = "Arrow_frontright"; break; case TurnDirection.Right: stepLabel = string.Format( _resourceManager.GetString( "DIRECTION_RIGHT_STRING", currentLanguage), Environment.NewLine, instruction._information._distance, Environment.NewLine, nextWaypointName); stepImage = "Arrow_right"; break; case TurnDirection.Backward_Right: stepLabel = string.Format( _resourceManager.GetString( "DIRECTION_RIGHT_REAR_STRING", currentLanguage), Environment.NewLine, instruction._information._distance, Environment.NewLine, nextWaypointName); stepImage = "Arrow_rearright"; break; case TurnDirection.Backward: stepLabel = string.Format( _resourceManager.GetString( "DIRECTION_REAR_STRING", currentLanguage), Environment.NewLine, instruction._information._distance, Environment.NewLine, nextWaypointName); stepImage = "Arrow_down"; break; case TurnDirection.Backward_Left: stepLabel = string.Format( _resourceManager.GetString( "DIRECTION_LEFT_REAR_STRING", currentLanguage), Environment.NewLine, instruction._information._distance, Environment.NewLine, nextWaypointName); stepImage = "Arrow_rearleft"; break; case TurnDirection.Left: stepLabel = string.Format( _resourceManager.GetString( "DIRECTION_LEFT_STRING", currentLanguage), Environment.NewLine, instruction._information._distance, Environment.NewLine, nextWaypointName); stepImage = "Arrow_left"; break; case TurnDirection.Forward_Left: stepLabel = string.Format( _resourceManager.GetString( "DIRECTION_LEFT_FRONT_STRING", currentLanguage), Environment.NewLine, instruction._information._distance, Environment.NewLine, nextWaypointName); stepImage = "Arrow_frontleft"; break; case TurnDirection.Up: switch (instruction._information._connectionType) { case ConnectionType.Elevator: connectionTypeString = _resourceManager.GetString("ELEVATOR_STRING", currentLanguage); stepImage = "Elevator_up"; break; case ConnectionType.Escalator: connectionTypeString = _resourceManager.GetString("ESCALATOR_STRING", currentLanguage); stepImage = "Stairs_up"; break; case ConnectionType.Stair: connectionTypeString = _resourceManager.GetString("STAIR_STRING", currentLanguage); stepImage = "Stairs_up"; break; case ConnectionType.NormalHallway: connectionTypeString = _resourceManager.GetString("NORMALHALLWAY_STRING", currentLanguage); stepImage = "Stairs_up"; break; } stepLabel = string.Format( _resourceManager.GetString( "DIRECTION_UP_STRING", currentLanguage), connectionTypeString, Environment.NewLine, nextRegionName); break; case TurnDirection.Down: switch (instruction._information._connectionType) { case ConnectionType.Elevator: connectionTypeString = _resourceManager.GetString("ELEVATOR_STRING", currentLanguage); stepImage = "Elevtor_down"; break; case ConnectionType.Escalator: connectionTypeString = _resourceManager.GetString("ESCALATOR_STRING", currentLanguage); stepImage = "Stairs_down"; break; case ConnectionType.Stair: connectionTypeString = _resourceManager.GetString("STAIR_STRING", currentLanguage); stepImage = "Stairs_down"; break; case ConnectionType.NormalHallway: connectionTypeString = _resourceManager.GetString("NORMALHALLWAY_STRING", currentLanguage); stepImage = "Stairs_down"; break; } stepLabel = string.Format( _resourceManager.GetString( "DIRECTION_DOWN_STRING", currentLanguage), connectionTypeString, Environment.NewLine, nextRegionName); break; default: stepLabel = "You're get ERROR status"; stepImage = "Warning"; break; } }