/// <summary> /// Serializes the update. /// </summary> /// <param name="friend">The friend.</param> /// <returns>ServerMessage.</returns> internal ServerMessage SerializeUpdate(MessengerBuddy friend) { var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("FriendUpdateMessageComposer")); serverMessage.AppendInteger(0); serverMessage.AppendInteger(1); serverMessage.AppendInteger(0); friend.Serialize(serverMessage, GetClient()); serverMessage.AppendBool(false); return serverMessage; }
/// <summary> /// Called when [new friendship]. /// </summary> /// <param name="friendId">The friend identifier.</param> internal void OnNewFriendship(uint friendId) { var clientByUserId = AzureEmulator.GetGame().GetClientManager().GetClientByUserId(friendId); MessengerBuddy messengerBuddy; if (clientByUserId == null || clientByUserId.GetHabbo() == null) { DataRow row; using (var queryReactor = AzureEmulator.GetDatabaseManager().GetQueryReactor()) { queryReactor.SetQuery( string.Format( "SELECT id,username,motto,look,last_online,hide_inroom,hide_online FROM users WHERE id = {0}", friendId)); row = queryReactor.GetRow(); } messengerBuddy = new MessengerBuddy(friendId, (string)row["Username"], (string)row["look"], (string)row["motto"], (int)row["last_online"], AzureEmulator.EnumToBool(row["hide_online"].ToString()), AzureEmulator.EnumToBool(row["hide_inroom"].ToString())); } else { var habbo = clientByUserId.GetHabbo(); messengerBuddy = new MessengerBuddy(friendId, habbo.UserName, habbo.Look, habbo.Motto, 0, habbo.AppearOffline, habbo.HideInRoom); messengerBuddy.UpdateUser(); } if (!Friends.ContainsKey(friendId)) Friends.Add(friendId, messengerBuddy); GetClient().SendMessage(SerializeUpdate(messengerBuddy)); }