1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- class CAContinuousQuantity : CAContinuousBase
- {
- protected float m_ItemQuantity;
- protected float m_SpentQuantity;
- protected float m_ItemMaxQuantity;
- protected float m_QuantityUsedPerSecond;
- protected float m_AdjustedQuantityUsedPerSecond;
- protected ref Param1<float> m_SpentUnits;
-
- void CAContinuousQuantity( float quantity_used_per_second )
- {
- m_QuantityUsedPerSecond = quantity_used_per_second;
- }
-
- override void Setup( ActionData action_data )
- {
- m_SpentQuantity = 0;
- if ( !m_SpentUnits )
- {
- m_SpentUnits = new Param1<float>(0);
- }
- else
- {
- m_SpentUnits.param1 = 0;
- }
- m_ItemMaxQuantity = action_data.m_MainItem.GetQuantityMax();
- m_ItemQuantity = action_data.m_MainItem.GetQuantity();
- }
-
-
- override int Execute( ActionData action_data )
- {
- if ( !action_data.m_Player )
- {
- return UA_ERROR;
- }
-
- if ( m_ItemQuantity <= 0 )
- {
- return UA_FINISHED;
- }
- else
- {
- if ( m_SpentQuantity < m_ItemQuantity )
- {
- m_AdjustedQuantityUsedPerSecond = m_QuantityUsedPerSecond;
- m_SpentQuantity += m_AdjustedQuantityUsedPerSecond * action_data.m_Player.GetDeltaT();
- return UA_PROCESSING;
- }
- else
- {
- CalcAndSetQuantity( action_data );
- OnCompletePogress(action_data);
- return UA_FINISHED;
- }
- }
- }
-
- override int Cancel( ActionData action_data )
- {
- if ( !action_data.m_Player )
- {
- return UA_ERROR;
- }
-
- CalcAndSetQuantity( action_data );
- return UA_CANCEL;
- }
-
- override float GetProgress()
- {
- //float progress = m_SpentQuantity/m_ItemQuantity;
- return m_SpentQuantity/m_ItemQuantity;
- }
-
- //---------------------------------------------------------------------------
-
-
- void CalcAndSetQuantity( ActionData action_data )
- {
- if ( GetGame().IsServer() )
- {
- if ( m_SpentUnits )
- {
- m_SpentUnits.param1 = m_SpentQuantity;
- SetACData(m_SpentUnits);
- }
-
- if (action_data.m_MainItem)
- {
- action_data.m_MainItem.AddQuantity(- m_SpentQuantity,false,false);
- }
- }
- }
- };
|