def getPersonalVehiclesInfo(self, result): player = weakref.proxy(self.getPlayerInfo()) info = VehicleSummarizeInfo(0, player) getItemByCD = self.itemsCache.items.getItemByCD for intCD, records in self.__personal.getVehicleCDsIterator(result): critsRecords = [] if 'details' in records: playerTeam = self.__personal.avatar.team playerDBID = self.__personal.avatar.accountDBID getVehicleInfo = self.__vehicles.getVehicleInfo details = records['details'] for (vehicleID, _), data in details.iteritems(): vehicleInfo = getVehicleInfo(vehicleID) if vehicleInfo.accountDBID != playerDBID and vehicleInfo.team != playerTeam: critsRecords.append(data['crits']) info.addVehicleInfo( VehicleDetailedInfo.makeForVehicle(0, getItemByCD(intCD), player, records, critsRecords=critsRecords)) info.addAvatarInfo(weakref.proxy(self.getAvatarInfo())) return info
def getPersonalDetailsIterator(self, result): totalSortable = {} totalBases = [] playerTeam = self.__personal.avatar.team playerDBID = self.__personal.avatar.accountDBID getVehicleInfo = self.__vehicles.getVehicleInfo getBotInfo = self.__common.getBotInfo getPlayerInfo = self.__players.getPlayerInfo makePlayerInfo = self.__players.makePlayerInfo getItemByCD = self.itemsCache.items.getItemByCD for _, vData in self.__personal.getVehicleCDsIterator(result): details = vData.get('details', {}) enemies = [] for (vehicleID, _), data in details.iteritems(): vehicleInfo = getVehicleInfo(vehicleID) intCD = None if not vehicleInfo.intCD and not vehicleInfo.accountDBID: if getBotInfo(vehicleID) is not None: intCD = vehicleID else: intCD = vehicleInfo.intCD if vehicleInfo.accountDBID == playerDBID or vehicleInfo.team == playerTeam: continue if vehicleInfo.accountDBID: playerInfo = weakref.proxy( getPlayerInfo(vehicleInfo.accountDBID)) else: botInfo = getBotInfo(vehicleID) botName = botInfo.realName if botInfo else '' playerInfo = makePlayerInfo(realName=botName, fakeName=botName) vehicle = getItemByCD(intCD) if intCD else None sortable = VehicleDetailedInfo.makeForEnemy( vehicleID, vehicle, playerInfo, data, vehicleInfo.deathReason, vehicleInfo.isTeamKiller) if not sortable.haveInteractionDetails(): continue if (vehicleID, intCD) not in totalSortable: totalSortable[vehicleID, intCD] = VehicleSummarizeInfo( vehicleID, playerInfo) totalSortable[vehicleID, intCD].addVehicleInfo(sortable) enemies.append(sortable) bases = TeamBasesInfo(vData.get('capturePoints', 0), vData.get('droppedCapturePoints', 0)) totalBases.append(bases) yield ((bases, ), sorted(enemies, key=sort_keys.VehicleInfoSortKey)) yield (totalBases, sorted(totalSortable.itervalues(), key=sort_keys.VehicleInfoSortKey)) return
def getPersonalDetailsIterator(self, result): """Gets generator to iterate details for each personal vehicle. Note: the last item is containing summarize information. :param result: dict containing results['personal']. :return: generator. """ totalSortable = {} totalBases = [] playerTeam = self.__personal.avatar.team playerDBID = self.__personal.avatar.accountDBID getVehicleInfo = self.__vehicles.getVehicleInfo getBotInfo = self.__common.getBotInfo getPlayerInfo = self.__players.getPlayerInfo makePlayerInfo = self.__players.makePlayerInfo getItemByCD = self.itemsCache.items.getItemByCD for _, vData in self.__personal.getVehicleCDsIterator(result): details = vData.get('details', {}) enemies = [] for (vehicleID, _), data in details.iteritems(): vehicleInfo = getVehicleInfo(vehicleID) if not vehicleInfo.intCD: intCD = getBotInfo(vehicleID).intCD else: intCD = vehicleInfo.intCD if vehicleInfo.accountDBID == playerDBID or vehicleInfo.team == playerTeam: continue if vehicleInfo.accountDBID: playerInfo = weakref.proxy( getPlayerInfo(vehicleInfo.accountDBID)) else: playerInfo = makePlayerInfo( name=getBotInfo(vehicleID).name) sortable = VehicleDetailedInfo.makeForEnemy( vehicleID, getItemByCD(intCD), playerInfo, data, vehicleInfo.deathReason) if not sortable.haveInteractionDetails(): continue if (vehicleID, intCD) not in totalSortable: totalSortable[vehicleID, intCD] = VehicleSummarizeInfo( vehicleID, playerInfo) totalSortable[vehicleID, intCD].addVehicleInfo(sortable) enemies.append(sortable) bases = TeamBasesInfo(vData.get('capturePoints', 0), vData.get('droppedCapturePoints', 0)) totalBases.append(bases) yield ((bases, ), sorted(enemies, key=sort_keys.VehicleInfoSortKey)) yield (totalBases, sorted(totalSortable.itervalues(), key=sort_keys.VehicleInfoSortKey))