def _onEventsCacheResync(self): """ Callback to be invoked when the event cache is re-synced. """ if self.__isEventsEnabled != g_eventsCache.isEventEnabled(): if g_eventsCache.isEventEnabled(): g_currentVehicle.onChanged += self._onCurrentVehicleChanged else: g_currentVehicle.onChanged -= self._onCurrentVehicleChanged self.__isEventsEnabled = g_eventsCache.isEventEnabled() self._invalidate(resetSubscription=True)
def onUnitVehicleChanged(self, dbID, vInfo): functional = self.unitFunctional pInfo = functional.getPlayerInfo(dbID=dbID) if g_eventsCache.isEventEnabled() and pInfo.isCreator(): self.__isFallout = None if not vInfo.isEmpty(): vehicle = g_itemsCache.items.getItemByCD(vInfo.vehTypeCD) self.__isFallout = vehicle.isEvent self._updateRallyData() self._setActionButtonState() return else: if pInfo.isInSlot: slotIdx = pInfo.slotIdx if not vInfo.isEmpty(): vehicleVO = makeVehicleVO(g_itemsCache.items.getItemByCD(vInfo.vehTypeCD), functional.getRosterSettings().getLevelsRange(), isFallout=self.__isFallout, isCreator=pInfo.isCreator()) slotCost = vInfo.vehLevel else: slotState = functional.getSlotState(slotIdx) vehicleVO = None if slotState.isClosed: slotCost = settings.UNIT_CLOSED_SLOT_COST else: slotCost = 0 self.as_setMemberVehicleS(slotIdx, slotCost, vehicleVO) return
def __getActionButtonStateVO(self): stateString = '' unitFunctional = self.unitFunctional pInfo = unitFunctional.getPlayerInfo() isInQueue = unitFunctional.getFlags().isInIdle() isEnabled = g_currentVehicle.isReadyToPrebattle() and not isInQueue playerReady = pInfo.isReady if not g_currentVehicle.isPresent(): stateString = i18n.makeString('#cybersport:window/unit/message/vehicleNotSelected') elif not g_currentVehicle.isReadyToPrebattle(): stateString = i18n.makeString('#cybersport:window/unit/message/vehicleNotValid') elif not playerReady: stateString = i18n.makeString(MESSENGER.DIALOGS_SQUAD_MESSAGE_GETREADY) elif g_eventsCache.isEventEnabled() and self.__isFallout is not None and self.__isFallout != g_currentVehicle.item.isEvent: stateString = error(MENU.CURRENTVEHICLESTATUS_NOTVALIDVEHICLE) elif playerReady and not isInQueue: stateString = i18n.makeString(MESSENGER.DIALOGS_SQUAD_MESSAGE_GETNOTREADY) stateString = TextManager.getText(TEXT_MANAGER_STYLES.MAIN_TEXT if isEnabled else TEXT_MANAGER_STYLES.ERROR_TEXT, stateString) if playerReady: label = CYBERSPORT.WINDOW_UNIT_NOTREADY else: label = CYBERSPORT.WINDOW_UNIT_READY return {'stateString': stateString, 'label': label, 'isEnabled': isEnabled, 'isReady': playerReady}
def _addSquadInfo(self, options, isIgnored): if not isIgnored and not self.isSquadCreator(): canCreate = self.prbDispatcher.getFunctionalCollection().canCreateSquad() options.append(self._makeItem(USER.CREATE_SQUAD, MENU.contextmenu(USER.CREATE_SQUAD), optInitData={'enabled': canCreate})) if g_eventsCache.isEventEnabled(): options.append(self._makeItem(USER.CREATE_EVENT_SQUAD, MENU.contextmenu(USER.CREATE_EVENT_SQUAD), optInitData={'enabled': canCreate})) return options
def __updateFalloutState(self): if g_eventsCache.isEventEnabled(): slots = self.unitFunctional.getSlotsIterator(*self.unitFunctional.getUnit()) creator = findFirst(lambda s: s.player is not None and s.player.isCreator, slots) self.__isFallout = None if creator is not None and creator.vehicle is not None: creatorVehicle = g_itemsCache.items.getItemByCD(creator.vehicle['vehTypeCompDescr']) self.__isFallout = creatorVehicle.isEvent return
def getDivisionsList(addAll = True): result = [] if addAll: result.append({'data': 0, 'label': i18n.makeString('#prebattle:labels/company/division/ALL')}) isEventEnabled = g_eventsCache.isEventEnabled() for divID in PREBATTLE_COMPANY_DIVISION.RANGE: if divID in PREBATTLE_COMPANY_DIVISION.EVENT_ONLY and not isEventEnabled: continue divName = PREBATTLE_COMPANY_DIVISION_NAMES[divID] result.append({'data': divID, 'label': getCompanyDivisionString(divName)}) return result
def _createItems(): isInRoaming = g_lobbyContext.getServerSettings().roaming.isInRoaming() items = [] _addRandomBattleType(items) _addHistoricalBattleType(items, isInRoaming) _addCommandBattleType(items) _addSortieBattleType(items, isInRoaming) _addTrainingBattleType(items) if GUI_SETTINGS.specPrebatlesVisible: _addSpecialBattleType(items) _addCompanyBattleType(items) if _isTutorialEnabled(): _addTutorialBattleType(items, isInRoaming) if g_eventsCache.isEventEnabled(): _addFalloutBattleType(items) return _BattleSelectorItems(items)
def init(self, *args, **kwargs): """ The init method that will replace the original functional method. Initializes the inner extension state. :param args: Arguments that are passed to the original method :param kwargs: Arguments that are passed to the original method :return: Result of the original method call. """ self.__isEventsEnabled = g_eventsCache.isEventEnabled() self._invalidate(resetSubscription=False) rv = self._callOriginalMethod('init', *args, **kwargs) g_eventsCache.onSyncCompleted += self._onEventsCacheResync if self.__isEventsEnabled: g_currentVehicle.onChanged += self._onCurrentVehicleChanged return rv
def _updateRallyData(self): functional = self.unitFunctional data = vo_converters.makeUnitVO(functional, unitIdx=functional.getUnitIdx(), app=self.app, isFallout=self.__isFallout) self.as_updateRallyS(data) falloutFilter = AccountSettings.getFilter(FALLOUT) wasShown = falloutFilter['wasShown'] isNew = False isEventEnabled = g_eventsCache.isEventEnabled() if isEventEnabled: battleTypeName = i18n.makeString(MENU.HEADERBUTTONS_BATTLE_MENU_STANDART) + '\n' + i18n.makeString(MENU.HEADERBUTTONS_BATTLE_MENU_DOMINATION) tooltipStr = makeTooltip(body=TOOLTIPS.SQUADWINDOW_EVENT_DOMINATION, note=alert(i18n.makeString(TOOLTIPS.SQUADWINDOW_EVENT_DOMINATION_NOTE, vehicles=self._getEventVehiclesNamesStr()))) isNew = not wasShown else: battleTypeName = i18n.makeString(MENU.HEADERBUTTONS_BATTLE_MENU_STANDART) tooltipStr = '' self.as_updateBattleTypeInfoS(tooltipStr, isEventEnabled) self.as_updateBattleTypeS(battleTypeName, isEventEnabled, isNew) if isNew: falloutFilter['wasShown'] = True AccountSettings.setFilter(FALLOUT, falloutFilter)
def __updatePrebattleControls(self): prbDispatcher = g_prbLoader.getDispatcher() if not prbDispatcher: return else: items = battle_selector_items.getItems() state = prbDispatcher.getFunctionalState() selected = items.update(state) canDo, canDoMsg = prbDispatcher.canPlayerDoAction() playerInfo = prbDispatcher.getPlayerInfo() if selected.isInSquad(state): isInSquad = True else: isInSquad = False self.as_doDisableHeaderButtonS(self.BUTTONS.SQUAD, not state.hasLockedState) isFallout = g_eventsCache.isEventEnabled() if isInSquad: tooltip = TOOLTIPS.HEADER_SQUAD_MEMBER else: tooltip = TOOLTIPS.HEADER_DOMINATIONSQUAD if isFallout else TOOLTIPS.HEADER_SQUAD self.as_updateSquadS(isInSquad, tooltip, TOOLTIP_TYPES.COMPLEX) isFightBtnDisabled = not canDo or selected.isFightButtonForcedDisabled() isEventVehicle = g_currentVehicle.isPresent() and g_currentVehicle.item.isOnlyForEventBattles isInCompany = state.isInPrebattle(PREBATTLE_TYPE.COMPANY) if isFightBtnDisabled and isEventVehicle and not state.hasLockedState and not isInCompany: self.as_setFightBtnTooltipDataS(self.__getFightBtnTooltipData(canDoMsg)) else: self.as_setFightBtnTooltipDataS(None) self.as_disableFightButtonS(isFightBtnDisabled) self.as_setFightButtonS(selected.getFightButtonLabel(state, playerInfo)) self.as_updateBattleTypeS(i18n.makeString(selected.getLabel()), selected.getSmallIcon(), not selected.isDisabled(), TOOLTIPS.HEADER_BATTLETYPE, TOOLTIP_TYPES.COMPLEX) if selected.isDisabled(): self.__closeBattleTypeSelectPopover() else: self.__updateBattleTypeSelectPopover() return
def isAvailable(self): return g_eventsCache.isEventEnabled()
def __updatePrebattleControls(self): if not self.prbDispatcher: return else: items = battle_selector_items.getItems() suadItems = battle_selector_items.getSquadItems() state = self.prbDispatcher.getFunctionalState() selected = items.update(state) squadSelected = suadItems.update(state) canDo, canDoMsg = self.prbDispatcher.canPlayerDoAction() playerInfo = self.prbDispatcher.getPlayerInfo() if selected.isInSquad(state): isInSquad = True else: isInSquad = False self.as_doDisableHeaderButtonS( self.BUTTONS.SQUAD, self.prbDispatcher.getFunctionalCollection(). canCreateSquad()) falloutCtrl = getFalloutCtrl() isFallout = falloutCtrl.isSelected() isEvent = g_eventsCache.isEventEnabled() if isInSquad: tooltip = TOOLTIPS.HEADER_SQUAD_MEMBER elif isFallout: tooltip = TOOLTIPS.HEADER_DOMINATIONSQUAD elif isEvent: tooltip = TOOLTIPS.HEADER_SQUAD_MEMBER else: tooltip = TOOLTIPS.HEADER_SQUAD if state.isInUnit(constants.PREBATTLE_TYPE.EVENT): iconSquad = RES_ICONS.MAPS_ICONS_BATTLETYPES_40X40_EVENTSQUAD else: iconSquad = RES_ICONS.MAPS_ICONS_BATTLETYPES_40X40_SQUAD self.as_updateSquadS(isInSquad, tooltip, TOOLTIP_TYPES.COMPLEX, isEvent, iconSquad) isFightBtnDisabled = not canDo or selected.isFightButtonForcedDisabled( ) if isFightBtnDisabled and not state.hasLockedState: if state.isInPreQueue( queueType=constants.QUEUE_TYPE.SANDBOX ) and canDoMsg == QUEUE_RESTRICTION.LIMIT_LEVEL: self.as_setFightBtnTooltipS(self.__getSandboxTooltipData()) elif isFallout: self.as_setFightBtnTooltipS( self.__getFalloutFightBtnTooltipData(canDoMsg)) elif isEvent and state.isInUnit( constants.PREBATTLE_TYPE.EVENT): self.as_setFightBtnTooltipS(self.__getEventTooltipData()) elif isInSquad: self.as_setFightBtnTooltipS( self.__getSquadFightBtnTooltipData(canDoMsg)) else: self.as_setFightBtnTooltipS(None) else: self.as_setFightBtnTooltipS(None) self.as_disableFightButtonS(isFightBtnDisabled) self.as_setFightButtonS( selected.getFightButtonLabel(state, playerInfo)) self.as_updateBattleTypeS(i18n.makeString(selected.getLabel()), selected.getSmallIcon(), selected.isSelectorBtnEnabled(), TOOLTIPS.HEADER_BATTLETYPE, TOOLTIP_TYPES.COMPLEX, selected.getData()) if selected.isDisabled(): self.__closeBattleTypeSelectPopover() else: self.__updateBattleTypeSelectPopover() if squadSelected.isDisabled(): self.__closeSquadTypeSelectPopover() else: self.__updateSquadTypeSelectPopover() isNavigationEnabled = not state.isNavigationDisabled() self.as_doDisableHeaderButtonS(self.BUTTONS.PREM, isNavigationEnabled) self.as_doDisableHeaderButtonS(self.BUTTONS.SILVER, isNavigationEnabled) self.as_doDisableHeaderButtonS(self.BUTTONS.GOLD, isNavigationEnabled) self.as_doDisableHeaderButtonS(self.BUTTONS.FREE_XP, isNavigationEnabled) self.as_doDisableHeaderButtonS(self.BUTTONS.ACCOUNT, isNavigationEnabled) self.as_doDisableHeaderButtonS(self.BUTTONS.PREMSHOP, isNavigationEnabled) self.updateAccountAttrs() return
def __updatePrebattleControls(self): if not self.prbDispatcher: return else: items = battle_selector_items.getItems() suadItems = battle_selector_items.getSquadItems() state = self.prbDispatcher.getFunctionalState() selected = items.update(state) squadSelected = suadItems.update(state) canDo, canDoMsg = self.prbDispatcher.canPlayerDoAction() playerInfo = self.prbDispatcher.getPlayerInfo() if selected.isInSquad(state): isInSquad = True else: isInSquad = False self.as_doDisableHeaderButtonS(self.BUTTONS.SQUAD, self.prbDispatcher.getFunctionalCollection().canCreateSquad()) falloutCtrl = getFalloutCtrl() isFallout = falloutCtrl.isSelected() isEvent = g_eventsCache.isEventEnabled() if isInSquad: tooltip = TOOLTIPS.HEADER_SQUAD_MEMBER elif isFallout: tooltip = TOOLTIPS.HEADER_DOMINATIONSQUAD elif isEvent: tooltip = TOOLTIPS.HEADER_SQUAD_MEMBER else: tooltip = TOOLTIPS.HEADER_SQUAD if state.isInUnit(constants.PREBATTLE_TYPE.EVENT): iconSquad = RES_ICONS.MAPS_ICONS_BATTLETYPES_40X40_EVENTSQUAD else: iconSquad = RES_ICONS.MAPS_ICONS_BATTLETYPES_40X40_SQUAD self.as_updateSquadS(isInSquad, tooltip, TOOLTIP_TYPES.COMPLEX, isEvent, iconSquad) isFightBtnDisabled = not canDo or selected.isFightButtonForcedDisabled() if isFightBtnDisabled and not state.hasLockedState: if state.isInPreQueue(queueType=constants.QUEUE_TYPE.SANDBOX) and canDoMsg == QUEUE_RESTRICTION.LIMIT_LEVEL: self.as_setFightBtnTooltipS(self.__getSandboxTooltipData()) elif isFallout: self.as_setFightBtnTooltipS(self.__getFalloutFightBtnTooltipData(canDoMsg)) elif isEvent and state.isInUnit(constants.PREBATTLE_TYPE.EVENT): self.as_setFightBtnTooltipS(self.__getEventTooltipData()) elif isInSquad: self.as_setFightBtnTooltipS(self.__getSquadFightBtnTooltipData(canDoMsg)) else: self.as_setFightBtnTooltipS(None) else: self.as_setFightBtnTooltipS(None) self.as_disableFightButtonS(isFightBtnDisabled) self.as_setFightButtonS(selected.getFightButtonLabel(state, playerInfo)) self.as_updateBattleTypeS(i18n.makeString(selected.getLabel()), selected.getSmallIcon(), selected.isSelectorBtnEnabled(), TOOLTIPS.HEADER_BATTLETYPE, TOOLTIP_TYPES.COMPLEX, selected.getData()) if selected.isDisabled(): self.__closeBattleTypeSelectPopover() else: self.__updateBattleTypeSelectPopover() if squadSelected.isDisabled(): self.__closeSquadTypeSelectPopover() else: self.__updateSquadTypeSelectPopover() isNavigationEnabled = not state.isNavigationDisabled() self.as_doDisableHeaderButtonS(self.BUTTONS.PREM, isNavigationEnabled) self.as_doDisableHeaderButtonS(self.BUTTONS.SILVER, isNavigationEnabled) self.as_doDisableHeaderButtonS(self.BUTTONS.GOLD, isNavigationEnabled) self.as_doDisableHeaderButtonS(self.BUTTONS.FREE_XP, isNavigationEnabled) self.as_doDisableHeaderButtonS(self.BUTTONS.ACCOUNT, isNavigationEnabled) self.as_doDisableHeaderButtonS(self.BUTTONS.PREMSHOP, isNavigationEnabled) self.updateAccountAttrs() return
def isEnabled(self): return g_eventsCache.isEventEnabled() and bool(self.__settings['isEnabled'])