def getPlayerInfo(self, pID = None, rosterKey = None): rosters = prb_getters.getPrebattleRosters() if pID is None: pID = account_helpers.getPlayerID() if rosterKey is not None: if rosterKey in rosters and pID in rosters[rosterKey].keys(): return prb_items.PlayerPrbInfo(pID, functional=self, roster=rosterKey, **rosters[rosterKey][pID]) else: rosterRange = PREBATTLE_ROSTER.getRange(self.getEntityType()) for roster in rosterRange: if roster in rosters and pID in rosters[roster].keys(): return prb_items.PlayerPrbInfo(pID, functional=self, roster=roster, **rosters[roster][pID]) return prb_items.PlayerPrbInfo(-1L)
def getRosters(self, keys=None): rosters = prb_getters.getPrebattleRosters() if keys is None: result = { PREBATTLE_ROSTER.ASSIGNED_IN_TEAM1: [], PREBATTLE_ROSTER.ASSIGNED_IN_TEAM2: [], PREBATTLE_ROSTER.UNASSIGNED: [] } else: result = {} for key in keys: if PREBATTLE_ROSTER.UNASSIGNED & key != 0: result[PREBATTLE_ROSTER.UNASSIGNED] = [] result[key] = [] hasTeam1 = PREBATTLE_ROSTER.ASSIGNED_IN_TEAM1 in result hasTeam2 = PREBATTLE_ROSTER.ASSIGNED_IN_TEAM2 in result hasUnassigned = PREBATTLE_ROSTER.UNASSIGNED in result for key, roster in rosters.iteritems(): accounts = map( lambda accInfo: prb_items.PlayerPrbInfo( accInfo[0], entity=self, roster=key, **accInfo[1]), roster.iteritems()) team, assigned = decodeRoster(key) if assigned: if hasTeam1 and team == 1: result[PREBATTLE_ROSTER.ASSIGNED_IN_TEAM1] = accounts elif hasTeam2 and team == 2: result[PREBATTLE_ROSTER.ASSIGNED_IN_TEAM2] = accounts if hasUnassigned: result[PREBATTLE_ROSTER.UNASSIGNED].extend(accounts) return result
def prb_onPlayerRemoved(self, pID, roster, name): LOG_DEBUG('prb_onPlayerRemoved', pID, roster, name) rosters = self.getRosters(keys=[roster]) playerInfo = prb_items.PlayerPrbInfo(pID, name=name) for listener in self.getListenersIterator(): listener.onPlayerRemoved(self, playerInfo) listener.onRostersChanged(self, rosters, False)
def getRosters(self, keys = None): rosters = prb_getters.getPrebattleRosters() prbRosters = PREBATTLE_ROSTER.getRange(self.getEntityType(), self.getPlayerTeam()) result = dict(((r, []) for r in prbRosters)) for roster in prbRosters: if roster in rosters: result[roster] = map(lambda accInfo: prb_items.PlayerPrbInfo(accInfo[0], functional=self, roster=roster, **accInfo[1]), rosters[roster].iteritems()) return result
def getPlayerInfoByDbID(self, dbID): rosters = prb_getters.getPrebattleRosters() rosterRange = PREBATTLE_ROSTER.getRange(self.getEntityType()) for roster in rosterRange: if roster in rosters: for pID, data in rosters[roster].iteritems(): if data['dbID'] == dbID: return prb_items.PlayerPrbInfo(pID, functional=self, roster=roster, **rosters[roster][pID]) return prb_items.PlayerPrbInfo(-1L)
def getRosters(self, keys=None): rosters = getPrebattleRosters() if keys is None: result = { PREBATTLE_ROSTER.ASSIGNED_IN_TEAM1: [], PREBATTLE_ROSTER.UNASSIGNED_IN_TEAM1: [] } else: result = {} for key in keys: if key in [ PREBATTLE_ROSTER.ASSIGNED_IN_TEAM1, PREBATTLE_ROSTER.UNASSIGNED_IN_TEAM1 ]: result[key] = [] for key, roster in rosters.iteritems(): if key in result: result[key] = map( lambda accInfo: prb_items.PlayerPrbInfo( accInfo[0], functional=self, roster=key, **accInfo[1]), roster.iteritems()) return result