public Vector2 GetPositionInRoute(Location startLocation) { CheckIfNeedToBeReversed(startLocation); Vector2 position = Vector2.zero; float distance = 0; float distanceDone = WorldMapController.calculateRouteDistanceKM(this) - GetDistanceLeft(); for (int i = 1; i < GetListRoute().Count; i++) { Vector2 prev = GetListRoute()[i - 1]; Vector2 cur = GetListRoute()[i]; float prevdistance = distance; distance += WorldMapController.calculateDistanceLatLongKM(prev, cur); if (distance > distanceDone) { float tempdist = distance - prevdistance; float tempdistDone = distanceDone - prevdistance; float tempPosition = tempdistDone / tempdist; position = Vector2.Lerp(prev, cur, tempPosition); break; } } return(position); }
public void OnChooseRouteButtonClick() { if (_selectedRoute != null) { float distance = WorldMapController.calculateRouteDistanceKM(_selectedRoute); _selectedRoute.SetDistanceLeft(distance); TimeSpan timeSpan = _selectedRoute.GetTimeLeft(MainGameController.instance.player.GetActiveBoat().GetOfflineSpeed()); _routeSelectedConfirmPanel.SetData(_selectedRoute.GetFromLocation().Name, _selectedRoute.GetToLocation().Name, distance, timeSpan); _routeSelectedConfirmPanel.gameObject.SetActive(true); } }