123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- class CAContinuousRepeatFishing : CAContinuousRepeat
- {
- protected const int NO_SIGNAL = -1;
-
- bool m_SignalTriggered = false;
- float m_SignalStartTime;
- float m_SignalEndTime;
- float m_SignalDuration;
-
- void CAContinuousRepeatFishing( float time_to_complete_action )
- {
- m_DefaultTimeToComplete = time_to_complete_action;
- }
-
- override int Execute( ActionData action_data )
- {
- if (!action_data.m_Player)
- {
- return UA_ERROR;
- }
-
- if (m_TimeElpased < m_TimeToComplete)
- {
- m_TimeElpased += action_data.m_Player.GetDeltaT();
- m_TotalTimeElpased += action_data.m_Player.GetDeltaT();
-
- //handle signal triggers
- if (m_SignalStartTime != NO_SIGNAL && m_SignalDuration != NO_SIGNAL)
- {
- if (m_TimeElpased >= m_SignalStartTime)
- {
- if (!m_SignalTriggered && m_TimeElpased < m_SignalEndTime)
- {
- m_SignalTriggered = true;
- OnSignalStart(action_data);
- }
- else if (m_SignalTriggered && m_TimeElpased >= m_SignalEndTime)
- {
- m_SignalTriggered = false;
- OnSignalEnd(action_data);
- }
- }
- }
- }
- else
- {
- m_TimeElpased = m_TimeToComplete - m_TimeElpased;
- OnCompletePogress(action_data);
-
- m_SignalTriggered = false;
- }
-
- FishingActionData fad = FishingActionData.Cast(action_data);
- if (fad.m_FishingResult != -1)
- {
- return UA_FINISHED;
- }
- else
- {
- return UA_PROCESSING;
- }
- }
-
- void SetNewSignalData(float startTime, float durationTime)
- {
- if (startTime == NO_SIGNAL && durationTime == NO_SIGNAL)
- {
- m_SignalStartTime = startTime;
- m_SignalDuration = durationTime;
- }
- else
- {
- //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);
- float maximalUsableDuration = m_TimeToComplete - UAFishingConstants.SIGNAL_DEADZONE_END_DURATION - UAFishingConstants.SIGNAL_DEADZONE_START_DURATION;
- if (maximalUsableDuration < UAFishingConstants.SIGNAL_DURATION_MIN_BASE)
- {
- if (maximalUsableDuration <= 0)
- {
- float deadzonesTime = UAFishingConstants.SIGNAL_DEADZONE_END_DURATION + UAFishingConstants.SIGNAL_DEADZONE_START_DURATION;
- #ifdef DEVELOPER
- if (IsCLIParam("catchingErrors"))
- ErrorEx("Cycle m_TimeToComplete: " + m_TimeToComplete + " shorter than combined deadzone times: " + deadzonesTime + "! No time left for any signal, skipping!");
- else
- #endif
- Debug.Log("Cycle m_TimeToComplete: " + m_TimeToComplete + " shorter than combined deadzone times: " + deadzonesTime + "! No time left for any signal, skipping!","FishingCA");
- }
- else
- {
- #ifdef DEVELOPER
- if (IsCLIParam("catchingErrors"))
- ErrorEx("maximalUsableDuration " + maximalUsableDuration + " is shorter than UAFishingConstants.SIGNAL_DURATION_MIN_BASE, skipping signal!");
- else
- #endif
- Debug.Log("maximalUsableDuration " + maximalUsableDuration + " is shorter than UAFishingConstants.SIGNAL_DURATION_MIN_BASE, skipping signal!","FishingCA");
- }
-
- m_SignalStartTime = NO_SIGNAL;
- m_SignalDuration = NO_SIGNAL;
- return;
- }
-
- 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
- m_SignalStartTime = Math.Clamp(startTime,UAFishingConstants.SIGNAL_DEADZONE_START_DURATION,(m_TimeToComplete - m_SignalDuration - UAFishingConstants.SIGNAL_DEADZONE_END_DURATION));
- m_SignalEndTime = m_SignalStartTime + m_SignalDuration;
-
- if (durationTime != m_SignalDuration)
- {
- #ifdef DEVELOPER
- Debug.Log("Signal durationTime adjusted from " + durationTime + " to " + m_SignalDuration + ". maximalUsableDuration: " + maximalUsableDuration + ", m_TimeToComplete: " + m_TimeToComplete,"FishingCA");
- #endif
- }
- if (startTime != m_SignalStartTime)
- {
- #ifdef DEVELOPER
- Debug.Log("Signal startTime adjusted from " + startTime + " to " + m_SignalStartTime + ". m_SignalDuration: " + m_SignalDuration + ", m_TimeToComplete: " + m_TimeToComplete,"FishingCA");
- #endif
- }
- }
- }
-
- protected void OnSignalStart(ActionData action_data)
- {
- FishingActionData data;
- if (Class.CastTo(data,action_data))
- {
- ActionFishingNew action;
- if (Class.CastTo(action,data.m_Action))
- action.OnSignalStart(data);
- }
- }
-
- protected void OnSignalEnd(ActionData action_data)
- {
- FishingActionData data;
- if (Class.CastTo(data,action_data))
- {
- ActionFishingNew action;
- if (Class.CastTo(action,data.m_Action))
- action.OnSignalEnd(data);
- }
- }
- };
|