casingleusequantity.c 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. class CASingleUseQuantity : CASingleUseBase
  2. {
  3. protected float m_QuantityUsedPerAction;
  4. protected float m_ItemQuantity;
  5. protected ref Param1<float> m_SpentUnits;
  6. void CASingleUseQuantity( float quantity_used_per_action )
  7. {
  8. m_QuantityUsedPerAction = quantity_used_per_action;
  9. }
  10. override void Setup( ActionData action_data )
  11. {
  12. if ( !m_SpentUnits )
  13. {
  14. m_SpentUnits = new Param1<float>(0);
  15. }
  16. else
  17. {
  18. m_SpentUnits.param1 = 0;
  19. }
  20. m_ItemQuantity = action_data.m_MainItem.GetQuantity();
  21. }
  22. override int Execute( ActionData action_data )
  23. {
  24. if ( !action_data.m_Player )
  25. {
  26. return UA_ERROR;
  27. }
  28. CalcAndSetQuantity( action_data );
  29. return UA_FINISHED;
  30. }
  31. //---------------------------------------------------------------------------
  32. void CalcAndSetQuantity( ActionData action_data )
  33. {
  34. if ( GetGame().IsServer() )
  35. {
  36. if ( m_SpentUnits )
  37. {
  38. m_SpentUnits.param1 = m_QuantityUsedPerAction;
  39. SetACData(m_SpentUnits);
  40. }
  41. action_data.m_MainItem.AddQuantity(- m_QuantityUsedPerAction,false,false);
  42. }
  43. }
  44. };