예제 #1
0
        /// <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);
        }
예제 #2
0
 /// <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);
     };
 }