private void ExecuteInteraction(ActorInteractionType type, string target, ActionSpecial special, ActionInvokerData data) { switch (type) { case ActorInteractionType.None: break; //do nothing case ActorInteractionType.Special: special.Execute(data); break; case ActorInteractionType.AmbientMonologue: string msg = DialogueModule.GetMonologue(target).GetLineRandom(); //VERY inefficient, will fix later //QdmsMessageBus.Instance.PushBroadcast(new HUDPushMessage(msg));//also a very temporary display QdmsMessageBus.Instance.PushBroadcast(new SubtitleMessage(msg, 5.0f, true, -1)); //and we need to rework Monologue and implement an audio manager before we can do speech break; case ActorInteractionType.Dialogue: DialogueInitiator.InitiateDialogue(target, true, null); break; case ActorInteractionType.Script: ScriptingModule.Call(target, new ScriptExecutionContext() { Caller = this, Activator = data.Activator.gameObject }, new object[] { }); break; default: throw new NotImplementedException(); } }