コード例 #1
0
    //load categories in bookcase mode
    public void funcBookcaseMode()
    {
        int          publisherId = Cache.Instance.cachedData.allVendors[bookcasePathHandler.vendorIndex].id;
        BookcaseData tmpBookcase = Cache.Instance.cachedData.allVendors.Find(v => v.id == publisherId).bookcaseData;

        Cache.Instance.api.abortRetrieve();
        if (tmpBookcase.categories != null)
        {
            if (categoryIndex < tmpBookcase.categories.Count)
            {
                if (tmpBookcase.categories[categoryIndex].total > tmpBookcase.categories[categoryIndex].booksData.Count)
                {
                    Debug.Log("bookcase enq");
                    DataRequest dr = new DataRequest();
                    dr.vendorId   = publisherId;
                    dr.categoryId = tmpBookcase.categories[categoryIndex++].id;
                    requestQueue.Enqueue(dr);
                }
                else
                {
                    categoryIndex = 0;
                }
            }
            else
            {
                categoryIndex = 0;
            }
        }
    }
コード例 #2
0
    //purpose: gets book case by publisher id
    public void retrieveCategoryInBookcase(int publisherId, int categoryId)
    {
        //all vendors and categories must be present first
        Vendor tmpVendorReference = cachedData.allVendors.Find(v => v.id == publisherId);

        if (tmpVendorReference != null)
        {
            BookcaseData tmpBookcase = tmpVendorReference.bookcaseData;
            CategoryData tmpCat      = null;


            if (tmpBookcase.categories != null)
            {
                tmpCat = tmpBookcase.categories.Find(c => c.id == categoryId);
            }

            if (tmpCat == null)
            {
                StartCoroutine(api.productsByPublisher(publisherId, categoryId, oneTimeLoadLimit, 1));
            }
            else if (tmpCat.booksData.Count < tmpCat.total)
            {
                tmpCat.accessFrequency++;
                StartCoroutine(api.productsByPublisher(publisherId, categoryId, oneTimeLoadLimit, tmpCat.page));
            }
            else
            {
                tmpCat.accessFrequency++;
                //call back
            }
        }
    }
コード例 #3
0
    public void removeLeastAccessedCategory(BookcaseData bookCaseData)
    {
        if (bookCaseData != null)
        {
            if (bookCaseData.categories != null)
            {
                if (bookCaseData.categories.Count > 0)
                {
                    CategoryData tmpLeastAccessCat = bookCaseData.categories[0];

                    foreach (CategoryData c in bookCaseData.categories)
                    {
                        if (c.accessFrequency < tmpLeastAccessCat.accessFrequency)
                        {
                            tmpLeastAccessCat = c;
                        }
                    }

                    //remove pictures
                    foreach (BookData bd in tmpLeastAccessCat.booksData)
                    {
                        bd.texture = null;
                    }

                    loadedBooks                      -= tmpLeastAccessCat.booksData.Count;
                    tmpLeastAccessCat.page            = 1;
                    tmpLeastAccessCat.accessFrequency = 0;
                    tmpLeastAccessCat.booksData.Clear();
                }
            }
        }
    }
コード例 #4
0
    ////misc functions///////////////////////////////////////////////////
    public int numBooksInVendor(BookcaseData bookcase)
    {
        int n = 0;

        foreach (CategoryData c in bookcase.categories)
        {
            n += c.total;
        }

        return(n);
    }
コード例 #5
0
    ////////////////////////////////caching functions//////////////////////////////////////////
    public void cacheCategoryInPublisher(ProductResult res, int publisherId, int categoryId)
    {
        Vendor tmpVendorReference = cachedData.allVendors.Find(v => v.id == publisherId);

        if (res.prodcutList.Count > 0 && tmpVendorReference != null)
        {
            if (loadedBooks >= booksLimit)
            {
                removeExcess();
            }
            if (res.prodcutList.Count > 0)
            {
                BookcaseData tmpBookcase = null;
                CategoryData tmpCat      = null;

                tmpBookcase = tmpVendorReference.bookcaseData;

                if (tmpBookcase == null)
                {
                    tmpBookcase = new BookcaseData();
                }

                if (tmpBookcase.categories != null)
                {
                    tmpCat = tmpBookcase.categories.Find(c => c.id == categoryId);
                }
                else
                {
                    tmpBookcase.categories = new List <CategoryData>();
                }

                if (tmpCat == null)
                {
                    tmpCat           = new CategoryData();
                    tmpCat.booksData = new List <BookData>();
                    tmpCat.id        = categoryId;
                    tmpCat.name      = cachedData.allCategories.Find(x => x.id == categoryId).name;
                    tmpCat.total     = res.totalRecord;
                    tmpCat.page      = 0;
                    tmpBookcase.categories.Add(tmpCat);
                }

                tmpCat.page++;

                foreach (Product book in res.prodcutList)
                {
                    if (tmpCat.booksData.Find(b => book.id == b.id) == null)
                    {
                        BookData tmpBook = new BookData();
                        tmpBook.url         = api.makeBookUrl(book.productSlug);
                        tmpBook.id          = book.id;
                        tmpBook.texture     = null;
                        tmpBook.description = book.shortDescription;
                        tmpBook.name        = book.name;
                        tmpCat.booksData.Add(tmpBook);
                        if (book.defaultPicture != "" && book.defaultPicture != null)
                        {
                            tmpBook.imgString = Convert.ToBase64String(Decompress(Convert.FromBase64String(book.defaultPicture)));
                            Texture2D tmpTexture = new Texture2D(1, 1);
                            tmpTexture.LoadImage(Convert.FromBase64String(tmpBook.imgString));
                            tmpTexture.Apply();
                            tmpBook.texture = tmpTexture;
                        }
                        loadedBooks++;
                    }
                }
            }
        }
    }