cacontinuouswringclothes.c 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. class CAContinuousWringClothes : CAContinuousQuantityRepeat
  2. {
  3. protected float m_InitItemQuantity;
  4. protected float m_SpentQuantityTotal;
  5. void CAContinuousWringClothes( float quantity_used_per_second, float time_to_repeat )
  6. {
  7. m_QuantityUsedPerSecond = quantity_used_per_second;
  8. m_DefaultTimeToRepeat = time_to_repeat;
  9. m_InitItemQuantity = -1;
  10. }
  11. override void Setup( ActionData action_data )
  12. {
  13. super.Setup( action_data );
  14. if (m_InitItemQuantity < 0)
  15. {
  16. m_InitItemQuantity = action_data.m_MainItem.GetWet();
  17. }
  18. }
  19. override int Execute( ActionData action_data )
  20. {
  21. if ( !action_data.m_Player )
  22. {
  23. return UA_ERROR;
  24. }
  25. float wetness = action_data.m_MainItem.GetWet();
  26. int trim_wetness = wetness * 100;
  27. float rounded_wetness = trim_wetness/100;
  28. if ( rounded_wetness <= 0.25 )
  29. {
  30. return UA_FINISHED;
  31. }
  32. else
  33. {
  34. if ( m_SpentQuantityTotal < m_InitItemQuantity )
  35. {
  36. m_AdjustedQuantityUsedPerSecond = m_QuantityUsedPerSecond;
  37. m_SpentQuantity += m_AdjustedQuantityUsedPerSecond * action_data.m_Player.GetDeltaT();
  38. m_TimeElpased += action_data.m_Player.GetDeltaT();
  39. if (m_TimeElpased > m_DefaultTimeToRepeat)
  40. {
  41. OnCompletePogress(action_data);
  42. m_TimeElpased -= m_DefaultTimeToRepeat;
  43. }
  44. if ( GetGame().IsServer() )
  45. {
  46. if ( m_SpentUnits )
  47. {
  48. m_SpentUnits.param1 = m_SpentQuantity;
  49. SetACData(m_SpentUnits);
  50. }
  51. action_data.m_MainItem.AddWet(-m_SpentQuantity);
  52. }
  53. m_SpentQuantityTotal += m_SpentQuantity;
  54. m_SpentQuantity = 0;
  55. return UA_PROCESSING;
  56. }
  57. else
  58. {
  59. OnCompletePogress(action_data);
  60. return UA_FINISHED;
  61. }
  62. }
  63. }
  64. override float GetProgress()
  65. {
  66. return ((m_TimeElpased - m_DefaultTimeToRepeat) / m_DefaultTimeToRepeat) + 1;
  67. }
  68. };