示例#1
0
    IEnumerator RemovePlaceCoroutine(ItineraryListItem itineraryItem, PlaceDetails placeDetails)
    {
        Place place = itineraryItem?.placesData
                      ?.SingleOrDefault(p => p.placeDetails == placeDetails)
                      ?.place;

        if (place == null)
        {
            yield break;
        }
        string url = RemovePlaceResult.BuildURL(place);
        WWW    www = new WWW(url);

        yield return(www);

        if (www.error != null)
        {
            Debug.Log(www.error);
            yield break;
        }

        var placeItem = placesShown.FirstOrDefault(p => p.data.placeDetails == placeDetails);

        if (placeItem != null)
        {
            itineraryItem.placesData.Remove(placeItem.data);
            placesShown.Remove(placeItem);
            Destroy(placeItem.gameObject);
        }
    }
示例#2
0
    IEnumerator AddPlaceCoroutine(ItineraryListItem itinerary, PlaceDetails place)
    {
        LoginResult user = PersistentUser.User;
        string      url  = string.Format(
            AddPlaceResult.URL,
            WWW.EscapeURL(itinerary.itinerary.itineraryid),
            WWW.EscapeURL(place.result.place_id));
        WWW www = new WWW(url);

        yield return(www);

        if (www.error != null)
        {
            Debug.Log(www.error);
            yield break;
        }

        AddPlaceResult json = JsonUtility.FromJson <AddPlaceResult>(www.text);

        if (json.error != null)
        {
            Debug.Log(json.error);
            yield break;
        }
        else if (json.places.Length > 0)
        {
            var newItem = AddPlaceListItem(json.places[0]);
            itinerary.placesData.Add(newItem.data);
        }
    }
示例#3
0
    ItineraryListItem AddItineraryListItem(Itinerary itinerary)
    {
        ItineraryListItem item = Instantiate(itineraryItemPrefab, itinerariesHolder)
                                 .GetComponent <ItineraryListItem>();

        item.Init(itinerary);
        itineraries.Add(item);
        return(item);
    }
示例#4
0
 /// <summary>
 /// Start a flyby sequence, with an optional delay.
 /// </summary>
 /// <param name="itinerary">Instantiated itinerary item.</param>
 /// <param name="delay">An optional delay, in seconds.</param>
 public void StartFlyby(ItineraryListItem itinerary, float delay = 0)
 {
     if (itinerary.placesData.Count == 0)
     {
         return;
     }
     locations = itinerary.placesData
                 .Select(d => d.placeDetails.result.geometry)
                 .ToList();
     StopFlyby();
     StartCoroutine(FlybyCoroutine(delay));
 }
示例#5
0
    IEnumerator GetPlacesInItineraryCoroutine(ItineraryListItem itinerary)
    {
        if (itinerary.placesData.Count == 0)
        {
            string url = string.Format(
                GetPlacesResult.URL,
                WWW.EscapeURL(itinerary.itinerary.itineraryid));
            WWW www = new WWW(url);
            yield return(www);

            if (www.error != null)
            {
                Debug.Log(www.error);
                yield break;
            }

            GetPlacesResult json = JsonUtility.FromJson <GetPlacesResult>(www.text);
            if (json.error != null)
            {
                Debug.Log(json.error);
            }
            else
            {
                var placesOrdered = json.places.OrderBy(p => p.itineraryindex);
                StartCoroutine(GetTravelTimesCoroutine(placesOrdered.ToList()));
                foreach (var place in placesOrdered)
                {
                    var newItem = AddPlaceListItem(place);
                    itinerary.placesData.Add(newItem.data);
                }

                ValidateArrivalTimings(placesShown.OrderBy(p => p.data.place.itineraryindex));
            }
        }
        else
        {
            foreach (var data in itinerary.placesData)
            {
                AddPlaceListItem(data);
            }
            StartCoroutine(GetTravelTimesCoroutine(itinerary.placesData.Select(d => d.place).ToList()));
        }

        yield return(new WaitUntil(() => placesShown.All(p => !p.IsLoading)));

        currentItinerary = itinerary;
        GoToPage(Page.Places);
        ZoomToSeeAllPlaces();
        ItineraryLabels.Instance.Init(itinerary.itinerary);
    }
示例#6
0
    IEnumerator RemoveItineraryCoroutine(ItineraryListItem item)
    {
        string url = RemoveItineraryResult.BuildURL(item.itinerary);
        WWW    www = new WWW(url);

        yield return(www);

        if (www.error != null)
        {
            Debug.Log(www.error);
            yield break;
        }

        itineraries.Remove(item);
        Destroy(item.gameObject);
    }
示例#7
0
 public void OnClickItineraryItem(ItineraryListItem item)
 {
     itineraryNameInput.text = item.itinerary.name;
     StartCoroutine(GetPlacesInItineraryCoroutine(item));
 }
示例#8
0
 public void OnClickRemoveItinerary(ItineraryListItem item)
 {
     StartCoroutine(RemoveItineraryCoroutine(item));
 }