protected override IEnumerator SurveyRoutine(Context context, List <GameAction.ParameterData> result, System.Action complete, System.Action cancel) { _hasClicked = false; _started = false; _currentSuccessRate = SurveySuccessRating.Four; Circle.transform.localPosition = LeftCircleLimit.localPosition; Section.localPosition = new Vector3(UnityEngine.Random.Range(SectionLeftRandomLimit.localPosition.x, SectionRightRandomLimit.localPosition.x), 0, 0); CritZone.localPosition = Section.localPosition; Section.localScale = new Vector3(0, 1, 1); _circleAnim = DOTween.Sequence(); _circleAnim.Append(Circle.transform.DOLocalMoveX(RightCircleLimit.transform.localPosition.x, CircleSpeed).SetEase(Ease.Linear)); _circleAnim.SetLoops(-1, LoopType.Yoyo); SectionSpriteRenderer.color = SuccessColor; yield return(new WaitForSeconds(0.1f)); _started = true; while (!_hasClicked) { Section.localScale = new Vector3(Mathf.Min(Section.localScale.x + (Time.deltaTime * SectionGrowthSpeed), SectionSizeMax), 1, 1); if (Section.localScale.x > SectionSizeFailedMax) { _currentSuccessRate = SurveySuccessRating.Two; SectionSpriteRenderer.color = FailedColor; } else if (Section.localScale.x > SectionSizeAverageMax) { _currentSuccessRate = SurveySuccessRating.Three; SectionSpriteRenderer.color = AverageColor; } yield return(null); } _circleAnim?.Kill(); if ((Circle.transform.position.x < RightCritZoneLimit.transform.position.x) && (Circle.transform.position.x > LeftCritZoneLimit.transform.position.x)) { // Critical result.Add(new GameActionParameterSuccessRate.Data(SurveySuccessRating.Five)); FloatingTextSystem.Instance.RequestText(Circle.transform.position, "Crit", Color.white); } else if ((Circle.transform.position.x < RightSectionLimit.transform.position.x) && (Circle.transform.position.x > LeftSectionLimit.transform.position.x)) { // Success result.Add(new GameActionParameterSuccessRate.Data(_currentSuccessRate)); } else { // Failed result.Add(new GameActionParameterSuccessRate.Data(SurveySuccessRating.One)); } yield return(new WaitForSeconds(0.5f)); complete(); }
public Data(SurveySuccessRating SuccessRate) { this.SuccessRate = SuccessRate; }