Esempio n. 1
0
    void CreateAdditionalRequests(OneRequest request)
    {
        List <OneRequest> requests = new List <OneRequest>();

        for (int i = 0; i < 8; i++)
        {
            requests.Add((OneRequest)request.Clone());
        }
        requests[0].ChangePos(true, false, false, true);
        requests[1].ChangePos(true, false, false, false);
        requests[2].ChangePos(true, true, false, false);
        requests[3].ChangePos(false, false, false, true);
        requests[4].ChangePos(false, true, false, false);
        requests[5].ChangePos(false, false, true, true);
        requests[6].ChangePos(false, false, true, false);
        requests[7].ChangePos(false, true, true, false);

        foreach (var item in requests)
        {
            if (ChangeToGridPosition(item))
            {
                if (CheckUIScale.isRetina)
                {
                    StartCoroutine(DownloadMapRetina(CreateNewTile, item));
                }
                else
                {
                    StartCoroutine(DownloadMap(CreateNewTile, item));
                }
            }
        }
    }
Esempio n. 2
0
    string ReturnApiUrl(OneRequest request)
    {
        Vector3 tempPos           = request.position;
        Vector2 metersPos         = Conversion.MetersToLatLon(new Vector2(tempPos.x, tempPos.y));
        string  output            = "";
        string  retinaMultiplayer = "";
        string  positionX         = metersPos.x.ToString();

        positionX = positionX.Replace(',', '.');
        string positionY = metersPos.y.ToString();

        positionY = positionY.Replace(',', '.');
        if (CheckUIScale.isRetina)
        {
            retinaMultiplayer = "@2x";
        }
        if (useGoogleMaps)
        {
            output = string.Format("http://maps.googleapis.com/maps/api/staticmap?center={0},{1}&zoom={2}&size=640x640&key={3}{4}", positionX, positionY, request.zoomLevel, GoogleLocationApi.instance.apiKey, style);
        }
        else
        {
            output = string.Format("https://api.mapbox.com/styles/v1/bionicl/cjbfocd42b59q2rqasdw3ezwb/static/{1},{0},{2},0,0/640x640{3}?access_token={4}&logo=false&attribution=false", positionX, positionY, request.zoomLevel - 1, retinaMultiplayer, GoogleLocationApi.instance.mapBoxApiKey);
        }
        return(output);
    }
Esempio n. 3
0
    void RenderMap()
    {
        OneRequest request = CalculateMapZoom();

        CreateAdditionalRequests(request);
        if (ChangeToGridPosition(request))
        {
            StartCoroutine(DownloadMap(CreateNewTile, request));
        }
    }
Esempio n. 4
0
    void CreateNewTile(Sprite sprite, OneRequest request)
    {
        Vector3 tempPos = request.position;

        tempPos.z = request.zoomLevel * -1 + 40;
        GameObject tempGo = Instantiate(tilePrefab, tempPos, transform.rotation);

        tempGo.GetComponent <SpriteRenderer>().sprite = sprite;
        tempGo.transform.SetParent(mapTilesGroups[request.groupId].transform);
        tempGo.transform.SetAsLastSibling();
        tempGo.transform.localScale = new Vector3(request.tileSize, request.tileSize, 1);
    }
Esempio n. 5
0
    // Create new tile
    IEnumerator DownloadMap(Action <Sprite, OneRequest> action, OneRequest request)
    {
        string url = ReturnApiUrl(request);

        using (WWW www = new WWW(url)) {
            yield return(www);

            Sprite sprite = Sprite.Create(www.texture,
                                          new Rect(0, 0, 640, 640),
                                          new Vector2(0.5f, 0.5f));
            action.Invoke(sprite, request);
        }
    }
Esempio n. 6
0
    string ReturnApiUrl(OneRequest request)
    {
        Vector3 tempPos   = request.position;
        Vector2 metersPos = Conversion.MetersToLatLon(new Vector2(tempPos.x, tempPos.y));
        string  output    = "";

        if (useGoogleMaps)
        {
            output = string.Format("http://maps.googleapis.com/maps/api/staticmap?center={0},{1}&zoom={2}&size=640x640&key={3}{4}", metersPos.x, metersPos.y, request.zoomLevel, GoogleLocationApi.instance.apiKey, style);
        }
        else
        {
            output = string.Format("https://api.mapbox.com/styles/v1/bionicl/cjbfocd42b59q2rqasdw3ezwb/static/{1},{0},{2},0,0/640x640?access_token={3}", metersPos.x, metersPos.y, request.zoomLevel - 1, GoogleLocationApi.instance.mapBoxApiKey);
        }
        return(output);
    }
Esempio n. 7
0
    void RenderMapTiles()
    {
        OneRequest request = CalculateMapZoom();

        CreateAdditionalRequests(request);
        if (ChangeToGridPosition(request))
        {
            if (CheckUIScale.isRetina)
            {
                StartCoroutine(DownloadMapRetina(CreateNewTile, request));
            }
            else
            {
                StartCoroutine(DownloadMap(CreateNewTile, request));
            }
        }
    }
Esempio n. 8
0
    IEnumerator DownloadMapRetina(Action <Sprite, OneRequest> action, OneRequest request)
    {
        string url = ReturnApiUrl(request);

        UnityWebRequest www = UnityWebRequestTexture.GetTexture(url);

        yield return(www.SendWebRequest());

        if (www.isNetworkError || www.isHttpError)
        {
            Debug.LogError("DOWNLOAD MAP RETINA ERROR: " + www.error);
        }
        else
        {
            Texture2D texture = ((DownloadHandlerTexture)www.downloadHandler).texture;
            Sprite    sprite  = Sprite.Create(texture,
                                              new Rect(0, 0, 1280, 1280),
                                              new Vector2(0.5f, 0.5f), 200);
            action.Invoke(sprite, request);
        }
    }
Esempio n. 9
0
    // Grid system
    bool ChangeToGridPosition(OneRequest request)
    {
        float x = request.position.x;
        float y = request.position.y;

        int     xGrid      = (int)(x / request.tileSize / 6.4f) + 1;
        int     yGrid      = (int)(y / request.tileSize / 6.4f) + 1;
        Vector2 tempVector = new Vector2(xGrid, yGrid);

        if (donePositions[request.zoomLevel].Contains(tempVector))
        {
            //Debug.Log("Already drawn, skipping");
            return(false);
        }
        else
        {
            //Debug.Log(string.Format("x: {0}  y: {1}", xGrid, yGrid));
            request.position.x = (float)xGrid * request.tileSize * 6.4f;
            request.position.y = (float)yGrid * request.tileSize * 6.4f;
            donePositions[request.zoomLevel].Add(tempVector);
            return(true);
        }
    }