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)
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
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)
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)
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)
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
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()
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)()
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
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))()
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)