예제 #1
0
 def change(self, vehInvID, section, isAlreadyPurchased):
     if self._newItemID is None:
         message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_INSCRIPTION_NOT_SELECTED)
         self.onCustomizationChangeFailed(message)
         return
     if self._rentalPackageDP.selectedPackage is None:
         message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_INSCRIPTION_DAYS_NOT_SELECTED)
         self.onCustomizationChangeFailed(message)
         return
     cost, isGold = self._itemsDP.getCost(self._newItemID)
     if cost < 0:
         message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_INSCRIPTION_COST_NOT_FOUND)
         self.onCustomizationChangeFailed(message)
         return
     if isAlreadyPurchased:
         daysToWear = 0
         cost = 0
     elif CustomizationHelper.isItemInHangar(CUSTOMIZATION_ITEM_TYPE.INSCRIPTION, self._newItemID, self._nationID, self._itemsDP.position):
         hangarItem = CustomizationHelper.getItemFromHangar(CUSTOMIZATION_ITEM_TYPE.INSCRIPTION_TYPE, self._newItemID)
         daysToWear = 0 if hangarItem.get('isPermanent') else 7
     else:
         daysToWear = self._rentalPackageDP.selectedPackage.get('periodDays')
     newIdToSend = 0
     isNewInDefaultSetup = False
     isCurrIgr = self._itemsDP.isIGRItem(self._currentItemID)
     if isCurrIgr:
         isNewInDefaultSetup = CustomizationHelper.isIdInDefaultSetup(CUSTOMIZATION_ITEM_TYPE.INSCRIPTION, self._newItemID)
     if self._currentItemID is None or not isCurrIgr or isCurrIgr and not isNewInDefaultSetup or isCurrIgr and isNewInDefaultSetup and daysToWear > 0:
         newIdToSend = self._newItemID
     BigWorld.player().inventory.changeVehicleInscription(vehInvID, self.getRealPosition(), newIdToSend, daysToWear, 1, lambda resultID: self.__onChangeVehicleInscription(resultID, (cost, isGold)))
예제 #2
0
 def __onDropVehicleInscription(self, resultID):
     if resultID < 0:
         message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_INSCRIPTION_DROP_SERVER_ERROR)
         self.onCustomizationDropFailed(message)
         return
     else:
         newID = None
         newLifeCycle = None
         if gui.game_control.g_instance.igr.getRoomType() != IGR_TYPE.NONE:
             inscriptions = g_currentVehicle.item.descriptor.playerInscriptions
             inscr = inscriptions[self.getRealPosition()]
             if inscr[0] is not None:
                 newID = inscr[0]
                 newLifeCycle = (inscr[1], inscr[2])
         hangarItem = CustomizationHelper.getItemFromHangar(CUSTOMIZATION_ITEM_TYPE.INSCRIPTION_TYPE, self._currentItemID, self._nationID)
         if hangarItem:
             intCD = g_currentVehicle.item.intCD
             vehicle = vehicles.getVehicleType(int(intCD))
             message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_INSCRIPTION_STORED_SUCCESS, vehicle=vehicle.userString)
         else:
             message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_INSCRIPTION_DROP_SUCCESS)
         self._currentItemID = newID
         self._currentLifeCycle = newLifeCycle
         self._itemsDP.currentItemID = newID
         self.updateVehicleCustomization(newID)
         self.onCustomizationDropSuccess(message)
         return
예제 #3
0
 def __onDropVehicleEmblem(self, resultID):
     if resultID < 0:
         message = i18n.makeString(
             SYSTEM_MESSAGES.CUSTOMIZATION_EMBLEM_DROP_SERVER_ERROR)
         self.onCustomizationDropFailed(message)
         return
     else:
         newID = self.defaultPlayerEmblemID
         newLifeCycle = None
         if gui.game_control.g_instance.igr.getRoomType() != IGR_TYPE.NONE:
             emblems = g_currentVehicle.item.descriptor.playerEmblems
             emblem = emblems[self.getRealPosition()]
             if emblem[0] is not None:
                 newID = emblem[0]
                 newLifeCycle = (emblem[1], emblem[2])
         hangarItem = CustomizationHelper.getItemFromHangar(
             CUSTOMIZATION_ITEM_TYPE.EMBLEM_TYPE, self._currentItemID,
             self._nationID)
         if hangarItem:
             intCD = g_currentVehicle.item.intCD
             vehicle = vehicles.getVehicleType(int(intCD))
             message = i18n.makeString(
                 SYSTEM_MESSAGES.CUSTOMIZATION_EMBLEM_STORED_SUCCESS,
                 vehicle=vehicle.userString)
         else:
             message = i18n.makeString(
                 SYSTEM_MESSAGES.CUSTOMIZATION_EMBLEM_DROP_SUCCESS)
         self._currentItemID = newID
         self._currentLifeCycle = newLifeCycle
         self._itemsDP.currentItemID = newID
         self.updateVehicleCustomization(newID)
         self.onCustomizationDropSuccess(message)
         self.onCurrentItemChange(self._name)
         return
예제 #4
0
 def __onDropVehicleCamouflage(self, resultID, kind):
     if resultID < 0:
         message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_CAMOUFLAGE_DROP_SERVER_ERROR)
         self.onCustomizationDropFailed(message)
         return
     else:
         item = self.currentItemsByKind.get(kind)
         hangarItem = CustomizationHelper.getItemFromHangar(CUSTOMIZATION_ITEM_TYPE.CAMOUFLAGE_TYPE, item.get('id'), self._nationID)
         if hangarItem:
             intCD = g_currentVehicle.item.intCD
             vehicle = vehicles.getVehicleType(int(intCD))
             message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_CAMOUFLAGE_STORED_SUCCESS, vehicle=vehicle.userString)
         else:
             message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_CAMOUFLAGE_DROP_SUCCESS)
         if g_tankActiveCamouflage.has_key(g_currentVehicle.item.intCD):
             del g_tankActiveCamouflage[g_currentVehicle.item.intCD]
         newID = None
         newLifeCycle = None
         if gui.game_control.g_instance.igr.getRoomType() != IGR_TYPE.NONE:
             camouflages = g_currentVehicle.item.descriptor.camouflages
             camo = camouflages[kind]
             if camo[0] is not None:
                 newID = camo[0]
                 newLifeCycle = (camo[1], camo[2])
         item['id'] = newID
         item['lifeCycle'] = newLifeCycle
         if CAMOUFLAGE_KINDS.get(self._itemsDP.currentGroup) == kind:
             self._itemsDP.currentItemID = newID
         self.onCustomizationDropSuccess(message)
         return
 def change(self, vehInvID, section, isAlreadyPurchased):
     if self._newItemID is None:
         message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_INSCRIPTION_NOT_SELECTED)
         self.onCustomizationChangeFailed(message)
         return
     elif self._rentalPackageDP.selectedPackage is None:
         message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_INSCRIPTION_DAYS_NOT_SELECTED)
         self.onCustomizationChangeFailed(message)
         return
     else:
         cost, isGold = self._itemsDP.getCost(self._newItemID)
         if cost < 0:
             message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_INSCRIPTION_COST_NOT_FOUND)
             self.onCustomizationChangeFailed(message)
             return
         if isAlreadyPurchased:
             daysToWear = 0
             cost = 0
         elif CustomizationHelper.isItemInHangar(CUSTOMIZATION_ITEM_TYPE.INSCRIPTION, self._newItemID, self._nationID, self._itemsDP.position):
             hangarItem = CustomizationHelper.getItemFromHangar(CUSTOMIZATION_ITEM_TYPE.INSCRIPTION_TYPE, self._newItemID, self._nationID, self._itemsDP.position)
             daysToWear = 0 if hangarItem.get('isPermanent') else 7
         else:
             daysToWear = self._rentalPackageDP.selectedPackage.get('periodDays')
         newIdToSend = 0
         isNewInDefaultSetup = False
         isCurrIgr = self._itemsDP.isIGRItem(self._currentItemID)
         if isCurrIgr:
             isNewInDefaultSetup = CustomizationHelper.isIdInDefaultSetup(CUSTOMIZATION_ITEM_TYPE.INSCRIPTION, self._newItemID)
         if self._currentItemID is None or not isCurrIgr or isCurrIgr and not isNewInDefaultSetup or isCurrIgr and isNewInDefaultSetup and daysToWear > 0:
             newIdToSend = self._newItemID
         BigWorld.player().inventory.changeVehicleInscription(vehInvID, self.getRealPosition(), newIdToSend, daysToWear, 1, lambda resultID: self.__onChangeVehicleInscription(resultID, (cost, isGold)))
         return
예제 #6
0
 def __onDropVehicleCamouflage(self, resultID, kind):
     if resultID < 0:
         message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_CAMOUFLAGE_DROP_SERVER_ERROR)
         self.onCustomizationDropFailed(message)
         return
     item = self.currentItemsByKind.get(kind)
     hangarItem = CustomizationHelper.getItemFromHangar(CUSTOMIZATION_ITEM_TYPE.CAMOUFLAGE_TYPE, item.get('id'), self._nationID)
     if hangarItem:
         intCD = g_currentVehicle.item.intCD
         vehicle = vehicles.getVehicleType(int(intCD))
         message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_CAMOUFLAGE_STORED_SUCCESS, vehicle=vehicle.userString)
     else:
         message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_CAMOUFLAGE_DROP_SUCCESS)
     if g_tankActiveCamouflage.has_key(g_currentVehicle.item.intCD):
         del g_tankActiveCamouflage[g_currentVehicle.item.intCD]
     newID = None
     newLifeCycle = None
     if gui.game_control.g_instance.igr.getRoomType() != IGR_TYPE.NONE:
         camouflages = g_currentVehicle.item.descriptor.camouflages
         camo = camouflages[kind]
         if camo[0] is not None:
             newID = camo[0]
             newLifeCycle = (camo[1], camo[2])
     item['id'] = newID
     item['lifeCycle'] = newLifeCycle
     if CAMOUFLAGE_KINDS.get(self._itemsDP.currentGroup) == kind:
         self._itemsDP.currentItemID = newID
     self.onCustomizationDropSuccess(message)
예제 #7
0
    def change(self, vehInvID, section, isAlreadyPurchased):
        if self._rentalPackageDP.selectedPackage is None:
            message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_CAMOUFLAGE_DAYS_NOT_SELECTED)
            self.onCustomizationChangeFailed(message)
            return
        else:
            isNewItemFound = False
            for kind, item in self.currentItemsByKind.iteritems():
                newItemID = item.get("newItemID", None)
                currItemId = item.get("id", None)
                if newItemID is None:
                    continue
                elif not isNewItemFound:
                    isNewItemFound = True
                price = self.getItemCost(newItemID, item.get("packageIdx"))
                cost = price.get("cost", 0)
                isGold = price.get("isGold", False)
                if cost < 0:
                    message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_CAMOUFLAGE_COST_NOT_FOUND)
                    self.onCustomizationChangeFailed(message)
                    return
                localKind = kind
                if CustomizationHelper.isItemInHangar(CUSTOMIZATION_ITEM_TYPE.CAMOUFLAGE, newItemID, self._nationID):
                    hangarItem = CustomizationHelper.getItemFromHangar(
                        CUSTOMIZATION_ITEM_TYPE.CAMOUFLAGE_TYPE, newItemID, self._nationID
                    )
                    daysToWear = 0 if hangarItem.get("isPermanent") else 7
                else:
                    daysToWear = self._rentalPackageDP.pyRequestItemAt(item.get("packageIdx")).get("periodDays")
                newIdToSend = 0
                isNewInDefaultSetup = False
                isCurrIgr = self._itemsDP.isIGRItem(currItemId)
                if isCurrIgr:
                    isNewInDefaultSetup = CustomizationHelper.isIdInDefaultSetup(
                        CUSTOMIZATION_ITEM_TYPE.CAMOUFLAGE, newItemID
                    )
                if (
                    currItemId is None
                    or not isCurrIgr
                    or isCurrIgr
                    and not isNewInDefaultSetup
                    or isCurrIgr
                    and isNewInDefaultSetup
                    and daysToWear > 0
                ):
                    newIdToSend = newItemID
                BigWorld.player().inventory.changeVehicleCamouflage(
                    vehInvID,
                    localKind,
                    newIdToSend,
                    daysToWear,
                    functools.partial(self.__onChangeVehicleCamouflage, (cost, isGold), localKind),
                )

            if not isNewItemFound:
                message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_CAMOUFLAGE_NOT_SELECTED)
                self.onCustomizationChangeFailed(message)
            return
    def change(self, vehInvID, section, isAlreadyPurchased):
        if self._rentalPackageDP.selectedPackage is None:
            message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_CAMOUFLAGE_DAYS_NOT_SELECTED)
            self.onCustomizationChangeFailed(message)
            return
        else:
            isNewItemFound = False
            for kind, item in self.currentItemsByKind.iteritems():
                newItemID = item.get('newItemID', None)
                currItemId = item.get('id', None)
                if newItemID is None:
                    continue
                elif not isNewItemFound:
                    isNewItemFound = True
                price = self.getItemCost(newItemID, item.get('packageIdx'))
                cost = price.get('cost', 0)
                isGold = price.get('isGold', False)
                if cost < 0:
                    message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_CAMOUFLAGE_COST_NOT_FOUND)
                    self.onCustomizationChangeFailed(message)
                    return
                localKind = kind
                if CustomizationHelper.isItemInHangar(CUSTOMIZATION_ITEM_TYPE.CAMOUFLAGE, newItemID, self._nationID):
                    hangarItem = CustomizationHelper.getItemFromHangar(CUSTOMIZATION_ITEM_TYPE.CAMOUFLAGE_TYPE, newItemID, self._nationID)
                    daysToWear = 0 if hangarItem.get('isPermanent') else 7
                else:
                    daysToWear = self._rentalPackageDP.pyRequestItemAt(item.get('packageIdx')).get('periodDays')
                newIdToSend = 0
                isNewInDefaultSetup = False
                isCurrIgr = self._itemsDP.isIGRItem(currItemId)
                if isCurrIgr:
                    isNewInDefaultSetup = CustomizationHelper.isIdInDefaultSetup(CUSTOMIZATION_ITEM_TYPE.CAMOUFLAGE, newItemID)
                if currItemId is None or not isCurrIgr or isCurrIgr and not isNewInDefaultSetup or isCurrIgr and isNewInDefaultSetup and daysToWear > 0:
                    newIdToSend = newItemID
                BigWorld.player().inventory.changeVehicleCamouflage(vehInvID, localKind, newIdToSend, daysToWear, functools.partial(self.__onChangeVehicleCamouflage, (cost, isGold), localKind))

            if not isNewItemFound:
                message = i18n.makeString(SYSTEM_MESSAGES.CUSTOMIZATION_CAMOUFLAGE_NOT_SELECTED)
                self.onCustomizationChangeFailed(message)
            return
예제 #9
0
 def _constructCamouflage(self, cID, groups, camouflages, armorColor, lifeCycle = None, isCurrent = False, isInHangar = False, withoutCheck = True, currVehIntD = None):
     camouflageInfo = None
     camouflage = camouflages.get(cID, None)
     hiddenCamos = g_itemsCache.items.shop.getCamouflagesHiddens(self.nationID)
     if camouflage is not None and (withoutCheck or cID not in hiddenCamos or isInHangar or camouflage.get('igrType', 0) != constants.IGR_TYPE.NONE and cID not in hiddenCamos):
         denyCD = camouflage.get('deny')
         allowCD = camouflage.get('allow')
         if currVehIntD not in denyCD and (len(allowCD) == 0 or currVehIntD in allowCD) or currVehIntD is None:
             invisibilityFactor = camouflage.get('invisibilityFactor', 1)
             invisibilityPercent = int(round((invisibilityFactor - 1) * 100))
             invisibilityLbl = gui.makeHtmlString('html_templates:lobby/customization', 'camouflage-hint', {'percents': invisibilityPercent}, sourceKey=self.__getKindById(camouflage.get('kind', 0)))
             price = self._makeCost(self._cost, self._vehPriceFactor, self._getPriceFactor(cID)) if not isInHangar else 0
             defaultPrice = self._makeCost(self._defCost, self._defVehPriceFactor, self._getDefaultCamoPriceFactor(cID)) if not isInHangar else 0
             action = None
             if price != defaultPrice:
                 isPremium = self._isGold == 1
                 newPrice = (0, price) if isPremium else (price, 0)
                 oldPrice = (0, defaultPrice) if isPremium else (defaultPrice, 0)
                 state = (None, ACTION_TOOLTIPS_STATE.DISCOUNT) if isPremium else (ACTION_TOOLTIPS_STATE.DISCOUNT, None)
                 key = 'camouflagePacket7Cost'
                 if self._period == 0:
                     key = 'camouflagePacketInfCost'
                 elif self._period == 30:
                     key = 'camouflagePacket30Cost'
                 action = {'type': ACTION_TOOLTIPS_TYPE.CAMOUFLAGE,
                  'key': cPickle.dumps((currVehIntD, key)),
                  'isBuying': True,
                  'state': state,
                  'newPrice': newPrice,
                  'oldPrice': oldPrice}
             timeLeftStr = ''
             days = 0
             isPermanent = False
             value = 0
             timeLeft = 0 if self._isGold else self._period * 86400
             if isInHangar:
                 item = CustomizationHelper.getItemFromHangar(CUSTOMIZATION_ITEM_TYPE.CAMOUFLAGE_TYPE, cID, self.nationID)
                 if item:
                     isPermanent = item.get('isPermanent')
                     value = item.get('quantity')
                     timeLeft = value * 86400 if not item.get('isPermanent') else 0
                     timeLeftStr = CustomizationHelper.getTimeLeftText(timeLeft)
             if isCurrent:
                 updatedDescr = CustomizationHelper.getUpdatedDescriptor(g_currentVehicle.item.descriptor)
                 item = updatedDescr.camouflages[camouflage.get('kind', 0)]
                 _, startTime, days = item
                 if days:
                     timeLeft = startTime + days * 86400 - time.time()
                 timeLeftStr = CustomizationHelper.getTimeLeftText(timeLeft)
             camouflageInfo = {'id': cID,
              'texturePath': self._makeSmallTextureUrl(camouflage.get('texture'), camouflage.get('colors', (0, 0, 0, 0)), armorColor, lifeCycle),
              'description': self._makeDescription(groups, camouflage.get('groupName', ''), camouflage.get('description', '')),
              'price': {'cost': price,
                        'isGold': self._isGold == 1},
              'action': action,
              'isNew': self.isNewID(cID),
              'invisibilityLbl': invisibilityLbl,
              'igrType': camouflage.get('igrType', 0),
              'current': isCurrent,
              'isInHangar': isInHangar,
              'timeLeftStr': timeLeftStr,
              'type': CUSTOMIZATION_ITEM_TYPE.CAMOUFLAGE,
              'nationId': self.nationID,
              'isSpecialTooltip': True,
              'timeLeftValue': timeLeft,
              'isPermanent': isPermanent,
              'value': value}
     return camouflageInfo
예제 #10
0
    def _constructInscription(self, itemID, groups, inscriptions, isCurrent = False, isInHangar = False, withoutCheck = True):
        itemInfo = None
        inscription = inscriptions.get(itemID, None)
        priceFactors = g_itemsCache.items.shop.getInscriptionsGroupPriceFactors(self.nationID)
        defPriceFactors = g_itemsCache.items.shop.defaults.getInscriptionsGroupPriceFactors(self.nationID)
        hiddens = g_itemsCache.items.shop.getInscriptionsGroupHiddens(self.nationID)
        if inscription is not None:
            groupName, igrType, texture, bumpMap, inscriptionUserString, isFeatured = inscription[0:6]
            inscriptionIDs, groupUserString, igrType, allow, deny = groups.get(groupName)
            isNewItem = self.isNewID(itemID)
            if withoutCheck or isNewItem or isInHangar or groupName not in hiddens:
                price = self._makeCost(self._cost, self._vehPriceFactor, priceFactors.get(groupName)) if not isInHangar else 0
                defaultPrice = self._makeCost(self._defCost, self._defVehPriceFactor, defPriceFactors.get(groupName, 1)) if not isInHangar else 0
                action = None
                if price != defaultPrice:
                    isPremium = self._isGold == 1
                    newPrice = (0, price) if isPremium else (price, 0)
                    oldPrice = (0, defaultPrice) if isPremium else (defaultPrice, 0)
                    state = (None, ACTION_TOOLTIPS_STATE.DISCOUNT) if isPremium else (ACTION_TOOLTIPS_STATE.DISCOUNT, None)
                    key = 'inscriptionPacket7Cost'
                    if self._period == 0:
                        key = 'inscriptionPacketInfCost'
                    elif self._period == 30:
                        key = 'inscriptionPacket30Cost'
                    action = {'type': ACTION_TOOLTIPS_TYPE.ECONOMICS,
                     'key': key,
                     'isBuying': True,
                     'state': state,
                     'newPrice': newPrice,
                     'oldPrice': oldPrice}
                timeLeftStr = ''
                days = 0
                isPermanent = False
                value = 0
                timeLeft = 0 if self._isGold else self._period * 86400
                canUse = True
                if isInHangar:
                    item = CustomizationHelper.getItemFromHangar(CUSTOMIZATION_ITEM_TYPE.INSCRIPTION_TYPE, itemID, self.nationID, self.position)
                    if item:
                        isPermanent = item.get('isPermanent')
                        value = item.get('quantity')
                        timeLeft = value * 86400 if not item.get('isPermanent') else 0
                        timeLeftStr = CustomizationHelper.getTimeLeftText(timeLeft)
                        if not isPermanent:
                            _, selectedInscriptions = VehicleCustomizationModel.getVehicleModel()
                            for selectedInscription in selectedInscriptions:
                                if selectedInscriptions.index(selectedInscription) != self.position and selectedInscription[0] == itemID:
                                    canUse = False

                if isCurrent:
                    updatedDescr = CustomizationHelper.getUpdatedDescriptor(g_currentVehicle.item.descriptor)
                    item = updatedDescr.playerInscriptions[self.position]
                    _, startTime, days, _ = item
                    if days:
                        timeLeft = startTime + days * 86400 - time.time()
                    timeLeftStr = CustomizationHelper.getTimeLeftText(timeLeft)
                itemInfo = {'id': itemID,
                 'texturePath': self._makeSmallTextureUrl(texture, None, None),
                 'description': self._makeDescription(groupUserString, inscriptionUserString),
                 'igrType': igrType,
                 'price': {'cost': price,
                           'isGold': days == 0 if isCurrent else self._isGold == 1},
                 'action': action,
                 'current': isCurrent,
                 'position': self.position,
                 'isInHangar': isInHangar,
                 'isFeatured': isFeatured,
                 'isNew': isNewItem,
                 'timeLeftStr': timeLeftStr,
                 'type': CUSTOMIZATION_ITEM_TYPE.INSCRIPTION,
                 'nationId': self.nationID,
                 'isSpecialTooltip': True,
                 'timeLeftValue': timeLeft,
                 'isPermanent': isPermanent,
                 'value': value,
                 'canUse': canUse}
        return itemInfo