示例#1
0
 def requestMedalData(self, cmd):
     record = DB_ID_TO_RECORD.get(int(cmd.medal_id), ('', ''))
     dossier = self.__itemsCache.items.getAccountDossier()
     achievement = getAchievementFactory(record, dossier).create()
     stage = int(cmd.stage)
     if stage != 0 and isinstance(achievement, StageAchievement):
         if stage < 0:
             stage = achievement.getValue()
             if not self.__isBlockBattleQuestDone(cmd.current_block):
                 stage += 1
                 achievement = getAchievementFactory(record).create(stage)
         else:
             achievement = getAchievementFactory(record).create(stage)
     else:
         stage = achievement.getValue()
     icons = {
         AWARDS_SIZES_EXT.HUGE: achievement.getIcon110x110(),
         AWARDS_SIZES_EXT.BIG: achievement.getIcon80x80(),
         AWARDS_SIZES_EXT.SMALL: achievement.getIcon48x48()
     }
     responseData = {
         'medal_id': cmd.medal_id,
         'icon': icons,
         'name': achievement.getUserName(),
         'description': achievement.getUserWebDescription(),
         'condition': achievement.getUserCondition(),
         'stage': stage
     }
     return responseData
示例#2
0
def makeAchievementFromPersonal(results):
    popUps = results.get('dossierPopUps', [])
    for achievementID, value in popUps:
        record = DB_ID_TO_RECORD[achievementID]
        if record in layouts.IGNORED_BY_BATTLE_RESULTS or not layouts.isAchievementRegistered(record):
            continue
        factory = getAchievementFactory(record)
        if factory is not None:
            achievement = factory.create(value=value)
            if record == achievements.MARK_ON_GUN_RECORD:
                if 'typeCompDescr' in results:
                    try:
                        nationID = vehicles_core.parseIntCompactDescr(results['typeCompDescr'])[1]
                        achievement.setVehicleNationID(nationID)
                    except:
                        LOG_CURRENT_EXCEPTION()

                if 'damageRating' in results:
                    achievement.setDamageRating(results['damageRating'])
            if achievement.getName() in achievements.BATTLE_ACHIEVES_RIGHT:
                yield (1, achievement)
            else:
                yield (-1, achievement)

    return
示例#3
0
 def showTooltip(self, cmd):
     record = DB_ID_TO_RECORD.get(int(cmd.medal_id), ('', ''))
     dossier = self.__itemsCache.items.getAccountDossier()
     achievement = getAchievementFactory(record, dossier).create()
     stage = int(cmd.stage)
     if stage != 0 and isinstance(achievement, StageAchievement):
         if stage < 0:
             stage = achievement.getValue()
             if not self.__isBlockBattleQuestDone(cmd.current_block):
                 stage += 1
                 achievement = getAchievementFactory(record).create(stage)
         else:
             achievement = getAchievementFactory(record).create(stage)
     args = [None, None, None, None, None]
     self.__appLoader.getApp().getToolTipMgr().createTypedTooltipExt(
         TC.ACHIEVEMENT, args, 'INFO', achievement)
     return
示例#4
0
    def getAchievements(self):
        result = []
        for achievementID in self.achievementsIDs:
            record = DB_ID_TO_RECORD[achievementID]
            factory = getAchievementFactory(record)
            if factory is not None and layouts.isAchievementRegistered(record):
                achievement = factory.create(value=0)
                if not achievement.isApproachable():
                    result.append((achievement, True))

        return sorted(result, key=sort_keys.AchievementSortKey)
示例#5
0
    def getAchievements(self):
        """Gets list of received "in-battle" achievements that are reviced by player's vehicles."""
        achievements = []
        for achievementID in self.achievementsIDs:
            record = DB_ID_TO_RECORD[achievementID]
            factory = getAchievementFactory(record)
            if factory is not None and layouts.isAchievementRegistered(record):
                achievement = factory.create(value=0)
                if not achievement.isApproachable():
                    achievements.append((achievement, True))

        return sorted(achievements, key=sort_keys.AchievementSortKey)
示例#6
0
def makeMarkOfMasteryFromPersonal(results):
    markOfMastery = results.get('markOfMastery', 0)
    achievement = None
    if not markOfMastery:
        return
    else:
        factory = getAchievementFactory(('achievements', 'markOfMastery'))
        if factory is not None:
            achievement = factory.create(value=markOfMastery)
            achievement.setPrevMarkOfMastery(results.get('prevMarkOfMastery', 0))
            achievement.setCompDescr(results.get('typeCompDescr'))
        return achievement
示例#7
0
    def __extractAchievements(data):
        result = set()
        for block in data.get('dossier', {}).values():
            if isinstance(block, dict):
                for record in block.keys():
                    if record[0] == BADGES_BLOCK:
                        continue
                    factory = getAchievementFactory(record)
                    if factory is not None:
                        a = factory.create()
                        if a is not None:
                            result.add(a.getUserName())

        return result
示例#8
0
    def requestRewardInfo(self, cmd):
        responseData = []
        for recordId in cmd.medal_ids:
            record = DB_ID_TO_RECORD.get(int(recordId), ('', ''))
            _, rewardId = record
            factory = getAchievementFactory(record).create()
            responseData.append({'medal_id': recordId,
             'image': ''.join(('gui/maps/icons/achievement/', rewardId, '.png')),
             'title': ''.join(('#achievements:', rewardId)),
             'name': factory.getUserName(),
             'description': factory.getUserWebDescription(),
             'condition': factory.getUserCondition()})

        return responseData
    def __populatePersonalMedals(self):
        self.__data['dossierType'] = None
        self.__data['dossierCompDescr'] = None
        achievementsData = self.__data.get('popUpRecords', [])
        achievementsLeft = []
        achievementsRight = []
        for achievementId, achieveValue in achievementsData:
            record = DB_ID_TO_RECORD[achievementId]
            factory = getAchievementFactory(record)
            if factory is not None:
                achieve = factory.create(value=achieveValue)
                achieveData = self._packAchievement(achieve, isUnique=True)
                if achieve.getName() in achievements.FORT_BATTLE_ACHIEVES_RIGHT:
                    achievementsRight.append(achieveData)
                else:
                    achievementsLeft.append(achieveData)

        achievementsRight.sort(key=lambda k: k['isEpic'], reverse=True)
        return (achievementsLeft, achievementsRight)
    def __populatePersonalMedals(self):
        self.__data['dossierType'] = None
        self.__data['dossierCompDescr'] = None
        achievementsData = self.__data.get('popUpRecords', [])
        achievementsLeft = []
        achievementsRight = []
        for achievementId, achieveValue in achievementsData:
            record = DB_ID_TO_RECORD[achievementId]
            factory = getAchievementFactory(record)
            if factory is not None:
                achieve = factory.create(value=achieveValue)
                achieveData = self._packAchievement(achieve, isUnique=True)
                if achieve.getName(
                ) in achievements.FORT_BATTLE_ACHIEVES_RIGHT:
                    achievementsRight.append(achieveData)
                else:
                    achievementsLeft.append(achieveData)

        achievementsRight.sort(key=lambda k: k['isEpic'], reverse=True)
        return (achievementsLeft, achievementsRight)