public void ChangeFriendSlotAssigned(uint ID, byte[] ClientHash, ushort Port, bool assigned) { int index = m_FindFriend(ID, ClientHash, Port); if (index >= 0) { SFriend Friend = (SFriend)List[index]; Friend.FriendSlot = assigned; CClient client = CKernel.ClientsList.GetClient(Friend.ID, Friend.Port, Friend.ServerIP, Friend.UserHash); List[index] = Friend; if (client != null) { Constants.FriendLevel friendLevel; if (assigned) { friendLevel = Constants.FriendLevel.FriendSlot; } else { friendLevel = Constants.FriendLevel.Friend; } client.FriendStatus = friendLevel; } this.Save(); } }
private bool SetValueFromXmlElement(XmlElement element) { try { XmlNodeList nodes = element.ChildNodes; foreach (XmlElement el in nodes) { if (el.Name == "Friend") { SFriend my_Friend = new SFriend(); my_Friend.FriendSlot = false; //load Friend.UserHash if (el.Attributes["UserHash"].InnerText != "") { byte[] x = null; switch (_currentversion) { case "0.1": x = new byte[el.Attributes["UserHash"].InnerText.Length]; x = Encoding.Default.GetBytes(el.Attributes["UserHash"].InnerText); break; case "0.2": x = Convert.FromBase64String(el.Attributes["UserHash"].InnerText); break; } my_Friend.UserHash = (byte[])x; } else { my_Friend.UserHash = null; } //load Friend.ID my_Friend.ID = uint.Parse(el.Attributes["ID"].InnerText); //load Friend.OurName my_Friend.OurName = el.Attributes["OurName"].InnerText; //load Friend.Name my_Friend.Name = el.Attributes["Name"].InnerText; //load Friend.Port my_Friend.Port = ushort.Parse(el.Attributes["Port"].InnerText); //load Friend.Software my_Friend.Software = el.Attributes["Software"].InnerText; //load Friend.Version my_Friend.Version = uint.Parse(el.Attributes["Version"].InnerText); //load Friend.LastOnline my_Friend.LastOnline = new DateTime(long.Parse(el.Attributes["LastOnline"].InnerText)); //load friendSlot if (el.Attributes["FriendSlot"] != null) { my_Friend.FriendSlot = bool.Parse(el.Attributes["FriendSlot"].InnerText); } List.Add(my_Friend); Constants.FriendLevel friendSlot; if (my_Friend.FriendSlot) { friendSlot = Constants.FriendLevel.FriendSlot; } else { friendSlot = Constants.FriendLevel.Friend; } CKernel.ClientsList.AddClient(my_Friend.ID, my_Friend.Port, 0, my_Friend.UserHash, my_Friend.Port, null, friendSlot); //switch ( el.Attributes["type"].InnerText ) } } } catch { CLog.Log(Constants.Log.Info, "Error loading friends list"); return(false); } return(true); }
private XmlElement ToXmlElement(XmlDocument doc) { XmlElement friendsnode = doc.CreateElement("Friends"); for (int n = 0; n < List.Count; n++) { SFriend my_Friend = (SFriend)List[n]; XmlElement el = doc.CreateElement("Friend"); //save Friend.UserHash XmlAttribute key = doc.CreateAttribute("UserHash"); if (my_Friend.UserHash != null) { switch (_version) { case "0.1": key.InnerText = Encoding.Default.GetString((byte[])my_Friend.UserHash); break; case "0.2": key.InnerText = Convert.ToBase64String((byte[])my_Friend.UserHash); break; } } else { key.InnerText = ""; } el.Attributes.Append(key); //save Friend.ID key = doc.CreateAttribute("ID"); key.InnerText = my_Friend.ID.ToString(); el.Attributes.Append(key); //save Friend.OurName key = doc.CreateAttribute("OurName"); key.InnerText = my_Friend.OurName; el.Attributes.Append(key); //save Friend.Name key = doc.CreateAttribute("Name"); key.InnerText = my_Friend.Name; el.Attributes.Append(key); //save Friend.Port key = doc.CreateAttribute("Port"); key.InnerText = my_Friend.Port.ToString(); el.Attributes.Append(key); //save Friend.Software key = doc.CreateAttribute("Software"); key.InnerText = my_Friend.Software; el.Attributes.Append(key); //save Friend.Version key = doc.CreateAttribute("Version"); key.InnerText = my_Friend.Version.ToString(); el.Attributes.Append(key); //save Friend.LastOnline key = doc.CreateAttribute("LastOnline"); key.InnerText = ((long)my_Friend.LastOnline.Ticks).ToString(); el.Attributes.Append(key); //save Friend.FriendSlot key = doc.CreateAttribute("FriendSlot"); key.InnerText = my_Friend.FriendSlot.ToString(); el.Attributes.Append(key); friendsnode.AppendChild(el); } return(friendsnode); }
public void Add(uint ID, ushort Port, uint ServerIP, byte[] ClientHash, ushort ServerPort, string OurName, string Name, string Software, uint Version) { int index = m_FindFriend(ID, ClientHash, Port); Constants.FriendLevel friendLevel; if (index >= 0) { SFriend Friend = (SFriend)List[index]; if (OurName != "") { Friend.OurName = OurName; } Friend.Name = Name; Friend.ID = ID; Friend.Port = Port; if (ServerIP != 0) { Friend.ServerIP = ServerIP; } if (ServerPort != 0) { Friend.ServerPort = ServerPort; } Friend.LastOnline = DateTime.Now; if (Software != null) { Friend.Software = Software; } if (Version != 0) { Friend.Version = Version; } if (ClientHash != null) { Friend.UserHash = ClientHash; } List[index] = Friend; // Friend.FriendSlot=friendSlot; // CClient client=CKernel.ClientsList.GetClient(Friend.ID,Friend.Port,Friend.ServerIP,Friend.UserHash); // if (client!=null) // { // if (Friend.FriendSlot) // friendLevel=Constants.FriendLevel.FriendSlot; // else // friendLevel=Constants.FriendLevel.Friend; // client.FriendStatus=friendLevel; // } } else { SFriend Friend = new SFriend(); Friend.OurName = OurName; Friend.Name = Name; Friend.UserHash = ClientHash; Friend.ID = ID; Friend.Port = Port; Friend.ServerPort = ServerPort; Friend.ServerIP = ServerIP; Friend.LastOnline = DateTime.Now; Friend.Software = Software; Friend.Version = Version; Friend.FriendSlot = false; List.Add(Friend); friendLevel = Constants.FriendLevel.Friend; CKernel.ClientsList.AddClient(Friend.ID, Friend.Port, 0, Friend.UserHash, Friend.Port, null, friendLevel); } this.Save(); }