//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; } } }
//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 } } }
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(); } } } }
////misc functions/////////////////////////////////////////////////// public int numBooksInVendor(BookcaseData bookcase) { int n = 0; foreach (CategoryData c in bookcase.categories) { n += c.total; } return(n); }
////////////////////////////////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++; } } } } }