示例#1
0
 def run(self, settingsID, state=None):
     settings = self.__settings.getSettings(settingsID)
     if settings is None:
         _logger.error('Can not find settings: %r', settingsID)
         return False
     else:
         if state is None:
             state = {}
         reloadIfRun = state.pop('reloadIfRun', False)
         restoreIfRun = state.pop('restoreIfRun', False)
         isStopForced = state.pop('isStopForced', False)
         if self.__tutorial is not None and not self.__tutorial.isStopped():
             isCurrent = self.__tutorial.getID() == settings.id
             if reloadIfRun and isCurrent:
                 if isStopForced:
                     self.__doStop()
                 else:
                     GlobalStorage.setFlags(state.get('globalFlags', {}))
                     _logger.debug('invalidateFlags from TutorialLoader.run')
                     self.__tutorial.invalidateFlags()
                     return True
             elif restoreIfRun and not isCurrent:
                 self.__restoreID = self.__tutorial.getID()
                 self.__doStop()
             else:
                 _logger.error('Tutorial already is running: %r', self.__tutorial.getID())
                 return False
         state.setdefault('isAfterBattle', self.__afterBattle)
         state.setdefault('restart', True)
         state['byRequest'] = True
         result = self.__doRun(settings, state)
         if not result:
             self.__restoreID = None
         return result
示例#2
0
 def run(self, dispatcher, ctx):
     self._cache = ctx.cache
     if self._cache is None:
         LOG_ERROR('Cache is not init.')
         return False
     else:
         self._bonuses = self._ctrlFactory.createBonuses(ctx.bonusCompleted)
         self._sound = self._ctrlFactory.createSoundPlayer()
         GlobalStorage.setFlags(ctx.globalFlags)
         if not self._stopped:
             LOG_ERROR('Tutorial is already running.')
             return False
         self._gui = createTutorialElement(self._settings.gui)
         self._gui.setDispatcher(dispatcher)
         self._gui.onGUILoaded += self.__onGUILoaded
         if not self._gui.init():
             self._gui.onGUILoaded -= self.__onGUILoaded
             self._gui.setDispatcher(None)
             LOG_ERROR('GUI can not init. Tutorial is stopping.')
             return False
         LOG_DEBUG('Start training', ctx)
         self._stopped = False
         proxy = weakref.proxy(self)
         setTutorialProxy(proxy)
         if self.__resolveInitialChapter(ctx):
             self._gui.loadConfig(self._descriptor.getGuiFilePath())
             self._gui.onGUIInput += self.__onGUIInput
             self._gui.onPageChanging += self.__onPageChanging
             self._gui.onItemFound += self.__onItemFound
             self._gui.onItemLost += self.__onItemLost
             self.__tryRunFirstState(INITIAL_FLAG.CHAPTER_RESOLVED)
         self.onStarted()
         return True
示例#3
0
 def run(self, dispatcher, ctx):
     self._cache = ctx.cache
     if self._cache is None:
         LOG_ERROR('Cache is not init.')
         return False
     self._bonuses = self._ctrlFactory.createBonuses(ctx.bonusCompleted)
     self._sound = self._ctrlFactory.createSoundPlayer()
     GlobalStorage.setFlags(ctx.globalFlags)
     if not self._stopped:
         LOG_ERROR('Tutorial is already running.')
         return False
     self._gui = createTutorialElement(self._settings.gui)
     self._gui.setDispatcher(dispatcher)
     self._gui.onGUILoaded += self.__onGUILoaded
     if not self._gui.init():
         self._gui.onGUILoaded -= self.__onGUILoaded
         self._gui.setDispatcher(None)
         LOG_ERROR('GUI can not init. Tutorial is stopping.')
         return False
     LOG_DEBUG('Start training', ctx)
     self._stopped = False
     proxy = weakref.proxy(self)
     setTutorialProxy(proxy)
     if self.__resolveInitialChapter(ctx):
         self._gui.loadConfig(self._descriptor.getGuiFilePath())
         self._gui.onGUIInput += self.__onGUIInput
         self._gui.onPageChanging += self.__onPageChanging
         self._gui.onItemFound += self.__onItemFound
         self._gui.onItemLost += self.__onItemLost
         self.__tryRunFirstState(INITIAL_FLAG.CHAPTER_RESOLVED)
     self.onStarted()
     return True
示例#4
0
 def run(self, settingsID, state = None):
     """
     Try to run tutorial.
     
     :param settingsID: string containing settings ID of required tutorial.
     :param state: dict(
                     reloadIfRun : bool - just reload tutorial if it's running,
                     afterBattle : bool - tutorial should load scenario that is played
                             when player left battle,
                     initialChapter : str - name of initial chapter,
                     restoreIfRun: bool - current tutorial will be started again
                             if required tutorial stop.
                     globalFlags : dict(GLOBAL_FLAG.* : bool,)
             )
     :return: True if tutorial has started, otherwise - False.
     """
     settings = self.__settings.getSettings(settingsID)
     if settings is None:
         LOG_ERROR('Can not find settings', settingsID)
         return False
     else:
         if state is None:
             state = {}
         reloadIfRun = state.pop('reloadIfRun', False)
         restoreIfRun = state.pop('restoreIfRun', False)
         isStopForced = state.pop('isStopForced', False)
         if self.__tutorial is not None and not self.__tutorial.isStopped():
             isCurrent = self.__tutorial.getID() == settings.id
             if reloadIfRun and isCurrent:
                 if isStopForced:
                     self.__doStop()
                 else:
                     GlobalStorage.setFlags(state.get('globalFlags', {}))
                     self.__tutorial.invalidateFlags()
                     return True
             elif restoreIfRun and not isCurrent:
                 self.__restoreID = self.__tutorial.getID()
                 self.__doStop()
             else:
                 LOG_ERROR('Tutorial already is running', self.__tutorial.getID())
                 return False
         if self.__dispatcher is None:
             self.__setDispatcher(settings.dispatcher)
         cache = _cache.TutorialCache(BigWorld.player().name)
         cache.read()
         state.setdefault('isAfterBattle', self.__afterBattle)
         state.setdefault('restart', True)
         result = self.__doRun(settings, RunCtx(cache, **state), byRequest=True)
         if not result:
             self.__restoreID = None
         return result
示例#5
0
 def run(self, settingsID, state=None):
     """
     Try to run tutorial.
     
     :param settingsID: string containing settings ID of required tutorial.
     :param state: dict(
             reloadIfRun : bool - just reload tutorial if it's running,
             afterBattle : bool - tutorial should load scenario that is played
                 when player left battle,
             initialChapter : str - name of initial chapter,
             restoreIfRun: bool - current tutorial will be started again
                 if required tutorial stop.
             globalFlags : dict(GLOBAL_FLAG.* : bool,)
         )
     :return: True if tutorial has started, otherwise - False.
     """
     settings = self.__settings.getSettings(settingsID)
     if settings is None:
         LOG_ERROR('Can not find settings', settingsID)
         return False
     else:
         if state is None:
             state = {}
         reloadIfRun = state.pop('reloadIfRun', False)
         restoreIfRun = state.pop('restoreIfRun', False)
         isStopForced = state.pop('isStopForced', False)
         if self.__tutorial is not None and not self.__tutorial.isStopped():
             isCurrent = self.__tutorial.getID() == settings.id
             if reloadIfRun and isCurrent:
                 if isStopForced:
                     self.__doStop()
                 else:
                     GlobalStorage.setFlags(state.get('globalFlags', {}))
                     self.__tutorial.invalidateFlags()
                     return True
             elif restoreIfRun and not isCurrent:
                 self.__restoreID = self.__tutorial.getID()
                 self.__doStop()
             else:
                 LOG_ERROR('Tutorial already is running',
                           self.__tutorial.getID())
                 return False
         state.setdefault('isAfterBattle', self.__afterBattle)
         state.setdefault('restart', True)
         state['byRequest'] = True
         result = self.__doRun(settings, state)
         if not result:
             self.__restoreID = None
         return result