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)