Пример #1
0
 def __handleModifiedInvitesList(self, added, changed, deleted, inviteDataReceiver, callback):
     allChangedInvites = set(added) | set(changed) | set(deleted)
     arenaUniqueID = avatar_getter.getArenaUniqueID()
     if len(allChangedInvites) > 0:
         for invite in inviteDataReceiver(allChangedInvites):
             if invite.isSameBattle(arenaUniqueID) and invite.isActive():
                 callback(invite)
Пример #2
0
    def _getDynamicSquadData(
        self, userDBID, currentAccountDBID, isInSquad, inviteSendingProhibited, invitesReceivingProhibited
    ):
        INVITE_DISABLED = 0
        IN_SQUAD = 1
        INVITE_AVAILABLE = 2
        INVITE_SENT = 3
        INVITE_RECEIVED = 4
        INVITE_RECEIVED_FROM_SQUAD = 5
        state = INVITE_AVAILABLE
        if inviteSendingProhibited:
            state = INVITE_DISABLED
        arenaUniqueID = getArenaUniqueID()
        for invite in self.prbInvites.getInvites():
            if invite.type == PREBATTLE_TYPE.SQUAD and invite.isActive() and invite.isSameBattle(arenaUniqueID):
                if (
                    invite.creatorDBID == userDBID
                    and invite.receiverDBID == currentAccountDBID
                    and not invitesReceivingProhibited
                ):
                    state = INVITE_RECEIVED
                elif (
                    not inviteSendingProhibited
                    and invite.creatorDBID == currentAccountDBID
                    and userDBID == invite.receiverDBID
                ):
                    state = INVITE_SENT

        if isInSquad:
            if state == INVITE_RECEIVED:
                state = INVITE_RECEIVED_FROM_SQUAD
            else:
                state = IN_SQUAD
        return state
Пример #3
0
 def __handleModifiedInvitesList(self, added, changed, deleted, inviteDataReceiver, callback):
     allChangedInvites = set(added) | set(changed) | set(deleted)
     arenaUniqueID = avatar_getter.getArenaUniqueID()
     if allChangedInvites:
         for invite in inviteDataReceiver(allChangedInvites):
             if invite.isSameBattle(arenaUniqueID) and invite.isActive():
                 callback(invite)
Пример #4
0
 def __getNotificationStr(self):
     timeLeft, priority = self.__getTimeLeftPriority()
     if priority == self.CURFEW:
         banTime = time.strftime('%H:%M', time.localtime(getArenaStartTime(getArenaUniqueID()) + timeLeft + self.TIME_RESERVE))
         return backport.text(R.strings.messenger.chat.koreaMessage.curfew(), curfewTime=banTime, timeLeft=self.__minutesCount)
     if priority == self.WEEKLY:
         return backport.text(R.strings.messenger.chat.koreaMessage.weeklyLimit(), timeLeft=self.__minutesCount)
     return backport.text(R.strings.messenger.chat.koreaMessage.dailyLimit(), timeLeft=self.__minutesCount) if priority == self.DAILY else None
Пример #5
0
    def __getClosestSessionTimeNotification(self):
        timeOnArena = getTimeOnArena(getArenaUniqueID())
        timeLeft = self.__getTimeLeft() - timeOnArena
        if timeLeft < 0:
            return
        banTimeLeft = 0
        self.__minutesCount = 1
        for timeNotify in (self.THREE_MIN, self.TWO_MIN, self.ONE_MIN):
            if timeLeft > timeNotify + 1:
                banTimeLeft = timeLeft - timeNotify
                self.__minutesCount = int(timeNotify // time_utils.ONE_MINUTE)
                break

        return banTimeLeft
Пример #6
0
    def _get_battle(self):
        arenaUniqueID = avatar_getter.getArenaUniqueID()
        if arenaUniqueID is None or arenaUniqueID != self.arenaId:
            self.arenaId = arenaUniqueID
            self.players = {}

        # update players
        self._loadingClanIconsCount = 0
        vehicles = avatar_getter.getArena().vehicles
        for (vehicleID, vData) in vehicles.iteritems():
            if vehicleID not in self.players:
                pl = _Player(vehicleID, vData)
                self._load_clanIcon(pl)
                # cleanup same player with different vehicleID (bug?)
                self.players = {
                    k: v
                    for k, v in self.players.iteritems()
                    if v.accountDBID != pl.accountDBID
                }
                self.players[vehicleID] = pl
            self.players[vehicleID].update(vData)

        # sleepCounter = 0
        while self._loadingClanIconsCount > 0:
            time.sleep(0.01)

            # # FIX: temporary workaround
            # sleepCounter += 1
            # if sleepCounter > 1000: # 10 sec
            #    log('WARNING: icons loading too long')
            #    break;

        self._load_stat(avatar_getter.getPlayerVehicleID())

        players = {}
        for (vehicleID, pl) in self.players.iteritems():
            cacheKey = "%d=%d" % (pl.accountDBID, pl.vehCD)
            if cacheKey not in self.cacheBattle:
                cacheKey2 = "%d" % pl.accountDBID
                if cacheKey2 not in self.cacheBattle:
                    self.cacheBattle[cacheKey] = self._get_battle_stub(pl)
            stat = self.cacheBattle[cacheKey]
            self._fix(stat)
            players[pl.name] = stat
        # pprint(players)

        with self.lock:
            self.resp = {'players': players}
Пример #7
0
    def _get_battle(self):
        arenaUniqueID = avatar_getter.getArenaUniqueID()
        if arenaUniqueID is None or arenaUniqueID != self.arenaId:
            self.arenaId = arenaUniqueID
            self.players = {}

        # update players
        self._loadingClanIconsCount = 0
        vehicles = avatar_getter.getArena().vehicles
        for (vehicleID, vData) in vehicles.iteritems():
            if vehicleID not in self.players:
                pl = _Player(vehicleID, vData)
                self._load_clanIcon(pl)
                # cleanup same player with different vehicleID (bug?)
                self.players = {k:v for k,v in self.players.iteritems() if v.accountDBID != pl.accountDBID}
                self.players[vehicleID] = pl
            self.players[vehicleID].update(vData)

        # sleepCounter = 0
        while self._loadingClanIconsCount > 0:
            time.sleep(0.01)

            # # FIX: temporary workaround
            # sleepCounter += 1
            # if sleepCounter > 1000: # 10 sec
            #    log('WARNING: icons loading too long')
            #    break;

        self._load_stat(avatar_getter.getPlayerVehicleID())

        players = {}
        for (vehicleID, pl) in self.players.iteritems():
            cacheKey = "%d=%d" % (pl.accountDBID, pl.vehCD)
            if cacheKey not in self.cacheBattle:
                cacheKey2 = "%d" % pl.accountDBID
                if cacheKey2 not in self.cacheBattle:
                    self.cacheBattle[cacheKey] = self._get_battle_stub(pl)
            stat = self.cacheBattle[cacheKey]
            self._fix(stat)
            players[pl.name] = stat
        # pprint(players)

        with self.lock:
            self.resp = {'players': players}
Пример #8
0
    def _getDynamicSquadData(self, userDBID, currentAccountDBID, isInSquad, inviteSendingProhibited, invitesReceivingProhibited):
        INVITE_DISABLED = 0
        IN_SQUAD = 1
        INVITE_AVAILABLE = 2
        INVITE_SENT = 3
        INVITE_RECEIVED = 4
        INVITE_RECEIVED_FROM_SQUAD = 5
        state = INVITE_AVAILABLE
        if inviteSendingProhibited:
            state = INVITE_DISABLED
        arenaUniqueID = getArenaUniqueID()
        for invite in self.prbInvites.getInvites():
            if invite.type == PREBATTLE_TYPE.SQUAD and invite.isActive() and invite.isSameBattle(arenaUniqueID):
                if invite.creatorDBID == userDBID and invite.receiverDBID == currentAccountDBID and not invitesReceivingProhibited:
                    state = INVITE_RECEIVED
                elif not inviteSendingProhibited and invite.creatorDBID == currentAccountDBID and userDBID == invite.receiverDBID:
                    state = INVITE_SENT

        if isInSquad:
            if state == INVITE_RECEIVED:
                state = INVITE_RECEIVED_FROM_SQUAD
            else:
                state = IN_SQUAD
        return state