Newer
Older
app-47-android / Assets / Scripts / TouchManager.cs
@a_kuznecov a_kuznecov on 22 Jun 2023 8 KB First Commit
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
using UnityEngine.UI;

public class TouchManager : MonoBehaviour
{
    [SerializeField] private Transform column1;
    [SerializeField] private Transform column2;
    [SerializeField] private Transform column3;
    [SerializeField] private Transform column4;

    [SerializeField] private Cell cellOnOneField1;
    [SerializeField] private Cell cellOnOneField2;
    [SerializeField] private Cell cellOnOneField3;
    [SerializeField] private Cell cellOnOneField4;

    [SerializeField] private Cell2 cellOnTwoField1;
    [SerializeField] private Cell2 cellOnTwoField2;
    [SerializeField] private Cell2 cellOnTwoField3;
    [SerializeField] private Cell2 cellOnTwoField4;
    [SerializeField] UnityEngine.UI.Button switchButton;

    [SerializeField] private GameObject fallingItemAnim1;

    [SerializeField] private AudioSource audioSource;
    [SerializeField] private AudioClip boneClip;


    [SerializeField] private bool touchLock;
    void Update()
    {
        if (cellOnOneField1.ItemInCell == null || cellOnOneField2.ItemInCell == null
            || cellOnOneField3.ItemInCell == null || cellOnOneField4.ItemInCell == null)
        {
            switchButton.interactable = false;
            touchLock = true;
        }
        else
        {
            switchButton.interactable = true;
            touchLock = false;
        }
        if (Input.GetMouseButtonUp(0) && !touchLock)
        {
            Physics2D.queriesHitTriggers = false;
            Vector2 touchPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            RaycastHit2D rayHit = Physics2D.Raycast(touchPos, Vector2.zero);

            if (rayHit.collider != null)
            {
                if (rayHit.collider.GetComponent<Cell>())
                {
                    if (rayHit.collider.GetComponent<Cell>().ItemInCell != null)
                    {
                        if (rayHit.collider.GetComponent<Cell>().columnId == 1)
                        {
                            if (cellOnTwoField1.ItemInCell == null)
                            {
                                GameObject fi = Instantiate(fallingItemAnim1);
                                fi.transform.position = rayHit.collider.GetComponent<Cell>().ItemInCell.transform.position;
                                if (rayHit.collider.GetComponent<Cell>().ItemInCell.itemSprite != null)
                                {
                                    fi.GetComponentInChildren<SpriteRenderer>().sprite =
                                    rayHit.collider.GetComponent<Cell>().ItemInCell.itemSprite.GetComponent<SpriteRenderer>().sprite;
                                }
                                Destroy(fi, 1f);
                                rayHit.collider.GetComponent<Cell>().ItemInCell.transform.position = column1.transform.position;
                                rayHit.collider.GetComponent<Cell>().ItemInCell.OnTwoPanel = true;
                            }
                            else
                            {
                                GameManager.Instance.GameOverCheck();
                                if (!rayHit.collider.GetComponent<Cell>().endCell)
                                {
                                    audioSource.PlayOneShot(boneClip);
                                    rayHit.collider.GetComponent<Cell>().ItemInCell.transform.GetComponent<Animator>().Play("TickleAnim");
                                }
                            }
                        }
                        if (rayHit.collider.GetComponent<Cell>().columnId == 2)
                        {
                            if (cellOnTwoField2.ItemInCell == null)
                            {
                                GameObject fi = Instantiate(fallingItemAnim1);
                                fi.transform.position = rayHit.collider.GetComponent<Cell>().ItemInCell.transform.position;
                                if (rayHit.collider.GetComponent<Cell>().ItemInCell.itemSprite != null)
                                {
                                    fi.GetComponentInChildren<SpriteRenderer>().sprite =
rayHit.collider.GetComponent<Cell>().ItemInCell.itemSprite.GetComponent<SpriteRenderer>().sprite;
                                }
                                Destroy(fi, 1f);
                                rayHit.collider.GetComponent<Cell>().ItemInCell.transform.position = column2.transform.position;
                                rayHit.collider.GetComponent<Cell>().ItemInCell.OnTwoPanel = true;
                            }
                            else
                            {
                                GameManager.Instance.GameOverCheck();
                                if (!rayHit.collider.GetComponent<Cell>().endCell)
                                {
                                    audioSource.PlayOneShot(boneClip);
                                    rayHit.collider.GetComponent<Cell>().ItemInCell.transform.GetComponent<Animator>().Play("TickleAnim");
                                }
                            }
                        }
                        if (rayHit.collider.GetComponent<Cell>().columnId == 3)
                        {
                            if (cellOnTwoField3.ItemInCell == null)
                            {
                                GameObject fi = Instantiate(fallingItemAnim1);
                                fi.transform.position = rayHit.collider.GetComponent<Cell>().ItemInCell.transform.position;
                                if (rayHit.collider.GetComponent<Cell>().ItemInCell.itemSprite != null)
                                {
                                    fi.GetComponentInChildren<SpriteRenderer>().sprite =
                                rayHit.collider.GetComponent<Cell>().ItemInCell.itemSprite.GetComponent<SpriteRenderer>().sprite;
                                }
                                Destroy(fi, 1f);
                                rayHit.collider.GetComponent<Cell>().ItemInCell.transform.position = column3.transform.position;
                                rayHit.collider.GetComponent<Cell>().ItemInCell.OnTwoPanel = true;
                            }
                            else
                            {
                                GameManager.Instance.GameOverCheck();
                                if (!rayHit.collider.GetComponent<Cell>().endCell)
                                {
                                    audioSource.PlayOneShot(boneClip);
                                    rayHit.collider.GetComponent<Cell>().ItemInCell.transform.GetComponent<Animator>().Play("TickleAnim");
                                }
                            }
                        }
                        if (rayHit.collider.GetComponent<Cell>().columnId == 4)
                        {
                            if (cellOnTwoField4.ItemInCell == null)
                            {
                                GameObject fi = Instantiate(fallingItemAnim1);
                                fi.transform.position = rayHit.collider.GetComponent<Cell>().ItemInCell.transform.position;
                                if (rayHit.collider.GetComponent<Cell>().ItemInCell.itemSprite != null)
                                {
                                    fi.GetComponentInChildren<SpriteRenderer>().sprite =
rayHit.collider.GetComponent<Cell>().ItemInCell.itemSprite.GetComponent<SpriteRenderer>().sprite;
                                }
                                Destroy(fi, 1f);
                                rayHit.collider.GetComponent<Cell>().ItemInCell.transform.position = column4.transform.position;
                                rayHit.collider.GetComponent<Cell>().ItemInCell.OnTwoPanel = true;
                            }
                            else
                            {
                                GameManager.Instance.GameOverCheck();
                                if (!rayHit.collider.GetComponent<Cell>().endCell)
                                {
                                    audioSource.PlayOneShot(boneClip);
                                    rayHit.collider.GetComponent<Cell>().ItemInCell.transform.GetComponent<Animator>().Play("TickleAnim");
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}