cacontinuousrepeatfishing.c 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. class CAContinuousRepeatFishing : CAContinuousRepeat
  2. {
  3. protected const int NO_SIGNAL = -1;
  4. bool m_SignalTriggered = false;
  5. float m_SignalStartTime;
  6. float m_SignalEndTime;
  7. float m_SignalDuration;
  8. void CAContinuousRepeatFishing( float time_to_complete_action )
  9. {
  10. m_DefaultTimeToComplete = time_to_complete_action;
  11. }
  12. override int Execute( ActionData action_data )
  13. {
  14. if (!action_data.m_Player)
  15. {
  16. return UA_ERROR;
  17. }
  18. if (m_TimeElpased < m_TimeToComplete)
  19. {
  20. m_TimeElpased += action_data.m_Player.GetDeltaT();
  21. m_TotalTimeElpased += action_data.m_Player.GetDeltaT();
  22. //handle signal triggers
  23. if (m_SignalStartTime != NO_SIGNAL && m_SignalDuration != NO_SIGNAL)
  24. {
  25. if (m_TimeElpased >= m_SignalStartTime)
  26. {
  27. if (!m_SignalTriggered && m_TimeElpased < m_SignalEndTime)
  28. {
  29. m_SignalTriggered = true;
  30. OnSignalStart(action_data);
  31. }
  32. else if (m_SignalTriggered && m_TimeElpased >= m_SignalEndTime)
  33. {
  34. m_SignalTriggered = false;
  35. OnSignalEnd(action_data);
  36. }
  37. }
  38. }
  39. }
  40. else
  41. {
  42. m_TimeElpased = m_TimeToComplete - m_TimeElpased;
  43. OnCompletePogress(action_data);
  44. m_SignalTriggered = false;
  45. }
  46. FishingActionData fad = FishingActionData.Cast(action_data);
  47. if (fad.m_FishingResult != -1)
  48. {
  49. return UA_FINISHED;
  50. }
  51. else
  52. {
  53. return UA_PROCESSING;
  54. }
  55. }
  56. void SetNewSignalData(float startTime, float durationTime)
  57. {
  58. if (startTime == NO_SIGNAL && durationTime == NO_SIGNAL)
  59. {
  60. m_SignalStartTime = startTime;
  61. m_SignalDuration = durationTime;
  62. }
  63. else
  64. {
  65. //float maximalUsableDuration = Math.Clamp(m_TimeToComplete - UAFishingConstants.SIGNAL_DEADZONE_END_DURATION - UAFishingConstants.SIGNAL_DEADZONE_START_DURATION,UAFishingConstants.SIGNAL_DURATION_MIN_BASE,UAFishingConstants.SIGNAL_DURATION_MAX_BASE);
  66. float maximalUsableDuration = m_TimeToComplete - UAFishingConstants.SIGNAL_DEADZONE_END_DURATION - UAFishingConstants.SIGNAL_DEADZONE_START_DURATION;
  67. if (maximalUsableDuration < UAFishingConstants.SIGNAL_DURATION_MIN_BASE)
  68. {
  69. if (maximalUsableDuration <= 0)
  70. {
  71. float deadzonesTime = UAFishingConstants.SIGNAL_DEADZONE_END_DURATION + UAFishingConstants.SIGNAL_DEADZONE_START_DURATION;
  72. #ifdef DEVELOPER
  73. if (IsCLIParam("catchingErrors"))
  74. ErrorEx("Cycle m_TimeToComplete: " + m_TimeToComplete + " shorter than combined deadzone times: " + deadzonesTime + "! No time left for any signal, skipping!");
  75. else
  76. #endif
  77. Debug.Log("Cycle m_TimeToComplete: " + m_TimeToComplete + " shorter than combined deadzone times: " + deadzonesTime + "! No time left for any signal, skipping!","FishingCA");
  78. }
  79. else
  80. {
  81. #ifdef DEVELOPER
  82. if (IsCLIParam("catchingErrors"))
  83. ErrorEx("maximalUsableDuration " + maximalUsableDuration + " is shorter than UAFishingConstants.SIGNAL_DURATION_MIN_BASE, skipping signal!");
  84. else
  85. #endif
  86. Debug.Log("maximalUsableDuration " + maximalUsableDuration + " is shorter than UAFishingConstants.SIGNAL_DURATION_MIN_BASE, skipping signal!","FishingCA");
  87. }
  88. m_SignalStartTime = NO_SIGNAL;
  89. m_SignalDuration = NO_SIGNAL;
  90. return;
  91. }
  92. m_SignalDuration = Math.Clamp(durationTime,UAFishingConstants.SIGNAL_DURATION_MIN_BASE,Math.Min(maximalUsableDuration,UAFishingConstants.SIGNAL_DURATION_MAX_BASE)); //scaled down if needed, guaranteed at least SIGNAL_DURATION_MIN_BASE
  93. m_SignalStartTime = Math.Clamp(startTime,UAFishingConstants.SIGNAL_DEADZONE_START_DURATION,(m_TimeToComplete - m_SignalDuration - UAFishingConstants.SIGNAL_DEADZONE_END_DURATION));
  94. m_SignalEndTime = m_SignalStartTime + m_SignalDuration;
  95. if (durationTime != m_SignalDuration)
  96. {
  97. #ifdef DEVELOPER
  98. Debug.Log("Signal durationTime adjusted from " + durationTime + " to " + m_SignalDuration + ". maximalUsableDuration: " + maximalUsableDuration + ", m_TimeToComplete: " + m_TimeToComplete,"FishingCA");
  99. #endif
  100. }
  101. if (startTime != m_SignalStartTime)
  102. {
  103. #ifdef DEVELOPER
  104. Debug.Log("Signal startTime adjusted from " + startTime + " to " + m_SignalStartTime + ". m_SignalDuration: " + m_SignalDuration + ", m_TimeToComplete: " + m_TimeToComplete,"FishingCA");
  105. #endif
  106. }
  107. }
  108. }
  109. protected void OnSignalStart(ActionData action_data)
  110. {
  111. FishingActionData data;
  112. if (Class.CastTo(data,action_data))
  113. {
  114. ActionFishingNew action;
  115. if (Class.CastTo(action,data.m_Action))
  116. action.OnSignalStart(data);
  117. }
  118. }
  119. protected void OnSignalEnd(ActionData action_data)
  120. {
  121. FishingActionData data;
  122. if (Class.CastTo(data,action_data))
  123. {
  124. ActionFishingNew action;
  125. if (Class.CastTo(action,data.m_Action))
  126. action.OnSignalEnd(data);
  127. }
  128. }
  129. };