Esempio n. 1
0
    IEnumerator WaitForImageResponse(int index, Vector2 pos)
    {
        OWMWeatherImage weatherImage = _downloadedWeatherImages.Where(x => x.ZoomLevel == _currZoom && x.Position == pos && (x.DownloadTime - System.DateTime.Now).Hours < 1).FirstOrDefault();

        //(OWMWeatherImage)MainGameController.instance.networkController.getResponse(Responses.WeatherImg, index);
        while (weatherImage == null)
        {
            yield return(new WaitForSeconds(1));

            weatherImage = (OWMWeatherImage)MainGameController.instance.networkController.getResponse(Responses.WeatherImg, index);
            if (weatherImage != null)
            {
                weatherImage.Position  = pos;
                weatherImage.ZoomLevel = _currZoom;
                _downloadedWeatherImages.Add(weatherImage);
            }
        }
        index = weatherImage.Index;

        GameObject windImage = GameObject.Instantiate(_windImagePrefab);

        windImage.transform.SetParent(_windImagesParent.transform);
        windImage.name = index + "-WindImage" + pos;
        windImage.GetComponent <Image>().sprite = weatherImage.Image;
        windImage.GetComponent <Image>().color  = Color.white;
        windImage.GetComponent <Image>().mainTexture.filterMode = FilterMode.Point;
        windImage.GetComponent <RectTransform>().sizeDelta      = new Vector2(2048, 2048);
        windImage.transform.localScale    = Vector3.one;
        windImage.transform.localPosition = new Vector2(pos.x * 2048, pos.y * -2048) - new Vector2(1024, -1024);
        windImage.SetActive(false);

        _loadedIndex += 1;
    }
Esempio n. 2
0
    public IEnumerator request(string url, int index)
    {
        WWW www = new WWW(url);

        yield return(www);

        if (www.error == string.Empty || www.error == null)
        {
            if (www.texture.height == 256)
            {
                Texture2D texture = new Texture2D(www.texture.width, www.texture.height, TextureFormat.DXT1, false);
                www.LoadImageIntoTexture(texture);
                Rect   rect        = new Rect(0, 0, texture.width, texture.height);
                Sprite spriteToUse = Sprite.Create(texture, rect, new Vector2(0.5f, 0.5f), 100);

                OWMWeatherImage oWMWeatherImage = new OWMWeatherImage(spriteToUse, Vector2.negativeInfinity, -1, System.DateTime.Parse(www.responseHeaders["Date"]), index);

                _responses.Add(Responses.WeatherImg.ToString() + index, oWMWeatherImage);
            }
            processResponse(www.text);
        }
        else
        {
            Debug.LogError(url + "\n gives the folowing error:" + www.error);
        }
    }
Esempio n. 3
0
    public IEnumerator getWindImages()
    {
        float worldMapSize = 4096 * _currZoom;//_windImagesParent.GetComponent<RectTransform>().sizeDelta.x;
        int   amount       = Mathf.RoundToInt(Mathf.Sqrt((worldMapSize / 2048)));
        int   maxxy        = (int)Mathf.Pow(2, amount);

        Vector2 playerpos = MainGameController.instance.player.getCurrentLocationLatLon();
        Vector3 pos       = WorldMapController.LatitudeLongitudeToTileId(playerpos.x, playerpos.y, amount);

        int minx = (int)((pos.x - 2 >= 0) ? pos.x - 2 : 0);
        int maxx = (int)((pos.x + 2 < maxxy) ? pos.x + 2 : maxxy - 1);
        int miny = (int)((pos.y - 2 >= 0) ? pos.y - 2 : 0);
        int maxy = (int)((pos.y + 2 < maxxy) ? pos.y + 2 : maxxy - 1);

        int lastIndex = 0;

        _windImagesParent.SetActive(false);
        _loadingImage.SetActive(true);
        _zoominButton.interactable  = false;
        _zoomOutButton.interactable = false;

        //_loadedIndex = MainGameController.instance.networkController.GetCurrentWeatherImageIndex();
        int startIndex = _loadedIndex;
        int index      = startIndex;

        for (int fx = minx; fx <= maxx; fx++)
        {
            for (int fy = maxy; fy >= miny; fy--)
            {
                OWMWeatherImage oWMWeatherImage = _downloadedWeatherImages.Where(x => x.ZoomLevel == _currZoom && x.Position == new Vector2(fx, fy) && (x.DownloadTime - System.DateTime.Now).Hours < 1).FirstOrDefault();

                if (oWMWeatherImage == null)
                {
                    index = MainGameController.instance.networkController.getWindImage(amount, fx, fy);
                }
                else
                {
                    index++;
                    oWMWeatherImage.Index = index;
                }
                lastIndex = index;
                StartCoroutine(WaitForImageResponse(index, new Vector2(fx, fy)));
                yield return(new WaitForSeconds(0.1f));
            }
        }
        StartCoroutine(viewWeatherMapWhenDone(startIndex, lastIndex));
        //float parentpos = ((worldMapSize / 2048) - 1) * 1024;
        //_windImagesParent.transform.localPosition = new Vector3(parentpos, -parentpos);

        //MainGameController.instance.networkController.getWindImage(0, 0, 0);
        //StartCoroutine(WaitForImageResponse());
    }