/* Thor Server Project Copyright 2008 Joe Hegarty This file is part of The Thor Server Project. The Thor Server Project is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. The Thor Server Project is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with The Thor Server Project. If not, see . */ using System; using System.Collections.Generic; using System.Linq; using System.Text; using ThorServer.Core; using ThorServer.Utilities; using ThorServer.Game.Users; namespace ThorServer.Game.Messenger { public class MessengerReactor : Reactor { //12 - "MESSENGERINIT": "@L" public void Listener12() { mMessage.Init(12); //L SendMessage(mMessage); List frs = InstanceManager.Game.Messenger.GetRequests(mUserInfo.userId); if (frs != null) { foreach (MessengerManager.MessengerBuddy buddy in frs) { int userId = buddy.User1; UserInfo user = InstanceManager.Game.Users.GetUser(userId); mMessage.Init(132); //BD mMessage.appendArgumentInt(user.userId); mMessage.appendString(user.sUsername); mMessage.appendChar(2); SendMessage(mMessage); } } } //15 - "MESSENGER_UPDATE": "@O" public void Listener15() { string response = InstanceManager.Game.Messenger.BuildBuddyList(mUserInfo.userId); if (response != null) { SendMessage(response); } } //37 - "MESSENGER_ACCEPTBUDDY": "@e" public void Listener37() { int userid = ArgumentEncoding.decodeInt(mPacketBody); InstanceManager.Game.Messenger.AcceptBuddy(mUserInfo.userId, userid); Listener15(); } //38 - "MESSENGER_DECLINEBUDDY": "@f" public void Listener38() { if (ArgumentEncoding.decodeInt(mPacketBody.Substring(1)) == 0) { InstanceManager.Game.Messenger.RejectAllBuddys(mUserInfo.userId); } else { int userid = ArgumentEncoding.decodeInt(mPacketBody.Substring(1)); InstanceManager.Game.Messenger.RejectBuddy(mUserInfo.userId, userid); } } //39 - "MESSENGER_REQUESTBUDDY": "@g" public void Listener39() { string username = FuseMessage.getArgument(1, mPacketBody); if (InstanceManager.Game.Users.UserExists(username)) { UserInfo user = InstanceManager.Game.Users.GetUser(username); if (InstanceManager.Game.Messenger.GetBuddy(mUserInfo.userId, user.userId) == null) { InstanceManager.Game.Messenger.AddBuddy(mUserInfo.userId, user.userId); if (InstanceManager.Sessions.GetSessionFromUser(user.userId) != -1) { mMessage.Init(132); //BD mMessage.appendArgumentInt(mUserInfo.userId); mMessage.appendString(mUserInfo.sUsername); mMessage.appendChar(2); InstanceManager.Sessions.GetSession(InstanceManager.Sessions.GetSessionFromUser(user.userId)).SendMessage(mMessage); } } } } //40 - "MESSENGER_REMOVEBUDDY": "@h" public void Listener40() { int userid = ArgumentEncoding.decodeInt(mPacketBody.Substring(1)); InstanceManager.Game.Messenger.DeleteBuddy(mUserInfo.userId, userid); mMessage.Init(138); //BJ mMessage.appendArgumentInt(1); mMessage.appendArgumentInt(userid); SendMessage(mMessage); } //41 - "FINDUSER": "@i" public void Listener41() { string username = FuseMessage.getArgument(1, mPacketBody); string response = InstanceManager.Game.Messenger.BuildSearchResponse(username); if (response != null) { SendMessage(response); } } } }