def _removeItem(self, slotId, season=None):
     if self.__modifiedStyle is None:
         return
     elif slotId == self.STYLE_SLOT:
         self.__modifiedStyle = None
         self._modifiedOutfits = {
             s: self._service.getEmptyOutfit()
             for s in SeasonType.COMMON_SEASONS
         }
         return
     elif not self.__modifiedStyle.isEditable:
         return _logger.error(
             'Failed to remove item from slotId: %s for style: %s. Style is not Editable',
             slotId, self.__modifiedStyle)
     else:
         season = season or self.season
         outfit = self._modifiedOutfits[season]
         vehicleCD = g_currentVehicle.item.descriptor.makeCompactDescr()
         baseOutfit = self.__modifiedStyle.getOutfit(season,
                                                     vehicleCD=vehicleCD)
         fitOutfit(baseOutfit, getCurrentVehicleAvailableRegionsMap())
         removeItemFromEditableStyle(outfit, baseOutfit, slotId)
         diff = getEditableStyleOutfitDiff(outfit, baseOutfit)
         self._ctx.stylesDiffsCache.saveDiff(self.__modifiedStyle, season,
                                             diff)
         return
Пример #2
0
    def __buildList(self):
        data = []
        if self.__style is None:
            return data
        else:
            vehicleDescriptor = g_currentVehicle.item.descriptor
            purchaseItems = self.__ctx.mode.getPurchaseItems()
            seasonPurchaseItems = {
                season: []
                for season in SeasonType.COMMON_SEASONS
            }
            for pItem in purchaseItems:
                if pItem.group not in SeasonType.COMMON_SEASONS:
                    continue
                seasonPurchaseItems[pItem.group].append(pItem)

            availableRegionsMap = getCurrentVehicleAvailableRegionsMap()
            for season in SEASONS_ORDER:
                seasonGroupVO = self.__getSeasonGroupVO(season)
                data.append(seasonGroupVO)
                itemsData = self.__getSeasonItemsData(
                    season, seasonPurchaseItems[season], availableRegionsMap,
                    vehicleDescriptor)
                data.extend(itemsData)

            return data
Пример #3
0
    def _onStart(self):
        if self._ctx.modeId != CustomizationModes.STYLED:
            _logger.error(
                'Failed to start Style Edit Mode. Style Edit Mode could be started only from Styled mode.'
            )
            self._ctx.changeMode(CustomizationModes.STYLED)
            return
        outfit = self._ctx.mode.currentOutfit
        if not outfit.id:
            _logger.error('Failed to start Style Edit Mode. No applied style.')
            self._ctx.changeMode(CustomizationModes.STYLED)
            return
        style = self._service.getItemByID(GUI_ITEM_TYPE.STYLE, outfit.id)
        if not style.isEditable:
            _logger.error(
                'Failed to start Style Edit Mode. Applied style is not editable.'
            )
            self._ctx.changeMode(CustomizationModes.STYLED)
            return
        self._isInited = False
        self.__style = style
        vehicleCD = g_currentVehicle.item.descriptor.makeCompactDescr()
        availableRegionsMap = getCurrentVehicleAvailableRegionsMap()
        for season in SeasonType.COMMON_SEASONS:
            baseOutfit = self.__style.getOutfit(season, vehicleCD)
            fitOutfit(baseOutfit, availableRegionsMap)
            self.__baseOutfits[season] = baseOutfit

        serverSettings = self._settingsCore.serverSettings
        if style.isProgressionRequired:
            hintShown = bool(
                serverSettings.getOnceOnlyHintsSetting(
                    OnceOnlyHints.
                    C11N_PROGRESSION_REQUIRED_STYLE_SLOT_BUTTON_HINT))
            if not hintShown:
                serverSettings.setOnceOnlyHintsSettings({
                    OnceOnlyHints.C11N_PROGRESSION_REQUIRED_STYLE_SLOT_HINT:
                    HINT_SHOWN_STATUS,
                    OnceOnlyHints.C11N_PROGRESSION_REQUIRED_STYLE_SLOT_BUTTON_HINT:
                    HINT_SHOWN_STATUS,
                    OnceOnlyHints.C11N_EDITABLE_STYLE_SLOT_HINT:
                    HINT_SHOWN_STATUS,
                    OnceOnlyHints.C11N_EDITABLE_STYLE_SLOT_BUTTON_HINT:
                    HINT_SHOWN_STATUS
                })
        else:
            hintShown = bool(
                serverSettings.getOnceOnlyHintsSetting(
                    OnceOnlyHints.C11N_EDITABLE_STYLE_SLOT_BUTTON_HINT))
            if not hintShown:
                serverSettings.setOnceOnlyHintsSettings({
                    OnceOnlyHints.C11N_EDITABLE_STYLE_SLOT_HINT:
                    HINT_SHOWN_STATUS,
                    OnceOnlyHints.C11N_EDITABLE_STYLE_SLOT_BUTTON_HINT:
                    HINT_SHOWN_STATUS
                })
        super(EditableStyleMode, self)._onStart()
Пример #4
0
 def _fitOutfits(self, modifiedOnly=False):
     availableRegionsMap = getCurrentVehicleAvailableRegionsMap()
     for season in SeasonType.COMMON_SEASONS:
         fitOutfit(self._modifiedOutfits[season], availableRegionsMap)
         if not modifiedOnly:
             fitOutfit(self._originalOutfits[season], availableRegionsMap)