75 lines
		
	
	
		
			No EOL
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			No EOL
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using Domain;
 | |
| using Domain.Input;
 | |
| using Presenter;
 | |
| using TMPro;
 | |
| using UnityEngine;
 | |
| using UnityEngine.Serialization;
 | |
| using Animation = FramedAnimator.Animation;
 | |
| using Animator = FramedAnimator.Animator;
 | |
| 
 | |
| namespace View.UI {
 | |
| 	public class ExpressionInput : MonoBehaviour, IExpressionInput {
 | |
| 		[SerializeField] private TMP_Text text;
 | |
| 
 | |
| 		private ExpressionClick _click;
 | |
| 		private CustomInput _customInput;
 | |
| 		private Score _score;
 | |
| 
 | |
| 		private bool _firstUpdate = true;
 | |
| 
 | |
| 		[SerializeField] private Animator animator;
 | |
| 		[SerializeField] private Animation growAnimation;
 | |
| 		[SerializeField] private Animation endAnimation;
 | |
| 
 | |
| 		private void Start() {
 | |
| 			_click = FindObjectOfType<Dependencies>().ExpressionClick;
 | |
| 			_customInput = FindObjectOfType<Dependencies>().CustomInput;
 | |
| 			_score = FindObjectOfType<Dependencies>().Score;
 | |
| 
 | |
| 			animator.OnAnimationEnd += AnimationEnded;
 | |
| 		}
 | |
| 
 | |
| 		private void AnimationEnded(string animationName) {
 | |
| 			if (animationName == "Rosa_Grow") {
 | |
| 				animator.ChangeAnimation(endAnimation);
 | |
| 				animator.PlayUntil(1f);
 | |
| 				return;
 | |
| 			}
 | |
| 
 | |
| 			if (animationName == "Rosa_End") {
 | |
| 				animator.ChangeAnimation(growAnimation);
 | |
| 				animator.PlayUntil(_score.GrowPercentage);
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		private void Update() {
 | |
| 			CheckInput();
 | |
| 		}
 | |
| 
 | |
| 		public void UpdateView(int score, float growPercentage) {
 | |
| 			if (animator.CurrentAnimation == "Rosa_Grow")
 | |
| 				animator.PlayUntil(IsLastGrowState(score, growPercentage) ? 1f : growPercentage);
 | |
| 
 | |
| 			text.text = score.ToString();
 | |
| 			_firstUpdate = false;
 | |
| 		}
 | |
| 
 | |
| 		private bool IsLastGrowState(int score, float growPercentage) {
 | |
| 			if (growPercentage != 0)
 | |
| 				return false;
 | |
| 			bool isLastFrame = score % (_score.GrowIterations * _score.SpawnRate) == 0;
 | |
| 			if (!isLastFrame)
 | |
| 				return false;
 | |
| 			if (_firstUpdate)
 | |
| 				return false;
 | |
| 			return true;
 | |
| 		}
 | |
| 
 | |
| 		private void CheckInput() {
 | |
| 			_customInput.UpdateInput();
 | |
| 
 | |
| 			if (_customInput.AnyKeyDown())
 | |
| 				_click.Execute();
 | |
| 		}
 | |
| 	}
 | |
| } | 
