namespace Holo.Virtual.Users.Messenger { using Holo; using Holo.Managers; using Holo.Virtual.Users; using System; using System.Collections; using System.Text; internal class virtualMessenger { private Hashtable Buddies; private int userID; internal virtualMessenger(int userID) { this.userID = userID; this.Buddies = new Hashtable(); } internal void addBuddy(virtualBuddy Buddy, bool Update) { if (!this.Buddies.ContainsKey(Buddy.userID)) { this.Buddies.Add(Buddy.userID, Buddy); } if (Update) { this.User.sendData("@MHII" + Buddy.ToString(true)); } } internal void Clear() { } internal bool containsOnlineBuddy(int userID) { if (!this.Buddies.ContainsKey(userID)) { return false; } return userManager.containsUser(userID); } internal string friendList() { int[] numArray = userManager.getUserFriendIDs(this.userID); StringBuilder builder = new StringBuilder(Holo.Encoding.encodeVL64(200) + Holo.Encoding.encodeVL64(200) + Holo.Encoding.encodeVL64(600) + "H" + Holo.Encoding.encodeVL64(numArray.Length)); virtualBuddy buddy = new virtualBuddy(this.userID); for (int i = 0; i < numArray.Length; i++) { virtualBuddy buddy2 = new virtualBuddy(numArray[i]); try { if (buddy2.Online) { userManager.getUser(numArray[i]).Messenger.addBuddy(buddy, true); } } catch { } this.Buddies.Add(numArray[i], buddy2); builder.Append(buddy2.ToString(true)); } builder.Append(Holo.Encoding.encodeVL64(200) + "H"); return builder.ToString(); } internal string friendRequests() { int[] numArray = DB.runReadColumn("SELECT userid_from FROM messenger_friendrequests WHERE userid_to = '" + this.userID + "' ORDER by requestid ASC", 0, null); StringBuilder builder = new StringBuilder(Holo.Encoding.encodeVL64(numArray.Length) + Holo.Encoding.encodeVL64(numArray.Length)); if (numArray.Length > 0) { int[] numArray2 = DB.runReadColumn("SELECT requestid FROM messenger_friendrequests WHERE userid_to = '" + this.userID + "' ORDER BY requestid ASC", 0, null); for (int i = 0; i < numArray.Length; i++) { builder.Append(string.Concat(new object[] { Holo.Encoding.encodeVL64(numArray2[i]), DB.runRead("SELECT name FROM users WHERE id = '" + numArray[i] + "'"), Convert.ToChar(2), numArray[i], Convert.ToChar(2) })); } } return builder.ToString(); } internal string getUpdates() { int i = 0; StringBuilder builder = new StringBuilder(); try { foreach (virtualBuddy buddy in this.Buddies.Values) { if (buddy.Updated) { i++; builder.Append("H" + buddy.ToString(false)); } } return ("H" + Holo.Encoding.encodeVL64(i) + builder.ToString()); } catch { return "HH"; } } internal bool hasFriendRequests(int userID) { return DB.checkExists(string.Concat(new object[] { "SELECT requestid FROM messenger_friendrequests WHERE (userid_to = '", this.userID, "' AND userid_from = '", userID, "') OR (userid_to = '", userID, "' AND userid_from = '", this.userID, "')" })); } internal bool hasFriendship(int userID) { return this.Buddies.ContainsKey(userID); } internal void removeBuddy(int ID) { this.User.sendData("@MHIM" + Holo.Encoding.encodeVL64(ID)); if (this.Buddies.Contains(ID)) { this.Buddies.Remove(ID); } } internal virtualUser User { get { return userManager.getUser(this.userID); } } } }