def buildList(self, selectedID, result): self.clear() userGetter = storage_getter('users')().getUser colorGetter = g_settings.getColorScheme('rosters').getColors pNameGetter = self.lobbyContext.getPeripheryName ratingFormatter = backport.getIntegralFormat self._selectedIdx = -1 for unitItem in result: creator = unitItem.creator if creator: dbID = creator.dbID creatorVO = makePlayerVO(creator, userGetter(dbID), colorGetter) else: creatorVO = {} cfdUnitID = unitItem.cfdUnitID index = len(self.collection) if cfdUnitID == selectedID: self._selectedIdx = index self.mapping[cfdUnitID] = index self.collection.append({'cfdUnitID': cfdUnitID, 'unitMgrID': unitItem.unitMgrID, 'creator': creatorVO, 'creatorName': creatorVO.get('userName', ''), 'rating': ratingFormatter(unitItem.rating), 'playersCount': unitItem.playersCount, 'commandSize': unitItem.commandSize, 'inBattle': unitItem.flags.isInArena(), 'isFreezed': unitItem.flags.isLocked(), 'isRestricted': unitItem.isRosterSet, 'description': unitItem.description, 'peripheryID': unitItem.peripheryID, 'server': pNameGetter(unitItem.peripheryID)}) return self._selectedIdx
def buildList(self, selectedID, result): self.clear() userGetter = storage_getter('users')().getUser colorGetter = g_settings.getColorScheme('rosters').getColors pNameGetter = g_lobbyContext.getPeripheryName ratingFormatter = BigWorld.wg_getIntegralFormat self._selectedIdx = -1 for unitItem in result: creator = unitItem.creator if creator: dbID = creator.dbID creatorVO = makePlayerVO(creator, userGetter(dbID), colorGetter) else: creatorVO = None cfdUnitID = unitItem.cfdUnitID index = len(self.collection) if cfdUnitID == selectedID: self._selectedIdx = index self.mapping[cfdUnitID] = index self.collection.append({'cfdUnitID': cfdUnitID, 'unitMgrID': unitItem.unitMgrID, 'creator': creatorVO, 'creatorName': creatorVO.get('userName', ''), 'rating': ratingFormatter(unitItem.rating), 'playersCount': unitItem.playersCount, 'commandSize': unitItem.commandSize, 'inBattle': unitItem.state.isInArena(), 'isFreezed': unitItem.state.isLocked(), 'isRestricted': unitItem.isRosterSet, 'description': unitItem.description, 'peripheryID': unitItem.peripheryID, 'server': pNameGetter(unitItem.peripheryID)}) return self._selectedIdx
def updateList(self, selectedID, result): isFullUpdate, diff = False, [] self._selectedIdx = None userGetter = storage_getter("users")().getUser colorGetter = g_settings.getColorScheme("rosters").getColors ratingFormatter = BigWorld.wg_getIntegralFormat result = set(result) removed = set(filter(lambda item: item[1] is None, result)) isFullUpdate = len(removed) for cfdUnitID, unitItem in removed: index = self.mapping.pop(cfdUnitID, None) if index is not None: self.collection.pop(index) if cfdUnitID == selectedID: self._selectedIdx = -1 self.rebuildIndexes() if isFullUpdate: updated = result.difference(removed) else: updated = result for cfdUnitID, unitItem in updated: try: index = self.mapping[cfdUnitID] item = self.collection[index] except (KeyError, IndexError): LOG_ERROR("Item not found", unitItem) continue creator = unitItem.creator if creator: dbID = creator.dbID creatorVO = makePlayerVO(creator, userGetter(dbID), colorGetter) else: creatorVO = None item.update( { "creator": creatorVO, "creatorName": creatorVO.get("userName", ""), "rating": ratingFormatter(unitItem.rating), "playersCount": unitItem.playersCount, "commandSize": unitItem.commandSize, "inBattle": unitItem.flags.isInArena() or unitItem.flags.isInPreArena(), "isFreezed": unitItem.flags.isLocked(), "isRestricted": unitItem.isRosterSet, "description": unitItem.description, } ) diff.append(index) if self._selectedIdx is None and selectedID in self.mapping: self._selectedIdx = self.mapping[selectedID] if isFullUpdate: self.refresh() elif len(diff): self.updateItems(diff) return self._selectedIdx
def updateList(self, selectedID, result): isFullUpdate, diff = False, [] self._selectedIdx = None userGetter = storage_getter('users')().getUser colorGetter = g_settings.getColorScheme('rosters').getColors ratingFormatter = BigWorld.wg_getIntegralFormat result = set(result) removed = set(filter(lambda item: item[1] is None, result)) isFullUpdate = len(removed) for cfdUnitID, unitItem in removed: index = self.mapping.pop(cfdUnitID, None) if index is not None: self.collection.pop(index) if cfdUnitID == selectedID: self._selectedIdx = -1 self.rebuildIndexes() if isFullUpdate: updated = result.difference(removed) else: updated = result for cfdUnitID, unitItem in updated: try: index = self.mapping[cfdUnitID] item = self.collection[index] except (KeyError, IndexError): LOG_ERROR('Item not found', unitItem) continue creator = unitItem.creator if creator: dbID = creator.dbID creatorVO = makePlayerVO(creator, userGetter(dbID), colorGetter) else: creatorVO = None item.update({ 'creator': creatorVO, 'creatorName': creatorVO.get('userName', ''), 'rating': ratingFormatter(unitItem.rating), 'playersCount': unitItem.playersCount, 'commandSize': unitItem.commandSize, 'inBattle': unitItem.flags.isInArena(), 'isFreezed': unitItem.flags.isLocked(), 'isRestricted': unitItem.isRosterSet, 'description': unitItem.description }) diff.append(index) if self._selectedIdx is None and selectedID in self.mapping: self._selectedIdx = self.mapping[selectedID] if isFullUpdate: self.refresh() elif diff: self.updateItems(diff) return self._selectedIdx
def updateList(self, selectedID, result): (isFullUpdate, diff,) = (False, []) self._selectedIdx = None userGetter = storage_getter('users')().getUser colorGetter = g_settings.getColorScheme('rosters').getColors ratingFormatter = BigWorld.wg_getIntegralFormat result = set(result) removed = set(filter(lambda item: item[1] is None, result)) isFullUpdate = len(removed) for (cfdUnitID, unitItem,) in removed: index = self.mapping.pop(cfdUnitID, None) if index is not None: self.collection.pop(index) if cfdUnitID == selectedID: self._selectedIdx = -1 self.rebuildIndexes() if isFullUpdate: updated = result.difference(removed) else: updated = result for (cfdUnitID, unitItem,) in updated: try: index = self.mapping[cfdUnitID] item = self.collection[index] except (KeyError, IndexError): LOG_ERROR('Item not found', unitItem) continue creator = unitItem.creator if creator: dbID = creator.dbID creatorVO = makePlayerVO(creator, userGetter(dbID), colorGetter) else: creatorVO = None item.update({'creator': creatorVO, 'rating': ratingFormatter(unitItem.rating), 'playersCount': unitItem.playersCount, 'commandSize': unitItem.commandSize, 'inBattle': unitItem.state.isInArena(), 'isFreezed': unitItem.state.isLocked(), 'isRestricted': unitItem.isRosterSet, 'description': unitItem.description}) diff.append(index) if self._selectedIdx is None and selectedID in self.mapping: self._selectedIdx = self.mapping[selectedID] if isFullUpdate: self.refresh() elif len(diff): self.updateItems(diff) return self._selectedIdx
def buildList(self, selectedID, result): self.clear() userGetter = storage_getter("users")().getUser colorGetter = g_settings.getColorScheme("rosters").getColors pNameGetter = g_lobbyContext.getPeripheryName ratingFormatter = BigWorld.wg_getIntegralFormat self._selectedIdx = -1 for unitItem in result: creator = unitItem.creator if creator: dbID = creator.dbID creatorVO = makePlayerVO(creator, userGetter(dbID), colorGetter) else: creatorVO = {} if unitItem.isClub: ladderIcon = getLadderChevron16x16(unitItem.extra.divisionID) else: ladderIcon = None cfdUnitID = unitItem.cfdUnitID index = len(self.collection) if cfdUnitID == selectedID: self._selectedIdx = index self.mapping[cfdUnitID] = index self.collection.append( { "cfdUnitID": cfdUnitID, "unitMgrID": unitItem.unitMgrID, "creator": creatorVO, "creatorName": creatorVO.get("userName", ""), "rating": ratingFormatter(unitItem.rating), "playersCount": unitItem.playersCount, "commandSize": unitItem.commandSize, "inBattle": unitItem.flags.isInArena(), "isFreezed": unitItem.flags.isLocked(), "isRestricted": unitItem.isRosterSet, "description": unitItem.description, "peripheryID": unitItem.peripheryID, "server": pNameGetter(unitItem.peripheryID), "ladderIcon": ladderIcon, "isStatic": unitItem.isClub, } ) return self._selectedIdx
def _makePlayerVO(self, pInfo, user, colorGetter, isPlayerSpeaking): return makePlayerVO(pInfo, user, colorGetter, isPlayerSpeaking)