def __requestRequiredData(self): localCtx = BattleClientCtx.fetch() if localCtx.startedAt == 0.0: localCtx.setStartedAt(time.time()) if localCtx.accCompleted < 0: player = BigWorld.player() if player is None or not hasattr(player, 'requestAccountStats'): LOG_DEBUG('Stats method not found', player) return LOG_REQUEST('Avatar.requestAccountStats') player.requestAccountStats(['tutorialsCompleted'], self.__onReceiveAccountStats)
def __init__(self): super(FunctionalBattleChapterInfo, self).__init__() chapter = self._tutorial._data chapterID = chapter.getID() self._progress = [] self._stepMask = -1 progress = chapter.getHasIDEntity(chapterID) if progress is None: LOG_ERROR('Chapter progress not found', chapterID) else: for conditions in progress: func = FunctionalConditions(conditions) ok = func.allConditionsOk() self._progress.append((func, ok)) self._gui.setChapterInfo(chapter.getTitle(), chapter.getDescription()) descriptor = self._tutorial._descriptor chapterIdx = descriptor.getChapterIdx(chapterID) localCtx = BattleClientCtx.fetch().setChapterIdx(chapterIdx) self._gui.setTrainingPeriod(descriptor.getChapterIdx(chapterID), descriptor.getNumberOfChapters()) self._gui.setTrainingProgress(descriptor.getProgress(localCtx.completed))
def triggerEffect(self): exitEntity = self.getTarget() if exitEntity is not None: self.__nextChapter = exitEntity.getNextChapter() if self.__nextChapter is None or not len(self.__nextChapter): self.__nextChapter = self._tutorial._descriptor.getNextChapterID(BattleClientCtx.fetch().completed) if self.__nextChapter is None: LOG_DEBUG('Next chapter not found') self._tutorial._funcScene.setExit(exitEntity) return delay = exitEntity.getNextDelay() if self._tutorial._currentChapter != self.__nextChapter: self._sound.play(SOUND_EVENT.NEXT_CHAPTER) self._sound.goToNextChapter() if delay > 0: self.__finishTime = BigWorld.time() + delay else: self._gui.clear() self._tutorial.goToNextChapter(self.__nextChapter) else: LOG_ERROR('Exit not found', self._effect.getTargetID())
def __init__(self): super(FunctionalBattleChapterInfo, self).__init__() chapter = self._tutorial._data chapterID = chapter.getID() self._progress = [] self._stepMask = -1 progress = chapter.getHasIDEntity(chapterID) if progress is None: LOG_ERROR('Chapter progress not found', chapterID) else: for conditions in progress: func = FunctionalConditions(conditions) ok = func.allConditionsOk() self._progress.append((func, ok)) self._gui.setChapterInfo(chapter.getTitle(), chapter.getDescription()) descriptor = self._descriptor chapterIdx = descriptor.getChapterIdx(chapterID) localCtx = BattleClientCtx.fetch().setChapterIdx(chapterIdx) self._gui.setTrainingPeriod(descriptor.getChapterIdx(chapterID), descriptor.getNumberOfChapters()) self._gui.setTrainingProgress(descriptor.getProgress(localCtx.completed))
def triggerEffect(self): exitEntity = self.getTarget() if exitEntity is not None: self.__nextChapter = exitEntity.getNextChapter() if self.__nextChapter is None or not len(self.__nextChapter): self.__nextChapter = self._descriptor.getNextChapterID(BattleClientCtx.fetch().completed) if self.__nextChapter is None: LOG_DEBUG('Next chapter not found') self._tutorial._funcScene.setExit(exitEntity) return delay = exitEntity.getNextDelay() if self._tutorial._currentChapter != self.__nextChapter: self._sound.play(SOUND_EVENT.NEXT_CHAPTER) self._sound.goToNextChapter() if delay > 0: self.__finishTime = BigWorld.time() + delay else: self._gui.clear() self._tutorial.goToNextChapter(self.__nextChapter) else: LOG_ERROR('Exit not found', self._effect.getTargetID())
def setCompleted(exclude = None): instance = loader.g_loader.tutorial if exclude is None: exclude = [] if instance is not None and not instance._tutorialStopped: descriptor = doc_loader.loadDescriptorData(TUTORIAL_SETTINGS.BATTLE.descriptorPath) if descriptor is not None: clientCtx = BattleClientCtx.fetch() for idx, chapter in enumerate(descriptor): if chapter.hasBonus() and idx not in exclude: clientCtx = clientCtx.addMask(1 << chapter.getBonusID()) clientCtx.setChapterIdx(descriptor.getNumberOfChapters() - 1) arena = getattr(BigWorld.player(), 'arena', None) if arena is not None: BigWorld.player().leaveArena() else: LOG_DEBUG('Tutorial descriptor is invalid.') else: LOG_DEBUG('Tutorial is not running.') return
def __onReceiveAccountStats(self, stats): BattleClientCtx.fetch().setAccCompleted(stats.get('tutorialsCompleted', 0))
def __onReceiveAccountStats(self, stats): BattleClientCtx.fetch().setAccCompleted( stats.get('tutorialsCompleted', 0))
def getCtx(): return BattleClientCtx.fetch()