Implements 80% of object buy (prim vendor). You can't buy the object yet,

and the for sale setting doesn't survive a sim restart, but this is most
of the plumbing.
This commit is contained in:
Melanie Thielker
2008-08-24 00:51:21 +00:00
parent 89f2148f56
commit 63b6ab467a
7 changed files with 125 additions and 5 deletions

View File

@@ -233,6 +233,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private ScriptAnswer handlerScriptAnswer = null;
private RequestPayPrice handlerRequestPayPrice = null;
private ObjectSaleInfo handlerObjectSaleInfo = null;
private ObjectBuy handlerObjectBuy = null;
private BuyObjectInventory handlerBuyObjectInventory = null;
private ObjectDeselect handlerObjectDetach = null;
private AgentSit handlerOnUndo = null;
@@ -905,6 +908,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public event UUIDNameRequest OnUUIDGroupNameRequest;
public event ScriptAnswer OnScriptAnswer;
public event RequestPayPrice OnRequestPayPrice;
public event ObjectSaleInfo OnObjectSaleInfo;
public event ObjectBuy OnObjectBuy;
public event BuyObjectInventory OnBuyObjectInventory;
public event AgentSit OnUndo;
public event ForceReleaseControls OnForceReleaseControls;
public event GodLandStatRequest OnLandStatRequest;
@@ -2523,7 +2529,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
LLUUID GroupUUID, short InventorySerial, LLUUID LastOwnerUUID, LLUUID ObjectUUID,
LLUUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName,
string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask,
uint BaseMask)
uint BaseMask, byte saleType, int salePrice)
{
ObjectPropertiesPacket proper = (ObjectPropertiesPacket)PacketPool.Instance.GetPacket(PacketType.ObjectProperties);
// TODO: don't create new blocks if recycling an old packet
@@ -2556,6 +2562,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// proper.ObjectData[0].AggregatePerms = 53;
// proper.ObjectData[0].AggregatePermTextures = 0;
// proper.ObjectData[0].AggregatePermTexturesOwner = 0;
proper.ObjectData[0].SaleType = saleType;
proper.ObjectData[0].SalePrice = salePrice;
proper.Header.Zerocoded = true;
OutPacket(proper, ThrottleOutPacketType.Task);
}
@@ -5864,6 +5872,45 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
break;
case PacketType.ObjectSaleInfo:
ObjectSaleInfoPacket objectSaleInfoPacket = (ObjectSaleInfoPacket)Pack;
handlerObjectSaleInfo = OnObjectSaleInfo;
if (handlerObjectSaleInfo != null)
{
foreach (ObjectSaleInfoPacket.ObjectDataBlock d
in objectSaleInfoPacket.ObjectData)
{
handlerObjectSaleInfo(this,
objectSaleInfoPacket.AgentData.AgentID,
objectSaleInfoPacket.AgentData.SessionID,
d.LocalID,
d.SaleType,
d.SalePrice);
}
}
break;
case PacketType.ObjectBuy:
ObjectBuyPacket objectBuyPacket = (ObjectBuyPacket)Pack;
handlerObjectBuy = OnObjectBuy;
Console.WriteLine(objectBuyPacket.ToString());
if (handlerObjectBuy != null)
{
foreach (ObjectBuyPacket.ObjectDataBlock d
in objectBuyPacket.ObjectData)
{
handlerObjectBuy(this,
objectBuyPacket.AgentData.AgentID,
objectBuyPacket.AgentData.SessionID,
objectBuyPacket.AgentData.GroupID,
objectBuyPacket.AgentData.CategoryID,
d.ObjectLocalID,
d.SaleType,
d.SalePrice);
}
}
break;
#endregion
#region Script Packets