Some work on being able to set/send a users Buddylist info. (added handling code to LoginResponse).

And as a test each user signing in will get the test account ("Mr OpenSim") as a friend (online/offline status will not currently show up)
afrisby
MW 2007-11-13 10:47:39 +00:00
parent 10b41ba455
commit 7f8a69f181
2 changed files with 67 additions and 1 deletions

View File

@ -28,6 +28,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using libsecondlife;
using Nwc.XmlRpc;
using OpenSim.Framework.Console;
@ -99,6 +100,8 @@ namespace OpenSim.Framework.UserManagement
private string seedCapability;
private string lookAt;
private BuddyList m_buddyList = null;
public LoginResponse()
{
loginFlags = new ArrayList();
@ -291,7 +294,11 @@ namespace OpenSim.Framework.UserManagement
responseData["region_y"] = (Int32) RegionY*256;
//responseData["inventory-lib-root"] = new ArrayList(); // todo
//responseData["buddy-list"] = new ArrayList(); // todo
if (m_buddyList != null)
{
responseData["buddy-list"] = m_buddyList.ToArray();
}
responseData["login"] = "true";
xmlRpcResponse.Value = responseData;
@ -510,6 +517,12 @@ namespace OpenSim.Framework.UserManagement
set { welcomeMessage = value; }
}
public BuddyList BuddList
{
get{return m_buddyList;}
set { m_buddyList = value; }
}
#endregion
public class UserInfo
@ -520,5 +533,54 @@ namespace OpenSim.Framework.UserManagement
public LLVector3 homepos;
public LLVector3 homelookat;
}
public class BuddyList
{
public List<BuddyInfo> Buddies = new List<BuddyInfo>();
public void AddNewBuddy(BuddyInfo buddy)
{
if (!Buddies.Contains(buddy))
{
Buddies.Add(buddy);
}
}
public ArrayList ToArray()
{
ArrayList buddyArray = new ArrayList();
foreach (BuddyInfo buddy in Buddies)
{
buddyArray.Add(buddy.ToHashTable());
}
return buddyArray;
}
public class BuddyInfo
{
public int BuddyRightsHave = 1;
public int BuddyRightsGiven = 1;
public LLUUID BuddyID;
public BuddyInfo(string buddyID)
{
BuddyID = new LLUUID(buddyID);
}
public BuddyInfo(LLUUID buddyID)
{
BuddyID = buddyID;
}
public Hashtable ToHashTable()
{
Hashtable hTable = new Hashtable();
hTable["buddy_rights_has"] = BuddyRightsHave;
hTable["buddy_rights_given"] = BuddyRightsGiven;
hTable["buddy_id"] = BuddyID.ToStringHyphenated();
return hTable;
}
}
}
}
}

View File

@ -131,6 +131,10 @@ namespace OpenSim.Region.Communications.Local
// response.SeedCapability = "http://" + reg.ExternalHostName + ":" + this.serversInfo.HttpListenerPort.ToString() + "/CapsSeed/" + capsPath + "0000/";
theUser.currentAgent.currentRegion = reg.RegionID;
theUser.currentAgent.currentHandle = reg.RegionHandle;
LoginResponse.BuddyList buddyList = new LoginResponse.BuddyList();
buddyList.AddNewBuddy(new LoginResponse.BuddyList.BuddyInfo("11111111-1111-0000-0000-000100bba000"));
response.BuddList = buddyList;
Login _login = new Login();
//copy data to login object