Ejemplo n.º 1
0
    def _applyItems(self, purchaseItems, isModeChanged, callback):
        results = []
        vehicleCD = g_currentVehicle.item.descriptor.makeCompactDescr()
        modifiedOutfits = {
            season: outfit.copy()
            for season, outfit in self._modifiedOutfits.iteritems()
        }
        removeUnselectedItemsFromEditableStyle(modifiedOutfits,
                                               self.__baseOutfits,
                                               purchaseItems)
        self._soundEventChacker.lockPlayingSounds()
        outfit = self._modifiedOutfits[self.season]
        result = yield OutfitApplier(g_currentVehicle.item, outfit,
                                     SeasonType.ALL).request()
        results.append(result)
        for season in SeasonType.COMMON_SEASONS:
            outfit = modifiedOutfits[season]
            baseOutfit = self.__baseOutfits[season]
            if not outfit.isEqual(baseOutfit):
                diff = getEditableStyleOutfitDiff(outfit, baseOutfit)
                outfit = self.__style.getOutfit(season,
                                                vehicleCD=vehicleCD,
                                                diff=diff)
                result = yield OutfitApplier(g_currentVehicle.item, outfit,
                                             season).request()
                results.append(result)

        self._soundEventChacker.unlockPlayingSounds()
        if self.isInited:
            self._events.onItemsBought(purchaseItems, results)
        callback(self)
Ejemplo n.º 2
0
    def _applyItems(self, purchaseItems, isModeChanged, callback):
        results = []
        style = self.__modifiedStyle
        vehicleCD = g_currentVehicle.item.descriptor.makeCompactDescr()
        originalOutfits = self._ctx.startMode.getOriginalOutfits()
        if style is not None:
            baseStyleOutfits = {}
            modifiedStyleOutfits = {}
            for season in SeasonType.COMMON_SEASONS:
                diff = self._ctx.stylesDiffsCache.getDiffs(style).get(season)
                baseStyleOutfits[season] = style.getOutfit(season, vehicleCD=vehicleCD)
                modifiedStyleOutfits[season] = style.getOutfit(season, vehicleCD=vehicleCD, diff=diff)

            removeUnselectedItemsFromEditableStyle(modifiedStyleOutfits, baseStyleOutfits, purchaseItems)
            result = yield OutfitApplier(g_currentVehicle.item, [ (outfit, season) for season, outfit in modifiedStyleOutfits.iteritems() ]).request()
            results.append(result)
        else:
            outfit = self._modifiedOutfits[self.season]
            result = yield OutfitApplier(g_currentVehicle.item, ((outfit, SeasonType.ALL),)).request()
            results.append(result)
        if style is not None and style.isRentable and self.__prolongRent:
            self._service.buyItems(style, count=1, vehicle=g_currentVehicle.item)
            self.__prolongRent = False
        if self.__autoRentEnabled != g_currentVehicle.item.isAutoRentStyle:
            yield VehicleAutoStyleEquipProcessor(g_currentVehicle.item, self.__autoRentEnabled, self.__autoRentChangeSource).request()
            self.__autoRentChangeSource = CLIENT_COMMAND_SOURCES.UNDEFINED
        if self.isInited:
            self._events.onItemsBought(originalOutfits, purchaseItems, results)
        callback(self)
        return
    def buyAndExit(self, purchaseItems):
        self.itemsCache.onSyncCompleted -= self.__onCacheResync
        cart = getTotalPurchaseInfo(purchaseItems)
        groupHasItems = {AdditionalPurchaseGroups.STYLES_GROUP_ID: False,
         SeasonType.WINTER: False,
         SeasonType.SUMMER: False,
         SeasonType.DESERT: False}
        modifiedOutfits = {season:outfit.copy() for season, outfit in self._modifiedOutfits.iteritems()}
        results = []
        for pItem in purchaseItems:
            if not pItem.selected:
                if pItem.slot:
                    slot = modifiedOutfits[pItem.group].getContainer(pItem.areaID).slotFor(pItem.slot)
                    slot.remove(pItem.regionID)
            groupHasItems[pItem.group] = True

        if self._mode == C11nMode.CUSTOM:
            groupHasItems[self._currentSeason] = True
        empty = self.service.getEmptyOutfit()
        for season in SeasonType.COMMON_SEASONS:
            if groupHasItems[season]:
                yield OutfitApplier(g_currentVehicle.item, empty, season).request()

        for season in SeasonType.COMMON_SEASONS:
            if groupHasItems[season]:
                outfit = modifiedOutfits[season]
                result = yield OutfitApplier(g_currentVehicle.item, outfit, season).request()
                results.append(result)

        if groupHasItems[AdditionalPurchaseGroups.STYLES_GROUP_ID]:
            result = yield StyleApplier(g_currentVehicle.item, self._modifiedStyle).request()
            results.append(result)
        errorCount = 0
        for result in results:
            if not result.success:
                errorCount += 1
            if result.userMsg:
                SystemMessages.pushI18nMessage(result.userMsg, type=result.sysMsgType)

        if not errorCount:
            if cart.totalPrice != ITEM_PRICE_EMPTY:
                msgCtx = {'money': formatPrice(cart.totalPrice.price),
                 'count': cart.numSelected}
                SystemMessages.pushI18nMessage(MESSENGER.SERVICECHANNELMESSAGES_SYSMSG_CONVERTER_CUSTOMIZATIONSBUY, type=CURRENCY_TO_SM_TYPE.get(cart.totalPrice.getCurrency(byWeight=True), SM_TYPE.PurchaseForGold), **msgCtx)
            else:
                SystemMessages.pushI18nMessage(MESSENGER.SERVICECHANNELMESSAGES_SYSMSG_CONVERTER_CUSTOMIZATIONS, type=SM_TYPE.Information)
            self.__onConfirmCloseWindow(proceed=True)
        else:
            self.__onCacheResync()
        self.itemsCache.onSyncCompleted += self.__onCacheResync
Ejemplo n.º 4
0
    def _sellItem(self, item, count, callback):
        if item.fullInventoryCount(g_currentVehicle.item.intCD) < count:
            for season, outfit in self._iterOutfitsWithoutItem(item, count):
                yield OutfitApplier(g_currentVehicle.item, ((outfit, season),)).request()

        result = yield CustomizationsSeller(g_currentVehicle.item, item, count).request()
        callback(result)
Ejemplo n.º 5
0
    def _applyItems(self, purchaseItems, isModeChanged, callback):
        results = []
        vehicleCD = g_currentVehicle.item.descriptor.makeCompactDescr()
        modifiedOutfits = {season:outfit.copy() for season, outfit in self._modifiedOutfits.iteritems()}
        originalOutfits = self._ctx.startMode.getOriginalOutfits()
        removeUnselectedItemsFromEditableStyle(modifiedOutfits, self.__baseOutfits, purchaseItems)
        requestData = []
        for season in SeasonType.COMMON_SEASONS:
            outfit = modifiedOutfits[season]
            baseOutfit = self.__baseOutfits[season]
            if outfit.vehicleCD != baseOutfit.vehicleCD or not outfit.isEqual(baseOutfit):
                diff = getEditableStyleOutfitDiff(outfit, baseOutfit)
                outfit = self.__style.getOutfit(season, vehicleCD=vehicleCD, diff=diff)
                requestData.append((outfit, season))

        if not requestData:
            emptyComponent = CustomizationOutfit()
            outfit = self._modifiedOutfits[self.season]
            emptyComponent.styleId = outfit.id
            outfit = Outfit(component=emptyComponent)
            requestData.append((outfit, SeasonType.ALL))
        result = yield OutfitApplier(g_currentVehicle.item, requestData).request()
        results.append(result)
        if self.isInited:
            self._events.onItemsBought(originalOutfits, purchaseItems, results)
        callback(self)
Ejemplo n.º 6
0
    def _applyItems(self, purchaseItems, isModeChanged, callback):
        modifiedOutfits = {season:outfit.copy() for season, outfit in self._modifiedOutfits.iteritems()}
        originalOutfits = self._ctx.startMode.getOriginalOutfits()
        for pItem in purchaseItems:
            if not pItem.selected:
                if pItem.slotType:
                    season = pItem.group
                    slot = modifiedOutfits[season].getContainer(pItem.areaID).slotFor(pItem.slotType)
                    slot.remove(pItem.regionIdx)

        if isModeChanged:
            modifiedSeasons = SeasonType.COMMON_SEASONS
        else:
            modifiedSeasons = tuple((season for season in SeasonType.COMMON_SEASONS if not modifiedOutfits[season].isEqual(self._originalOutfits[season])))
        results = []
        requestData = []
        for season in modifiedSeasons:
            outfit = modifiedOutfits[season]
            requestData.append((outfit, season))

        if requestData:
            result = yield OutfitApplier(g_currentVehicle.item, requestData).request()
            results.append(result)
        if self.isInited:
            self._events.onItemsBought(originalOutfits, purchaseItems, results)
        callback(self)
Ejemplo n.º 7
0
    def applyItems(self, purchaseItems):
        self.itemsCache.onSyncCompleted -= self.__onCacheResync
        groupHasItems = {
            AdditionalPurchaseGroups.STYLES_GROUP_ID: False,
            SeasonType.WINTER: False,
            SeasonType.SUMMER: False,
            SeasonType.DESERT: False
        }
        modifiedOutfits = {
            season: outfit.copy()
            for season, outfit in self._modifiedOutfits.iteritems()
        }
        for pItem in purchaseItems:
            if not pItem.selected:
                if pItem.slot:
                    slot = modifiedOutfits[pItem.group].getContainer(
                        pItem.areaID).slotFor(pItem.slot)
                    slot.remove(pItem.regionID)
            groupHasItems[pItem.group] = True

        if self._mode == C11nMode.CUSTOM:
            groupHasItems[self._currentSeason] = True
        empty = self.service.getEmptyOutfit()
        for season in SeasonType.COMMON_SEASONS:
            if groupHasItems[season]:
                yield OutfitApplier(g_currentVehicle.item, empty,
                                    season).request()

        results = []
        for season in SeasonType.COMMON_SEASONS:
            if groupHasItems[season]:
                outfit = modifiedOutfits[season]
                result = yield OutfitApplier(g_currentVehicle.item, outfit,
                                             season).request()
                results.append(result)

        if groupHasItems[AdditionalPurchaseGroups.STYLES_GROUP_ID]:
            result = yield StyleApplier(g_currentVehicle.item,
                                        self._modifiedStyle).request()
            results.append(result)
        if self._autoRentEnabled != g_currentVehicle.item.isAutoRentStyle:
            yield VehicleAutoStyleEquipProcessor(
                g_currentVehicle.item, self._autoRentEnabled).request()
        self.onCustomizationItemsBought(purchaseItems, results)
        self.__onCacheResync()
        self.itemsCache.onSyncCompleted += self.__onCacheResync
Ejemplo n.º 8
0
 def _sellItem(self, item, count, callback):
     if item.fullInventoryCount(g_currentVehicle.item.intCD) < count:
         emptyComponent = CustomizationOutfit()
         vehicleCD = g_currentVehicle.item.descriptor.makeCompactDescr()
         outfit = Outfit(component=emptyComponent, vehicleCD=vehicleCD)
         yield OutfitApplier(g_currentVehicle.item, ((outfit, SeasonType.ALL),)).request()
     result = yield CustomizationsSeller(g_currentVehicle.item, item, count).request()
     callback(result)
    def _sellItem(self, item, count):
        if item.fullInventoryCount(g_currentVehicle.item.intCD) < count:
            for season, outfit in getOutfitWithoutItems(
                    self.getOutfitsInfo(), item.intCD, count):
                yield OutfitApplier(g_currentVehicle.item, outfit,
                                    season).request()

        yield CustomizationsSeller(g_currentVehicle.item, item,
                                   count).request()
Ejemplo n.º 10
0
 def buyAndEquipOutfit(self, outfit, season, vehicle = None):
     """ Buy and equip an outfit for the given vehicle/season.
     
     :param outfit: an instance of Outfit to buy.
     :param season: apply outfit for the given season.
     :param vehicle: if provided, put outfit on given vehicle (current vehicle otherwise).
     """
     result = yield OutfitApplier(vehicle or g_currentVehicle.item, outfit, season).request()
     if result.userMsg:
         SystemMessages.pushI18nMessage(result.userMsg, type=result.sysMsgType)
    def _applyItems(self, purchaseItems, isModeChanged, callback):
        modifiedOutfits = {
            season: outfit.copy()
            for season, outfit in self._modifiedOutfits.iteritems()
        }
        for pItem in purchaseItems:
            if not pItem.selected:
                if pItem.slotType:
                    season = pItem.group
                    slot = modifiedOutfits[season].getContainer(
                        pItem.areaID).slotFor(pItem.slotType)
                    slot.remove(pItem.regionIdx)

        if isModeChanged:
            modifiedSeasons = SeasonType.COMMON_SEASONS
        else:
            modifiedSeasons = tuple((season
                                     for season in SeasonType.COMMON_SEASONS
                                     if not modifiedOutfits[season].isEqual(
                                         self._originalOutfits[season])))
        self._soundEventChacker.lockPlayingSounds()
        for season in modifiedSeasons:
            emptyOutfit = self._service.getEmptyOutfit()
            yield OutfitApplier(g_currentVehicle.item, emptyOutfit,
                                season).request()

        results = []
        for season in modifiedSeasons:
            outfit = modifiedOutfits[season]
            if outfit.isEmpty():
                continue
            result = yield OutfitApplier(g_currentVehicle.item, outfit,
                                         season).request()
            results.append(result)

        self._soundEventChacker.unlockPlayingSounds()
        if self.isInited:
            self._events.onItemsBought(purchaseItems, results)
        callback(self)
    def sellItem(self, intCD, count):
        if not count:
            return
        self._needFullRebuild = self._carouselDP.getOwnedFilter()
        item = self.itemsCache.items.getItemByCD(intCD)
        if item.fullInventoryCount(g_currentVehicle.item) < count:
            if self._mode == C11nMode.CUSTOM:
                for season, outfit in getOutfitWithoutItems(self.getOutfitsInfo(), intCD, count):
                    yield OutfitApplier(g_currentVehicle.item, outfit, season).request()

            else:
                yield StyleApplier(g_currentVehicle.item).request()
        yield CustomizationsSeller(g_currentVehicle.item, item, count).request()
        nextTick(self.refreshOutfit)()
Ejemplo n.º 13
0
    def _sellItem(self, item, count):
        if item.fullInventoryCount(g_currentVehicle.item.intCD) < count:
            vehicleCD = g_currentVehicle.item.descriptor.makeCompactDescr()
            for season, outfit in getOutfitWithoutItems(
                    self.getOutfitsInfo(), item.intCD, count):
                baseOutfit = self.__baseOutfits[season]
                diff = getEditableStyleOutfitDiff(outfit, baseOutfit)
                outfit = self.__style.getOutfit(season,
                                                vehicleCD=vehicleCD,
                                                diff=diff)
                yield OutfitApplier(g_currentVehicle.item, outfit,
                                    season).request()

        yield CustomizationsSeller(g_currentVehicle.item, item,
                                   count).request()
    def __upgradeItems(self):
        self.__resetItemNovelty()
        vehicle = self.__vehicle
        modifiedOutfits = {}
        for season, components in self.__itemsInNeedToUpgrade.iteritems():
            for component in components:
                component.progressionLevel = 0

            outfit = vehicle.getOutfit(season)
            if outfit is not None:
                modifiedOutfits.update({season: outfit.copy()})

        for season, outfit in modifiedOutfits.iteritems():
            yield OutfitApplier(vehicle, outfit, season).request()

        return
Ejemplo n.º 15
0
    def sellItem(self, intCD, count):
        if not count:
            return
        item = self.service.getItemByCD(intCD)
        if item.fullInventoryCount(g_currentVehicle.item) < count:
            if self._mode == C11nMode.CUSTOM:
                for season, outfit in getOutfitWithoutItems(
                        self.getOutfitsInfo(), intCD, count):
                    yield OutfitApplier(g_currentVehicle.item, outfit,
                                        season).request()

            else:
                yield StyleApplier(g_currentVehicle.item).request()
        yield CustomizationsSeller(g_currentVehicle.item, item,
                                   count).request()
        nextTick(self.refreshOutfit)()
        nextTick(partial(self.onCustomizationItemSold, item=item,
                         count=count))()
Ejemplo n.º 16
0
 def buyAndEquipOutfit(self, outfit, season, vehicle=None):
     result = yield OutfitApplier(vehicle or g_currentVehicle.item, outfit,
                                  season).request()
     if result.userMsg:
         SystemMessages.pushI18nMessage(result.userMsg,
                                        type=result.sysMsgType)