def test_interaction( sim_info: SimInfo, interaction_id: int, social_super_interaction_id: int=None, target: Any=None, interaction_context: InteractionContext=None, **kwargs ) -> TestResult: """test_interaction(\ sim_info,\ interaction_id,\ social_super_interaction_id=None,\ target=None,\ interaction_context,\ skip_if_running=False,\ **kwargs\ ) Test to see if an Interaction can be pushed into the queue of a Sim. :param sim_info: An instance of a Sim. :type sim_info: SimInfo :param interaction_id: The decimal identifier of an interaction. :type interaction_id: int :param social_super_interaction_id: The decimal identifier of a social super interaction to queue the interaction under. Default is None :type social_super_interaction_id: int, optional :param target: The target of the interaction. Default is None. :type target: Any, optional :param interaction_context: The context to queue the interaction with. See also :func:`~create_interaction_context`. Default is None. :type interaction_context: InteractionContext, optional :return: The result of testing a push of the interaction to the queue of a Sim. :rtype: TestResult """ sim = CommonSimUtils.get_sim_instance(sim_info) if sim is None or sim.si_state is None or sim.queue is None or sim.posture_state is None or sim.posture is None: return TestResult.NONE interaction_instance = CommonInteractionUtils._load_interaction_instance(interaction_id) if interaction_instance is None: return TestResult.NONE interaction_context = interaction_context or CommonSimInteractionUtils.create_interaction_context( sim_info, insert_strategy=QueueInsertStrategy.LAST ) if CommonInteractionUtils.is_super_interaction(interaction_instance): return CommonSimInteractionUtils.test_super_interaction( sim_info, interaction_id, target=target, interaction_context=interaction_context, **kwargs ) if CommonInteractionUtils.is_social_mixer_interaction(interaction_instance): return CommonSimInteractionUtils.test_social_mixer_interaction( sim_info, interaction_id, social_super_interaction_id, target=target, interaction_context=interaction_context, **kwargs ) return CommonSimInteractionUtils.test_mixer_interaction( sim_info, interaction_id, target=target, interaction_context=interaction_context )
def queue_interaction( sim_info: SimInfo, interaction_id: int, social_super_interaction_id: int=None, target: Any=None, interaction_context: InteractionContext=None, skip_if_running: bool=False, **kwargs ) -> EnqueueResult: """queue_interaction(\ sim_info,\ interaction_id,\ social_super_interaction_id=None,\ target=None,\ interaction_context,\ skip_if_running=False,\ **kwargs\ ) Push an Interaction into the queue of a Sim. :param sim_info: An instance of a Sim. :type sim_info: SimInfo :param interaction_id: The decimal identifier of an interaction. :type interaction_id: int :param social_super_interaction_id: The decimal identifier of a social super interaction to queue the interaction under. Default is None :type social_super_interaction_id: int, optional :param target: The target of the interaction. Default is None. :type target: Any, optional :param interaction_context: The context to queue the interaction with. See also :func:`~create_interaction_context`. Default is None. :type interaction_context: InteractionContext, optional :param skip_if_running: If True, the interaction will not be queued, if it is already queued or running. If False, the interaction will be queued, even if it is already queued or running. :return: The result of pushing the interaction to the queue of a Sim. :rtype: EnqueueResult """ sim = CommonSimUtils.get_sim_instance(sim_info) if sim is None or sim.si_state is None or sim.queue is None or sim.posture_state is None or sim.posture is None: return EnqueueResult.NONE interaction_instance = CommonInteractionUtils._load_interaction_instance(interaction_id) if interaction_instance is None: return EnqueueResult.NONE if skip_if_running and CommonSimInteractionUtils.has_interaction_running_or_queued(sim_info, interaction_id): return EnqueueResult.NONE interaction_context = interaction_context or CommonSimInteractionUtils.create_interaction_context( sim_info, insert_strategy=QueueInsertStrategy.LAST ) if CommonInteractionUtils.is_super_interaction(interaction_instance): return CommonSimInteractionUtils.queue_super_interaction( sim_info, interaction_id, target=target, interaction_context=interaction_context, **kwargs ) if CommonInteractionUtils.is_social_mixer_interaction(interaction_instance): return CommonSimInteractionUtils.queue_social_mixer_interaction( sim_info, interaction_id, social_super_interaction_id, target=target, interaction_context=interaction_context, **kwargs ) return CommonSimInteractionUtils.queue_mixer_interaction( sim_info, interaction_id, target=target, interaction_context=interaction_context )