Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
 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
Exemplo n.º 5
0
    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
Exemplo n.º 6
0
 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
Exemplo n.º 7
0
    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
Exemplo n.º 8
0
 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
Exemplo n.º 9
0
    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)
Exemplo n.º 10
0
    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)
Exemplo n.º 11
0
    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
Exemplo n.º 12
0
    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, '')
Exemplo n.º 13
0
 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
Exemplo n.º 14
0
 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
Exemplo n.º 15
0
    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, '')
Exemplo n.º 16
0
 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
Exemplo n.º 17
0
 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
Exemplo n.º 18
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)
Exemplo n.º 19
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)
Exemplo n.º 20
0
    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)
Exemplo n.º 21
0
    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)
Exemplo n.º 22
0
    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
Exemplo n.º 23
0
    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
Exemplo n.º 24
0
    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
Exemplo n.º 25
0
    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
Exemplo n.º 26
0
 def isMaxCountValid(self, team, assigned):
     settings = self.__functional.getSettings()
     rosters = getPrebattleRosters()
     return MaxCount(assigned=assigned).check(rosters, team, settings.getTeamLimits(team))
Exemplo n.º 27
0
 def isMaxCountValid(self, team, assigned):
     settings = self.__functional.getSettings()
     rosters = getPrebattleRosters()
     return MaxCount(assigned=assigned).check(rosters, team,
                                              settings.getTeamLimits(team))
Exemplo n.º 28
0
 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