From e89f0b3f71dc8bd439fcfc23d12b305369eac36b Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 13 Aug 2010 22:29:42 +0100 Subject: refactor: move Scene.PerformObjectBuy into BuySellModule --- OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 2 +- OpenSim/Region/Framework/Scenes/Scene.cs | 159 --------------------- 2 files changed, 1 insertion(+), 160 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 01edf51..4f5a65e 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -670,7 +670,7 @@ namespace OpenSim.Region.Framework.Scenes /// /// Create a new asset data structure. /// - private AssetBase CreateAsset(string name, string description, sbyte assetType, byte[] data, UUID creatorID) + public AssetBase CreateAsset(string name, string description, sbyte assetType, byte[] data, UUID creatorID) { AssetBase asset = new AssetBase(UUID.Random(), name, assetType, creatorID.ToString()); asset.Description = description; diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index b6def14..5f6748e 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -4486,165 +4486,6 @@ namespace OpenSim.Region.Framework.Scenes return inv.NeedSceneCacheClear(agentID, this); } - public bool PerformObjectBuy(IClientAPI remoteClient, UUID categoryID, - uint localID, byte saleType) - { - SceneObjectPart part = GetSceneObjectPart(localID); - - if (part == null) - return false; - - if (part.ParentGroup == null) - return false; - - SceneObjectGroup group = part.ParentGroup; - - switch (saleType) - { - case 1: // Sell as original (in-place sale) - uint effectivePerms=group.GetEffectivePermissions(); - - if ((effectivePerms & (uint)PermissionMask.Transfer) == 0) - { - m_dialogModule.SendAlertToUser(remoteClient, "This item doesn't appear to be for sale"); - return false; - } - - group.SetOwnerId(remoteClient.AgentId); - group.SetRootPartOwner(part, remoteClient.AgentId, - remoteClient.ActiveGroupId); - - List partList = - new List(group.Children.Values); - - if (Permissions.PropagatePermissions()) - { - foreach (SceneObjectPart child in partList) - { - child.Inventory.ChangeInventoryOwner(remoteClient.AgentId); - child.TriggerScriptChangedEvent(Changed.OWNER); - child.ApplyNextOwnerPermissions(); - } - } - - part.ObjectSaleType = 0; - part.SalePrice = 10; - - group.HasGroupChanged = true; - part.GetProperties(remoteClient); - part.TriggerScriptChangedEvent(Changed.OWNER); - group.ResumeScripts(); - part.ScheduleFullUpdate(); - - break; - - case 2: // Sell a copy - - - Vector3 inventoryStoredPosition = new Vector3 - (((group.AbsolutePosition.X > (int)Constants.RegionSize) - ? 250 - : group.AbsolutePosition.X) - , - (group.AbsolutePosition.X > (int)Constants.RegionSize) - ? 250 - : group.AbsolutePosition.X, - group.AbsolutePosition.Z); - - Vector3 originalPosition = group.AbsolutePosition; - - group.AbsolutePosition = inventoryStoredPosition; - - string sceneObjectXml = SceneObjectSerializer.ToOriginalXmlFormat(group); - group.AbsolutePosition = originalPosition; - - uint perms=group.GetEffectivePermissions(); - - if ((perms & (uint)PermissionMask.Transfer) == 0) - { - m_dialogModule.SendAlertToUser(remoteClient, "This item doesn't appear to be for sale"); - return false; - } - - AssetBase asset = CreateAsset( - group.GetPartName(localID), - group.GetPartDescription(localID), - (sbyte)AssetType.Object, - Utils.StringToBytes(sceneObjectXml), - group.OwnerID); - AssetService.Store(asset); - - InventoryItemBase item = new InventoryItemBase(); - item.CreatorId = part.CreatorID.ToString(); - - item.ID = UUID.Random(); - item.Owner = remoteClient.AgentId; - item.AssetID = asset.FullID; - item.Description = asset.Description; - item.Name = asset.Name; - item.AssetType = asset.Type; - item.InvType = (int)InventoryType.Object; - item.Folder = categoryID; - - uint nextPerms=(perms & 7) << 13; - if ((nextPerms & (uint)PermissionMask.Copy) == 0) - perms &= ~(uint)PermissionMask.Copy; - if ((nextPerms & (uint)PermissionMask.Transfer) == 0) - perms &= ~(uint)PermissionMask.Transfer; - if ((nextPerms & (uint)PermissionMask.Modify) == 0) - perms &= ~(uint)PermissionMask.Modify; - - item.BasePermissions = perms & part.NextOwnerMask; - item.CurrentPermissions = perms & part.NextOwnerMask; - item.NextPermissions = part.NextOwnerMask; - item.EveryOnePermissions = part.EveryoneMask & - part.NextOwnerMask; - item.GroupPermissions = part.GroupMask & - part.NextOwnerMask; - item.CurrentPermissions |= 16; // Slam! - item.CreationDate = Util.UnixTimeSinceEpoch(); - - if (InventoryService.AddItem(item)) - remoteClient.SendInventoryItemCreateUpdate(item, 0); - else - { - m_dialogModule.SendAlertToUser(remoteClient, "Cannot buy now. Your inventory is unavailable"); - return false; - } - break; - - case 3: // Sell contents - List invList = part.Inventory.GetInventoryList(); - - bool okToSell = true; - - foreach (UUID invID in invList) - { - TaskInventoryItem item1 = part.Inventory.GetInventoryItem(invID); - if ((item1.CurrentPermissions & - (uint)PermissionMask.Transfer) == 0) - { - okToSell = false; - break; - } - } - - if (!okToSell) - { - m_dialogModule.SendAlertToUser( - remoteClient, "This item's inventory doesn't appear to be for sale"); - return false; - } - - if (invList.Count > 0) - MoveTaskInventoryItems(remoteClient.AgentId, part.Name, - part, invList); - break; - } - - return true; - } - public void CleanTempObjects() { List objs = GetEntities(); -- cgit v1.1