def getRosters(self, keys=None): rosters = prb_control.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] = [] else: 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: PlayerPrbInfo( accInfo[0], functional=self, roster=key, **accInfo[1]), roster.iteritems()) team, assigned = decodeRoster(key) if assigned: if hasTeam1 and team is 1: result[PREBATTLE_ROSTER.ASSIGNED_IN_TEAM1] = accounts elif hasTeam2 and team is 2: result[PREBATTLE_ROSTER.ASSIGNED_IN_TEAM2] = accounts elif hasUnassigned: result[PREBATTLE_ROSTER.UNASSIGNED] = accounts return result
def getRosters(self, keys = None): rosters = 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] = [] else: 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], functional=self, roster=key, **accInfo[1]), roster.iteritems()) (team, assigned,) = decodeRoster(key) if assigned: if hasTeam1 and team is 1: result[PREBATTLE_ROSTER.ASSIGNED_IN_TEAM1] = accounts elif hasTeam2 and team is 2: result[PREBATTLE_ROSTER.ASSIGNED_IN_TEAM2] = accounts elif hasUnassigned: result[PREBATTLE_ROSTER.UNASSIGNED].extend(accounts) return result
def _canAddPlayers(self): clientPrb = prb_control.getClientPrebattle() result = False if clientPrb is not None: settings = prb_control.getPrebattleSettings(prebattle=clientPrb) rosters = prb_control.getPrebattleRosters(prebattle=clientPrb) result, _ = MaxCount().check(rosters, 1, settings.getTeamLimits(1)) return result
def getRosters(self, keys = None): rosters = getPrebattleRosters() prbRosters = PREBATTLE_ROSTER.getRange(self.getPrbType(), self.getPlayerTeam()) result = dict(((r, []) for r in prbRosters)) for roster in prbRosters: if roster in rosters: result[roster] = map(lambda accInfo: info.PlayerPrbInfo(accInfo[0], functional=self, roster=roster, **accInfo[1]), rosters[roster].iteritems()) return result
def canAssignToTeam(self, team = 1): clientPrb = prb_control.getClientPrebattle() result = False if clientPrb is not None: settings = prb_control.getPrebattleSettings(prebattle=clientPrb) rosters = prb_control.getPrebattleRosters(prebattle=clientPrb) prbType = prb_control.getPrebattleType(clientPrb, settings) result, _ = TeamNoPlayersInBattle(prbType).check(rosters, team, settings.getTeamLimits(team)) return result
def getRosterKey(self, pID = None): rosters = prb_control.getPrebattleRosters() rosterRange = PREBATTLE_ROSTER.getRange(self.getPrbType()) if pID is None: pID = account_helpers.getPlayerID() for roster in rosterRange: if roster in rosters and pID in rosters[roster].keys(): return roster return PREBATTLE_ROSTER.UNKNOWN
def canAssignToTeam(self, team=1): clientPrb = prb_control.getClientPrebattle() result = False if clientPrb is not None: settings = prb_control.getPrebattleSettings(prebattle=clientPrb) rosters = prb_control.getPrebattleRosters(prebattle=clientPrb) prbType = prb_control.getPrebattleType(clientPrb, settings) result, _ = TeamNoPlayersInBattle(prbType).check( rosters, team, settings.getTeamLimits(team)) return result
def getPlayerInfoByDbID(self, dbID): rosters = prb_control.getPrebattleRosters() rosterRange = PREBATTLE_ROSTER.getRange(self.getPrbType()) 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 isTeamsValid(self): settings = self.__functional.getSettings() rosters = getPrebattleRosters() for team in [1, 2]: teamLimits = settings.getTeamLimits(team) for limit in self.__teamLimits: result, errorCode = limit.check(rosters, team, teamLimits) if not result: return (result, errorCode) return (True, '')
def init(self, clientPrb = None, ctx = None): if clientPrb is None: clientPrb = prb_control.getClientPrebattle() if clientPrb is not None: clientPrb.onSettingsReceived += self.prb_onSettingsReceived clientPrb.onRosterReceived += self.prb_onRosterReceived if prb_control.isPrebattleSettingsReceived(prebattle=clientPrb): self.prb_onSettingsReceived() if len(prb_control.getPrebattleRosters(prebattle=clientPrb)): self.prb_onRosterReceived() return FUNCTIONAL_INIT_RESULT.INITED
def getRosters(self, keys=None): rosters = getPrebattleRosters() result = {PREBATTLE_ROSTER.ASSIGNED_IN_TEAM1: []} if PREBATTLE_ROSTER.ASSIGNED_IN_TEAM1 in rosters: result[PREBATTLE_ROSTER.ASSIGNED_IN_TEAM1] = map( lambda accInfo: PlayerPrbInfo(accInfo[0], functional=self, roster=PREBATTLE_ROSTER. ASSIGNED_IN_TEAM1, **accInfo[1]), rosters[PREBATTLE_ROSTER.ASSIGNED_IN_TEAM1].iteritems()) return result
def __checkPrebattleLockedVehicle(self): clientPrb = prb_control.getClientPrebattle() if clientPrb is not None: rosters = prb_control.getPrebattleRosters(prebattle=clientPrb) for rId, roster in rosters.iteritems(): if BigWorld.player().id in roster: vehCompDescr = roster[BigWorld.player().id].get('vehCompDescr', '') if len(vehCompDescr): vehDescr = vehicles.VehicleDescr(vehCompDescr) vehicle = g_itemsCache.items.getItemByCD(vehDescr.type.compactDescr) if vehicle is not None: return vehicle.invID return 0
def isTeamValid(self, team = None): result, errorCode = True, '' if team is None: team = self.__functional.getPlayerTeam() settings = self.__functional.getSettings() teamLimits = settings.getTeamLimits(team) rosters = getPrebattleRosters() for limit in self.__teamLimits: result, errorCode = limit.check(rosters, team, teamLimits) if not result: break return (result, errorCode)
def isTeamValid(self, team=None): result, errorCode = True, '' if team is None: team = self.__functional.getPlayerTeam() settings = self.__functional.getSettings() teamLimits = settings.getTeamLimits(team) rosters = getPrebattleRosters() for limit in self.__teamLimits: result, errorCode = limit.check(rosters, team, teamLimits) if not result: break return (result, errorCode)
def getPlayerInfo(self, pID = None, rosterKey = None): rosters = prb_control.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.getPrbType()) 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 = getPrebattleRosters() prbRosters = PREBATTLE_ROSTER.getRange(self.getPrbType(), 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 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
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
def isMaxCountValid(self, team, assigned): settings = self.__functional.getSettings() rosters = getPrebattleRosters() return MaxCount(assigned=assigned).check(rosters, team, settings.getTeamLimits(team))
def getRosters(self, keys = None): rosters = getPrebattleRosters() result = {PREBATTLE_ROSTER.ASSIGNED_IN_TEAM1: []} if PREBATTLE_ROSTER.ASSIGNED_IN_TEAM1 in rosters: result[PREBATTLE_ROSTER.ASSIGNED_IN_TEAM1] = map(lambda accInfo: prb_items.PlayerPrbInfo(accInfo[0], functional=self, roster=PREBATTLE_ROSTER.ASSIGNED_IN_TEAM1, **accInfo[1]), rosters[PREBATTLE_ROSTER.ASSIGNED_IN_TEAM1].iteritems()) return result