aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim.Framework/Inventory.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim.Framework/Inventory.cs')
-rw-r--r--OpenSim.Framework/Inventory.cs127
1 files changed, 127 insertions, 0 deletions
diff --git a/OpenSim.Framework/Inventory.cs b/OpenSim.Framework/Inventory.cs
new file mode 100644
index 0000000..e34ea75
--- /dev/null
+++ b/OpenSim.Framework/Inventory.cs
@@ -0,0 +1,127 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4using libsecondlife;
5using OpenSim.Framework.Assets;
6
7namespace OpenSim.Framework.Inventory
8{
9 public class AgentInventory
10 {
11 //Holds the local copy of Inventory info for a agent
12 public Dictionary<LLUUID, InventoryFolder> InventoryFolders;
13 public Dictionary<LLUUID, InventoryItem> InventoryItems;
14 public InventoryFolder InventoryRoot;
15 public int LastCached; //maybe used by opensim app, time this was last stored/compared to user server
16 public LLUUID AgentID;
17 public AvatarWearable[] Wearables;
18
19 public AgentInventory()
20 {
21 InventoryFolders = new Dictionary<LLUUID, InventoryFolder>();
22 InventoryItems = new Dictionary<LLUUID, InventoryItem>();
23 this.Initialise();
24 }
25
26 public virtual void Initialise()
27 {
28 Wearables = new AvatarWearable[2]; //should be 12 of these
29 for (int i = 0; i < 2; i++)
30 {
31 Wearables[i] = new AvatarWearable();
32 }
33
34 InventoryRoot = new InventoryFolder();
35 InventoryRoot.FolderID = LLUUID.Random();
36 InventoryRoot.ParentID = new LLUUID();
37 InventoryRoot.Version = 1;
38 InventoryRoot.DefaultType = 8;
39 InventoryRoot.FolderName = "My Inventory";
40 InventoryFolders.Add(InventoryRoot.FolderID, InventoryRoot);
41 }
42
43 public bool CreateNewFolder(LLUUID folderID)
44 {
45 InventoryFolder Folder = new InventoryFolder();
46 Folder.FolderID = folderID;
47 Folder.OwnerID = this.AgentID;
48 this.InventoryFolders.Add(Folder.FolderID, Folder);
49
50 return (true);
51 }
52
53 public LLUUID AddToInventory(LLUUID folderID, AssetBase asset)
54 {
55 if (this.InventoryFolders.ContainsKey(folderID))
56 {
57 LLUUID NewItemID = LLUUID.Random();
58
59 InventoryItem Item = new InventoryItem();
60 Item.FolderID = folderID;
61 Item.OwnerID = AgentID;
62 Item.AssetID = asset.FullID;
63 Item.ItemID = NewItemID;
64 Item.Type = asset.Type;
65 Item.Name = asset.Name;
66 Item.Description = asset.Description;
67 Item.InvType = asset.InvType;
68 this.InventoryItems.Add(Item.ItemID, Item);
69 InventoryFolder Folder = InventoryFolders[Item.FolderID];
70 Folder.Items.Add(Item);
71 return (Item.ItemID);
72 }
73 else
74 {
75 return (null);
76 }
77 }
78 }
79
80 public class InventoryFolder
81 {
82 public List<InventoryItem> Items;
83 //public List<InventoryFolder> Subfolders;
84 public LLUUID FolderID;
85 public LLUUID OwnerID;
86 public LLUUID ParentID;
87 public string FolderName;
88 public ushort DefaultType;
89 public ushort Version;
90
91 public InventoryFolder()
92 {
93 Items = new List<InventoryItem>();
94 //Subfolders = new List<InventoryFolder>();
95 }
96
97 }
98
99 public class InventoryItem
100 {
101 public LLUUID FolderID;
102 public LLUUID OwnerID;
103 public LLUUID ItemID;
104 public LLUUID AssetID;
105 public LLUUID CreatorID;
106 public sbyte InvType;
107 public sbyte Type;
108 public string Name;
109 public string Description;
110
111 public InventoryItem()
112 {
113 this.CreatorID = LLUUID.Zero;
114 }
115 }
116
117 public class AvatarWearable
118 {
119 public LLUUID AssetID = new LLUUID("00000000-0000-0000-0000-000000000000");
120 public LLUUID ItemID = new LLUUID("00000000-0000-0000-0000-000000000000");
121
122 public AvatarWearable()
123 {
124
125 }
126 }
127}