Ipashilovo

Update program

Jul 6th, 2021 (edited)
130
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.EventSystems;
  5.  
  6. public class WashGame : MonoBehaviour
  7. {
  8.     [SerializeField] private AnimalPrefabs _animalPrefabs;
  9.     [SerializeField] private Transform _animalPlace;
  10.  
  11.     [SerializeField] private ItemView[] _views;
  12.     [SerializeField] private Transform _bubblesContainer;
  13.     [SerializeField] private Bubbles _bubblesPrefab;
  14.     [SerializeField] private ProgressSlider _progressSlider;
  15.     [SerializeField] private GameOverScreen _gameoverScreen;
  16.     [SerializeField] private CurrentScoreView _currentScoreView;
  17.  
  18.     public int Phase => _phase;
  19.  
  20.     private Animal _animal;
  21.     private int _phase;
  22.     private float _totalTime;
  23.     private int _maxScore;
  24.     private int _score;
  25.     private int _coins;
  26.  
  27.     private Vector2 _startPosition;
  28.     private Vector2 _currentPosition;
  29.  
  30.     private void Awake()
  31.     {
  32.         var animal = Instantiate(_animalPrefabs.TryGetAnimal(PlayerPrefs.GetInt("CurrentAnimal")), _animalPlace);
  33.         _animal = animal;
  34.         _maxScore = 1000;
  35.     }
  36.  
  37.     private void OnEnable()
  38.     {
  39.         foreach (var view in _views)
  40.         {
  41.             view.ButtonClicked += OnButtonClicked;
  42.         }
  43.     }
  44.  
  45.     private void OnDisable()
  46.     {
  47.         foreach (var view in _views)
  48.         {
  49.             view.ButtonClicked -= OnButtonClicked;
  50.         }
  51.     }
  52.  
  53.     private void Update()
  54.     {
  55.         _totalTime += Time.deltaTime;
  56.         _maxScore = 1000 - Mathf.RoundToInt(_totalTime) * 10;
  57.         _score = Mathf.RoundToInt(_maxScore * _progressSlider.Value);
  58.         _currentScoreView.ChangeScore(_score);
  59.  
  60.         if (Input.GetMouseButtonDown(0))
  61.         {
  62.             _startPosition = Input.mousePosition;
  63.         }
  64.  
  65.         if (Input.GetMouseButton(0))
  66.         {
  67.             if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out RaycastHit hitInfo))
  68.             {
  69.                 if (hitInfo.collider.TryGetComponent(out Animal animal))
  70.                 {
  71.                     if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId) == false)
  72.                     {
  73.                         if (_phase == 1)
  74.                         {
  75.                             var bubbles = Instantiate(_bubblesPrefab, Input.mousePosition, Quaternion.identity, _bubblesContainer);
  76.                             bubbles.Init(this);
  77.                             _progressSlider.ChangeValue(0.0055f, false);
  78.                         }
  79.                     }
  80.  
  81.                     if (_phase == 2)
  82.                     {
  83.                         _currentPosition = Input.mousePosition;
  84.                         if (Vector2.Distance(_startPosition, _currentPosition) > 5)
  85.                         {
  86.                             _startPosition = Input.mousePosition;
  87.                             _progressSlider.ChangeValue(0.0017f, false);
  88.                         }
  89.  
  90.                         if(_bubblesContainer.childCount == 0)
  91.                         {
  92.                             _progressSlider.SetValue(0.67f);
  93.                         }
  94.                     }
  95.  
  96.                     if (_phase == 3)
  97.                     {
  98.                         _currentPosition = Input.mousePosition;
  99.                         if (Vector2.Distance(_startPosition, _currentPosition) > 5)
  100.                         {
  101.                             _startPosition = Input.mousePosition;
  102.                             _progressSlider.ChangeValue(0.002f, false);
  103.                         }
  104.                     }
  105.  
  106.                 }
  107.             }
  108.         }
  109.  
  110.         if (_progressSlider.Value < 0.66f && _phase == 3)
  111.         {
  112.             _phase = 0;
  113.         }
  114.  
  115.         if (_progressSlider.Value < 0.33f && _phase == 2)
  116.         {
  117.             _phase = 0;
  118.         }
  119.  
  120.         if (_progressSlider.Value > 0.33f && _phase == 1)
  121.         {
  122.             _phase = 0;
  123.             Destroy(_views[0].gameObject);
  124.             _animal.Particles.HeartPoof.Play();
  125.         }
  126.  
  127.         if (_progressSlider.Value > 0.66f && _phase == 2)
  128.         {
  129.             _phase = 0;
  130.             Destroy(_views[1].gameObject);
  131.             _animal.Particles.HeartPoof.Play();
  132.  
  133.             if (_bubblesContainer.childCount > 0)
  134.             {
  135.                 for (int i = 0; i < _bubblesContainer.childCount; i++)
  136.                 {
  137.                     Destroy(_bubblesContainer.GetChild(i).gameObject);
  138.                 }
  139.             }
  140.         }
  141.  
  142.         if (_progressSlider.Value == 1)
  143.         {
  144.             _coins = _score / 10;
  145.  
  146.             _gameoverScreen.Enable();
  147.             _gameoverScreen.Init(_score, _coins);
  148.             this.enabled = false;
  149.         }
  150.     }
  151.  
  152.     private void OnButtonClicked(int phase)
  153.     {
  154.         SetPhase(phase);
  155.     }
  156.  
  157.     private void SetPhase(int phase)
  158.     {
  159.         _phase = phase;
  160.     }
  161.  
  162.     /*private void IsMouseOverBubbles()
  163.     {
  164.         PointerEventData pointerEventData = new PointerEventData(EventSystem.current);
  165.         pointerEventData.position = Input.mousePosition;
  166.  
  167.         List<RaycastResult> raycastResultList = new List<RaycastResult>();
  168.         EventSystem.current.RaycastAll(pointerEventData, raycastResultList);
  169.         _progressSlider.ChangeValue(Time.deltaTime / 1.5f, false);
  170.  
  171.         for (int i = 0; i < raycastResultList.Count; i++)
  172.         {
  173.             if(raycastResultList[i].gameObject.TryGetComponent(out Bubbles bubbles))
  174.             {
  175.                 raycastResultList.RemoveAt(i);
  176.                 Destroy(bubbles.gameObject);
  177.                 _progressSlider.ChangeValue(Time.deltaTime / 2, false);
  178.                 i--;
  179.             }
  180.         }
  181.     }*/
  182. }
RAW Paste Data