PileOfWoodenPlanks.c
class PileOfWoodenPlanks extends ItemBase
{
void PileOfWoodenPlanks()
{
if ( g_Game.IsServer() )
{
SetAllowDamage(false);
}
}
// Shows/Hides selections. Call this in init or after every quantity change.
void UpdateSelections()
{
RemoveProxyPhysics( "stage_1" );
RemoveProxyPhysics( "stage_2" );
RemoveProxyPhysics( "stage_3" );
// Show/Hide selections according to the current quantity
if ( this )
{
float quantity = GetQuantity();
float quantity_max = GetQuantityMax();
if ( quantity > GetQuantityMax() *0.66 )
{
// Show 3/3 amount of planks
ShowSelection ( "stage_3" );
HideSelection ( "stage_2" );
HideSelection ( "stage_1" );
AddProxyPhysics( "stage_3" );
}
if ( quantity > quantity_max *0.33 && quantity <= quantity_max *0.66 )
{
// Show 2/3 amount of planks
HideSelection ( "stage_3" );
ShowSelection ( "stage_2" );
HideSelection ( "stage_1" );
AddProxyPhysics( "stage_2" );
}
if ( quantity > 0 && quantity <= quantity_max *0.33 )
{
// Show 1/3 amount of planks
HideSelection ( "stage_3" );
HideSelection ( "stage_2" );
ShowSelection ( "stage_1" );
AddProxyPhysics( "stage_1" );
}
if ( quantity == 0 )
{
// Show 0 planks. Object should be deleted now.
HideSelection ( "stage_3" );
HideSelection ( "stage_2" );
HideSelection ( "stage_1" );
}
}
}
override void EEItemLocationChanged(notnull InventoryLocation oldLoc, notnull InventoryLocation newLoc)
{
super.EEItemLocationChanged(oldLoc, newLoc);
UpdateSelections();
}
// Removes a number of long planks. Note that one (4m) long plank has the length of 3x normal planks!
// Returns the number of removed long planks
int RemovePlanks( int needed_planks )
{
// Make sure to not give more long planks than we have available
int available_planks = needed_planks;
if ( available_planks > GetQuantity() )
{
available_planks = GetQuantity();
}
// Remove long planks from this object
AddQuantity( -available_planks, true ); // Autodelete enabled
// Return the number of removed long planks
return available_planks;
}
override bool SetQuantity(float value, bool destroy_config = true, bool destroy_forced = false, bool allow_client = false, bool clamp_to_stack_max = true)
{
bool result = super.SetQuantity(value, destroy_config, destroy_forced, allow_client, clamp_to_stack_max);
UpdateSelections();
return result;
}
override bool CanPutIntoHands( EntityAI parent )
{
return false;
}
override bool CanPutInCargo (EntityAI parent)
{
return false;
}
}