cacontinuoustime.c 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. class CAContinuousTime : CAContinuousBase
  2. {
  3. protected float m_LocalTimeElpased;
  4. protected float m_TimeElpased;
  5. protected float m_AdjustedTimeToComplete;
  6. protected float m_DefaultTimeToComplete;
  7. protected ref Param1<float> m_SpentUnits;
  8. void CAContinuousTime( float time_to_complete_action )
  9. {
  10. m_DefaultTimeToComplete = time_to_complete_action;
  11. }
  12. override void Setup( ActionData action_data )
  13. {
  14. m_TimeElpased = 0;
  15. if ( !m_SpentUnits )
  16. {
  17. m_SpentUnits = new Param1<float>(0);
  18. }
  19. else
  20. {
  21. m_SpentUnits.param1 = 0;
  22. }
  23. m_AdjustedTimeToComplete = m_DefaultTimeToComplete; //removed softskills
  24. }
  25. override int Execute( ActionData action_data )
  26. {
  27. if ( m_DefaultTimeToComplete < 0 ) //for infinite actions
  28. {
  29. return UA_PROCESSING;
  30. }
  31. if ( !action_data.m_Player )
  32. {
  33. return UA_ERROR;
  34. }
  35. if ( m_TimeElpased < m_AdjustedTimeToComplete )
  36. {
  37. m_TimeElpased += action_data.m_Player.GetDeltaT();
  38. return UA_PROCESSING;
  39. }
  40. else
  41. {
  42. if ( m_SpentUnits )
  43. {
  44. m_SpentUnits.param1 = m_TimeElpased;
  45. SetACData(m_SpentUnits);
  46. }
  47. OnCompletePogress(action_data);
  48. return UA_FINISHED;
  49. }
  50. }
  51. override int Cancel(ActionData action_data )
  52. {
  53. if ( m_SpentUnits )
  54. {
  55. m_SpentUnits.param1 = m_TimeElpased;
  56. SetACData(m_SpentUnits);
  57. }
  58. if ( m_DefaultTimeToComplete < 0 ) //for infinite actions
  59. {
  60. return UA_FINISHED;
  61. }
  62. return UA_CANCEL;
  63. }
  64. override float GetProgress()
  65. {
  66. if ( m_AdjustedTimeToComplete != 0 )
  67. {
  68. //progress = m_TimeElpased/m_AdjustedTimeToComplete;
  69. return m_TimeElpased/m_AdjustedTimeToComplete;
  70. }
  71. else
  72. {
  73. Print("USER ACTION COMPONENT CONTINUOUS TIME - WRONG TIME TO COMPLETE CALCULATION - Incorrect data for progress bar!");
  74. }
  75. return 1;
  76. }
  77. };