def __onBuyFullCollection(self, *_): collectionStrID = YEARS_INFO.getCollectionSettingID( self._collectionType, self._collectionBuilder.YEAR_NAME) collectionID = YEARS_INFO.getCollectionIntID(collectionStrID) builder = AlbumCollectionDialogBuilder(collectionID) self.__confirmationWindow = builder.build(withBlur=True) result = yield BuyCollectionProcessor( collectionID, self.__confirmationWindow).request() self.__confirmationWindow = None if result.userMsg: SystemMessages.pushI18nMessage( result.userMsg, type=result.sysMsgType, priority=NotificationPriorityLevel.MEDIUM) if not self.isLoaded or not result.success: return else: with self.viewModel.transaction() as model: for toyRenderer in model.getToys(): if not toyRenderer.getIsInCollection(): toyRenderer.setIsNew(True) toyRenderer.setIsInCollection(True) model.setCollectedToysCount(model.getTotalToysCount()) model.setCurrentRankToysCount(model.getTotalRankToysCount()) model.setIsCollectionFull(True) self.__updateShards() return
def init(self, nofail=True): cfg = self.__cfg try: getToyCollectionID = getToySettingID ny18Toys = collectibles.g_cache.ny18.toys ny19Toys = collectibles.g_cache.ny19.toys ny20Toys = collectibles.g_cache.ny20.toys ny21Toys = collectibles.g_cache.ny21.toys ny22Toys = collectibles.g_cache.ny22.toys cfg['toys'] = ny22Toys collections = set((getToyCollectionID(toyDescr=toyDescr) for toyDescr in chain(ny22Toys.itervalues(), ny21Toys.itervalues(), ny20Toys.itervalues(), ny19Toys.itervalues(), ny18Toys.itervalues()))) cfg['collections'] = {name:YEARS_INFO.getCollectionIntID(name) for name in collections} cfg['collectionStrIDs'] = sorted(cfg['collections'].keys(), key=YEARS_INFO.getCollectionIntID) cfg['slots'] = readSlots(CONSTS.COLLECTION2022_SLOTS_XML_PATH) cfg['levels'] = readLevelRewards(CONSTS.COLLECTION2022_LEVEL_REWARDS_XML_PATH) cfg['collectionRewardsByCollectionID'] = dict(chain(readCollectionRewards(CONSTS.COLLECTION2022_REWARDS_XML_PATH).iteritems(), readCollectionRewards(CONSTS.COLLECTION2021_REWARDS_XML_PATH).iteritems(), readCollectionRewards(CONSTS.COLLECTION2020_REWARDS_XML_PATH).iteritems(), readCollectionRewards(CONSTS.COLLECTION2019_REWARDS_XML_PATH).iteritems(), readCollectionRewards(CONSTS.COLLECTION2018_REWARDS_XML_PATH).iteritems())) cfg['toyCountByCollectionID'] = _countToysByCollection(chain(ny22Toys.itervalues(), ny21Toys.itervalues(), ny20Toys.itervalues(), ny19Toys.itervalues(), ny18Toys.itervalues()), collectingFunction=getToyCollectionID) cfg['variadicDiscounts'] = buildVariadicDiscountsCache(CONSTS.VARIADIC_DISCOUNTS_XML_PATH) if IS_CLIENT: cfg['toysTransformations'] = readToysTransformations(CONSTS.TOYS_TRANSFORMATIONS_XML_PATH) if IS_BASEAPP: cfg['collectionIDs'] = dictlike(getToyCollectionID) cfg['levelRewardsByID'] = dict(((lr.level, lid) for lid, lr in self.levels.iteritems())) cfg['toyGroups'] = _buildToyGroups(self.toys.itervalues()) except Exception: self.ffini() if nofail: raise LOG_CURRENT_EXCEPTION()
def getCollectionSettingsIDs(cls, useMega=False): result = [] for settingName in YEARS_INFO.getCollectionTypesByYear( cls._YEAR, useMega=useMega): result.append( YEARS_INFO.getCollectionIntID( YEARS_INFO.getCollectionSettingID(settingName, cls._YEAR))) return result
def getCollectionLevelByName(cls, collectionName): config = getBonusConfig() requester = cls._itemsCache.items.festivity collectionDistrs = requester.getCollectionDistributions() collectionStrID = YEARS_INFO.getCollectionSettingID( collectionName, YEARS_INFO.CURRENT_YEAR_STR) collectionID = YEARS_INFO.getCollectionIntID(collectionStrID) return config.getCollectionLevel( collectionDistrs[collectionID]) if requester.isSynced() else 0
def __setRewards(self, collectionStrID, rewards): rewards = self.__getRewards(rewards) collectionIntID = YEARS_INFO.getCollectionIntID(collectionStrID) with self.getViewModel().transaction() as model: year, collectionName = getCollectionByIntID(collectionIntID) model.setStyleStr('{}_{}'.format(collectionName, year)) model.setIsMega(collectionName == ToySettings.MEGA_TOYS) rewardsList = model.getRewards() rewardsList.clear() for index, reward in enumerate(rewards): incIndex = index + 1 formatter = getRewardRendererModelPresenter(reward) rewardRender = formatter.getModel(reward, incIndex) rewardsList.addViewModel(rewardRender) self.__tooltipData[incIndex] = createTooltipDataByDict(reward) rewardsList.invalidate()