/* Copyright (c) OpenSim project, http://sim.opensecondlife.org/ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ using System; using System.Collections.Generic; using libsecondlife; using libsecondlife.Packets; using libsecondlife.AssetSystem; using System.IO; namespace OpenSim { /// /// Description of InventoryManager. /// public class InventoryManager { private System.Text.Encoding enc = System.Text.Encoding.ASCII; public Dictionary Folders; public Dictionary Items; private Server server; /// /// /// /// public InventoryManager(Server serve) { server=serve; Folders=new Dictionary(); Items=new Dictionary(); } /// /// /// /// /// /// /// public LLUUID AddToInventory(User_Agent_info UserInfo, LLUUID FolderID,AssetBase Asset) { if(this.Folders.ContainsKey(FolderID)) { LLUUID NewItemID=LLUUID.Random(); InventoryItem Item=new InventoryItem(); Item.FolderID=FolderID; Item.OwnerID=UserInfo.AgentID; Item.AssetID=Asset.Full_ID; Item.ItemID=NewItemID; Item.Type=Asset.Type; Item.Name=Asset.Name; Item.Description=Asset.Description; Item.InvType=Asset.InvType; this.Items.Add(Item.ItemID,Item); InventoryFolder Folder=Folders[Item.FolderID]; Folder.Items.Add(Item); return(Item.ItemID); } else { return(null); } } /// /// /// /// /// /// public bool CreateNewFolder(User_Agent_info UserInfo, LLUUID NewFolder) { InventoryFolder Folder=new InventoryFolder(); Folder.FolderID=NewFolder; Folder.OwnerID=UserInfo.AgentID; this.Folders.Add(Folder.FolderID,Folder); return(true); } /// /// /// /// /// public void FetchInventoryDescendents(User_Agent_info User_info,FetchInventoryDescendentsPacket FetchDescend) { if(FetchDescend.InventoryData.FetchItems) { if(this.Folders.ContainsKey(FetchDescend.InventoryData.FolderID)) { InventoryFolder Folder=this.Folders[FetchDescend.InventoryData.FolderID]; InventoryDescendentsPacket Descend=new InventoryDescendentsPacket(); Descend.AgentData.AgentID=User_info.AgentID; Descend.AgentData.OwnerID=Folder.OwnerID;//User_info.AgentID; Descend.AgentData.FolderID=FetchDescend.InventoryData.FolderID;//Folder.FolderID;//new LLUUID("4fb2dab6-a987-da66-05ee-96ca82bccbf1"); Descend.AgentData.Descendents=Folder.Items.Count; Descend.AgentData.Version=Folder.Items.Count; Descend.ItemData=new InventoryDescendentsPacket.ItemDataBlock[Folder.Items.Count]; for(int i=0; i /// /// /// public void FetchInventory(User_Agent_info User_info, FetchInventoryPacket FetchItems) { for(int i=0; i Items; //public List Subfolders; public LLUUID FolderID; public LLUUID OwnerID; public LLUUID ParentID; public InventoryFolder() { Items=new List(); } } public class InventoryItem { public LLUUID FolderID; public LLUUID OwnerID; public LLUUID ItemID; public LLUUID AssetID; public LLUUID CreatorID=LLUUID.Zero;//new LLUUID("3d924400-038e-6ad9-920b-cfbb9b40585c"); public sbyte InvType; public sbyte Type; public string Name; public string Description; public InventoryItem() { } } }