/// <summary> /// Perform an emote /// </summary> /// <param name="message"></param> /// <param name="origin">Item that initiated request</param> /// <param name="mm">Module manager</param> /// <param name="response"></param> public IResponse HandlePerformEmoteRequest( IMessage message, Item origin, IModuleManager mm, IResponse response) { var request = message.GetMessageAsType <WorldPerformEmoteRequest>(); response = HandleRequestWrapper <WorldPerformEmoteResponse>(request, res => { var messageManager = mm.GetManager <IMessageManager>(); var itemManager = mm.GetManager <IItemManager>(); var location = itemManager.Read(origin.ParentId.Value); var emoteEvent = new WorldEmoteEvent() { Origin = origin, EmoteType = request.EmoteType, Destination = null }; messageManager.SendMessage(emoteEvent, location.Children, origin); ((WorldPerformEmoteResponse)res).EmoteEvent = emoteEvent; res.SetSuccess(true); }); return(response); }
/// <summary> /// Constructor /// </summary> /// <param name="moduleManager"></param> public BotEmote(IModuleManager moduleManager) { ModuleManager = moduleManager; Definition = new JavascriptFunctionDefinition() { Global = true, Prototype = "void botEmote(int emoteType, string message = null)", Description = "Send out emote from current item. 100 = Smile, 200 = Frown, 300 = Speak, 400 = Raw.", Example = @"botEmote(300, ""Hello World"");" }; ModuleManager.ModuleManagerReadyEvent += () => { ModuleManager.GetManager <IJavascriptItemDataManager>().AddFunctionDefinition(Definition); var jsEngine = ModuleManager.GetManager <IJavascriptItemDataManager>().GetJSEngine(); Action <int, string> botEmote = (type, parameter) => { Item item = (Item)jsEngine.GetValue("me").ToObject(); IMessage emote = new WorldEmoteEvent() { Origin = item, EmoteType = (WorldEmoteType)type, Parameter = parameter }; ModuleManager.GetManager <IMessageManager>().SendMessageToSiblings(new List <IMessage>() { emote }, item, item); }; jsEngine.SetValue("botEmote", botEmote); }; }