Пример #1
0
    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;
    }
Пример #2
0
    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;
    }