cacontinuousquantityedible.c 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. class CAContinuousQuantityEdible : CAContinuousQuantityRepeat
  2. {
  3. protected float m_InitItemQuantity;
  4. protected float m_SpentQuantityTotal;
  5. protected float m_QuantityUsedPerSecondStart;
  6. void CAContinuousQuantityEdible( float quantity_used_per_second, float time_to_repeat )
  7. {
  8. m_QuantityUsedPerSecondStart = quantity_used_per_second;
  9. m_DefaultTimeToRepeat = time_to_repeat;
  10. m_InitItemQuantity = -1;
  11. m_SpentQuantityTotal = 0;
  12. }
  13. override void Setup( ActionData action_data )
  14. {
  15. super.Setup( action_data );
  16. if (m_InitItemQuantity < 0)
  17. {
  18. m_InitItemQuantity = action_data.m_MainItem.GetQuantity();
  19. }
  20. m_QuantityUsedPerSecond = m_QuantityUsedPerSecondStart;
  21. //qty adjustments based on item properties:
  22. if (action_data.m_MainItem.GetTemperature() > PlayerConstants.CONSUMPTION_DAMAGE_TEMP_THRESHOLD)
  23. {
  24. m_QuantityUsedPerSecond = m_QuantityUsedPerSecondStart / UAMisc.CONSUMPTION_SLOWDOWN_COEF_HOT;
  25. }
  26. }
  27. override void CalcAndSetQuantity( ActionData action_data )
  28. {
  29. if ( m_SpentUnits )
  30. {
  31. m_SpentUnits.param1 = m_SpentQuantity;
  32. SetACData(m_SpentUnits);
  33. m_SpentQuantityTotal += m_SpentQuantity;
  34. }
  35. //m_SpentQuantity = Math.Floor(m_SpentQuantity);
  36. PlayerBase ntarget = PlayerBase.Cast( action_data.m_Target.GetObject() );
  37. if ( ntarget )
  38. {
  39. if ( GetGame().IsServer() )
  40. {
  41. //action_data.m_MainItem.Consume(targetObject, m_SpentQuantity);
  42. ntarget.Consume(action_data.m_MainItem, m_SpentQuantity, EConsumeType.ITEM_CONTINUOUS);
  43. }
  44. }
  45. else
  46. {
  47. if ( GetGame().IsServer() )
  48. {
  49. //action_data.m_MainItem.Consume(action_data.m_Player, m_SpentQuantity);
  50. action_data.m_Player.Consume(action_data.m_MainItem, m_SpentQuantity, EConsumeType.ITEM_CONTINUOUS);
  51. }
  52. }
  53. }
  54. override float GetProgress()
  55. {
  56. //return super.GetProgress();
  57. if (m_SpentQuantity > 0)
  58. {
  59. return Math.Clamp((1 - (m_InitItemQuantity - m_SpentQuantity - m_SpentQuantityTotal ) / m_InitItemQuantity), 0, 1);
  60. }
  61. else
  62. {
  63. return Math.Clamp((1 - (m_InitItemQuantity - m_SpentQuantityTotal ) / m_InitItemQuantity), 0, 1);
  64. }
  65. }
  66. };