コード例 #1
0
ファイル: __init__.py プロジェクト: webiumsk/WOT-0.9.15-CT
    def sendPresence(self, initial = False):
        client = self.client()
        if not client or not client.isConnected():
            return False
        if self.__scope == MESSENGER_SCOPE.BATTLE:
            if initial:
                seq = (PRESENCE.AVAILABLE, PRESENCE.DND)
            else:
                seq = (PRESENCE.DND,)
        elif self.__scope == MESSENGER_SCOPE.LOBBY:
            seq = (PRESENCE.AVAILABLE,)
        else:
            return False
        for presence in seq:
            if not initial and client.getClientPresence() == presence:
                continue
            query = self.__createQuery(presence)
            if IS_IGR_ENABLED:
                from gui.game_control import getIGRCtrl
                ctrl = getIGRCtrl()
                if ctrl:
                    query.setIgrID(ctrl.getRoomType())
            client.sendPresence(query)

        return True
コード例 #2
0
    def __setInstalledRawItems(self, curVehDescr):
        installedRawItems = {'camouflages': list(curVehDescr.camouflages),
         'emblems': list(curVehDescr.playerEmblems),
         'inscriptions': list(curVehDescr.playerInscriptions)}
        for key in installedRawItems.keys():
            for installedRawItem in installedRawItems[key]:
                installedItemID = installedRawItem[0]
                if installedRawItem[2] == 0 and installedItemID is not None and (_TYPE_NAME[key] != CUSTOMIZATION_TYPE.EMBLEM or _TYPE_NAME[key] == CUSTOMIZATION_TYPE.EMBLEM) and installedItemID not in self.__itemGroups[CUSTOMIZATION_TYPE.EMBLEM]['auto'][0]:
                    self.__notMigratedItems[_TYPE_NAME[key]].add(installedItemID)

        if self.__displayIgrItems:
            igrLayout = g_itemsCache.items.inventory.getIgrCustomizationsLayout()
            vehicleId = g_currentVehicle.item.invID
            igrRoomType = getIGRCtrl().getRoomType()
            igrVehDescr = []
            if vehicleId in igrLayout:
                if igrRoomType in igrLayout[vehicleId]:
                    igrVehDescr = igrLayout[vehicleId][igrRoomType]
            for key in igrVehDescr:
                for index in igrVehDescr[key]:
                    replacedItemID = installedRawItems[key][index][0]
                    replacedItemDaysLeft = installedRawItems[key][index][2]
                    if replacedItemID is not None:
                        self.__igrReplacedItems[_TYPE_NAME[key]][replacedItemID] = replacedItemDaysLeft
                    installedRawItems[key][index] = igrVehDescr[key][index]

        self.__initialViewModel = (installedRawItems['emblems'], installedRawItems['inscriptions'])
        self.viewModel = [copy.deepcopy(installedRawItems['camouflages']), copy.deepcopy(installedRawItems['emblems']), copy.deepcopy(installedRawItems['inscriptions'])]
        return installedRawItems
コード例 #3
0
ファイル: clubstaffview.py プロジェクト: webiumsk/WOT-0.9.12
    def __packStaffData(self, club, syncUserInfo=False):
        members = []
        membersDict = club.getMembers()
        membersCount = len(membersDict)
        for dbID, member in membersDict.iteritems():
            memberType = _getFlashMemberType(member)
            isSelf = dbID == self.__viewerDbID
            limits = self.clubsState.getLimits()
            profile = self.clubsCtrl.getProfile()
            memberStats = member.getSeasonDossier().getRated7x7Stats()
            battlesCount = memberStats.getBattlesCount()
            rating = self.getUserRating(dbID)
            damageCoef = memberStats.getDamageEfficiency() or 0
            avgDamage = memberStats.getAvgDamage() or 0
            avgAssistDamage = memberStats.getDamageAssistedEfficiency() or 0
            avgExperience = memberStats.getAvgXP() or 0
            armorUsingEfficiency = memberStats.getArmorUsingEfficiency() or 0
            joinDate = member.getJoiningTime()
            if isSelf:
                removeBtnTooltip = TOOLTIPS.STATICFORMATIONSTAFFVIEW_REMOVEHIMSELFBTN
            else:
                removeBtnTooltip = TOOLTIPS.STATICFORMATIONSTAFFVIEW_REMOVEMEMBERBTN
            userData = self.getGuiUserData(dbID)
            userData.update({"igrType": getIGRCtrl().getRoomType()})
            members.append(
                {
                    "memberId": dbID,
                    "canRemoved": self.__canBeRemoved(profile, club, member, membersCount, limits),
                    "canPassOwnership": limits.canTransferOwnership(profile, club).success,
                    "canShowContextMenu": not isSelf,
                    "removeMemberBtnIcon": RES_ICONS.MAPS_ICONS_LIBRARY_CROSS,
                    "removeMemberBtnTooltip": removeBtnTooltip,
                    "appointmentSortValue": memberType,
                    "appointment": _packAppointment(profile, club, member, memberType, limits),
                    "ratingSortValue": rating,
                    "rating": self.getGuiUserRating(dbID, text_styles.neutral),
                    "battlesCountSortValue": battlesCount,
                    "battlesCount": text_styles.main(BigWorld.wg_getIntegralFormat(battlesCount)),
                    "damageCoefSortValue": damageCoef,
                    "damageCoef": text_styles.main(BigWorld.wg_getNiceNumberFormat(damageCoef)),
                    "avrDamageSortValue": avgDamage,
                    "avrDamage": text_styles.main(BigWorld.wg_getIntegralFormat(avgDamage)),
                    "avrAssistDamageSortValue": avgAssistDamage,
                    "avrAssistDamage": text_styles.main(BigWorld.wg_getNiceNumberFormat(avgAssistDamage)),
                    "avrExperienceSortValue": avgExperience,
                    "avrExperience": text_styles.main(BigWorld.wg_getIntegralFormat(avgExperience)),
                    "tauntSortValue": armorUsingEfficiency,
                    "taunt": text_styles.main(BigWorld.wg_getNiceNumberFormat(armorUsingEfficiency)),
                    "joinDateSortValue": joinDate,
                    "joinDate": text_styles.standard(BigWorld.wg_getShortDateFormat(joinDate)),
                    "userDataSortValue": self.getUserFullName(dbID).lower(),
                    "userData": userData,
                    "clubDbID": self._clubDbID,
                }
            )

        if syncUserInfo:
            self.syncUsersInfo()
        return {"members": sorted(members, key=lambda k: k["userDataSortValue"].lower())}
コード例 #4
0
ファイル: customization.py プロジェクト: webiumsk/WOT0.10.0
 def __getItemData(self):
     selectedSlotItemID = g_customizationController.carousel.slots.getInstalledItem(self.__currentSlotIdx, self.__cItemType).getID()
     isInSlot = selectedSlotItemID == self.__cItem.getID()
     wasBought = False
     if self.__cItem.getIgrType() != IGR_TYPE.NONE:
         if self.__cItem.getIgrType() == getIGRCtrl().getRoomType():
             buyItems = [{'value': 0,
               'type': BUY_ITEM_TYPE.ALREADY_HAVE_IGR,
               'isSale': False,
               'desc': _ms(VEHICLE_CUSTOMIZATION.CUSTOMIZATION_TOOLTIP_ALREADYHAVE_IGR)}]
             wasBought = True
             status = STATUS.ON_BOARD if isInSlot else STATUS.ALREADY_HAVE
         else:
             buyItems = [{'value': 0,
               'type': BUY_ITEM_TYPE.WAYS_TO_BUY_IGR,
               'isSale': False,
               'desc': _ms(VEHICLE_CUSTOMIZATION.CUSTOMIZATION_TOOLTIP_WAYTOBUY_IGR)}]
             status = STATUS.DO_IGR
     elif self.__cItem.isInDossier:
         buyItems = [{'value': 0,
           'type': BUY_ITEM_TYPE.ALREADY_HAVE_FOREVER,
           'isSale': False,
           'desc': VEHICLE_CUSTOMIZATION.CUSTOMIZATION_TOOLTIP_WAYTOBUY_FOREVER}]
         wasBought = True
         status = STATUS.ON_BOARD if isInSlot else STATUS.ALREADY_HAVE
     elif isInSlot:
         days = g_customizationController.carousel.slots.getInstalledItem(self.__currentSlotIdx, self.__cItemType).duration
         leftDays = g_customizationController.carousel.slots.getInstalledItem(self.__currentSlotIdx, self.__cItemType).getNumberOfDaysLeft()
         buyItems = [{'value': 0,
           'type': BUY_ITEM_TYPE.ALREADY_HAVE_TEMP,
           'isSale': False,
           'desc': _ms(CUSTOMIZATION.TOOLTIP_ELEMENT_PURCHASE_ACQUIRED_DAYS, total=days, left=leftDays)}]
         status = STATUS.ON_BOARD
         wasBought = True
     else:
         buyItems = [{'value': self.__cItem.getPrice(0),
           'type': BUY_ITEM_TYPE.WAYS_TO_BUY_FOREVER,
           'isSale': self.__isSale(BUY_ITEM_TYPE.WAYS_TO_BUY_FOREVER),
           'desc': _ms(VEHICLE_CUSTOMIZATION.CUSTOMIZATION_TOOLTIP_WAYTOBUY_FOREVER)}, {'value': self.__cItem.getPrice(30),
           'type': BUY_ITEM_TYPE.WAYS_TO_BUY_TEMP,
           'isSale': self.__isSale(BUY_ITEM_TYPE.WAYS_TO_BUY_TEMP),
           'desc': _ms(VEHICLE_CUSTOMIZATION.CUSTOMIZATION_TOOLTIP_WAYTOBUY_TEMP, days='30')}, {'value': self.__cItem.getPrice(7),
           'type': BUY_ITEM_TYPE.WAYS_TO_BUY_TEMP,
           'isSale': self.__isSale(BUY_ITEM_TYPE.WAYS_TO_BUY_TEMP),
           'desc': _ms(VEHICLE_CUSTOMIZATION.CUSTOMIZATION_TOOLTIP_WAYTOBUY_TEMP, days='7')}]
         status = STATUS.AVAILABLE_FOR_BUY
     item = {'type': self.__cItemType,
      'title': self.__cItem.getName(),
      'icon': self.__cItem.getTexturePath(),
      'bonus_icon': self.__cItem.qualifier.getIcon42x42(),
      'bonus_title_local': self.__cItem.qualifier.getFormattedValue(),
      'bonus_title_global': _ms(VEHICLE_CUSTOMIZATION.CUSTOMIZATION_TOOLTIP_BONUS_GLOBAL, count=g_customizationController.carousel.slots.bonusPanel.bonusData[self.__cItem.qualifier.getType()]['bonusTotalCount']),
      'bonus_desc': self.__cItem.qualifier.getExtendedName(),
      'wasBought': wasBought,
      'buyItems': buyItems,
      'status': status,
      'description': self.__cItem.getDescription(),
      'conditional': self.__cItem.qualifier.getDescription()}
     return item
コード例 #5
0
    def __packStaffData(self, club, syncUserInfo = False):
        members = []
        membersDict = club.getMembers()
        membersCount = len(membersDict)
        for dbID, member in membersDict.iteritems():
            memberType = _getFlashMemberType(member)
            isSelf = dbID == self.__viewerDbID
            limits = self.clubsState.getLimits()
            profile = self.clubsCtrl.getProfile()
            memberStats = member.getSeasonDossier().getRated7x7Stats()
            battlesCount = memberStats.getBattlesCount()
            rating = self.getUserRating(dbID)
            damageCoef = memberStats.getDamageEfficiency() or 0
            avgDamage = memberStats.getAvgDamage() or 0
            avgAssistDamage = memberStats.getDamageAssistedEfficiency() or 0
            avgExperience = memberStats.getAvgXP() or 0
            armorUsingEfficiency = memberStats.getArmorUsingEfficiency() or 0
            joinDate = member.getJoiningTime()
            contact = self.getContact(dbID)
            if isSelf:
                removeBtnTooltip = TOOLTIPS.STATICFORMATIONSTAFFVIEW_REMOVEHIMSELFBTN
            else:
                removeBtnTooltip = TOOLTIPS.STATICFORMATIONSTAFFVIEW_REMOVEMEMBERBTN
            isValid, userData = self.getGuiUserDataWithStatus(dbID)
            userData.update({'igrType': getIGRCtrl().getRoomType()})
            members.append({'memberId': dbID,
             'canRemoved': self.__canBeRemoved(profile, club, member, membersCount, limits),
             'canPassOwnership': limits.canTransferOwnership(profile, club).success,
             'canShowContextMenu': not isSelf and isValid,
             'removeMemberBtnIcon': RES_ICONS.MAPS_ICONS_LIBRARY_CROSS,
             'removeMemberBtnTooltip': removeBtnTooltip,
             'appointmentSortValue': memberType,
             'appointment': _packAppointment(profile, club, member, memberType, limits),
             'ratingSortValue': rating,
             'rating': self.getGuiUserRating(dbID, text_styles.neutral),
             'battlesCountSortValue': battlesCount,
             'battlesCount': text_styles.main(BigWorld.wg_getIntegralFormat(battlesCount)),
             'damageCoefSortValue': damageCoef,
             'damageCoef': text_styles.main(BigWorld.wg_getNiceNumberFormat(damageCoef)),
             'avrDamageSortValue': avgDamage,
             'avrDamage': text_styles.main(BigWorld.wg_getIntegralFormat(avgDamage)),
             'avrAssistDamageSortValue': avgAssistDamage,
             'avrAssistDamage': text_styles.main(BigWorld.wg_getNiceNumberFormat(avgAssistDamage)),
             'avrExperienceSortValue': avgExperience,
             'avrExperience': text_styles.main(BigWorld.wg_getIntegralFormat(avgExperience)),
             'tauntSortValue': armorUsingEfficiency,
             'taunt': text_styles.main(BigWorld.wg_getNiceNumberFormat(armorUsingEfficiency)),
             'joinDateSortValue': joinDate,
             'joinDate': text_styles.standard(BigWorld.wg_getShortDateFormat(joinDate)),
             'userDataSortValue': self.getUserFullName(dbID).lower(),
             'userData': userData,
             'clubDbID': self._clubDbID,
             'statusIcon': _getStatusIcon(contact)})

        if syncUserInfo:
            self.syncUsersInfo()
        return {'members': sorted(members, key=lambda k: k['userDataSortValue'].lower())}
コード例 #6
0
ファイル: filter_popover.py プロジェクト: webiumsk/WOT-0.9.12
    def __getPurchaseTypeVO(self):
        result = []
        for purchaseType in self.__purchaseTypeList:
            purchaseVO = {'label': self.__purchaseTypeMap[purchaseType],
             'enabled': True}
            if purchaseType == PURCHASE_TYPE.IGR:
                purchaseVO['enabled'] = getIGRCtrl().getRoomType() == IGR_TYPE.PREMIUM
                purchaseVO['tooltipDisabled'] = makeTooltip(_ms(CUSTOMIZATION.FILTER_TOOLTIP_IGR_DISABLED_HEADER), _ms(CUSTOMIZATION.FILTER_TOOLTIP_IGR_DISABLED_BODY, icon=_ms(icons.premiumIgrSmall())))
            result.append(purchaseVO)

        return result
コード例 #7
0
ファイル: data_aggregator.py プロジェクト: webiumsk/WOT0.10.0
 def __init__(self):
     self.updated = Event()
     self.viewModel = []
     self.__installed = ()
     self.__availableItems = [{}, {}, {}]
     self.__displayedItems = [{}, {}, {}]
     self.__initialViewModel = ()
     self.__displayIgrItems = getIGRCtrl().getRoomType() == 2 and GUI_SETTINGS.igrEnabled
     self.__availableGroupNames = []
     self.__gatherDataForVehicle(CACHE_SYNC_REASON.DOSSIER_RESYNC, None)
     _g_itemsCache.onSyncCompleted += self.__gatherDataForVehicle
     return
コード例 #8
0
def _getPurchaseTypeVO():
    result = []
    for purchaseType, label in zip(PURCHASE_TYPE.ALL, _PURCHASE_TYPE_LABELS):
        purchaseVO = {'label': label,
         'enabled': True}
        if purchaseType == PURCHASE_TYPE.IGR:
            if not GUI_SETTINGS.igrEnabled:
                continue
            purchaseVO['enabled'] = getIGRCtrl().getRoomType() == IGR_TYPE.PREMIUM
            purchaseVO['tooltipDisabled'] = makeTooltip(_ms(VEHICLE_CUSTOMIZATION.FILTER_TOOLTIP_IGR_DISABLED_HEADER), _ms(VEHICLE_CUSTOMIZATION.FILTER_TOOLTIP_IGR_DISABLED_BODY, icon=_ms(icons.premiumIgrSmall())))
        result.append(purchaseVO)

    return result
コード例 #9
0
ファイル: main_view.py プロジェクト: webiumsk/WOT-0.9.12
    def __setCarouselData(self, blData):
        itemVOs = []
        for item in blData['items']:
            enable = True
            if item['installedInSlot']:
                label = text_styles.main(CUSTOMIZATION.CAROUSEL_ITEMLABEL_APPLIED)
            elif item['isInDossier']:
                label = text_styles.main(CUSTOMIZATION.CAROUSEL_ITEMLABEL_PURCHASED)
            elif item['object'].getIgrType() != IGR_TYPE.NONE:
                if item['object'].getIgrType() == getIGRCtrl().getRoomType():
                    label = text_styles.main(CUSTOMIZATION.CAROUSEL_ITEMLABEL_PURCHASED)
                else:
                    label = icons.premiumIgrSmall()
                    enable = False
            else:
                if item['priceIsGold']:
                    priceFormatter = text_styles.gold
                    priceIcon = icons.gold()
                else:
                    priceFormatter = text_styles.credits
                    priceIcon = icons.credits()
                label = priceFormatter('{0}{1}'.format(item['price'], priceIcon))
            data = {'id': item['id'],
             'icon': item['object'].getTexturePath(),
             'bonusType': item['object'].qualifier.getIcon16x16(),
             'bonusPower': text_styles.stats('+{0}%{1}'.format(item['object'].qualifier.getValue(), '*' if item['object'].qualifier.getDescription() is not None else '')),
             'label': label,
             'installed': item['appliedToCurrentSlot'],
             'btnSelect': self.__getLabelOfSelectBtn(item),
             'btnShoot': VEHICLE_CUSTOMIZATION.CUSTOMIZATIONITEMCAROUSEL_RENDERER_SHOOT,
             'btnTooltip': item['buttonTooltip'],
             'btnSelectEnable': enable,
             'doubleclickEnable': enable,
             'btnShootEnable': True}
            cType = g_customizationController.carousel.currentType
            if isSale(cType, item['duration']) and not item['isInDossier'] and not item['installedInSlot']:
                isGold = item['priceIsGold']
                data['salePrice'] = getSalePriceString(isGold, item['price'])
            itemVOs.append(data)

        carouselLength = len(itemVOs)
        self.as_setCarouselDataS({'rendererList': itemVOs,
         'rendererWidth': blData['rendererWidth'],
         'filterCounter': '{0}{1}'.format(text_styles.stats(carouselLength) if carouselLength > 0 else text_styles.error(carouselLength), text_styles.main(_ms(VEHICLE_CUSTOMIZATION.CAROUSEL_FILTER_COUNTER, all=blData['unfilteredLength']))),
         'messageVisible': carouselLength == 0,
         'counterVisible': True,
         'goToIndex': blData['goToIndex'],
         'selectedIndex': blData['selectedIndex']})
        return
コード例 #10
0
    def __setCarouselData(self, blData):
        itemVOs = []
        selectedIndex = -1
        for item in blData['items']:
            element = item['element']
            isInQuest = checkInQuest(element, self.__controller.filter.purchaseType)
            if item['installedInCurrentSlot']:
                label = text_styles.main(VEHICLE_CUSTOMIZATION.CAROUSEL_ITEMLABEL_APPLIED)
            elif element.isInDossier:
                label = text_styles.main(VEHICLE_CUSTOMIZATION.CAROUSEL_ITEMLABEL_PURCHASED)
            elif element.getIgrType() != IGR_TYPE.NONE:
                if element.getIgrType() == getIGRCtrl().getRoomType():
                    label = text_styles.main(VEHICLE_CUSTOMIZATION.CAROUSEL_ITEMLABEL_PURCHASED)
                else:
                    label = icons.premiumIgrSmall()
            elif isInQuest:
                label = icons.quest()
            else:
                if item['duration'] == DURATION.PERMANENT:
                    priceFormatter = text_styles.gold
                    priceIcon = icons.gold()
                else:
                    priceFormatter = text_styles.credits
                    priceIcon = icons.credits()
                label = priceFormatter('{0}{1}'.format(element.getPrice(item['duration']), priceIcon))
            data = {'id': element.getID(),
             'icon': element.getTexturePath(),
             'bonusType': element.qualifier.getIcon16x16(),
             'bonusPower': text_styles.stats('+{0}%{1}'.format(element.qualifier.getValue(), '*' if element.qualifier.getDescription() is not None else '')),
             'label': label,
             'selected': item['appliedToCurrentSlot'] or item['installedInCurrentSlot'] and not blData['hasAppliedItem'],
             'goToTaskBtnVisible': isInQuest,
             'goToTaskBtnText': _ms(VEHICLE_CUSTOMIZATION.CUSTOMIZATION_ITEMCAROUSEL_RENDERER_GOTOTASK),
             'newElementIndicatorVisible': item['isNewElement']}
            if data['selected']:
                selectedIndex = blData['items'].index(item)
            if element.isOnSale(item['duration']) and not element.isInDossier and not item['installedInCurrentSlot'] and not isInQuest:
                data['salePrice'] = getSalePriceString(self.__controller.slots.currentType, element, item['duration'])
            itemVOs.append(data)

        carouselLength = len(itemVOs)
        self.as_setCarouselDataS({'rendererList': itemVOs,
         'rendererWidth': blData['rendererWidth'],
         'filterCounter': '{0}{1}'.format(text_styles.stats(carouselLength) if carouselLength > 0 else text_styles.error(carouselLength), text_styles.main(_ms(VEHICLE_CUSTOMIZATION.CAROUSEL_FILTER_COUNTER, all=blData['unfilteredLength']))),
         'messageVisible': carouselLength == 0,
         'counterVisible': True,
         'goToIndex': blData['goToIndex'],
         'selectedIndex': selectedIndex})
        return
コード例 #11
0
ファイル: data_aggregator.py プロジェクト: webiumsk/WOT0.10.0
    def __setInstalledRawItems(self, curVehDescr):
        installedRawItems = {'camouflages': list(curVehDescr.camouflages),
         'emblems': list(curVehDescr.playerEmblems),
         'inscriptions': list(curVehDescr.playerInscriptions)}
        if self.__displayIgrItems:
            igrLayout = g_itemsCache.items.inventory.getIgrCustomizationsLayout()
            vehicleId = g_currentVehicle.item.invID
            igrRoomType = getIGRCtrl().getRoomType()
            igrVehDescr = []
            if vehicleId in igrLayout:
                if igrRoomType in igrLayout[vehicleId]:
                    igrVehDescr = igrLayout[vehicleId][igrRoomType]
            for key in igrVehDescr:
                for index in igrVehDescr[key]:
                    installedRawItems[key][index] = igrVehDescr[key][index]

        self.__initialViewModel = (installedRawItems['emblems'], installedRawItems['inscriptions'])
        self.viewModel = [copy.deepcopy(installedRawItems['camouflages']), copy.deepcopy(installedRawItems['emblems']), copy.deepcopy(installedRawItems['inscriptions'])]
        return installedRawItems
コード例 #12
0
 def __init__(self):
     self.updated = Event()
     self.viewModel = []
     self.__installed = ()
     self.__availableItems = None
     self.__displayedItems = None
     self.__igrReplacedItems = None
     self.__notMigratedItems = None
     self.__itemGroups = None
     self.__initialViewModel = ()
     self.__cNationID = None
     self.__rawItems = None
     self.__vehicleInventoryID = None
     self.__displayIgrItems = getIGRCtrl().getRoomType() == 2 and GUI_SETTINGS.igrEnabled
     self.__availableGroupNames = None
     self.__gatherDataForVehicle(CACHE_SYNC_REASON.DOSSIER_RESYNC, None)
     _g_currentVehicle.onChanged += self.__onCurrentVehicleChanged
     _g_itemsCache.onSyncCompleted += self.__gatherDataForVehicle
     return
コード例 #13
0
    def _getInstalledRawItems(self, curVehDescr):
        installedRawItems = DataAggregator._getInstalledRawItems(self, curVehDescr)
        if self._displayIgrItems:
            igrLayout = self._itemsCache.items.inventory.getIgrCustomizationsLayout()
            vehicleId = self._currentVehicle.item.invID
            igrRoomType = getIGRCtrl().getRoomType()
            igrVehDescr = []
            if vehicleId in igrLayout:
                if igrRoomType in igrLayout[vehicleId]:
                    igrVehDescr = igrLayout[vehicleId][igrRoomType]
            for key in igrVehDescr:
                for index in igrVehDescr[key]:
                    replacedItemID = installedRawItems[key][index][0]
                    replacedItemDaysLeft = installedRawItems[key][index][2]
                    replacedItemDaysLeft = replacedItemDaysLeft or None
                    if replacedItemID is not None:
                        self.__igrReplacedItems[TYPE_NAME[key]][replacedItemID] = replacedItemDaysLeft
                    installedRawItems[key][index] = igrVehDescr[key][index]

        return installedRawItems
コード例 #14
0
ファイル: __init__.py プロジェクト: webiumsk/WoT
 def sendPresence(self, initial = False):
     client = self.client()
     if not client or not client.isConnected():
         return False
     if self.__scope == MESSENGER_SCOPE.BATTLE:
         presence = PRESENCE.DND
     elif self.__scope == MESSENGER_SCOPE.LOBBY:
         presence = PRESENCE.AVAILABLE
     else:
         return False
     if initial or client.getClientPresence() != presence:
         if IS_IGR_ENABLED:
             from gui.game_control import getIGRCtrl
             ctrl = getIGRCtrl()
             if ctrl:
                 client.setClientPresenceWithIGR(presence, igrID=ctrl.getRoomType())
             else:
                 client.setClientPresence(presence)
         else:
             client.setClientPresence(presence)
     return True
コード例 #15
0
    def __gatherDataForVehicle(self, updateReason, invalidItems):
        if updateReason in (CACHE_SYNC_REASON.DOSSIER_RESYNC,
         CACHE_SYNC_REASON.SHOP_RESYNC,
         _IGR_TYPE_CHANGED,
         VEHICLE_CHANGED_EVENT,
         EVENTS_UPDATED_EVENT):
            self.__displayIgrItems = getIGRCtrl().getRoomType() == 2 and GUI_SETTINGS.igrEnabled
            self.__vehicleInventoryID = g_currentVehicle.item.invID
            curVehItem = _g_currentVehicle.item
            curVehDescr = curVehItem.descriptor
            self.__cNationID = curVehDescr.type.customizationNationID
            inDossier = (_g_itemsCache.items.getVehicleDossier(curVehItem.intCD).getBlock('camouflages'), _g_itemsCache.items.getVehicleDossier(curVehItem.intCD).getBlock('emblems'), _g_itemsCache.items.getVehicleDossier(curVehItem.intCD).getBlock('inscriptions'))
            self.__rawItems = [_g_vehiclesCache.customization(self.__cNationID)['camouflages'], _g_vehiclesCache.playerEmblems()[1], _g_vehiclesCache.customization(self.__cNationID)['inscriptions']]
            self.__itemGroups = (_g_vehiclesCache.customization(self.__cNationID)['camouflageGroups'], _g_vehiclesCache.playerEmblems()[0], _g_vehiclesCache.customization(self.__cNationID)['inscriptionGroups'])
            inQuests = self.__getQuestItems()
            self.__availableGroupNames = [set([]), set([]), set([])]
            self.__displayedItems = [{}, {}, {}]
            self.__availableItems = [{}, {}, {}]
            self.__igrReplacedItems = [{}, {}, {}]
            self.__notMigratedItems = [set([]), set([]), set([])]
            self.__associatedQuests = [{}, {}, {}]
            inventoryItems = self.getInventoryItems(self.__cNationID, self.__rawItems)
            installedRawItems = self.__setInstalledRawItems(curVehDescr)
            self.__installed = self.__setInstalledCustomization(curVehDescr.hull['emblemSlots'], curVehDescr.turret['emblemSlots'], installedRawItems)
            for cType in CUSTOMIZATION_TYPE.ALL:
                self.__fillAvailableItems(cType, inDossier, inQuests, inventoryItems)
                self.__fillDisplayedItems(cType)
                self.__fillDisplayedGroups(cType)

            if updateReason == VEHICLE_CHANGED_EVENT:
                needReset = True
            elif updateReason == EVENTS_UPDATED_EVENT:
                needReset = self.__isQuestsChanged(inQuests)
            else:
                needReset = False
            self.__associatedQuests = inQuests
            self.updated(needReset)
コード例 #16
0
 def __obtainedFromIgr(self):
     """Check if item can be obtained by IRG.
     
     Returns:
         A tuple (buyItems, wasBough, status) where:
         buyItems - a list of different ways this item can be bought;
         wasBought - specifies if item is already bought;
         status - one of the STATUS constants
     """
     if self._item.getIgrType() == getIGRCtrl().getRoomType():
         buyItems = [{'value': 0,
           'type': BUY_ITEM_TYPE.ALREADY_HAVE_IGR,
           'isSale': False,
           'desc': _ms('#vehicle_customization:customization/tooltip/alreadyHave/igr')}]
         wasBought = True
         status = STATUS.ON_BOARD if self.__isInstalled() else STATUS.ALREADY_HAVE
     else:
         buyItems = [{'value': 0,
           'type': BUY_ITEM_TYPE.WAYS_TO_BUY_IGR,
           'isSale': False,
           'desc': _ms('#vehicle_customization:customization/tooltip/wayToBuy/igr')}]
         wasBought = False
         status = STATUS.DO_IGR
     return (buyItems, wasBought, status)
コード例 #17
0
 def getGroup(self):
     groupName = self._rawData['groupName']
     if getIGRCtrl().getRoomType() == IGR_TYPE.PREMIUM:
         groupName = groupName[3:] if groupName.startswith('IGR') else groupName
     return groupName
コード例 #18
0
 def _update(self):
     self._displayIgrItems = getIGRCtrl().getRoomType() == IGR_TYPE.PREMIUM
     self.__igrReplacedItems = [{}, {}, {}]
     DataAggregator._update(self)
コード例 #19
0
    def __setCarouselData(self, blData):
        itemVOs = []
        selectedIndex = -1
        for item in blData['items']:
            element = item['element']
            isInQuest = checkInQuest(element,
                                     self.__controller.filter.purchaseType)
            if item['installedInCurrentSlot']:
                label = text_styles.main(
                    VEHICLE_CUSTOMIZATION.CAROUSEL_ITEMLABEL_APPLIED)
            elif element.isInDossier:
                label = text_styles.main(
                    VEHICLE_CUSTOMIZATION.CAROUSEL_ITEMLABEL_PURCHASED)
            elif element.getIgrType() != IGR_TYPE.NONE:
                if element.getIgrType() == getIGRCtrl().getRoomType():
                    label = text_styles.main(
                        VEHICLE_CUSTOMIZATION.CAROUSEL_ITEMLABEL_PURCHASED)
                else:
                    label = icons.premiumIgrSmall()
            elif isInQuest:
                label = icons.quest()
            else:
                if item['duration'] == DURATION.PERMANENT:
                    priceFormatter = text_styles.gold
                    priceIcon = icons.gold()
                else:
                    priceFormatter = text_styles.credits
                    priceIcon = icons.credits()
                label = priceFormatter('{0}{1}'.format(
                    element.getPrice(item['duration']), priceIcon))
            data = {
                'id':
                element.getID(),
                'icon':
                element.getTexturePath(),
                'bonusType':
                element.qualifier.getIcon16x16(),
                'bonusPower':
                text_styles.stats('+{0}%{1}'.format(
                    element.qualifier.getValue(), '*' if
                    element.qualifier.getDescription() is not None else '')),
                'label':
                label,
                'selected':
                item['appliedToCurrentSlot'] or item['installedInCurrentSlot']
                and not blData['hasAppliedItem'],
                'goToTaskBtnVisible':
                isInQuest,
                'goToTaskBtnText':
                _ms(VEHICLE_CUSTOMIZATION.
                    CUSTOMIZATION_ITEMCAROUSEL_RENDERER_GOTOTASK),
                'newElementIndicatorVisible':
                item['isNewElement']
            }
            if data['selected']:
                selectedIndex = blData['items'].index(item)
            if element.isOnSale(
                    item['duration']) and not element.isInDossier and not item[
                        'installedInCurrentSlot'] and not isInQuest:
                data['salePrice'] = getSalePriceString(
                    self.__controller.slots.currentType, element,
                    item['duration'])
            itemVOs.append(data)

        carouselLength = len(itemVOs)
        self.as_setCarouselDataS({
            'rendererList':
            itemVOs,
            'rendererWidth':
            blData['rendererWidth'],
            'filterCounter':
            '{0}{1}'.format(
                text_styles.stats(carouselLength)
                if carouselLength > 0 else text_styles.error(carouselLength),
                text_styles.main(
                    _ms(VEHICLE_CUSTOMIZATION.CAROUSEL_FILTER_COUNTER,
                        all=blData['unfilteredLength']))),
            'messageVisible':
            carouselLength == 0,
            'counterVisible':
            True,
            'goToIndex':
            blData['goToIndex'],
            'selectedIndex':
            selectedIndex
        })
        return
コード例 #20
0
    def __setCarouselData(self, blData):
        itemVOs = []
        for item in blData['items']:
            if item['installedInSlot']:
                label = text_styles.main(
                    CUSTOMIZATION.CAROUSEL_ITEMLABEL_APPLIED)
            elif item['isInDossier']:
                label = text_styles.main(
                    CUSTOMIZATION.CAROUSEL_ITEMLABEL_PURCHASED)
            elif item['object'].getIgrType() != IGR_TYPE.NONE:
                if item['object'].getIgrType() == getIGRCtrl().getRoomType():
                    label = text_styles.main(
                        CUSTOMIZATION.CAROUSEL_ITEMLABEL_PURCHASED)
                else:
                    label = icons.premiumIgrSmall()
            elif item['isInQuests']:
                label = icons.quest()
            else:
                if item['priceIsGold']:
                    priceFormatter = text_styles.gold
                    priceIcon = icons.gold()
                else:
                    priceFormatter = text_styles.credits
                    priceIcon = icons.credits()
                label = priceFormatter('{0}{1}'.format(item['price'],
                                                       priceIcon))
            data = {
                'id':
                item['id'],
                'icon':
                item['object'].getTexturePath(),
                'bonusType':
                item['object'].qualifier.getIcon16x16(),
                'bonusPower':
                text_styles.stats('+{0}%{1}'.format(
                    item['object'].qualifier.getValue(),
                    '*' if item['object'].qualifier.getDescription()
                    is not None else '')),
                'label':
                label,
                'selected':
                item['appliedToCurrentSlot'],
                'goToTaskBtnVisible':
                item['isInQuests'],
                'goToTaskBtnText':
                _ms(VEHICLE_CUSTOMIZATION.
                    CUSTOMIZATION_ITEMCAROUSEL_RENDERER_GOTOTASK),
                'newElementIndicatorVisible':
                False
            }
            cType = g_customizationController.carousel.currentType
            if item['object'].isSale(
                    item['duration']) and not item['isInDossier'] and not item[
                        'installedInSlot'] and not item['isInQuests']:
                data['salePrice'] = getSalePriceString(cType, item['object'],
                                                       item['duration'])
            itemVOs.append(data)

        carouselLength = len(itemVOs)
        self.as_setCarouselDataS({
            'rendererList':
            itemVOs,
            'rendererWidth':
            blData['rendererWidth'],
            'filterCounter':
            '{0}{1}'.format(
                text_styles.stats(carouselLength)
                if carouselLength > 0 else text_styles.error(carouselLength),
                text_styles.main(
                    _ms(VEHICLE_CUSTOMIZATION.CAROUSEL_FILTER_COUNTER,
                        all=blData['unfilteredLength']))),
            'messageVisible':
            carouselLength == 0,
            'counterVisible':
            True,
            'goToIndex':
            blData['goToIndex'],
            'selectedIndex':
            blData['selectedIndex']
        })
        return
コード例 #21
0
 def getGroup(self):
     groupName = self._rawData['groupName']
     if getIGRCtrl().getRoomType() == IGR_TYPE.PREMIUM:
         groupName = groupName[3:] if groupName.startswith('IGR') else groupName
     return groupName
コード例 #22
0
 def isInDossier(self):
     return self.__isInDossier or self.getIgrType() == getIGRCtrl().getRoomType() and getIGRCtrl().getRoomType() != IGR_TYPE.NONE
コード例 #23
0
ファイル: customization.py プロジェクト: webiumsk/WOT-0.9.12
 def __getItemData(self):
     selectedSlotItemID = g_customizationController.carousel.slots.getInstalledItem(
         self.__currentSlotIdx, self.__cItemType
     ).getID()
     isInSlot = selectedSlotItemID == self.__cItem.getID()
     wasBought = False
     if self.__cItem.getIgrType() != IGR_TYPE.NONE:
         if self.__cItem.getIgrType() == getIGRCtrl().getRoomType():
             buyItems = [
                 {
                     "value": 0,
                     "type": BUY_ITEM_TYPE.ALREADY_HAVE_IGR,
                     "isSale": False,
                     "desc": _ms(VEHICLE_CUSTOMIZATION.CUSTOMIZATION_TOOLTIP_ALREADYHAVE_IGR),
                 }
             ]
             wasBought = True
             status = STATUS.ON_BOARD if isInSlot else STATUS.ALREADY_HAVE
         else:
             buyItems = [
                 {
                     "value": 0,
                     "type": BUY_ITEM_TYPE.WAYS_TO_BUY_IGR,
                     "isSale": False,
                     "desc": _ms(VEHICLE_CUSTOMIZATION.CUSTOMIZATION_TOOLTIP_WAYTOBUY_IGR),
                 }
             ]
             status = STATUS.DO_IGR
     elif self.__cItem.isInDossier:
         data = {"value": 0, "isSale": False}
         if self.__cItem.numberOfDays is not None:
             data["type"] = BUY_ITEM_TYPE.WAYS_TO_BUY_TEMP
             data["desc"] = _ms(
                 VEHICLE_CUSTOMIZATION.CUSTOMIZATION_TOOLTIP_WAYTOBUY_TEMP, days=self.__cItem.numberOfDays
             )
         else:
             data["type"] = BUY_ITEM_TYPE.ALREADY_HAVE_FOREVER
             data["desc"] = VEHICLE_CUSTOMIZATION.CUSTOMIZATION_TOOLTIP_WAYTOBUY_FOREVER
         buyItems = [data]
         wasBought = True
         status = STATUS.ON_BOARD if isInSlot else STATUS.ALREADY_HAVE
     elif isInSlot:
         days = g_customizationController.carousel.slots.getInstalledItem(
             self.__currentSlotIdx, self.__cItemType
         ).duration
         leftDays = g_customizationController.carousel.slots.getInstalledItem(
             self.__currentSlotIdx, self.__cItemType
         ).getNumberOfDaysLeft()
         buyItems = [
             {
                 "value": 0,
                 "type": BUY_ITEM_TYPE.ALREADY_HAVE_TEMP,
                 "isSale": False,
                 "desc": _ms(CUSTOMIZATION.TOOLTIP_ELEMENT_PURCHASE_ACQUIRED_DAYS, total=days, left=leftDays),
             }
         ]
         status = STATUS.ON_BOARD
         wasBought = True
     else:
         buyItems = [
             {
                 "value": self.__cItem.getPrice(0),
                 "type": BUY_ITEM_TYPE.WAYS_TO_BUY_FOREVER,
                 "isSale": self.__isSale(BUY_ITEM_TYPE.WAYS_TO_BUY_FOREVER),
                 "desc": _ms(VEHICLE_CUSTOMIZATION.CUSTOMIZATION_TOOLTIP_WAYTOBUY_FOREVER),
             },
             {
                 "value": self.__cItem.getPrice(30),
                 "type": BUY_ITEM_TYPE.WAYS_TO_BUY_TEMP,
                 "isSale": self.__isSale(BUY_ITEM_TYPE.WAYS_TO_BUY_TEMP),
                 "desc": _ms(VEHICLE_CUSTOMIZATION.CUSTOMIZATION_TOOLTIP_WAYTOBUY_TEMP, days="30"),
             },
             {
                 "value": self.__cItem.getPrice(7),
                 "type": BUY_ITEM_TYPE.WAYS_TO_BUY_TEMP,
                 "isSale": self.__isSale(BUY_ITEM_TYPE.WAYS_TO_BUY_TEMP),
                 "desc": _ms(VEHICLE_CUSTOMIZATION.CUSTOMIZATION_TOOLTIP_WAYTOBUY_TEMP, days="7"),
             },
         ]
         status = STATUS.AVAILABLE_FOR_BUY
     item = {
         "type": self.__cItemType,
         "title": self.__cItem.getName(),
         "icon": self.__cItem.getTexturePath(),
         "bonus_icon": self.__cItem.qualifier.getIcon42x42(),
         "bonus_title_local": self.__cItem.qualifier.getFormattedValue(),
         "bonus_title_global": _ms(
             VEHICLE_CUSTOMIZATION.CUSTOMIZATION_TOOLTIP_BONUS_GLOBAL,
             count=g_customizationController.carousel.slots.bonusPanel.bonusData[self.__cItem.qualifier.getType()][
                 "bonusTotalCount"
             ],
         ),
         "bonus_desc": self.__cItem.qualifier.getExtendedName(),
         "wasBought": wasBought,
         "buyItems": buyItems,
         "status": status,
         "description": self.__cItem.getDescription(),
         "conditional": self.__cItem.qualifier.getDescription(),
     }
     return item
コード例 #24
0
 def isInDossier(self):
     return self.__isInDossier or self.getIgrType() == getIGRCtrl().getRoomType() and getIGRCtrl().getRoomType() != IGR_TYPE.NONE
コード例 #25
0
 def _update(self):
     self._displayIgrItems = getIGRCtrl().getRoomType() == IGR_TYPE.PREMIUM
     self.__igrReplacedItems = [{}, {}, {}]
     DataAggregator._update(self)
コード例 #26
0
    def __packStaffData(self, club, syncUserInfo=False):
        members = []
        membersDict = club.getMembers()
        membersCount = len(membersDict)
        for dbID, member in membersDict.iteritems():
            memberType = _getFlashMemberType(member)
            isSelf = dbID == self.__viewerDbID
            limits = self.clubsState.getLimits()
            profile = self.clubsCtrl.getProfile()
            memberStats = member.getSeasonDossier().getRated7x7Stats()
            battlesCount = memberStats.getBattlesCount()
            rating = self.getUserRating(dbID)
            damageCoef = memberStats.getDamageEfficiency() or 0
            avgDamage = memberStats.getAvgDamage() or 0
            avgAssistDamage = memberStats.getDamageAssistedEfficiency() or 0
            avgExperience = memberStats.getAvgXP() or 0
            armorUsingEfficiency = memberStats.getArmorUsingEfficiency() or 0
            joinDate = member.getJoiningTime()
            contact = self.getContact(dbID)
            if isSelf:
                removeBtnTooltip = TOOLTIPS.STATICFORMATIONSTAFFVIEW_REMOVEHIMSELFBTN
            else:
                removeBtnTooltip = TOOLTIPS.STATICFORMATIONSTAFFVIEW_REMOVEMEMBERBTN
            isValid, userData = self.getGuiUserDataWithStatus(dbID)
            userData.update({'igrType': getIGRCtrl().getRoomType()})
            members.append({
                'memberId':
                dbID,
                'canRemoved':
                self.__canBeRemoved(profile, club, member, membersCount,
                                    limits),
                'canPassOwnership':
                limits.canTransferOwnership(profile, club).success,
                'canShowContextMenu':
                not isSelf and isValid,
                'removeMemberBtnIcon':
                RES_ICONS.MAPS_ICONS_LIBRARY_CROSS,
                'removeMemberBtnTooltip':
                removeBtnTooltip,
                'appointmentSortValue':
                memberType,
                'appointment':
                _packAppointment(profile, club, member, memberType, limits),
                'ratingSortValue':
                rating,
                'rating':
                self.getGuiUserRating(dbID, text_styles.neutral),
                'battlesCountSortValue':
                battlesCount,
                'battlesCount':
                text_styles.main(BigWorld.wg_getIntegralFormat(battlesCount)),
                'damageCoefSortValue':
                damageCoef,
                'damageCoef':
                text_styles.main(BigWorld.wg_getNiceNumberFormat(damageCoef)),
                'avrDamageSortValue':
                avgDamage,
                'avrDamage':
                text_styles.main(BigWorld.wg_getIntegralFormat(avgDamage)),
                'avrAssistDamageSortValue':
                avgAssistDamage,
                'avrAssistDamage':
                text_styles.main(
                    BigWorld.wg_getNiceNumberFormat(avgAssistDamage)),
                'avrExperienceSortValue':
                avgExperience,
                'avrExperience':
                text_styles.main(BigWorld.wg_getIntegralFormat(avgExperience)),
                'tauntSortValue':
                armorUsingEfficiency,
                'taunt':
                text_styles.main(
                    BigWorld.wg_getNiceNumberFormat(armorUsingEfficiency)),
                'joinDateSortValue':
                joinDate,
                'joinDate':
                text_styles.standard(BigWorld.wg_getShortDateFormat(joinDate)),
                'userDataSortValue':
                self.getUserFullName(dbID).lower(),
                'userData':
                userData,
                'clubDbID':
                self._clubDbID,
                'statusIcon':
                _getStatusIcon(contact)
            })

        if syncUserInfo:
            self.syncUsersInfo()
        return {
            'members':
            sorted(members, key=lambda k: k['userDataSortValue'].lower())
        }