cacontinuousrepeatfishing.c 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. class CAContinuousRepeatFishing : CAContinuousRepeat
  2. {
  3. bool m_SignalTriggered = false;
  4. float m_SignalStartTime;
  5. float m_SignalDuration;
  6. void CAContinuousRepeatFishing( float time_to_complete_action )
  7. {
  8. m_DefaultTimeToComplete = time_to_complete_action;
  9. }
  10. override int Execute( ActionData action_data )
  11. {
  12. if (!action_data.m_Player)
  13. {
  14. return UA_ERROR;
  15. }
  16. if (m_TimeElpased < m_TimeToComplete)
  17. {
  18. m_TimeElpased += action_data.m_Player.GetDeltaT();
  19. m_TotalTimeElpased += action_data.m_Player.GetDeltaT();
  20. //handle signal triggers
  21. if (m_SignalStartTime != -1 && m_SignalDuration != -1)
  22. {
  23. if (m_TimeElpased >= m_SignalStartTime)
  24. {
  25. float signalEndTime = m_SignalStartTime + m_SignalDuration;
  26. if (!m_SignalTriggered && m_TimeElpased < signalEndTime)
  27. {
  28. m_SignalTriggered = true;
  29. OnSignalStart(action_data);
  30. }
  31. else if (m_SignalTriggered && m_TimeElpased >= signalEndTime)
  32. {
  33. m_SignalTriggered = false;
  34. OnSignalEnd(action_data);
  35. }
  36. }
  37. }
  38. }
  39. else
  40. {
  41. m_TimeElpased = m_TimeToComplete - m_TimeElpased;
  42. OnCompletePogress(action_data);
  43. m_SignalTriggered = false;
  44. }
  45. FishingActionData fad = FishingActionData.Cast(action_data);
  46. if (fad.m_FishingResult != -1)
  47. {
  48. return UA_FINISHED;
  49. }
  50. else
  51. {
  52. return UA_PROCESSING;
  53. }
  54. }
  55. void SetNewSignalData(float startTime, float durationTime)
  56. {
  57. if (startTime == -1 && durationTime == -1)
  58. {
  59. m_SignalStartTime = startTime;
  60. m_SignalDuration = durationTime;
  61. }
  62. else
  63. {
  64. float maximalUsableDuration = m_TimeToComplete - UAFishingConstants.SIGNAL_DEADZONE_END_DURATION - UAFishingConstants.SIGNAL_DEADZONE_START_DURATION;
  65. m_SignalStartTime = Math.Clamp(startTime,UAFishingConstants.SIGNAL_DEADZONE_START_DURATION,(m_TimeToComplete - UAFishingConstants.SIGNAL_DURATION_MIN_BASE - UAFishingConstants.SIGNAL_DEADZONE_END_DURATION));
  66. m_SignalDuration = Math.Clamp(durationTime,UAFishingConstants.SIGNAL_DURATION_MIN_BASE,Math.Min(maximalUsableDuration,UAFishingConstants.SIGNAL_DURATION_MAX_BASE)); //scaled down if needed
  67. if (startTime != m_SignalStartTime)
  68. Debug.Log("Signal startTime adjusted from " + startTime + " to " + m_SignalStartTime);
  69. if (durationTime != m_SignalDuration)
  70. Debug.Log("Signal durationTime adjusted from " + durationTime + " to " + m_SignalDuration);
  71. }
  72. }
  73. protected void OnSignalStart(ActionData action_data)
  74. {
  75. FishingActionData data;
  76. if (Class.CastTo(data,action_data))
  77. {
  78. ActionFishingNew action;
  79. if (Class.CastTo(action,data.m_Action))
  80. action.OnSignalStart(data);
  81. }
  82. }
  83. protected void OnSignalEnd(ActionData action_data)
  84. {
  85. FishingActionData data;
  86. if (Class.CastTo(data,action_data))
  87. {
  88. ActionFishingNew action;
  89. if (Class.CastTo(action,data.m_Action))
  90. action.OnSignalEnd(data);
  91. }
  92. }
  93. };