def _carouseItemWrapper(self, itemCD): item = self.service.getItemByCD(itemCD) inventoryCount = self.__ctx.mode.getItemInventoryCount(item) purchaseLimit = self.__ctx.mode.getPurchaseLimit(item) isApplied = itemCD in self._carouselDP.getAppliedItems() isBaseStyleItem = itemCD in self._carouselDP.getBaseStyleItems() if item.isStyleOnly or isBaseStyleItem: isDarked = isUsedUp = False else: isDarked = purchaseLimit <= 0 and inventoryCount <= 0 isUsedUp = isItemUsedUp(item) showEditableHint = False showEditBtnHint = False if self.__ctx.modeId == CustomizationModes.STYLED: autoRentEnabled = self.__ctx.mode.isAutoRentEnabled() if item.isProgressionRequired: showEditableHint = not bool( self.__serverSettings.getOnceOnlyHintsSetting( OnceOnlyHints.C11N_PROGRESSION_REQUIRED_STYLE_SLOT_HINT )) showEditBtnHint = not bool( self.__serverSettings.getOnceOnlyHintsSetting( OnceOnlyHints. C11N_PROGRESSION_REQUIRED_STYLE_SLOT_BUTTON_HINT)) elif item.isEditable: showEditableHint = not bool( self.__serverSettings.getOnceOnlyHintsSetting( OnceOnlyHints.C11N_EDITABLE_STYLE_SLOT_HINT)) showEditBtnHint = not bool( self.__serverSettings.getOnceOnlyHintsSetting( OnceOnlyHints.C11N_EDITABLE_STYLE_SLOT_BUTTON_HINT)) else: autoRentEnabled = False isChained, isUnsuitable = self._carouselDP.processDependentParams(item) return buildCustomizationItemDataVO(item=item, count=inventoryCount, isApplied=isApplied, isDarked=isDarked, isUsedUp=isUsedUp, autoRentEnabled=autoRentEnabled, vehicle=g_currentVehicle.item, showEditableHint=showEditableHint, showEditBtnHint=showEditBtnHint, isChained=isChained, isUnsuitable=isUnsuitable)
def __initFilters(self): self.__carouselFilters[ FilterTypes.HISTORIC] = DisjunctionCarouselFilter( criteria={ FilterAliases.HISTORIC: REQ_CRITERIA.CUSTOMIZATION.HISTORICAL, FilterAliases.NON_HISTORIC: REQ_CRITERIA.CUSTOMIZATION.NON_HISTORICAL, FilterAliases.FANTASTICAL: REQ_CRITERIA.CUSTOMIZATION.FANTASTICAL }) self.__carouselFilters[FilterTypes.INVENTORY] = SimpleCarouselFilter( criteria=REQ_CRITERIA.CUSTOM( lambda item: self.__ctx.mode.getItemInventoryCount(item) > 0)) self.__carouselFilters[FilterTypes.APPLIED] = SimpleCarouselFilter( criteria=REQ_CRITERIA.CUSTOM( lambda item: item.intCD in self.__ctx.mode.getAppliedItems( isOriginal=False))) self.__carouselFilters[FilterTypes.USED_UP] = SimpleCarouselFilter( criteria=REQ_CRITERIA.CUSTOM(lambda item: not isItemUsedUp(item)), requirements=lambda: self.__ctx.isItemsOnAnotherVeh, inverse=True) self.__carouselFilters[ FilterTypes.EDITABLE_STYLES] = DisjunctionCarouselFilter( criteria={ FilterAliases.EDITABLE_STYLES: REQ_CRITERIA.CUSTOM( lambda item: item.canBeEditedForVehicle( g_currentVehicle.item.intCD)), FilterAliases.NON_EDITABLE_STYLES: REQ_CRITERIA.CUSTOM( lambda item: not item.canBeEditedForVehicle( g_currentVehicle.item.intCD)) }, requirements=lambda: self.__ctx.mode.tabId == CustomizationTabs .STYLES) self.__carouselFilters[FilterTypes.PROGRESSION] = SimpleCarouselFilter( criteria=REQ_CRITERIA.CUSTOM(lambda item: item.isProgressive), requirements=lambda: self.__ctx.isProgressiveItemsExist) self.__carouselFilters[ FilterTypes.FORMFACTORS] = FormfactorsCarouselFilter( requirements=lambda: self.__ctx.mode.tabId == CustomizationTabs .PROJECTION_DECALS)
def hasUsedUpItems(self): return any((isItemUsedUp(item) for item in self.items))