public override void UpdateAct() { base.UpdateAct(); if (!otherSourcePlayerDetectionionProcessFinished) { if (mapLogic.IsPlayerDetectedInCampMode()) { if (!otherSourcePlayerDetectionionProcessStarted) { otherSourcePlayerDetectionionProcessStarted = true; float distToPlayer = (PlayerCharacterNew.Instance.gameObject.transform.position - gameObject.transform.position).magnitude; otherSourcePlayerDetectionTimeCounter = Random.Range(otherSourcePlayerDetectionMaxTimeBaseAmount_Min, otherSourcePlayerDetectionMaxTimeBaseAmount_Max) + otherSourcePlayerDetectionMaxTimeCoefOfDist * distToPlayer; } else { otherSourcePlayerDetectionTimeCounter = MathfPlus.DecByDeltatimeToZero(otherSourcePlayerDetectionTimeCounter); if (otherSourcePlayerDetectionTimeCounter == 0) { SetPlayerHasBeenDetected(false); otherSourcePlayerDetectionionProcessFinished = true; } } } } Start: #region Start01 if (step == StepEnum.Start01) { if (needsToBeFinished) { SetFinished(false); return; } if (useCurves) { curCurveInfoIndex = 0; step = StepEnum.UseCurves01; } else { selectedAnim = anims.GetRandomAnimName(); soldInfo.StartNewMainAnimWithCrossfadeTime(selectedAnim, animToAnimCampCrossfadeTime); step = StepEnum.Update01; } } #endregion #region Update01 if (step == StepEnum.Update01) { if (needsToBeFinished) { SetFinished(false); return; } if (IsPlayerInView()) { DecPlayerDectectionCounter(); } else { ResetPlayerDectectionCounter(); } if (IsPlayerDetected()) { SetPlayerHasBeenDetected(true); } if (IsNearLoudSoundsHappened()) { SetPlayerHasBeenDetected(true); } } #endregion #region UseCurves01 if (step == StepEnum.UseCurves01) { if (needsToBeFinished) { SetFinished(false); return; } curCurveInfo = curveInfos[curCurveInfoIndex]; curAntaresCurve = curCurveInfo.curve; selectedAnim = curCurveInfo.animsList.GetRandomAnimName(); curCurveCFTime = curCurveInfo.crossfadeTime; curCurveMaxSpeed = curCurveInfo.speed; curCurvePointToStay = curCurveInfo.pointToStay; curCurveEndMinSpeed = curCurveInfo.endMinSpeed; curCurveEndLengthToDecSpeed = curCurveInfo.endLengthToStartDecreasingSpeed; curCurve_SpeedInc_Speed = curCurveInfo.speedInc_Speed; curCurve_SpeedDec_Speed = curCurveInfo.speedDec_Speed; curCurvePointStayTime = curCurveInfo.pointStayTime; curCurveEndLengthToChangeAnim = curCurveInfo.endLengthToChangeAnim; nextCurveInfoIndex = GetNextCurveInfoIndex(); curCurveInfoCounter = 0; curCurve_CurSpeed = 0; if (!nextAnimIsRanBefore) { soldInfo.StartNewMainAnimWithCrossfadeTime(selectedAnim, curCurveCFTime); } nextAnimIsRanBefore = false; nextAnim = ""; nextAnimCFTime = 0; isFirstTickOnCurveInfo = true; step = StepEnum.UseCurves02; } #endregion #region UseCurves02 if (step == StepEnum.UseCurves02) { if (needsToBeFinished) { SetFinished(false); return; } if (IsPlayerInView()) { DecPlayerDectectionCounter(); } else { ResetPlayerDectectionCounter(); } if (IsPlayerDetected()) { SetPlayerHasBeenDetected(true); } if (IsNearLoudSoundsHappened()) { SetPlayerHasBeenDetected(true); } // if (curCurvePointToStay) { IncreasePointStayTimeCounter(); SetPosAndRotByStayPoint(); CheckIfNeedsStartNextAnimInStayMode(); if (IsPointStayTimeFinished()) { step = StepEnum.UseCurves03; goto Finish; } } else { if (IsSoldierReachedToTheEndMinSpeedArea()) { DecCurveInfoCurrentSpeedForEnd(); } else { IncCurveInfoCurrentSpeed(); } IncreaseCurCurveCounterByCurrentSpeed(); SetPosAndRotByCurCurve(); CheckIfNeedsStartNextAnimInCurveMode(); if (IsCurveCounterReachedToEnd()) { step = StepEnum.UseCurves03; goto Start; } } isFirstTickOnCurveInfo = false; } #endregion #region UseCurves03 if (step == StepEnum.UseCurves03) { if (needsToBeFinished) { SetFinished(false); return; } if (IsPlayerInView()) { DecPlayerDectectionCounter(); } else { ResetPlayerDectectionCounter(); } if (IsPlayerDetected()) { SetPlayerHasBeenDetected(true); } if (IsNearLoudSoundsHappened()) { SetPlayerHasBeenDetected(true); } // curCurveInfoIndex = nextCurveInfoIndex; step = StepEnum.UseCurves01; goto Start; } #endregion Finish: return; }
public void UpdateAct() { Start: #region Start01 if (step == StepEnum.Start01) { curCurveInfoIndex = 0; step = StepEnum.UseCurves01; } #endregion #region UseCurves01 if (step == StepEnum.UseCurves01) { curCurveInfo = curveInfos[curCurveInfoIndex]; curAntaresCurve = curCurveInfo.curve; selectedAnim = curCurveInfo.animsList.GetRandomAnimName(); curCurveCFTime = curCurveInfo.crossfadeTime; curCurveMaxSpeed = curCurveInfo.speed; curCurvePointToStay = curCurveInfo.pointToStay; curCurveEndMinSpeed = curCurveInfo.endMinSpeed; curCurveEndLengthToDecSpeed = curCurveInfo.endLengthToStartDecreasingSpeed; curCurve_SpeedInc_Speed = curCurveInfo.speedInc_Speed; curCurve_SpeedDec_Speed = curCurveInfo.speedDec_Speed; curCurvePointStayTime = curCurveInfo.pointStayTime; curCurveEndLengthToChangeAnim = curCurveInfo.endLengthToChangeAnim; curCurveDelayCoefForStartAnimation_Min = curCurveInfo.delayCoefForStartAnimation_Min; curCurveDelayCoefForStartAnimation_Max = curCurveInfo.delayCoefForStartAnimation_Max; nextCurveInfoIndex = GetNextCurveInfoIndex(); curCurveInfoCounter = 0; curCurve_CurSpeed = 0; if (!nextAnimIsRanBefore) { StartNewMainAnimWithCrossfadeTime(selectedAnim, curCurveCFTime, curCurveDelayCoefForStartAnimation_Min, curCurveDelayCoefForStartAnimation_Max); } nextAnimIsRanBefore = false; nextAnim = ""; nextAnimCFTime = 0; isFirstTickOnCurveInfo = true; step = StepEnum.UseCurves02; } #endregion #region UseCurves02 if (step == StepEnum.UseCurves02) { if (curCurvePointToStay) { IncreasePointStayTimeCounter(); SetPosAndRotByStayPoint(); CheckIfNeedsStartNextAnimInStayMode(); if (IsPointStayTimeFinished()) { step = StepEnum.UseCurves03; goto Finish; } } else { if (IsSoldierReachedToTheEndMinSpeedArea()) { DecCurveInfoCurrentSpeedForEnd(); } else { IncCurveInfoCurrentSpeed(); } IncreaseCurCurveCounterByCurrentSpeed(); SetPosAndRotByCurCurve(); CheckIfNeedsStartNextAnimInCurveMode(); if (IsCurveCounterReachedToEnd()) { step = StepEnum.UseCurves03; goto Start; } } isFirstTickOnCurveInfo = false; } #endregion #region UseCurves03 if (step == StepEnum.UseCurves03) { curCurveInfoIndex = nextCurveInfoIndex; step = StepEnum.UseCurves01; goto Start; } #endregion Finish: return; }