Exemple #1
0
 def __onSettingsChange(self, *_):
     if self.__battlePassController.isVisible(
     ) and not self.__battlePassController.isPaused():
         self.__updateState()
         self.__notifications.startNotification()
     else:
         showHangar()
Exemple #2
0
 def __onSettingsChanged(self, *_):
     if self.__battlePass.isPaused():
         showMissionsBattlePass()
     elif self.__battlePass.isVisible():
         self.__updateState()
     else:
         showHangar()
 def _processBackClick(self, ctx=None):
     if self._previewBackCb:
         self._previewBackCb()
     elif self._backAlias == VIEW_ALIAS.LOBBY_RESEARCH and g_currentPreviewVehicle.isPresent(
     ):
         event_dispatcher.showResearchView(
             self._vehicleCD,
             exitEvent=events.LoadViewEvent(
                 SFViewLoadParams(VIEW_ALIAS.LOBBY_TECHTREE),
                 ctx={'nation': g_currentPreviewVehicle.item.nationName}))
     elif self._backAlias == VIEW_ALIAS.VEHICLE_PREVIEW:
         entity = ctx.get('entity', None) if ctx else None
         if entity:
             compactDescr = entity.typeDescriptor.type.compactDescr
             if self.__itemsCache.items.inventory.getItemData(
                     compactDescr) is not None:
                 event_dispatcher.showHangar()
             else:
                 event_dispatcher.showVehiclePreview(
                     compactDescr, previewAlias=self._previousBackAlias)
         else:
             event_dispatcher.showHangar()
     elif self._backAlias == VIEW_ALIAS.LOBBY_STORE:
         showShop()
     else:
         event = g_entitiesFactories.makeLoadEvent(
             SFViewLoadParams(self._backAlias), {'isBackEvent': True})
         self.fireEvent(event, scope=EVENT_BUS_SCOPE.LOBBY)
     return
Exemple #4
0
 def _populate(self):
     self.addListener(CameraRelatedEvents.VEHICLE_LOADING,
                      self.__onVehicleLoading, EVENT_BUS_SCOPE.DEFAULT)
     self.setBottomPanel()
     if g_currentPreviewVehicle.intCD == self._vehicleCD:
         self.__fullUpdate()
     if self.__hangarVehicleCD and self.__isHeroTank and self.__vehAppearanceChanged:
         g_currentPreviewVehicle.resetAppearance()
         g_currentPreviewVehicle.selectVehicle(self.__hangarVehicleCD, None)
         g_currentPreviewVehicle.resetAppearance(self.__previewAppearance)
     g_currentPreviewVehicle.selectVehicle(self._vehicleCD,
                                           self.__vehicleStrCD)
     super(VehiclePreview, self)._populate()
     g_currentPreviewVehicle.onChanged += self.__onVehicleChanged
     g_currentPreviewVehicle.onVehicleInventoryChanged += self.__onInventoryChanged
     self.__comparisonBasket.onChange += self.__onCompareBasketChanged
     self.__comparisonBasket.onSwitchChange += self.__updateHeaderData
     self.__hangarSpace.onSpaceCreate += self.__onHangarCreateOrRefresh
     self.__hangarSpace.setVehicleSelectable(True)
     if not g_currentPreviewVehicle.isPresent():
         event_dispatcher.showHangar()
     if not self._heroInteractive:
         self.__heroTanksControl.setInteractive(False)
     self.addListener(CameraRelatedEvents.CAMERA_ENTITY_UPDATED,
                      self.handleSelectedEntityUpdated)
     specialData = getHeroTankPreviewParams() if self.__isHeroTank else None
     if specialData is not None and specialData.enterEvent:
         SoundGroups.g_instance.playSound2D(specialData.enterEvent)
     g_eventBus.addListener(OFFER_CHANGED_EVENT, self.__onOfferChanged)
     _updateCollectorHintParameters()
     _updatePostProgressionParameters()
     return
 def __processBackClick(self, ctx=None):
     if self._previewBackCb:
         self._previewBackCb()
     elif self._backAlias == VIEW_ALIAS.LOBBY_RESEARCH:
         event_dispatcher.showResearchView(self._vehicleCD)
     elif self._backAlias == VIEW_ALIAS.VEHICLE_PREVIEW:
         entity = ctx.get('entity', None) if ctx else None
         if entity:
             descriptor = entity.typeDescriptor
             event_dispatcher.showVehiclePreview(
                 descriptor.type.compactDescr,
                 previewAlias=self._previousBackAlias)
         else:
             event_dispatcher.showHangar()
     elif self._backAlias == VIEW_ALIAS.LOBBY_STORE:
         if isIngameShopEnabled():
             showWebShop(url=getBuyVehiclesUrl())
         else:
             showOldShop(
                 ctx={
                     'tabId': STORE_TYPES.SHOP,
                     'component': STORE_CONSTANTS.VEHICLE
                 })
     else:
         event = g_entitiesFactories.makeLoadEvent(self._backAlias,
                                                   {'isBackEvent': True})
         self.fireEvent(event, scope=EVENT_BUS_SCOPE.LOBBY)
     return
Exemple #6
0
 def __selectVehicle(self):
     g_currentPreviewVehicle.selectVehicle(self.__vehicleCD,
                                           style=self._style)
     self.__selectedVehicleEntityId = g_currentPreviewVehicle.vehicleEntityID
     if not g_currentPreviewVehicle.isPresent() or self._style is None:
         event_dispatcher.showHangar()
     self.__heroTanksControl.setInteractive(False)
     return
Exemple #7
0
 def __tryGoToHangar(self):
     if self._allServers[self._connectionMgr.peripheryID].isAvailable():
         self.__continue()
         return True
     if not self._getActualServers():
         event_dispatcher.showHangar()
         return True
     return False
Exemple #8
0
 def __onBattlePassSettingsChanged(self, *_):
     if self.__battlePassController.isPaused():
         showMissionsBattlePass()
     elif not self.__battlePassController.isActive():
         showHangar()
     elif not self.__battlePassController.isChapterExists(self.__chapterID):
         showMissionsBattlePass(
             R.views.lobby.battle_pass.ChapterChoiceView())
Exemple #9
0
 def __onOffersUpdated(self):
     offer = self.__offersProvider.getOffer(self._offer.id)
     if offer is None or not offer.isOfferAvailable:
         if self.__offersProvider.getAvailableOffers(onlyVisible=True):
             event_dispatcher.showStorage(defaultSection=STORAGE_CONSTANTS.OFFERS)
         else:
             event_dispatcher.showHangar()
     return
Exemple #10
0
 def switchTo(cls,
              objectName,
              instantly=False,
              viewAlias=None,
              withFade=False,
              *args,
              **kwargs):
     if objectName == AdditionalCameraObject.CELEBRITY:
         instantly = True
         withFade = True
     isCloseEvent = kwargs.get('isCloseEvent', False)
     if cls._navigationState.isSceneInFade:
         _logger.warning(
             "When fade isn't done, switching to obj=%s is locked.",
             objectName)
         if isCloseEvent:
             cls._navigationState.saveExitEventParams(instantly, withFade)
         return
     else:
         cls._navigationState.setCurrentObject(objectName)
         if withFade:
             cls._navigationState.setIsSceneInFade(True)
             result = yield cls._app.fadeManager.startFade()
             cls._navigationState.setIsSceneInFade(False)
             if result == FadeState.destroying:
                 return
             if cls._navigationState.getIsClearing():
                 cls._navigationState.setIsClearing(False)
                 objectName = None
                 viewAlias = None
                 cls._navigationState.setCurrentObject(None)
             if cls._navigationState.hasExitEvent():
                 instantly, withFade = cls._navigationState.getExitEventParams(
                 )
                 isCloseEvent = True
                 objectName = None
                 viewAlias = None
                 cls._navigationState.setCurrentObject(None)
         prevObjectName = cls._navigationState.getCurrentObject()
         if prevObjectName != objectName:
             _logger.warning(
                 'Current selected object has been changed during fading. Current=%s, New=%s',
                 prevObjectName, objectName)
             return
         anchorName = OBJECT_TO_ANCHOR.get(objectName)
         cls._customizableObjectsMgr.switchCamera(anchorName, instantly)
         if objectName and viewAlias is None:
             showCelebrityView = objectName == AdditionalCameraObject.CELEBRITY
             viewAlias = ViewAliases.CELEBRITY_VIEW if showCelebrityView else ViewAliases.GLADE_VIEW
         cls.__switchUI(viewAlias=viewAlias,
                        isObjectSwitched=True,
                        *args,
                        **kwargs)
         cls.onObjectStateChanged()
         cls.__playTransitionSound(objectName)
         if isCloseEvent:
             event_dispatcher.showHangar()
         return
Exemple #11
0
 def __updateData(self, _=None):
     self.__updateTradeVehicles()
     if self.__personalTradeInBuyVehicle is None or self.__personalTradeInSaleVehicle is None or self.__personalTradeInBuyVehicle.intCD not in self.__personalTradeIn.getBuyVehicleCDs(
     ) or self.__personalTradeInSaleVehicle.intCD not in self.__personalTradeIn.getSaleVehicleCDs(
     ):
         event_dispatcher.showHangar()
     else:
         self.as_setDataS(self.__getVO())
     return
Exemple #12
0
 def invalidateBlueprintMode(self, isEnabled):
     if isEnabled:
         self.as_setBlueprintsSwitchButtonStateS(enabled=True, selected=self.__blueprintMode, tooltip=TOOLTIPS.TECHTREEPAGE_BLUEPRINTSSWITCHTOOLTIP, visible=True)
     else:
         self.__blueprintMode = False
         self.__disableBlueprintsSwitchButton(isEnabled)
         self.__stopTopOfTheTreeSounds()
         shared_events.showHangar()
     self.redraw()
 def showAwardVehicleInHangar(self, vehTypeCompDescr):
     try:
         vehicle = g_itemsCache.items.getItemByCD(int(vehTypeCompDescr))
         g_currentVehicle.selectVehicle(vehicle.invID)
         shared_events.showHangar()
         self.__proxy.destroy()
     except:
         LOG_WARNING('Error while getting event window to close it')
         LOG_CURRENT_EXCEPTION()
 def showAwardVehicleInHangar(self, vehTypeCompDescr):
     try:
         vehicle = g_itemsCache.items.getItemByCD(int(vehTypeCompDescr))
         g_currentVehicle.selectVehicle(vehicle.invID)
         shared_events.showHangar()
         self.__proxy.destroy()
     except:
         LOG_WARNING('Error while getting event window to slose it')
         LOG_CURRENT_EXCEPTION()
 def __onServerSettingsChange(self, diff):
     eventConfigKeys = (Configs.BATTLE_ROYALE_CONFIG.value,
                        Configs.EVENT_PROGRESSION_CONFIG.value)
     isDisabled = any([
         diff.get(config, {}).get('isEnabled') is False
         for config in eventConfigKeys
     ])
     if isDisabled:
         showHangar()
Exemple #16
0
 def __tryShowHangar(self):
     if not self.__isHangarInvisible or self.__blockedByWindow or self.__isStyleOpened:
         return
     _logger.info('show hangar')
     windows = self.__gui.windowsManager.findWindows(_subViewPredicate)
     _logger.info(windows)
     if not windows:
         showHangar()
     self.__isHangarInvisible = False
     self.__updateStageVisibility()
     self.fini()
 def _onOffersUpdated(self):
     from gui.shared import event_dispatcher
     offer = self._offersProvider.getOffer(self._offerID)
     if offer is None or not offer.isOfferAvailable:
         if self._offersProvider.getAvailableOffers():
             event_dispatcher.showStorage(
                 defaultSection=STORAGE_CONSTANTS.OFFERS)
         else:
             event_dispatcher.showHangar()
         self.destroy()
     return
Exemple #18
0
 def __call__(self, *args, **kwargs):
     if not self.__nyController.isEnabled():
         showHangar()
         return
     else:
         giftEventHub = self.__giftsController.getEventHub(GiftEventID.NY_HOLIDAYS)
         if giftEventHub is None or not giftEventHub.getSettings().isEnabled:
             NewYearNavigation.switchFromStyle(CustomizationObjects.FIR, viewAlias=ViewAliases.GLADE_VIEW, forceShowMainView=True)
             return
         NewYearNavigation.switchFromStyle(self.__objectName, viewAlias=ViewAliases.GIFT_SYSTEM_VIEW, forceShowMainView=True)
         return
 def __onServerSettingChanged(self, diff):
     if 'ingameShop' in diff:
         storageEnabled = self.lobbyContext.getServerSettings(
         ).isIngameStorageEnabled()
         if isIngameShopEnabled():
             if not storageEnabled and not self.__showDummyScreen:
                 showHangar()
             if storageEnabled and self.__showDummyScreen:
                 self.__showDummyScreen = False
                 self.__initialize()
         else:
             showHangar()
Exemple #20
0
 def _onOffersUpdated(self):
     if self._offerItem is None or not self._offerItem.isOfferAvailable:
         if self._offersProvider.getAvailableOffers():
             event_dispatcher.showStorage(defaultSection=STORAGE_CONSTANTS.OFFERS)
         else:
             event_dispatcher.showHangar()
         self.destroyWindow()
         return
     else:
         with self._viewModel.transaction() as model:
             self._setDynamicInfo(model)
             self._generateGifts(model)
         return
Exemple #21
0
 def showBrowserWindow():
     ctx = {'size': browserSize,
      'title': i18n.makeString(MENU.ADVENTCALENDAR_WINDOW_TITLE),
      'handlers': browserHandlers,
      'browserID': browserID,
      'alias': VIEW_ALIAS.ADVENT_CALENDAR,
      'showCloseBtn': False,
      'showWaiting': True,
      'showActionBtn': False}
     browser = self.browserCtrl.getBrowser(browserID)
     browser.useSpecialKeys = False
     if invokedFrom == CalendarInvokeOrigin.HANGAR:
         showHangar()
     g_eventBus.handleEvent(events.LoadViewEvent(SFViewLoadParams(VIEW_ALIAS.ADVENT_CALENDAR), ctx=ctx), scope=EVENT_BUS_SCOPE.LOBBY)
 def _populate(self):
     super(VehiclePreview, self)._populate()
     g_clientUpdateManager.addCallbacks({'stats.credits': self.__updateBtnState,
      'stats.gold': self.__updateBtnState,
      'stats.freeXP': self.__updateBtnState})
     g_currentPreviewVehicle.onComponentInstalled += self.__updateStatus
     g_currentPreviewVehicle.onVehicleUnlocked += self.__updateBtnState
     g_currentPreviewVehicle.onVehicleInventoryChanged += self.__onInventoryChanged
     g_currentPreviewVehicle.onChanged += self.__onVehicleChanged
     if g_currentPreviewVehicle.isPresent():
         self.as_setStaticDataS(self.__getStaticData())
         self.__fullUpdate()
     else:
         event_dispatcher.showHangar()
 def __onBattlePassSettingsChange(self, *_):
     if not self.__battlePass.isChapterExists(self.__chapterID):
         showMissionsBattlePass(
             R.views.lobby.battle_pass.ChapterChoiceView())
         return
     if self.__battlePass.isPaused():
         showMissionsBattlePass()
         return
     if not (self.__battlePass.isEnabled()
             and self.__battlePass.isActive()):
         showHangar()
         return
     self.__updateProgressData()
     self.__updateBuyButtonState()
Exemple #24
0
 def selectMode(self, _):
     result = False
     dispatcher = g_prbLoader.getDispatcher()
     if dispatcher is not None and self.__epicController.isEnabled():
         isPrbActive = dispatcher.getFunctionalState().isInPreQueue(QUEUE_TYPE.EPIC)
         if not isPrbActive:
             actionName = PREBATTLE_ACTION_NAME.EPIC
             result = yield dispatcher.doSelectAction(PrbAction(actionName))
         else:
             result = isPrbActive
         if result:
             showHangar()
     yield {'success': result}
     return
Exemple #25
0
 def _populate(self):
     g_currentPreviewVehicle.selectVehicle(self._vehicleCD,
                                           self.__vehicleStrCD)
     super(VehiclePreview20, self)._populate()
     g_currentPreviewVehicle.onChanged += self.__onVehicleChanged
     self.comparisonBasket.onChange += self.__onCompareBasketChanged
     self.comparisonBasket.onSwitchChange += self.__updateHeaderData
     self.hangarSpace.onSpaceCreate += self.__onHangarCreateOrRefresh
     self.hangarSpace.setVehicleSelectable(True)
     serverSettings = self.lobbyContext.getServerSettings()
     serverSettings.onServerSettingsChange += self.__onServerSettingsChanged
     if not g_currentPreviewVehicle.isPresent():
         event_dispatcher.showHangar()
     if self.__itemsPack or self._backAlias == VIEW_ALIAS.LOBBY_STORE:
         self.heroTanks.setInteractive(False)
     self.addListener(CameraRelatedEvents.CAMERA_ENTITY_UPDATED,
                      self.handleSelectedEntityUpdated)
 def _populate(self):
     super(VehiclePreview, self)._populate()
     g_clientUpdateManager.addCallbacks({'stats.credits': self.__updateBtnState,
      'stats.gold': self.__updateBtnState,
      'stats.freeXP': self.__updateBtnState})
     g_currentPreviewVehicle.onComponentInstalled += self.__updateStatus
     g_currentPreviewVehicle.onVehicleUnlocked += self.__updateBtnState
     g_currentPreviewVehicle.onVehicleInventoryChanged += self.__onInventoryChanged
     g_currentPreviewVehicle.onChanged += self.__onVehicleChanged
     comparisonBasket = getVehicleComparisonBasketCtrl()
     comparisonBasket.onChange += self.__onCompareBasketChanged
     comparisonBasket.onSwitchChange += self.__updateHeaderData
     if g_currentPreviewVehicle.isPresent():
         self.__updateHeaderData()
         self.__fullUpdate()
     else:
         event_dispatcher.showHangar()
 def _populate(self):
     g_currentPreviewVehicle.selectVehicle(self.__vehicleCD, self.__vehicleStrCD)
     super(VehiclePreview, self)._populate()
     g_clientUpdateManager.addMoneyCallback(self._updateBtnState)
     g_clientUpdateManager.addCallbacks({'stats.freeXP': self._updateBtnState})
     g_currentPreviewVehicle.onComponentInstalled += self.__updateStatus
     g_currentPreviewVehicle.onVehicleUnlocked += self._updateBtnState
     g_currentPreviewVehicle.onVehicleInventoryChanged += self.__onInventoryChanged
     g_currentPreviewVehicle.onChanged += self.__onVehicleChanged
     self.comparisonBasket.onChange += self.__onCompareBasketChanged
     self.comparisonBasket.onSwitchChange += self.__updateHeaderData
     self.restores.onRestoreChangeNotify += self.__onRestoreChanged
     g_hangarSpace.onSpaceCreate += self.__onHangarCreateOrRefresh
     if g_currentPreviewVehicle.isPresent():
         self.__fullUpdate()
     else:
         event_dispatcher.showHangar()
 def __processBackClick(self, ctx=None):
     if self._backAlias == VIEW_ALIAS.LOBBY_RESEARCH:
         event_dispatcher.showResearchView(self._vehicleCD)
     elif self._backAlias == VIEW_ALIAS.VEHICLE_PREVIEW:
         entity = ctx.get('entity', None) if ctx else None
         if entity:
             descriptor = entity.typeDescriptor
             event_dispatcher.showVehiclePreview(
                 descriptor.type.compactDescr,
                 previewAlias=self._previousBackAlias)
         else:
             event_dispatcher.showHangar()
     else:
         event = g_entitiesFactories.makeLoadEvent(self._backAlias,
                                                   {'isBackEvent': True})
         self.fireEvent(event, scope=EVENT_BUS_SCOPE.LOBBY)
     return
 def _populate(self):
     super(VehiclePreview, self)._populate()
     g_clientUpdateManager.addCallbacks({
         'stats.credits':
         self.__updateBtnState,
         'stats.gold':
         self.__updateBtnState,
         'stats.freeXP':
         self.__updateBtnState
     })
     g_currentPreviewVehicle.onComponentInstalled += self.__updateStatus
     g_currentPreviewVehicle.onVehicleUnlocked += self.__updateBtnState
     g_currentPreviewVehicle.onVehicleInventoryChanged += self.__onInventoryChanged
     g_currentPreviewVehicle.onChanged += self.__onVehicleChanged
     if g_currentPreviewVehicle.isPresent():
         self.as_setStaticDataS(self.__getStaticData())
         self.__fullUpdate()
     else:
         event_dispatcher.showHangar()
 def _populate(self):
     super(VehiclePreview, self)._populate()
     g_clientUpdateManager.addCallbacks({
         'stats.credits':
         self.__updateBtnState,
         'stats.gold':
         self.__updateBtnState,
         'stats.freeXP':
         self.__updateBtnState
     })
     g_currentPreviewVehicle.onComponentInstalled += self.__updateStatus
     g_currentPreviewVehicle.onVehicleUnlocked += self.__updateBtnState
     g_currentPreviewVehicle.onVehicleInventoryChanged += self.__onInventoryChanged
     g_currentPreviewVehicle.onChanged += self.__onVehicleChanged
     self.comparisonBasket.onChange += self.__onCompareBasketChanged
     self.comparisonBasket.onSwitchChange += self.__updateHeaderData
     if g_currentPreviewVehicle.isPresent():
         self.__updateHeaderData()
         self.__fullUpdate()
     else:
         event_dispatcher.showHangar()
 def _populate(self):
     g_currentPreviewVehicle.selectVehicle(self._vehicleCD,
                                           self.__vehicleStrCD)
     LobbySelectableView._populate(self)
     g_clientUpdateManager.addMoneyCallback(self._updateBtnState)
     g_clientUpdateManager.addCallbacks(
         {'stats.freeXP': self._updateBtnState})
     g_currentPreviewVehicle.onComponentInstalled += self.__updateStatus
     g_currentPreviewVehicle.onVehicleUnlocked += self._updateBtnState
     g_currentPreviewVehicle.onVehicleInventoryChanged += self.__onInventoryChanged
     g_currentPreviewVehicle.onChanged += self.__onVehicleChanged
     self.comparisonBasket.onChange += self.__onCompareBasketChanged
     self.comparisonBasket.onSwitchChange += self.__updateHeaderData
     self.restores.onRestoreChangeNotify += self.__onRestoreChanged
     self.hangarSpace.onSpaceCreate += self.__onHangarCreateOrRefresh
     self.hangarSpace.setVehicleSelectable(True)
     if g_currentPreviewVehicle.isPresent():
         self.__fullUpdate()
     else:
         event_dispatcher.showHangar()
     self.addListener(CameraRelatedEvents.CAMERA_ENTITY_UPDATED,
                      self.handleSelectedEntityUpdated)
Exemple #32
0
 def _populate(self):
     self.setTopPanel()
     super(VehicleStylePreview, self)._populate()
     g_currentPreviewVehicle.selectVehicle(self.__vehicleCD,
                                           style=self._style)
     self.__selectedVehicleEntityId = g_currentPreviewVehicle.vehicleEntityID
     if not g_currentPreviewVehicle.isPresent() or self._style is None:
         event_dispatcher.showHangar()
     self.__hangarSpace.onSpaceCreate += self.__onHangarCreateOrRefresh
     self.addListener(CameraRelatedEvents.VEHICLE_LOADING,
                      self.__onVehicleLoading, EVENT_BUS_SCOPE.DEFAULT)
     self.__heroTanksControl.setInteractive(False)
     self.as_setDataS({
         'closeBtnLabel':
         backport.text(R.strings.vehicle_preview.header.closeBtn.label()),
         'backBtnLabel':
         backport.text(R.strings.vehicle_preview.header.backBtn.label()),
         'backBtnDescrLabel':
         self.__backBtnDescrLabel,
         'showCloseBtn':
         _SHOW_CLOSE_BTN,
         'showBackButton':
         _SHOW_BACK_BTN
     })
     self.as_setAdditionalInfoS({
         'objectSubtitle':
         text_styles.main(
             backport.text(getGroupFullNameResourceID(
                 self._style.groupID))),
         'objectTitle':
         self._style.userName,
         'descriptionTitle':
         backport.text(
             R.strings.tooltips.vehiclePreview.historicalReference.title()),
         'descriptionText':
         self.__styleDescr
     })
     return
Exemple #33
0
 def __update(self):
     ctrl = self.__battlePass
     if ctrl.isPaused():
         showMissionsBattlePass()
         self.destroyWindow()
         return
     if not (ctrl.isEnabled() and ctrl.isActive()):
         showHangar()
         return
     if len(ctrl.getChapterIDs()) != self.viewModel.packages.getItemsLength(
     ):
         self.__packages = generatePackages(battlePass=ctrl)
         self.__setPackages()
     isValidState = not self.__packageID or ctrl.isChapterExists(
         self.__packageID) and (
             not ctrl.isExtraChapter(self.__packageID)
             or ctrl.getChapterRemainingTime(self.__packageID) > 0)
     allBought = all((ctrl.isBought(chID) for chID in ctrl.getChapterIDs()))
     if not isValidState or allBought:
         showMissionsBattlePass(
             R.views.lobby.battle_pass.ChapterChoiceView())
         self.destroyWindow()
         return
     self.__updateState()
 def handleBodyButton(self):
     from CurrentVehicle import g_currentVehicle
     item = g_itemsCache.items.getItemByCD(self.__vehicleDesrs[0])
     if hasattr(item, 'invID'):
         g_currentVehicle.selectVehicle(item.invID)
     shared_events.showHangar()