using System;
using libsecondlife;
using libsecondlife.AssetSystem;
namespace libsecondlife.InventorySystem
{
///
/// Summary description for InventoryNotecard.
///
public class InventoryWearable : InventoryItem
{
// Wearable Inventory/Asset constants
public enum WearableType : sbyte { Clothing = 5, Body = 13 };
///
///
///
///
///
///
///
///
internal InventoryWearable(InventoryManager manager, string name, string description, LLUUID folderID, LLUUID uuidOwnerCreater, WearableType wtype)
: base(manager, name, description, folderID, 18, (sbyte)wtype, uuidOwnerCreater)
{
}
///
///
///
///
internal InventoryWearable(InventoryManager manager, InventoryItem ii)
: base( manager, ii._Name, ii._Description, ii._FolderID, ii._InvType, ii._Type, ii._CreatorID)
{
if( (ii.InvType != 18) )
{
throw new Exception("The InventoryItem cannot be converted to a Wearable, wrong InvType.");
}
this.iManager = manager;
this._ItemID = ii._ItemID;
this._Asset = ii._Asset;
this._AssetID = ii._AssetID;
this._BaseMask = ii._BaseMask;
this._CRC = ii._CRC;
this._CreationDate = ii._CreationDate;
this._EveryoneMask = ii._EveryoneMask;
this._Flags = ii._Flags;
this._GroupID = ii._GroupID;
this._GroupMask = ii._GroupMask;
this._GroupOwned = ii._GroupOwned;
this._InvType = ii._InvType;
this._NextOwnerMask = ii._NextOwnerMask;
this._OwnerID = ii._OwnerID;
this._OwnerMask = ii._OwnerMask;
this._SalePrice = ii._SalePrice;
this._SaleType = ii._SaleType;
this._Type = ii._Type;
}
override internal void SetAssetData(byte[] assetData)
{
// Must reference all variables by internal _private names, so as not to trigger accessor code
if (_Asset == null)
{
if (_AssetID != null)
{
if (_Type == (sbyte)WearableType.Clothing)
{
_Asset = new AssetWearable_Clothing(_AssetID, assetData);
}
else
{
_Asset = new AssetWearable_Body(_AssetID, assetData);
}
}
else
{
if (_Type == (sbyte)WearableType.Clothing)
{
_Asset = new AssetWearable_Clothing(LLUUID.Random(), assetData);
}
else
{
_Asset = new AssetWearable_Body(LLUUID.Random(), assetData);
}
_AssetID = _Asset.AssetID;
}
}
else
{
_Asset.SetAssetData(assetData);
}
}
public override string GetDisplayType()
{
return "Wearable_" + ((_Type == (sbyte)WearableType.Clothing) ? "Clothing" : "Body");;
}
///
/// Output this image as XML
///
/// Include an asset data as well, TRUE/FALSE
override public string toXML(bool outputAssets)
{
string output = "\n";
if (outputAssets)
{
output += xmlSafe(base.Asset.AssetDataToString());
}
output += "";
return output;
}
}
}