NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

conversationservice.py (6179B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\conversations\conversationswithhighlights\conversationservice.py
      2 from avatardisplay.avatardisplay import AvatarDisplay as ad
      3 from carbon.common.script.sys.service import Service
      4 from conversations.conversationswithhighlights.conversationwithuihighlights import ConversationWithUiHighlights
      5 from conversations.conversationswithhighlights.highlightscontroller import ConversationHighlightsController
      6 from conversations.conversationcontroller import ConversationController, BaseConversationManager
      7 from conversations.fsdloaders import ConversationsLoader
      8 
      9 class ConversationService(Service):
     10     __guid__ = 'svc.ConversationService'
     11     serviceName = 'svc.ConversationService'
     12     __displayname__ = 'ConversationService'
     13     __servicename__ = 'ConversationService'
     14     __notifyevents__ = ['OnStartConversation', 'OnSessionReset']
     15 
     16     def Run(self, *args, **kwargs):
     17         conversation_manager = ConversationManager()
     18         self.conversation_controller = ConversationController(conversation_manager)
     19         self.show_conversation = self.conversation_controller.show_conversation
     20         self.hide_conversation = self.conversation_controller.hide_conversation
     21         self.force_hiding_active_conversation = self.conversation_controller.force_hiding_active_conversation
     22         self.notify_of_conversation_start = self.conversation_controller.notify_of_conversation_start
     23         self.notify_of_conversation_minimized = self.conversation_controller.notify_of_conversation_minimized
     24         self.notify_of_conversation_maximized = self.conversation_controller.notify_of_conversation_maximized
     25         self.clear_conversation = self.conversation_controller.clear_conversation
     26         self.get_active_conversation_id = self.conversation_controller.get_active_conversation_id
     27         self.are_any_conversation_lines_left = self.conversation_controller.are_any_conversation_lines_left
     28         self.get_next_conversation_line = self.conversation_controller.get_next_conversation_line
     29         self.are_any_previous_conversation_lines_available = self.conversation_controller.are_any_previous_conversation_lines_available
     30         self.get_previous_conversation_line = self.conversation_controller.get_previous_conversation_line
     31         self.get_active_conversation_line = self.conversation_controller.get_active_conversation_line
     32         self.get_agent = self.conversation_controller.get_agent
     33         self.get_line_hint_image = self.conversation_controller.get_line_hint_image
     34         self.get_play_event = self.conversation_controller.get_play_event
     35         self.get_stop_event = self.conversation_controller.get_stop_event
     36         self.is_conversation_active = self.conversation_controller.is_conversation_active
     37         self.get_music_trigger = self.conversation_controller.get_music_trigger
     38         self.preload_air_npe_agents = self.conversation_controller.preload_air_npe_agents
     39         self.preload_agent = self.conversation_controller.preload_agent
     40         self.highlights_controller = ConversationHighlightsController(conversation_service=self)
     41         Service.Run(self, *args, **kwargs)
     42 
     43     def get_active_ui_highlights_by_conversation_id(self, conversation_id):
     44         ui_highlights = []
     45         active_conversation_line = self.conversation_controller.get_active_conversation_line()
     46         if active_conversation_line:
     47             try:
     48                 ui_highlights = active_conversation_line.ui_highlights
     49             except AttributeError:
     50                 self.LogError('Failed to get UI highlights for conversation wth id: %s' % conversation_id)
     51 
     52         return ui_highlights
     53 
     54     def get_active_space_object_highlights_by_conversation_id(self, conversation_id):
     55         space_object_highlights = []
     56         active_conversation_line = self.conversation_controller.get_active_conversation_line()
     57         if active_conversation_line:
     58             try:
     59                 space_object_highlights = active_conversation_line.space_object_highlights
     60             except AttributeError:
     61                 self.LogError('Failed to get space object highlights for conversation wth id: %s' % conversation_id)
     62 
     63         return space_object_highlights
     64 
     65     def get_active_menu_highlights_by_conversation_id(self, conversation_id):
     66         menu_highlights = []
     67         active_conversation_line = self.conversation_controller.get_active_conversation_line()
     68         if active_conversation_line:
     69             try:
     70                 menu_highlights = active_conversation_line.menu_highlights
     71             except AttributeError:
     72                 self.LogError('Failed to get menu highlights for conversation wth id: %s' % conversation_id)
     73 
     74         return menu_highlights
     75 
     76     def get_active_ui_blinks_by_conversation_id(self, conversation_id):
     77         ui_blinks = []
     78         active_conversation_line = self.conversation_controller.get_active_conversation_line()
     79         if active_conversation_line:
     80             try:
     81                 ui_blinks = active_conversation_line.ui_blinks
     82             except AttributeError:
     83                 self.LogError('Failed to get UI blinks for conversation wth id: %s' % conversation_id)
     84 
     85         return ui_blinks
     86 
     87     def OnStartConversation(self, conversation_id, show_continue_button):
     88         self.show_conversation(conversation_id, show_continue_button=show_continue_button, should_close_on_continue=True)
     89 
     90     def OnSessionReset(self):
     91         import logging
     92         logging.info('Conversation Manager:  OnSessionReset triggered.')
     93         self.conversation_controller._are_air_npe_agents_preloaded = False
     94         self.conversation_controller._agents_preloaded = set()
     95         ad.ClearAvatarDisplayGlobals()
     96 
     97 
     98 class ConversationManager(BaseConversationManager):
     99 
    100     def get_conversation(self, conversation_id, variables = None):
    101         conversation = ConversationsLoader.GetByID(conversation_id)
    102         if conversation is None:
    103             raise ValueError('No conversation found with id {id}'.format(id=conversation_id))
    104         name = conversation.name
    105         lines = conversation.lines
    106         return ConversationWithUiHighlights(conversation_id, name, lines, variables)