void CheckAnswer() { PipeAnswer pipeAnswer = game.pipesAnswerController.GetCurrentPipeAnswer(); if (pipeAnswer != null && Enabled) { bool isCorrectAnswer = pipeAnswer.IsCorrectAnswer; if (isCorrectAnswer) { game.Context.GetAudioManager().PlaySound(Sfx.LetterHappy); } else { game.Context.GetAudioManager().PlaySound(Sfx.LetterSad); } if (onAnswered != null) { onAnswered(currentQuestionPack, isCorrectAnswer); } pipeAnswer.StopSelectedAnimation(); } }
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; } } }