Ejemplo n.º 1
0
    def __init__(self, currentVehicle, carouselItemWrapper, proxy):
        super(CustomizationCarouselDataProvider, self).__init__()
        self._currentVehicle = currentVehicle
        self._tabIndex = 0
        self._seasonID = SeasonType.SUMMER
        self._onlyOwnedAndFreeItems = False
        self._historicOnlyItems = False
        self._onlyAppliedItems = False
        self._selectIntCD = None
        self.setItemWrapper(carouselItemWrapper)
        self._proxy = proxy
        self._currentlyApplied = set()
        self._allSeasonAndTabFilterData = {}
        visibleTabs = defaultdict(set)
        c11nContext = self.service.getCtx()
        anchorsData = c11nContext.hangarSpace.getSlotPositions()
        requirement = createCustomizationBaseRequestCriteria(self._currentVehicle.item, self.eventsCache.questsProgress, self._proxy.getAppliedItems())
        allItems = self.itemsCache.items.getItems(GUI_ITEM_TYPE.CUSTOMIZATIONS, requirement)
        for tabIndex in TABS_ITEM_MAPPING.iterkeys():
            self._allSeasonAndTabFilterData[tabIndex] = {}
            for season in SeasonType.COMMON_SEASONS:
                self._allSeasonAndTabFilterData[tabIndex][season] = CustomizationSeasonAndTypeFilterData()

        for item in sorted(allItems.itervalues(), key=comparisonKey):
            if item.isHiddenInUI():
                continue
            groupName = item.groupUserName
            tabIndex = TYPE_TO_TAB_IDX.get(item.itemTypeID)
            for seasonType in SeasonType.COMMON_SEASONS:
                if item.season & seasonType:
                    seasonAndTabData = self._allSeasonAndTabFilterData[tabIndex][seasonType]
                    if groupName and groupName not in seasonAndTabData.allGroups:
                        seasonAndTabData.allGroups.append(groupName)
                    seasonAndTabData.itemCount += 1
                    if tabIndex not in C11nTabs.VISIBLE:
                        continue
                    if item.itemTypeID in (GUI_ITEM_TYPE.INSCRIPTION, GUI_ITEM_TYPE.EMBLEM):
                        for areaData in anchorsData.itervalues():
                            if areaData.get(item.itemTypeID):
                                hasSlots = True
                                break
                        else:
                            hasSlots = False

                        if not hasSlots:
                            continue
                    visibleTabs[seasonType].add(tabIndex)

        c11nContext.updateVisibleTabsList(visibleTabs)
        for tabIndex in TABS_ITEM_MAPPING.iterkeys():
            for seasonType in SeasonType.COMMON_SEASONS:
                seasonAndTabData = self._allSeasonAndTabFilterData[tabIndex][seasonType]
                seasonAndTabData.allGroups.append(_ms(VEHICLE_CUSTOMIZATION.CUSTOMIZATION_FILTER_ALLGROUPS))
                seasonAndTabData.selectedGroupIndex = len(seasonAndTabData.allGroups) - 1

        self._customizationItems = []
        self._itemSizeData = []
        self._customizationBookmarks = []
        self._selectedIdx = -1
        return
Ejemplo n.º 2
0
    def _buildCustomizationItems(self):
        season = self._seasonID
        requirement = createCustomizationBaseRequestCriteria(self._currentVehicle.item, self.eventsCache.questsProgress, self._proxy.getAppliedItems(), season)
        seasonAndTabData = self._allSeasonAndTabFilterData[self._tabIndex][season]
        allItemsGroup = len(seasonAndTabData.allGroups) - 1
        if seasonAndTabData.selectedGroupIndex != allItemsGroup:
            selectedGroup = seasonAndTabData.allGroups[seasonAndTabData.selectedGroupIndex]
            requirement |= REQ_CRITERIA.CUSTOMIZATION.ONLY_IN_GROUP(selectedGroup)
        if self._historicOnlyItems:
            requirement |= ~REQ_CRITERIA.CUSTOMIZATION.HISTORICAL
        if self._onlyOwnedAndFreeItems:
            requirement |= REQ_CRITERIA.CUSTOM(lambda item: self._proxy.getItemInventoryCount(item) > 0)
        if self._onlyAppliedItems:
            appliedItems = self._proxy.getAppliedItems(isOriginal=False)
            requirement |= REQ_CRITERIA.CUSTOM(lambda item: item.intCD in appliedItems)
        allItems = self.itemsCache.items.getItems(TABS_ITEM_MAPPING[self._tabIndex], requirement)
        self._customizationItems = []
        self._customizationBookmarks = []
        lastGroupID = None
        for idx, item in enumerate(sorted(allItems.itervalues(), key=comparisonKey)):
            if item.isHiddenInUI():
                continue
            groupID = item.groupID
            if item.intCD == self._selectIntCD:
                self._selectedIdx = len(self._customizationItems)
                self._selectIntCD = None
            if groupID != lastGroupID:
                lastGroupID = groupID
                self._customizationBookmarks.append(CustomizationBookmarkVO(item.groupUserName, idx).asDict())
            self._customizationItems.append(item.intCD)
            self._itemSizeData.append(item.isWide())

        return
Ejemplo n.º 3
0
    def __updateVisibleTabsList(self):
        visibleTabs = defaultdict(set)
        anchorsData = g_currentVehicle.hangarSpace.getSlotPositions()
        requirement = createCustomizationBaseRequestCriteria(
            g_currentVehicle.item, self.eventsCache.questsProgress,
            self.getAppliedItems())
        items = self.service.getItems(GUI_ITEM_TYPE.CUSTOMIZATIONS,
                                      criteria=requirement)
        for item in sorted(items.itervalues(), key=comparisonKey):
            tabIndex = TYPE_TO_TAB_IDX.get(item.itemTypeID)
            if tabIndex not in C11nTabs.VISIBLE or tabIndex == C11nTabs.CAMOUFLAGE and g_currentVehicle.item.descriptor.type.hasCustomDefaultCamouflage:
                continue
            for seasonType in SeasonType.COMMON_SEASONS:
                if item.season & seasonType:
                    if item.itemTypeID in (GUI_ITEM_TYPE.INSCRIPTION,
                                           GUI_ITEM_TYPE.EMBLEM):
                        for areaData in anchorsData.itervalues():
                            if areaData.get(item.itemTypeID):
                                hasSlots = True
                                break
                        else:
                            hasSlots = False

                        if not hasSlots:
                            continue
                    visibleTabs[seasonType].add(tabIndex)

        self.__visibleTabs = visibleTabs
    def __initItemsData(self):
        self.__itemsData.clear()
        requirement = createCustomizationBaseRequestCriteria(
            g_currentVehicle.item, self.__eventsCache.questsProgress,
            self.__ctx.mode.getAppliedItems())
        requirement |= REQ_CRITERIA.CUSTOM(
            lambda item: not item.isHiddenInUI())
        itemTypes = []
        for tabId, slotType in CustomizationTabs.SLOT_TYPES.iteritems():
            if vehicleHasSlot(slotType):
                itemTypes.extend(CustomizationTabs.ITEM_TYPES[tabId])

        allItems = self.__itemsCache.items.getItems(tuple(itemTypes),
                                                    requirement)
        sortedItems = sorted(allItems.itervalues(), key=comparisonKey)
        customModeTabs = CustomizationTabs.MODES[CustomizationModes.CUSTOM]
        for item in sortedItems:
            tabId = ITEM_TYPE_TO_TAB[item.itemTypeID]
            modeId = CustomizationModes.CUSTOM if tabId in customModeTabs else CustomizationModes.STYLED
            for season in SeasonType.COMMON_SEASONS:
                if not item.season & season:
                    continue
                itemsDataStorage = self.__itemsData[modeId][season]
                if not itemsDataStorage or tabId != itemsDataStorage.keys(
                )[-1]:
                    itemsDataStorage[tabId] = ItemsData()
                itemsData = itemsDataStorage.values()[-1]
                if not itemsData.groups or item.groupID != itemsData.groups.keys(
                )[-1]:
                    itemsData.groups[item.groupID] = item.groupUserName
                itemsData.items.append(item)
    def __init__(self, currentVehicle, carouselItemWrapper, proxy):
        super(CustomizationCarouselDataProvider, self).__init__()
        self._currentVehicle = currentVehicle
        self._tabIndex = 0
        self._seasonID = SeasonType.SUMMER
        self._onlyOwnedAndFreeItems = False
        self._historicOnlyItems = False
        self._onlyAppliedItems = False
        self._selectIntCD = None
        self.setItemWrapper(carouselItemWrapper)
        self._proxy = proxy
        self._currentlyApplied = set()
        self._allSeasonAndTabFilterData = {}
        hasCustomDefaultCamouflage = g_currentVehicle.item.descriptor.type.hasCustomDefaultCamouflage
        requirement = createCustomizationBaseRequestCriteria(
            self._currentVehicle.item, self.eventsCache.questsProgress,
            self._proxy.getAppliedItems())
        allItems = self.itemsCache.items.getItems(GUI_ITEM_TYPE.CUSTOMIZATIONS,
                                                  requirement)
        for tabIndex in TABS_ITEM_MAPPING.iterkeys():
            self._allSeasonAndTabFilterData[tabIndex] = {}
            for season in SeasonType.COMMON_SEASONS:
                self._allSeasonAndTabFilterData[tabIndex][
                    season] = CustomizationSeasonAndTypeFilterData()

        for item in sorted(allItems.itervalues(), key=comparisonKey):
            if isServiceItem(item) and hasCustomDefaultCamouflage:
                continue
            groupName = item.groupUserName
            tabIndex = TYPE_TO_TAB_IDX.get(item.itemTypeID)
            for seasonType in SeasonType.COMMON_SEASONS:
                if item.season & seasonType:
                    seasonAndTabData = self._allSeasonAndTabFilterData[
                        tabIndex][seasonType]
                    if groupName and groupName not in seasonAndTabData.allGroups:
                        seasonAndTabData.allGroups.append(groupName)
                    seasonAndTabData.itemCount += 1

        for tabIndex in TABS_ITEM_MAPPING.iterkeys():
            for seasonType in SeasonType.COMMON_SEASONS:
                seasonAndTabData = self._allSeasonAndTabFilterData[tabIndex][
                    seasonType]
                seasonAndTabData.allGroups.append(
                    _ms(VEHICLE_CUSTOMIZATION.CUSTOMIZATION_FILTER_ALLGROUPS))
                seasonAndTabData.selectedGroupIndex = len(
                    seasonAndTabData.allGroups) - 1

        self._customizationItems = []
        self._itemSizeData = []
        self._customizationBookmarks = []
        self._selectedIdx = -1
        return
Ejemplo n.º 6
0
    def __initItemsData(self):
        self.__itemsData.clear()
        requirement = createCustomizationBaseRequestCriteria(
            g_currentVehicle.item, self.__eventsCache.questsProgress,
            self.__ctx.mode.getAppliedItems())
        requirement |= REQ_CRITERIA.CUSTOM(
            lambda item: not item.isHiddenInUI())
        itemTypes = []
        for tabId, slotType in CustomizationTabs.SLOT_TYPES.iteritems():
            if vehicleHasSlot(slotType):
                itemTypes.extend(CustomizationTabs.ITEM_TYPES[tabId])

        allItems = []
        customizationCache = vehicles.g_cache.customization20().itemTypes
        cTypes = set((C11N_ITEM_TYPE_MAP[iType] for iType in itemTypes
                      if iType in C11N_ITEM_TYPE_MAP))
        for cType in cTypes:
            for itemID in customizationCache[cType]:
                if itemID == EMPTY_ITEM_ID:
                    continue
                intCD = vehicles.makeIntCompactDescrByID(
                    'customizationItem', cType, itemID)
                item = self.__service.getItemByCD(intCD)
                if requirement(item):
                    allItems.append(item)

        sortedItems = sorted(allItems, key=comparisonKey)
        customModeTabs = CustomizationTabs.MODES[CustomizationModes.CUSTOM]
        for item in sortedItems:
            tabId = ITEM_TYPE_TO_TAB[item.itemTypeID]
            modeId = CustomizationModes.CUSTOM if tabId in customModeTabs else CustomizationModes.STYLED
            for season in SeasonType.COMMON_SEASONS:
                if not item.season & season:
                    continue
                itemsDataStorage = self.__itemsData[modeId][season]
                if not itemsDataStorage or tabId != itemsDataStorage.keys(
                )[-1]:
                    itemsDataStorage[tabId] = ItemsData()
                itemsData = itemsDataStorage.values()[-1]
                if not itemsData.groups or item.groupID != itemsData.groups.keys(
                )[-1]:
                    itemsData.groups[item.groupID] = item.groupUserName
                itemsData.items.append(item)