Ejemplo n.º 1
0
        void UpdateCurrentPipeAnswer()
        {
            var currentLivingLetter = game.questionsManager.GetQuestionLivingLetter();

            if (currentLivingLetter == null)
            {
                currentPipeAnswer = null;
                return;
            }

            PipeAnswer newPipeAnswer = null;

            Vector3?letterPosition = currentLivingLetter.TargetContentDragPosition;

            if (!letterPosition.HasValue)
            {
                currentPipeAnswer            = null;
                currentLivingLetter.NearTube = null;
                return;
            }

            float pipeDistanceX = float.PositiveInfinity;
            float pipeDistanceY = float.PositiveInfinity;

            for (int i = 0; i < pipeAnswers.Length; i++)
            {
                if (pipeAnswers[i].active)
                {
                    Vector3 pipePosition    = pipeAnswers[i].tutorialPoint.position;
                    float   newPipeDistance = Mathf.Abs(pipePosition.x - letterPosition.Value.x);

                    if (newPipeDistance < pipeDistanceX)
                    {
                        newPipeAnswer = pipeAnswers[i];
                        pipeDistanceX = newPipeDistance;
                        pipeDistanceY = Mathf.Abs(pipePosition.y - letterPosition.Value.y);
                    }
                }
            }

            if (pipeDistanceX > maxLetterDistanceX || pipeDistanceY > maxLetterDistanceY)
            {
                currentLivingLetter.NearTube = null;

                if (currentPipeAnswer != null)
                {
                    currentPipeAnswer.StopSelectedAnimation();
                    currentPipeAnswer = null;
                }
            }
            else
            {
                if (currentPipeAnswer != null && currentPipeAnswer != newPipeAnswer)
                {
                    currentPipeAnswer.StopSelectedAnimation();
                    currentPipeAnswer = null;
                }

                currentLivingLetter.NearTube = currentPipeAnswer;

                if (currentPipeAnswer == null)
                {
                    if (newPipeAnswer != null)
                    {
                        newPipeAnswer.PlaySelectedAnimation();
                    }

                    currentPipeAnswer = newPipeAnswer;
                }
            }
        }