示例#1
0
    public IEnumerator LoadInternetPageInternal()
    {
        serverConnectionError.SetActive(false);
        videoContainer.SetActive(false);
        spinner.gameObject.SetActive(true);
        spinner.rectTransform.rotation = Quaternion.identity;

        var offset = (page - 1) * videosPerPage;

        var url = $"{Web.indexUrl}?count={videosPerPage}&offset={offset}";

        if (searchParamAgeDays > 0)
        {
            url += $"&agedays={searchParamAgeDays}";
        }
        if (!string.IsNullOrEmpty(searchParamText))
        {
            url += $"&search={searchParamText}";
        }
        if (!string.IsNullOrEmpty(searchParamAuthor))
        {
            url += $"&author={searchParamAuthor}";
        }

        var www = UnityWebRequest.Get(url);

        yield return(www.SendWebRequest());

        spinner.gameObject.SetActive(false);

        if (www.isNetworkError || www.isHttpError)
        {
            serverConnectionError.SetActive(true);
            yield break;
        }

        loadedVideos = JsonUtility.FromJson <VideoResponseSerialize>(www.downloadHandler.text);

        videoContainer.SetActive(true);
        noVideos.enabled = loadedVideos.videos.Count == 0;

        for (int i = offset; i < loadedVideos.videos.Count; i++)
        {
            var video = loadedVideos.videos[i];
            video.realTimestamp = DateTime.Parse(video.timestamp);
        }

        totalVideos = loadedVideos.totalcount;
        numPages    = Mathf.Max(1, Mathf.CeilToInt(totalVideos / (float)videosPerPage));
        page        = loadedVideos.page;

        //Note(Simon): Videos
        {
            StartCoroutine(BuildVideoGameObjects(false));
        }
    }
示例#2
0
    public void LoadLocalPageInternal()
    {
        serverConnectionError.SetActive(false);
        videoContainer.SetActive(false);
        spinner.enabled = true;
        spinner.rectTransform.rotation = Quaternion.identity;

        var di = new DirectoryInfo(Application.persistentDataPath);

        //Note(Simon): Regex to match Guids
        var localVideos = di.GetDirectories("*-*-*-*-*");

        if (loadedVideos == null)
        {
            loadedVideos = new VideoResponseSerialize();
        }
        loadedVideos.videos = new List <VideoSerialize>();

        loadedVideos.totalcount = localVideos.Length;

        for (var i = (page - 1) * videosPerPage; i < Mathf.Min(page * videosPerPage, localVideos.Length); i++)
        {
            var path = localVideos[i].FullName;

            var data       = SaveFile.OpenFile(Path.Combine(path, SaveFile.metaFilename));
            var folderInfo = new DirectoryInfo(path);

            loadedVideos.videos.Add(new VideoSerialize
            {
                title             = data.meta.title,
                description       = data.meta.description,
                downloadsize      = SaveFile.DirectorySize(folderInfo),
                realTimestamp     = folderInfo.LastWriteTime,
                id                = localVideos[i].Name,
                compatibleVersion = !(data.meta.version > VersionManager.VERSION)
            });
        }

        videoContainer.SetActive(true);
        spinner.enabled = false;

        noVideos.enabled = loadedVideos.videos.Count == 0;

        totalVideos = loadedVideos.totalcount;
        numPages    = Mathf.Max(1, Mathf.CeilToInt(totalVideos / (float)videosPerPage));

        //Note(Simon): Videos
        {
            StartCoroutine(BuildVideoGameObjects());
        }
    }
示例#3
0
    public IEnumerator LoadInternetPageInternal()
    {
        serverConnectionError.SetActive(false);
        videoContainer.SetActive(false);
        spinner.enabled = true;
        spinner.rectTransform.rotation = Quaternion.identity;

        var offset = (page - 1) * videosPerPage;

        var url = string.Format("{0}?count={1}&offset={2}", Web.indexUrl, videosPerPage, offset);

        if (searchParamAgeDays > 0)
        {
            url += string.Format("&agedays={0}", searchParamAgeDays);
        }
        if (!string.IsNullOrEmpty(searchParamText))
        {
            url += string.Format("&search={0}", searchParamText);
        }
        if (!string.IsNullOrEmpty(searchParamAuthor))
        {
            url += string.Format("&author={0}", searchParamAuthor);
        }

        var www = new WWW(url);

        yield return(www);

        videoContainer.SetActive(true);
        spinner.enabled = false;

        loadedVideos = JsonUtility.FromJson <VideoResponseSerialize>(www.text);

        if (www.error != null || www.text == "")
        {
            serverConnectionError.SetActive(true);
            yield break;
        }

        noVideos.enabled = loadedVideos.videos.Count == 0;

        for (int i = offset; i < loadedVideos.videos.Count; i++)
        {
            var video = loadedVideos.videos[i];
            video.realTimestamp = DateTime.Parse(video.timestamp);
        }

        totalVideos = loadedVideos.totalcount;
        numPages    = Mathf.Max(1, Mathf.CeilToInt(totalVideos / (float)videosPerPage));
        page        = loadedVideos.page;

        //Note(Simon): Videos
        {
            var videosThisPage = loadedVideos.videos ?? new List <VideoSerialize>();
            while (videos.Count < Mathf.Min(videosPerPage, videosThisPage.Count))
            {
                var video = Instantiate(videoPrefab);
                video.transform.SetParent(videoContainer.transform, false);
                videos.Add(video);
            }
            while (videos.Count > Mathf.Min(videosPerPage, videosThisPage.Count))
            {
                var video = videos[videos.Count - 1];
                videos.RemoveAt(videos.Count - 1);
                Destroy(video);
            }

            for (int i = 0; i < videosThisPage.Count; i++)
            {
                var v = videosThisPage[i];
                videos[i].GetComponent <IndexPanelVideo>().SetData(v, false);
            }
        }
    }
示例#4
0
    public void LoadLocalPageInternal()
    {
        serverConnectionError.SetActive(false);
        videoContainer.SetActive(false);
        spinner.enabled = true;
        spinner.rectTransform.rotation = Quaternion.identity;

        var di = new DirectoryInfo(Application.persistentDataPath);

        //Note(Simon): Regex to match Guids
        var localVideos = di.GetDirectories("*-*-*-*-*");

        if (loadedVideos == null)
        {
            loadedVideos = new VideoResponseSerialize();
        }
        loadedVideos.videos = new List <VideoSerialize>();

        loadedVideos.totalcount = localVideos.Length;

        foreach (var v in localVideos)
        {
            var path = v.FullName;

            var data       = SaveFile.OpenFile(Path.Combine(path, SaveFile.metaFilename));
            var folderInfo = new DirectoryInfo(path);

            loadedVideos.videos.Add(new VideoSerialize
            {
                title         = data.meta.title,
                description   = data.meta.description,
                downloadsize  = SaveFile.DirectorySize(folderInfo),
                realTimestamp = folderInfo.LastWriteTime,
                uuid          = v.Name,
            });
        }

        videoContainer.SetActive(true);
        spinner.enabled = false;

        noVideos.enabled = loadedVideos.videos.Count == 0;

        totalVideos = loadedVideos.totalcount;
        numPages    = Mathf.Max(1, Mathf.CeilToInt(totalVideos / (float)loadedVideos.count));
        page        = loadedVideos.page;

        //Note(Simon): Videos
        {
            var videosThisPage = loadedVideos.videos ?? new List <VideoSerialize>();
            while (videos.Count < Math.Min(videosPerPage, videosThisPage.Count))
            {
                var video = Instantiate(videoPrefab);
                video.transform.SetParent(videoContainer.transform, false);
                videos.Add(video);
            }
            while (videos.Count > Math.Min(videosPerPage, videosThisPage.Count))
            {
                var video = videos[videos.Count - 1];
                videos.RemoveAt(videos.Count - 1);
                Destroy(video);
            }

            for (int i = 0; i < videosThisPage.Count; i++)
            {
                var v = videosThisPage[i];
                videos[i].GetComponent <IndexPanelVideo>().SetData(v, true);
            }
        }
    }