121 lines
No EOL
2.5 KiB
C#
121 lines
No EOL
2.5 KiB
C#
namespace Server.Items
|
|
{
|
|
public abstract class BaseWaterContainer : Container, IHasQuantity
|
|
{
|
|
public abstract int voidItem_ID { get; }
|
|
public abstract int fullItem_ID { get; }
|
|
public abstract int MaxQuantity { get; }
|
|
|
|
public override int DefaultGumpID { get { return 0x3e; } }
|
|
|
|
[CommandProperty( AccessLevel.GameMaster )]
|
|
public virtual bool IsEmpty { get { return ( m_Quantity == 0 ); } }
|
|
|
|
[CommandProperty( AccessLevel.GameMaster )]
|
|
public virtual bool IsFull { get { return ( m_Quantity >= MaxQuantity ); } }
|
|
|
|
[CommandProperty( AccessLevel.GameMaster )]
|
|
public virtual int currItemID { get { return ( IsEmpty ) ? voidItem_ID : fullItem_ID; } }
|
|
|
|
[CommandProperty( AccessLevel.GameMaster )]
|
|
public int Quantity
|
|
{
|
|
get
|
|
{
|
|
return m_Quantity;
|
|
}
|
|
set
|
|
{
|
|
if( ( value <= 0 && IsEmpty ) || ( value >= MaxQuantity && IsFull ) )
|
|
{
|
|
if( value != m_Quantity )
|
|
{
|
|
UpdateContainer( value );
|
|
|
|
InvalidateProperties();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private int m_Quantity;
|
|
|
|
public BaseWaterContainer( int Item_Id, bool filled )
|
|
: base( Item_Id )
|
|
{
|
|
m_Quantity = ( filled ) ? MaxQuantity : 0;
|
|
}
|
|
|
|
public override void OnDoubleClick( Mobile from )
|
|
{
|
|
if( IsEmpty )
|
|
{
|
|
base.OnDoubleClick( from );
|
|
}
|
|
}
|
|
|
|
public override void OnSingleClick( Mobile from )
|
|
{
|
|
if( IsEmpty )
|
|
{
|
|
base.OnDoubleClick( from );
|
|
}
|
|
}
|
|
|
|
public override void GetProperties( ObjectPropertyList list )
|
|
{
|
|
if( IsEmpty )
|
|
{
|
|
base.GetProperties( list );
|
|
}
|
|
}
|
|
|
|
public override bool OnDragDropInto( Mobile from, Item item, Point3D p )
|
|
{
|
|
if( !IsEmpty )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return base.OnDragDropInto( from, item, p );
|
|
}
|
|
|
|
public virtual void UpdateContainer( int amount )
|
|
{
|
|
if( amount <= 0 )
|
|
{
|
|
m_Quantity = 0;
|
|
}
|
|
else
|
|
{
|
|
m_Quantity = ( MaxQuantity > amount ) ? amount : MaxQuantity;
|
|
}
|
|
if( !IsLockedDown )
|
|
{
|
|
Movable = IsEmpty;
|
|
}
|
|
ItemID = currItemID;
|
|
}
|
|
|
|
public BaseWaterContainer( Serial serial )
|
|
: base( serial )
|
|
{
|
|
}
|
|
|
|
public override void Serialize( GenericWriter writer )
|
|
{
|
|
base.Serialize( writer );
|
|
|
|
writer.Write( (int)0 ); // version
|
|
writer.Write( (int)m_Quantity );
|
|
}
|
|
|
|
public override void Deserialize( GenericReader reader )
|
|
{
|
|
base.Deserialize( reader );
|
|
|
|
int version = reader.ReadInt();
|
|
m_Quantity = reader.ReadInt();
|
|
}
|
|
}
|
|
} |