Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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] = []
                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_getters.getClientPrebattle()
     result = False
     if clientPrb is not None:
         settings = prb_getters.getPrebattleSettings(prebattle=clientPrb)
         rosters = prb_getters.getPrebattleRosters(prebattle=clientPrb)
         result, _ = limits.MaxCount().check(rosters, 1, settings.getTeamLimits(1))
     return result
Exemplo n.º 4
0
 def _canAddPlayers(self):
     clientPrb = prb_getters.getClientPrebattle()
     result = False
     if clientPrb is not None:
         settings = prb_getters.getPrebattleSettings(prebattle=clientPrb)
         rosters = prb_getters.getPrebattleRosters(prebattle=clientPrb)
         result, _ = MaxCount().check(rosters, 1, settings.getTeamLimits(1))
     return result
Exemplo n.º 5
0
 def isTeamsValid(self):
     settings = self.__entity.getSettings()
     rosters = prb_getters.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 ValidationResult(result, errorCode)
Exemplo n.º 6
0
    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
Exemplo n.º 7
0
    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
Exemplo n.º 8
0
    def getRosterKey(self, pID = None):
        rosters = prb_getters.getPrebattleRosters()
        rosterRange = PREBATTLE_ROSTER.getRange(self.getEntityType())
        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.º 9
0
    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)
Exemplo n.º 10
0
    def isTeamsValid(self):
        settings = self.__functional.getSettings()
        rosters = prb_getters.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.º 11
0
 def _canAddPlayers(self):
     """
     Can new player be added to team according to max limit
     """
     clientPrb = prb_getters.getClientPrebattle()
     result = False
     if clientPrb is not None:
         settings = prb_getters.getPrebattleSettings(prebattle=clientPrb)
         rosters = prb_getters.getPrebattleRosters(prebattle=clientPrb)
         result, _ = MaxCount().check(rosters, 1, settings.getTeamLimits(1))
     return result
Exemplo n.º 12
0
 def init(self, clientPrb = None, ctx = None):
     if clientPrb is None:
         clientPrb = prb_getters.getClientPrebattle()
     if clientPrb is not None:
         clientPrb.onSettingsReceived += self.prb_onSettingsReceived
         clientPrb.onRosterReceived += self.prb_onRosterReceived
         if prb_getters.isPrebattleSettingsReceived(prebattle=clientPrb):
             self.prb_onSettingsReceived()
         if prb_getters.getPrebattleRosters(prebattle=clientPrb):
             self.prb_onRosterReceived()
     return FUNCTIONAL_FLAG.UNDEFINED
Exemplo n.º 13
0
    def isTeamValid(self, team=None):
        if team is None:
            team = self.__entity.getPlayerTeam()
        settings = self.__entity.getSettings()
        teamLimits = settings.getTeamLimits(team)
        rosters = prb_getters.getPrebattleRosters()
        for limit in self.__teamLimits:
            result, errorCode = limit.check(rosters, team, teamLimits)
            if not result:
                return ValidationResult(result, errorCode)

        return
Exemplo n.º 14
0
 def init(self, clientPrb=None, ctx=None):
     result = super(LegacyInitEntity, self).init(clientPrb=clientPrb, ctx=ctx)
     if clientPrb is None:
         clientPrb = prb_getters.getClientPrebattle()
     if clientPrb is not None:
         clientPrb.onSettingsReceived += self.prb_onSettingsReceived
         clientPrb.onRosterReceived += self.prb_onRosterReceived
         if prb_getters.isPrebattleSettingsReceived(prebattle=clientPrb):
             self.prb_onSettingsReceived()
         if prb_getters.getPrebattleRosters(prebattle=clientPrb):
             self.prb_onRosterReceived()
     return result
Exemplo n.º 15
0
    def _getRoleByDatabaseID(self, dbID=None, team=None):
        if dbID is None:
            dbID = account_helpers.getAccountDatabaseID()
        rosters = prb_getters.getPrebattleRosters()
        possibleRosters = PREBATTLE_ROSTER.getRange(self.getEntityType(), team)
        for roster in possibleRosters:
            if roster in rosters:
                for data in rosters[roster].itervalues():
                    if data['dbID'] == dbID:
                        return data.get('role', 0)

        return 0
Exemplo n.º 16
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 = prb_getters.getPrebattleRosters()
        for limit in self.__teamLimits:
            result, errorCode = limit.check(rosters, team, teamLimits)
            if not result:
                break

        return (result, errorCode)
Exemplo n.º 17
0
 def canAssignToTeam(self, team = 1):
     result = super(BattleSessionPermissions, self).canAssignToTeam(team)
     if not result:
         return False
     else:
         clientPrb = prb_getters.getClientPrebattle()
         result = False
         if clientPrb is not None:
             settings = prb_getters.getPrebattleSettings(prebattle=clientPrb)
             rosters = prb_getters.getPrebattleRosters(prebattle=clientPrb)
             prbType = prb_getters.getPrebattleType(clientPrb, settings)
             result, _ = TeamNoPlayersInBattle(prbType).check(rosters, team, settings.getTeamLimits(team))
         return result
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 = prb_getters.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 canAssignToTeam(self, team = 1):
     result = super(BattleSessionPrbPermissions, self).canAssignToTeam(team)
     if not result:
         return False
     else:
         clientPrb = prb_getters.getClientPrebattle()
         result = False
         if clientPrb is not None:
             settings = prb_getters.getPrebattleSettings(prebattle=clientPrb)
             rosters = prb_getters.getPrebattleRosters(prebattle=clientPrb)
             prbType = prb_getters.getPrebattleType(clientPrb, settings)
             result, _ = limits.TeamNoPlayersInBattle(prbType).check(rosters, team, settings.getTeamLimits(team))
         return result
Exemplo n.º 20
0
    def __checkPrebattleLockedVehicle(self):
        clientPrb = prb_getters.getClientPrebattle()
        if clientPrb is not None:
            rosters = prb_getters.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.º 21
0
    def __checkPrebattleLockedVehicle(self):
        clientPrb = prb_getters.getClientPrebattle()
        if clientPrb is not None:
            rosters = prb_getters.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.º 22
0
    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)
Exemplo n.º 23
0
    def __checkPrebattleLockedVehicle(self):
        from gui.prb_control import prb_getters
        clientPrb = prb_getters.getClientPrebattle()
        if clientPrb is not None:
            rosters = prb_getters.getPrebattleRosters(prebattle=clientPrb)
            for _, roster in rosters.iteritems():
                if BigWorld.player().id in roster:
                    vehCompDescr = roster[BigWorld.player().id].get('vehCompDescr', '')
                    if vehCompDescr:
                        vehDescr = VehicleDescr(vehCompDescr)
                        vehicle = self.itemsCache.items.getItemByCD(vehDescr.type.compactDescr)
                        if vehicle is not None:
                            return vehicle.invID

        return 0
Exemplo n.º 24
0
 def isMaxCountValid(self, team, assigned):
     """
     Checks is players max count valid.
     Args:
         team: team nubmer
         assigned: check only assigned/unassigned
     
     Returns:
         validation result
     """
     settings = self.__entity.getSettings()
     rosters = prb_getters.getPrebattleRosters()
     result, errorCode = MaxCount(assigned=assigned).check(
         rosters, team, settings.getTeamLimits(team))
     if not result:
         return ValidationResult(result, errorCode)
Exemplo n.º 25
0
    def getRosters(self, keys = None):
        rosters = prb_getters.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 getRosters(self, keys=None):
        rosters = prb_getters.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.º 27
0
 def isMaxCountValid(self, team, assigned):
     settings = self.__functional.getSettings()
     rosters = prb_getters.getPrebattleRosters()
     return MaxCount(assigned=assigned).check(rosters, team, settings.getTeamLimits(team))
Exemplo n.º 28
0
 def isMaxCountValid(self, team, assigned):
     settings = self.__entity.getSettings()
     rosters = prb_getters.getPrebattleRosters()
     result, errorCode = MaxCount(assigned=assigned).check(rosters, team, settings.getTeamLimits(team))
     return ValidationResult(result, errorCode) if not result else None
Exemplo n.º 29
0
 def isMaxCountValid(self, team, assigned):
     settings = self.__functional.getSettings()
     rosters = prb_getters.getPrebattleRosters()
     return MaxCount(assigned=assigned).check(rosters, team, settings.getTeamLimits(team))