cainteractloop.c 982 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. class CAInteractLoop : CABase
  2. {
  3. protected float m_LocalTimeElpased;
  4. protected float m_TimeElpased;
  5. protected float m_TimeToComplete;
  6. protected float m_DefaultTimeToComplete;
  7. protected ref Param1<float> m_SpentUnits;
  8. void CAInteractLoop( 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_TimeToComplete = m_DefaultTimeToComplete;
  24. }
  25. override int Execute( ActionData action_data )
  26. {
  27. if ( !action_data.m_Player )
  28. {
  29. return UA_ERROR;
  30. }
  31. if ( m_TimeElpased < m_TimeToComplete )
  32. {
  33. m_TimeElpased += action_data.m_Player.GetDeltaT();
  34. return UA_PROCESSING;
  35. }
  36. else
  37. {
  38. if ( m_SpentUnits )
  39. {
  40. m_SpentUnits.param1 = m_TimeElpased;
  41. SetACData(m_SpentUnits);
  42. }
  43. return UA_FINISHED;
  44. }
  45. }
  46. };