From c9ba7520b40a1aa112eeaaebbec29c1bf6dd34ca Mon Sep 17 00:00:00 2001 From: Jim Radford Date: Sun, 27 Sep 2009 20:19:45 +0000 Subject: [PATCH] LIBOMV-696 Adds support for DirLandReply messages to be handled when arriving via Capabilities git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3113 52acb1d6-8a22-11de-b505-999d5b087335 --- OpenMetaverse/DirectoryManager.cs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/OpenMetaverse/DirectoryManager.cs b/OpenMetaverse/DirectoryManager.cs index f1bf6fb6..b889fa45 100644 --- a/OpenMetaverse/DirectoryManager.cs +++ b/OpenMetaverse/DirectoryManager.cs @@ -370,6 +370,7 @@ namespace OpenMetaverse Client.Network.RegisterCallback(PacketType.DirClassifiedReply, new NetworkManager.PacketCallback(DirClassifiedReplyHandler)); Client.Network.RegisterCallback(PacketType.DirLandReply, new NetworkManager.PacketCallback(DirLandReplyHandler)); + Client.Network.RegisterEventCallback("DirLandReply", DirLandReplyEventHandler); Client.Network.RegisterCallback(PacketType.DirPeopleReply, new NetworkManager.PacketCallback(DirPeopleReplyHandler)); Client.Network.RegisterCallback(PacketType.DirGroupsReply, new NetworkManager.PacketCallback(DirGroupsReplyHandler)); // Deprecated as of viewer 1.2.3 @@ -771,6 +772,33 @@ namespace OpenMetaverse } } + private void DirLandReplyEventHandler(string capsKey, IMessage message, Simulator simulator) + { + if (OnDirLandReply != null) + { + List parcelsForSale = new List(); + + DirLandReplyMessage reply = (DirLandReplyMessage)message; + + foreach (DirLandReplyMessage.QueryReply block in reply.QueryReplies) + { + DirectoryParcel dirParcel = new DirectoryParcel(); + + dirParcel.ActualArea = block.ActualArea; + dirParcel.ID = block.ParcelID; + dirParcel.Name = block.Name; + dirParcel.SalePrice = block.SalePrice; + dirParcel.Auction = block.Auction; + dirParcel.ForSale = block.ForSale; + + parcelsForSale.Add(dirParcel); + } + + try { OnDirLandReply(parcelsForSale); } + catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } + } + } + protected void DirPeopleReplyHandler(Packet packet, Simulator simulator) { if (OnDirPeopleReply != null)