Example #1
0
    def handleTraversalKeys(self, event):
        if not event.isKeyDown():
            return False
        elif event.key in [Keys.KEY_JOYDDOWN, Keys.KEY_DOWNARROW, Keys.KEY_S]:
            if len(self.items.children) == 0:
                return True
            oidx = None
            idx = self.selection
            while idx != oidx:
                if oidx == None:
                    oidx = idx
                idx += 1
                if idx >= len(self.items.children):
                    idx = 0
                if self.canSelect(idx):
                    self.selectItem(idx)
                    break

            BigWorld.playSound('ui/tick')
            return True
        elif event.key in [Keys.KEY_JOYDUP, Keys.KEY_UPARROW, Keys.KEY_W]:
            if len(self.items.children) == 0:
                return 1
            oidx = None
            idx = self.selection
            while idx != oidx:
                if oidx == None:
                    oidx = idx
                idx -= 1
                if idx < 0:
                    idx = len(self.items.children) - 1
                if self.canSelect(idx):
                    self.selectItem(idx)
                    break

            BigWorld.playSound('ui/tick')
            return True
        else:
            if event.key == Keys.KEY_PGUP:
                dist = self.maxVisibleItems
                if self.selection - dist < 0:
                    dist = self.selection
                self.moveSelection(-dist)
            elif event.key == Keys.KEY_PGDN:
                dist = self.maxVisibleItems
                if self.selection + dist >= len(self.items.children):
                    dist = len(self.items.children) - self.selection - 1
                self.moveSelection(dist)
            elif event.key == Keys.KEY_HOME:
                self.selectItem(0)
            elif event.key == Keys.KEY_END:
                self.selectItem(len(self.items.children) - 1)
            return False
Example #2
0
    def handleTraversalKeys(self, event):
        if not event.isKeyDown():
            return False
        elif event.key in [Keys.KEY_JOYDDOWN, Keys.KEY_DOWNARROW, Keys.KEY_S]:
            if len(self.items.children) == 0:
                return True
            oidx = None
            idx = self.selection
            while idx != oidx:
                if oidx == None:
                    oidx = idx
                idx += 1
                if idx >= len(self.items.children):
                    idx = 0
                if self.canSelect(idx):
                    self.selectItem(idx)
                    break

            BigWorld.playSound('ui/tick')
            return True
        elif event.key in [Keys.KEY_JOYDUP, Keys.KEY_UPARROW, Keys.KEY_W]:
            if len(self.items.children) == 0:
                return 1
            oidx = None
            idx = self.selection
            while idx != oidx:
                if oidx == None:
                    oidx = idx
                idx -= 1
                if idx < 0:
                    idx = len(self.items.children) - 1
                if self.canSelect(idx):
                    self.selectItem(idx)
                    break

            BigWorld.playSound('ui/tick')
            return True
        else:
            if event.key == Keys.KEY_PGUP:
                dist = self.maxVisibleItems
                if self.selection - dist < 0:
                    dist = self.selection
                self.moveSelection(-dist)
            elif event.key == Keys.KEY_PGDN:
                dist = self.maxVisibleItems
                if self.selection + dist >= len(self.items.children):
                    dist = len(self.items.children) - self.selection - 1
                self.moveSelection(dist)
            elif event.key == Keys.KEY_HOME:
                self.selectItem(0)
            elif event.key == Keys.KEY_END:
                self.selectItem(len(self.items.children) - 1)
            return False
Example #3
0
 def handleKeyEvent(self, event):
     c = self.component
     key = event.key
     if event.isKeyDown():
         if key == Keys.KEY_JOYDUP or key == Keys.KEY_UPARROW:
             x, y = c.scroll
             y += 0.1
             c.scroll = (x, y)
             BigWorld.playSound('ui/tick')
             return True
         if key == Keys.KEY_JOYDDOWN or key == Keys.KEY_DOWNARROW:
             x, y = c.scroll
             y -= 0.1
             c.scroll = (x, y)
             BigWorld.playSound('ui/tick')
             return True
         if key == Keys.KEY_JOYDRIGHT or key == Keys.KEY_RIGHTARROW:
             x, y = c.scroll
             x += 0.1
             c.scroll = (x, y)
             BigWorld.playSound('ui/tick')
             return True
         if key == Keys.KEY_JOYDLEFT or key == Keys.KEY_LEFTARROW:
             x, y = c.scroll
             x -= 0.1
             c.scroll = (x, y)
             BigWorld.playSound('ui/tick')
             return True
     return False
Example #4
0
 def handleKeyEvent(self, event):
     c = self.component
     key = event.key
     if event.isKeyDown():
         if key == Keys.KEY_JOYDUP or key == Keys.KEY_UPARROW:
             x, y = c.scroll
             y += 0.1
             c.scroll = (x, y)
             BigWorld.playSound('ui/tick')
             return True
         if key == Keys.KEY_JOYDDOWN or key == Keys.KEY_DOWNARROW:
             x, y = c.scroll
             y -= 0.1
             c.scroll = (x, y)
             BigWorld.playSound('ui/tick')
             return True
         if key == Keys.KEY_JOYDRIGHT or key == Keys.KEY_RIGHTARROW:
             x, y = c.scroll
             x += 0.1
             c.scroll = (x, y)
             BigWorld.playSound('ui/tick')
             return True
         if key == Keys.KEY_JOYDLEFT or key == Keys.KEY_LEFTARROW:
             x, y = c.scroll
             x -= 0.1
             c.scroll = (x, y)
             BigWorld.playSound('ui/tick')
             return True
     return False
    def play(self, eventName, vehicleIdToBind = None):
        replayCtrl = BattleReplay.g_replayCtrl
        if replayCtrl.isPlaying and replayCtrl.isTimeWarpInProgress:
            return
        elif not self.__isEnabled or BigWorld.isWindowVisible() == False:
            return
        else:
            event = self.__events.get(eventName, None)
            if event is None:
                LOG_WARNING("Couldn't find %s event" % eventName)
                return
            queues = self.__soundQueues
            enabledCategories = self.__enabledSoundCategories
            time = BigWorld.time()
            for category, soundDesc in event.iteritems():
                if category in enabledCategories and soundDesc['sound'] != '':
                    rules = soundDesc['playRules']
                    idToBind = vehicleIdToBind
                    if idToBind is None and soundDesc['shouldBindToPlayer']:
                        if BigWorld.player().vehicle is not None:
                            idToBind = BigWorld.player().vehicle.id
                    soundPath = soundDesc['sound']
                    minTimeBetweenEvents = soundDesc['minTimeBetweenEvents']
                    queueItem = (soundPath,
                     time + soundDesc['timeout'],
                     minTimeBetweenEvents,
                     idToBind)
                    if rules == 0:
                        try:
                            BigWorld.playSound(soundDesc['sound'])
                        except:
                            pass

                        continue
                    else:
                        lastEnqueuedTime = self.__lastEnqueuedTime.get(soundPath)
                        if lastEnqueuedTime is not None and time - lastEnqueuedTime < minTimeBetweenEvents:
                            continue
                        self.__lastEnqueuedTime[soundPath] = time
                        if rules == 1:
                            self.__clearQueue(category)
                            queues[category].append(queueItem)
                        elif rules == 2:
                            queues[category].insert(0, queueItem)
                        elif rules == 3:
                            queues[category].append(queueItem)
                    if self.__activeEvents[category] is None:
                        self.__playFirstFromQueue(category)

            return
Example #6
0
    def play(self, eventName, vehicleIdToBind=None):
        replayCtrl = BattleReplay.g_replayCtrl
        if replayCtrl.isPlaying and replayCtrl.isTimeWarpInProgress:
            return
        elif not self.__isEnabled or BigWorld.isWindowVisible() == False:
            return
        else:
            event = self.__events.get(eventName, None)
            if event is None:
                LOG_WARNING("Couldn't find %s event" % eventName)
                return
            queues = self.__soundQueues
            enabledCategories = self.__enabledSoundCategories
            time = BigWorld.time()
            for category, soundDesc in event.iteritems():
                if category in enabledCategories and soundDesc['sound'] != '':
                    rules = soundDesc['playRules']
                    idToBind = vehicleIdToBind
                    if idToBind is None and soundDesc['shouldBindToPlayer']:
                        if BigWorld.player().vehicle is not None:
                            idToBind = BigWorld.player().vehicle.id
                    soundPath = soundDesc['sound']
                    minTimeBetweenEvents = soundDesc['minTimeBetweenEvents']
                    queueItem = (soundPath, time + soundDesc['timeout'],
                                 minTimeBetweenEvents, idToBind)
                    if rules == 0:
                        try:
                            BigWorld.playSound(soundDesc['sound'])
                        except:
                            pass

                        continue
                    else:
                        lastEnqueuedTime = self.__lastEnqueuedTime.get(
                            soundPath)
                        if lastEnqueuedTime is not None and time - lastEnqueuedTime < minTimeBetweenEvents:
                            continue
                        self.__lastEnqueuedTime[soundPath] = time
                        if rules == 1:
                            self.__clearQueue(category)
                            queues[category].append(queueItem)
                        elif rules == 2:
                            queues[category].insert(0, queueItem)
                        elif rules == 3:
                            queues[category].append(queueItem)
                    if self.__activeEvents[category] is None:
                        self.__playFirstFromQueue(category)

            return
Example #7
0
 def handleKeyEvent(self, event):
     handled = ScrollWindow.handleKeyEvent(self, event)
     if not handled and down:
         if event.key == Keys.KEY_JOYALPUSH:
             if self.zoomFactor > 1:
                 c = self.component.children[0][1]
                 c.width = c.width / 2
                 c.height = c.height / 2
                 self.updateScrollLimits()
                 self.zoomFactor = self.zoomFactor - 1
             BigWorld.playSound('ui/boop')
             return True
         if event.key in [Keys.KEY_JOYARPUSH, Keys.KEY_MIDDLEMOUSE]:
             c = self.component.children[0][1]
             c.width = c.width * 2
             c.height = c.height * 2
             self.updateScrollLimits()
             self.zoomFactor = self.zoomFactor + 1
             BigWorld.playSound('ui/boop')
             return True
     return False
Example #8
0
 def handleKeyEvent(self, event):
     key = event.key
     if event.isKeyDown():
         if self.handleTraversalKeys(event):
             return True
         if key == [Keys.KEY_JOYA] or key == Keys.KEY_RETURN and not BigWorld.isKeyDown(Keys.KEY_LALT) and not BigWorld.isKeyDown(Keys.KEY_RALT):
             if len(self.items.children) == 0:
                 return True
             BigWorld.sinkKeyEvents(Keys.KEY_RETURN)
             self.executeSelected()
             return 1
         if key in [Keys.KEY_JOYB,
          Keys.KEY_JOYBACK,
          Keys.KEY_ESCAPE,
          Keys.KEY_BACKSPACE]:
             if self.backFn != None:
                 self.active(0)
                 BigWorld.playSound('ui/boop')
                 self.backFn()
                 return 1
     return False
 def handleKeyEvent(self, event):
     key = event.key
     if event.isKeyDown():
         if self.handleTraversalKeys(event):
             return True
         if key == [Keys.KEY_JOYA] or key == Keys.KEY_RETURN and not BigWorld.isKeyDown(Keys.KEY_LALT) and not BigWorld.isKeyDown(Keys.KEY_RALT):
             if len(self.items.children) == 0:
                 return True
             BigWorld.sinkKeyEvents(Keys.KEY_RETURN)
             self.executeSelected()
             return 1
         if key in [Keys.KEY_JOYB,
          Keys.KEY_JOYBACK,
          Keys.KEY_ESCAPE,
          Keys.KEY_BACKSPACE]:
             if self.backFn != None:
                 self.active(0)
                 BigWorld.playSound('ui/boop')
                 self.backFn()
                 return 1
     return False
Example #10
0
 def handleKeyEvent(self, event):
     handled = ScrollWindow.handleKeyEvent(self, event)
     if not handled and down:
         if event.key == Keys.KEY_JOYALPUSH:
             if self.zoomFactor > 1:
                 c = self.component.children[0][1]
                 c.width = c.width / 2
                 c.height = c.height / 2
                 self.updateScrollLimits()
                 self.zoomFactor = self.zoomFactor - 1
             BigWorld.playSound('ui/boop')
             return True
         if event.key in [Keys.KEY_JOYARPUSH, Keys.KEY_MIDDLEMOUSE]:
             c = self.component.children[0][1]
             c.width = c.width * 2
             c.height = c.height * 2
             self.updateScrollLimits()
             self.zoomFactor = self.zoomFactor + 1
             BigWorld.playSound('ui/boop')
             return True
     return False
Example #11
0
    def __playFirstFromQueue(self, category):
        if not self.__isEnabled:
            return
        else:
            queue = self.__soundQueues[category]
            succes = False
            time = BigWorld.time()
            while not succes and len(queue) > 0:
                soundPath, timeout, minTimeBetweenEvents, vehicleIdToBind = queue[
                    0]
                del queue[0]
                if vehicleIdToBind is not None:
                    vehicles = BigWorld.player().arena.vehicles
                    vehicleInfo = vehicles.get(vehicleIdToBind)
                    if vehicleInfo is None or not vehicleInfo['isAlive']:
                        continue
                if time > timeout:
                    continue
                succes = True
                try:
                    sound = BigWorld.playSound(soundPath)
                    if sound is None:
                        succes = False
                except:
                    succes = False

                if not succes:
                    LOG_ERROR('Failed to load sound %s' % soundPath)

            if succes:
                if sound.duration == 0:
                    LOG_WARNING(
                        'Sound notification %s has zero duration and was skipped'
                        % soundPath)
                    BigWorld.callback(
                        0.01, partial(self.__playFirstFromQueue, category))
                else:
                    sound.setCallback('EVENTFINISHED',
                                      partial(self.__onSoundEnd, category))
                    self.__activeEvents[category] = {
                        'sound': sound,
                        'soundPath': soundPath
                    }
            return
    def __playFirstFromQueue(self, category):
        if not self.__isEnabled:
            return
        else:
            queue = self.__soundQueues[category]
            succes = False
            time = BigWorld.time()
            while not succes and len(queue) > 0:
                soundPath, timeout, minTimeBetweenEvents, vehicleIdToBind = queue[0]
                del queue[0]
                if vehicleIdToBind is not None:
                    vehicles = BigWorld.player().arena.vehicles
                    vehicleInfo = vehicles.get(vehicleIdToBind)
                    if vehicleInfo is None or not vehicleInfo['isAlive']:
                        continue
                if time > timeout:
                    continue
                succes = True
                try:
                    sound = BigWorld.playSound(soundPath)
                    if sound is None:
                        succes = False
                except:
                    succes = False

                if not succes:
                    LOG_ERROR('Failed to load sound %s' % soundPath)

            if succes:
                if sound.duration == 0:
                    LOG_WARNING('Sound notification %s has zero duration and was skipped' % soundPath)
                    BigWorld.callback(0.01, partial(self.__playFirstFromQueue, category))
                else:
                    sound.setCallback('EVENTFINISHED', partial(self.__onSoundEnd, category))
                    self.__activeEvents[category] = {'sound': sound,
                     'soundPath': soundPath}
            return
Example #13
0
 def executeSelected(self, playSound = True):
     BigWorld.playSound('ui/boop')
     entry = self.items.children[self.selection][1]
     i = entry.script.onSelect(self)
     self.updateControlBar()
Example #14
0
 def executeSelected(self, playSound=True):
     BigWorld.playSound('ui/boop')
     entry = self.items.children[self.selection][1]
     i = entry.script.onSelect(self)
     self.updateControlBar()