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