def onAccountShowGUI(ctx): g_lobbyContext.onAccountShowGUI(ctx) yield g_itemsCache.update() yield g_questsCache.update() yield g_settingsCache.update() if not g_itemsCache.isSynced(): return g_settingsCore.serverSettings.applySettings() game_control.g_instance.onAccountShowGUI(g_lobbyContext.getGuiCtx()) accDossier = g_itemsCache.items.getAccountDossier() g_rareAchievesCache.request(accDossier.getRecord('rareAchievements')) MusicController.g_musicController.setAccountAttrs(g_itemsCache.items.stats.attributes) MusicController.g_musicController.play(MusicController.MUSIC_EVENT_LOBBY) MusicController.g_musicController.play(MusicController.AMBIENT_EVENT_LOBBY) premium = isPremiumAccount(g_itemsCache.items.stats.attributes) if g_hangarSpace.inited: g_hangarSpace.refreshSpace(premium) else: g_hangarSpace.init(premium) g_currentVehicle.init() g_windowsManager.onAccountShowGUI(g_lobbyContext.getGuiCtx()) yield g_windowsManager.window.tooltipManager.request() g_prbLoader.onAccountShowGUI(g_lobbyContext.getGuiCtx()) SoundGroups.g_instance.enableLobbySounds(True) onCenterIsLongDisconnected(True) Waiting.hide('enter')
def setAccountAttrs(self, accAttrs, restart = False): wasPremiumAccount = self.__isPremiumAccount self.__isPremiumAccount = account_helpers.isPremiumAccount(accAttrs) musicEventId = self.__musicEvents[MusicController._MUSIC_EVENT].getEventId() if restart and self.__isPremiumAccount != wasPremiumAccount and musicEventId == MUSIC_EVENT_LOBBY: self.play(musicEventId) self.play(self.__musicEvents[MusicController._AMBIENT_EVENT].getEventId())
def _isAvailable(self): if self._needValue is not None: isPremium = account_helpers.isPremiumAccount( self.itemsCache.items.stats.attributes) return isPremium == self._needValue else: return True
def onAccountShowGUI(ctx): g_lobbyContext.onAccountShowGUI(ctx) yield g_itemsCache.update() yield g_questsCache.update() yield g_settingsCache.update() if not g_itemsCache.isSynced(): return g_settingsCore.serverSettings.applySettings() game_control.g_instance.onAccountShowGUI(g_lobbyContext.getGuiCtx()) accDossier = g_itemsCache.items.getAccountDossier() g_rareAchievesCache.request(accDossier.getRecord('rareAchievements')) MusicController.g_musicController.setAccountAttrs( g_itemsCache.items.stats.attributes) MusicController.g_musicController.play(MusicController.MUSIC_EVENT_LOBBY) MusicController.g_musicController.play(MusicController.AMBIENT_EVENT_LOBBY) premium = isPremiumAccount(g_itemsCache.items.stats.attributes) if g_hangarSpace.inited: g_hangarSpace.refreshSpace(premium) else: g_hangarSpace.init(premium) g_currentVehicle.init() g_windowsManager.onAccountShowGUI(g_lobbyContext.getGuiCtx()) yield g_windowsManager.window.tooltipManager.request() g_prbLoader.onAccountShowGUI(g_lobbyContext.getGuiCtx()) SoundGroups.g_instance.enableLobbySounds(True) onCenterIsLongDisconnected(True) Waiting.hide('enter')
def setAccountAttrs(self, accAttrs, restart=False): wasPremiumAccount = self.__isPremiumAccount from account_helpers import isPremiumAccount self.__isPremiumAccount = isPremiumAccount(accAttrs) musicEventId = self.__music.getEventId() if restart and self.__isPremiumAccount != wasPremiumAccount and musicEventId == MUSIC_EVENT_LOBBY: self.play(musicEventId) self.play(self.__ambient.getEventId())
def onAccountShowGUI(ctx): global onCenterIsLongDisconnected ServicesLocator.statsCollector.noteHangarLoadingState( HANGAR_LOADING_STATE.SHOW_GUI) ServicesLocator.lobbyContext.onAccountShowGUI(ctx) yield ServicesLocator.itemsCache.update(CACHE_SYNC_REASON.SHOW_GUI, notify=False) Waiting.show('enter') ServicesLocator.statsCollector.noteHangarLoadingState( HANGAR_LOADING_STATE.QUESTS_SYNC) ServicesLocator.eventsCache.start() yield ServicesLocator.eventsCache.update() ServicesLocator.statsCollector.noteHangarLoadingState( HANGAR_LOADING_STATE.USER_SERVER_SETTINGS_SYNC) yield ServicesLocator.settingsCache.update() if not ServicesLocator.itemsCache.isSynced(): ServicesLocator.gameplay.goToLoginByError('#menu:disconnect/codes/0') return eula = EULADispatcher() yield eula.processLicense() eula.fini() g_playerEvents.onGuiCacheSyncCompleted(ctx) code = yield AccountValidator().validate() if code > 0: ServicesLocator.gameplay.goToLoginByError('#menu:disconnect/codes/%d' % code) return ServicesLocator.itemsCache.onSyncCompleted(CACHE_SYNC_REASON.SHOW_GUI, {}) ServicesLocator.settingsCore.serverSettings.applySettings() ServicesLocator.gameState.onAccountShowGUI( ServicesLocator.lobbyContext.getGuiCtx()) accDossier = ServicesLocator.itemsCache.items.getAccountDossier() ServicesLocator.rareAchievesCache.request( accDossier.getBlock('rareAchievements')) premium = isPremiumAccount( ServicesLocator.itemsCache.items.stats.attributes) if ServicesLocator.hangarSpace.inited: ServicesLocator.hangarSpace.refreshSpace(premium) else: ServicesLocator.hangarSpace.init(premium) g_currentVehicle.init() g_currentPreviewVehicle.init() ServicesLocator.webCtrl.start() ServicesLocator.soundCtrl.start() ServicesLocator.gameplay.postStateEvent(PlayerEventID.ACCOUNT_SHOW_GUI) serverSettings = ServicesLocator.lobbyContext.getServerSettings() g_prbLoader.onAccountShowGUI(ServicesLocator.lobbyContext.getGuiCtx()) g_clanCache.onAccountShowGUI() SoundGroups.g_instance.enableLobbySounds(True) onCenterIsLongDisconnected(True) guiModsSendEvent('onAccountShowGUI', ctx) if serverSettings.wgcg.getLoginOnStart(): yield ServicesLocator.webCtrl.login() if serverSettings.isElenEnabled(): yield ServicesLocator.eventsController.getEvents( onlySettings=True, onLogin=True, prefetchKeyArtBig=False) yield ServicesLocator.eventsController.getHangarFlag(onLogin=True)
def updateAccountAttrs(self): accAttrs = yield StatsRequester().getAccountAttrs() denunciations = yield StatsRequester().getDenunciations() isPremium = account_helpers.isPremiumAccount(accAttrs) premiumExpiryTime = 0 if isPremium: premiumExpiryTime = yield StatsRequester().getPremiumExpiryTime() self.setAccountsAttrs(accAttrs, premiumExpiryTime=premiumExpiryTime) self.setDenunciationsCount(denunciations)
def updateAccountAttrs(self): stats = g_itemsCache.items.stats accAttrs = stats.attributes isPremium = account_helpers.isPremiumAccount(accAttrs) if isPremium: premiumExpiryTime = stats.premiumExpiryTime else: premiumExpiryTime = 0 battle_selector_items.getItems().validateAccountAttrs(accAttrs) self.__setAccountsAttrs(isPremium, premiumExpiryTime=premiumExpiryTime)
def __premiumDataRequest(self): stats = yield StatsRequesterr().request() premiumCost = yield StatsRequester().getPremiumCost() premiumCost = sorted(premiumCost.items(), reverse=True) args = [] for period, cost in premiumCost: args.append({'days': period, 'price': cost, 'discountPrice': cost}) gold = stats.gold isPremiumAccount = account_helpers.isPremiumAccount(stats.attributes) self.as_setCostsS(args) self.as_setPremiumS(isPremiumAccount) self.as_setGoldS(gold)
def __premiumBuyRequest(self, days, price): stats = yield StatsRequester().request() if account_helpers.isPremiumAccount(stats.attributes): dialogId = 'premiumContinueConfirmation' else: dialogId = 'premiumBuyConfirmation' isOk = yield DialogsInterface.showDialog(I18nConfirmDialogMeta(dialogId, messageCtx={'days': int(days), 'gold': BigWorld.wg_getGoldFormat(price)})) if isOk and days: if stats.gold < price: self.__systemErrorMessage(SYSTEM_MESSAGES.PREMIUM_NOT_ENOUGH_GOLD, days, SystemMessages.SM_TYPE.Warning) else: self.__upgradeToPremium(days) self.destroy()
def onAccountShowGUI(ctx): global onCenterIsLongDisconnected ServicesLocator.statsCollector.noteHangarLoadingState( HANGAR_LOADING_STATE.SHOW_GUI) ServicesLocator.lobbyContext.onAccountShowGUI(ctx) yield ServicesLocator.itemsCache.update(CACHE_SYNC_REASON.SHOW_GUI) ServicesLocator.statsCollector.noteHangarLoadingState( HANGAR_LOADING_STATE.QUESTS_SYNC) ServicesLocator.eventsCache.start() yield ServicesLocator.eventsCache.update() ServicesLocator.statsCollector.noteHangarLoadingState( HANGAR_LOADING_STATE.USER_SERVER_SETTINGS_SYNC) yield ServicesLocator.settingsCache.update() if not ServicesLocator.itemsCache.isSynced(): g_appLoader.goToLoginByError('#menu:disconnect/codes/0') return eula = EULADispatcher() yield eula.processLicense() eula.fini() g_playerEvents.onGuiCacheSyncCompleted(ctx) code = yield AccountValidator().validate() if code > 0: g_appLoader.goToLoginByError('#menu:disconnect/codes/%d' % code) return ServicesLocator.settingsCore.serverSettings.applySettings() ServicesLocator.gameState.onAccountShowGUI( ServicesLocator.lobbyContext.getGuiCtx()) accDossier = ServicesLocator.itemsCache.items.getAccountDossier() g_rareAchievesCache.request(accDossier.getBlock('rareAchievements')) premium = isPremiumAccount( ServicesLocator.itemsCache.items.stats.attributes) if g_hangarSpace.inited: g_hangarSpace.refreshSpace(premium) else: g_hangarSpace.init(premium) g_currentVehicle.init() g_currentPreviewVehicle.init() if not g_prbLoader.isEnabled(): isLobbyLoaded = g_appLoader g_appLoader.showLobby() g_prbLoader.onAccountShowGUI(ServicesLocator.lobbyContext.getGuiCtx()) g_clanCache.onAccountShowGUI() ServicesLocator.clanCtrl.start() ServicesLocator.soundCtrl.start() SoundGroups.g_instance.enableLobbySounds(True) onCenterIsLongDisconnected(True) guiModsSendEvent('onAccountShowGUI', ctx) Waiting.hide('enter')
def __upgradeToPremium(self, days): Waiting.show('loadStats') attrs = yield DeprecatedStatsRequester().getAccountAttrs() isPremium = account_helpers.isPremiumAccount(attrs) success = yield DeprecatedStatsRequester().upgradeToPremium(days) if success: premiumCost = yield DeprecatedStatsRequester().getPremiumCost() if premiumCost: if isPremium: successMessage = SYSTEM_MESSAGES.PREMIUM_CONTINUESUCCESS else: successMessage = SYSTEM_MESSAGES.PREMIUM_BUYINGSUCCESS SystemMessages.pushI18nMessage(successMessage, days, formatPrice((0, premiumCost[int(days)])), type=SystemMessages.SM_TYPE.PurchaseForGold) else: self.__systemErrorMessage(SYSTEM_MESSAGES.PREMIUM_SERVER_ERROR, days, SystemMessages.SM_TYPE.Error) Waiting.hide('loadStats')
def __premiumDataRequest(self, *args): stats = g_itemsCache.items.stats premiumCost = g_itemsCache.items.shop.premiumCost premiumCost = sorted(premiumCost.items(), reverse=True) defaultPremiumCost = g_itemsCache.items.shop.defaults.premiumCost defaultPremiumCost = sorted(defaultPremiumCost.items(), reverse=True) args = [] for idx, (period, cost) in enumerate(premiumCost): _, defaultCost = defaultPremiumCost[idx] args.append({'days': period, 'price': defaultCost, 'discountPrice': cost}) gold = stats.gold isPremiumAccount = account_helpers.isPremiumAccount(stats.attributes) self.as_setCostsS(args) self.as_setPremiumS(isPremiumAccount) self.as_setGoldS(gold)
def onAccountShowGUI(ctx): global onCenterIsLongDisconnected g_statistics.noteHangarLoadingState(HANGAR_LOADING_STATE.SHOW_GUI) g_lobbyContext.onAccountShowGUI(ctx) yield g_itemsCache.update(CACHE_SYNC_REASON.SHOW_GUI) g_statistics.noteHangarLoadingState(HANGAR_LOADING_STATE.QUESTS_SYNC) g_eventsCache.start() yield g_eventsCache.update() g_statistics.noteHangarLoadingState(HANGAR_LOADING_STATE.USER_SERVER_SETTINGS_SYNC) yield g_settingsCache.update() if not g_itemsCache.isSynced(): g_appLoader.goToLoginByError("#menu:disconnect/codes/0") return eula = EULADispatcher() yield eula.processLicense() eula.fini() g_playerEvents.onGuiCacheSyncCompleted(ctx) code = yield AccountValidator().validate() if code > 0: g_appLoader.goToLoginByError("#menu:disconnect/codes/%d" % code) return g_settingsCore.serverSettings.applySettings() game_control.g_instance.onAccountShowGUI(g_lobbyContext.getGuiCtx()) accDossier = g_itemsCache.items.getAccountDossier() g_rareAchievesCache.request(accDossier.getBlock("rareAchievements")) premium = isPremiumAccount(g_itemsCache.items.stats.attributes) if g_hangarSpace.inited: g_hangarSpace.refreshSpace(premium) else: g_hangarSpace.init(premium) g_currentVehicle.init() g_currentPreviewVehicle.init() g_appLoader.showLobby() g_prbLoader.onAccountShowGUI(g_lobbyContext.getGuiCtx()) g_clanCache.onAccountShowGUI() g_clubsCtrl.start() g_clanCtrl.start() g_soundsCtrl.start() SoundGroups.g_instance.enableLobbySounds(True) onCenterIsLongDisconnected(True) guiModsSendEvent("onAccountShowGUI", ctx) Waiting.hide("enter")
def __premiumBuyRequest(self, days, price): stats = yield StatsRequesterr().request() if account_helpers.isPremiumAccount(stats.attributes): dialogId = 'premiumContinueConfirmation' else: dialogId = 'premiumBuyConfirmation' isOk = yield DialogsInterface.showDialog( I18nConfirmDialogMeta(dialogId, messageCtx={ 'days': int(days), 'gold': BigWorld.wg_getGoldFormat(price) })) if isOk and days: if stats.gold < price: self.__systemErrorMessage( SYSTEM_MESSAGES.PREMIUM_NOT_ENOUGH_GOLD, days, SystemMessages.SM_TYPE.Warning) else: self.__upgradeToPremium(days) self.destroy()
def onAccountShowGUI(ctx): global onCenterIsLongDisconnected g_lobbyContext.onAccountShowGUI(ctx) yield g_itemsCache.update(CACHE_SYNC_REASON.SHOW_GUI) g_eventsCache.start() yield g_eventsCache.update() yield g_settingsCache.update() if not g_itemsCache.isSynced(): return eula = EULADispatcher() yield eula.processLicense() eula.fini() g_playerEvents.onGuiCacheSyncCompleted(ctx) code = yield AccountValidator().validate() if code > 0: from gui import DialogsInterface DialogsInterface.showDisconnect("#menu:disconnect/codes/%d" % code) return g_settingsCore.serverSettings.applySettings() game_control.g_instance.onAccountShowGUI(g_lobbyContext.getGuiCtx()) accDossier = g_itemsCache.items.getAccountDossier() g_rareAchievesCache.request(accDossier.getBlock("rareAchievements")) MusicController.g_musicController.setAccountAttrs(g_itemsCache.items.stats.attributes) MusicController.g_musicController.play(MusicController.MUSIC_EVENT_LOBBY) MusicController.g_musicController.play(MusicController.AMBIENT_EVENT_LOBBY) premium = isPremiumAccount(g_itemsCache.items.stats.attributes) if g_hangarSpace.inited: g_hangarSpace.refreshSpace(premium) else: g_hangarSpace.init(premium) g_currentVehicle.init() g_appLoader.showLobby() g_prbLoader.onAccountShowGUI(g_lobbyContext.getGuiCtx()) g_clanCache.onAccountShowGUI() g_clubsCtrl.start() SoundGroups.g_instance.enableLobbySounds(True) onCenterIsLongDisconnected(True) guiModsSendEvent("onAccountShowGUI", ctx) Waiting.hide("enter")
def setAccountsAttrs(self, attrs, premiumExpiryTime = 0): if not GUI_SETTINGS.goldTransfer and attrs & constants.ACCOUNT_ATTR.TRADING: attrs ^= constants.ACCOUNT_ATTR.TRADING isPremiumAccount = account_helpers.isPremiumAccount(attrs) if g_hangarSpace.inited: g_hangarSpace.refreshSpace(isPremiumAccount) self.as_setProfileTypeS(makeHtmlString('html_templates:lobby/header', 'premium-account-label' if isPremiumAccount else 'base-account-label')) if not (isPremiumAccount and premiumExpiryTime > 0): raise AssertionError lExpiryTime = makeLocalServerTime(premiumExpiryTime) delta = datetime.datetime.utcfromtimestamp(lExpiryTime) - datetime.datetime.utcnow() if delta.days > 0: timeLeft = delta.days + 1 if delta.seconds > 0 else delta.days timeMetric = makeString('#menu:header/account/premium/days') elif not delta.days: import math timeLeft = math.ceil(delta.seconds / 3600.0) timeMetric = makeString('#menu:header/account/premium/hours') else: LOG_ERROR('timedelta with negative days', premiumExpiryTime, delta) return self.as_setPremiumParamsS(makeHtmlString('html_templates:lobby/header', 'premium-time-label', {'timeMetric': timeMetric, 'timeLeft': timeLeft}), makeString('#menu:common/premiumContinue'), delta.days > 360) self.as_premiumResponseS(isPremiumAccount)
def __upgradeToPremium(self, days): Waiting.show('loadStats') attrs = yield StatsRequester().getAccountAttrs() isPremium = account_helpers.isPremiumAccount(attrs) success = yield StatsRequester().upgradeToPremium(days) if success: premiumCost = yield StatsRequester().getPremiumCost() if premiumCost: if isPremium: successMessage = SYSTEM_MESSAGES.PREMIUM_CONTINUESUCCESS else: successMessage = SYSTEM_MESSAGES.PREMIUM_BUYINGSUCCESS SystemMessages.pushI18nMessage( successMessage, days, formatPrice((0, premiumCost[int(days)])), type=SystemMessages.SM_TYPE.PurchaseForGold) self.fireEvent(LobbySimpleEvent( LobbySimpleEvent.UPDATE_TANK_PARAMS), scope=EVENT_BUS_SCOPE.LOBBY) else: self.__systemErrorMessage(SYSTEM_MESSAGES.PREMIUM_SERVER_ERROR, days, SystemMessages.SM_TYPE.Error) Waiting.hide('loadStats')
def isPremium(self): return isPremiumAccount(self.attributes)
def setAccountAttrs(self, accAttrs, restart = False): wasPremiumAccount = self.__isPremiumAccount self.__isPremiumAccount = account_helpers.isPremiumAccount(accAttrs) if restart and self.__isPremiumAccount != wasPremiumAccount and self.__eventMusicId == MUSIC_EVENT_LOBBY: self.play(self.__eventMusicId) self.play(self.__eventAmbientId)
def hooked_update_all(self): hook_update_all(self) if account_helpers.isPremiumAccount(g_itemsCache.items.stats.attributes): g_clientHangarSpaceOverride.setPath('spaces/hangar_premium_v2_1') else: g_clientHangarSpaceOverride.setPath('spaces/hangar_v2_1')