using UnityEngine;

public class MouseDrag2 : MonoBehaviour
{
    public int ido;
    public bool isClick;
    public bool isIdo;
    public bool isOn;
    public bool isSelect;
    public Maid maid = null;
    public GameObject obj;
    public bool reset;
    private float doubleTapTime;
    private int idoOld;
    private Vector3 mouseIti;
    private Vector3 mouseIti2;
    private Vector3 off;
    private Vector3 off2;
    private Vector3 rotate;
    private float size;
    private Vector3 worldPoint;

    public void Update()
    {
        doubleTapTime += Time.deltaTime;
    }

    public void OnMouseDown()
    {
        if (maid == null)
            return;
        worldPoint = Camera.main.WorldToScreenPoint(transform.position);
        off = transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, worldPoint.z));
        off2 = new Vector3(obj.transform.position.x - maid.transform.position.x,
                           obj.transform.position.y - maid.transform.position.y,
                           obj.transform.position.z - maid.transform.position.z);
        mouseIti = Input.mousePosition;
        if (doubleTapTime < 0.300000011920929 && isClick && ido == idoOld)
        {
            if (ido == 5)
                maid.transform.localScale = new Vector3(1f, 1f, 1f);
            if (ido == 4 || ido == 6)
                maid.transform.eulerAngles = new Vector3(0.0f, maid.transform.eulerAngles.y, 0.0f);
        }

        if (doubleTapTime >= 0.300000011920929 && isClick)
            isClick = false;
        doubleTapTime = 0.0f;
        rotate = maid.transform.localEulerAngles;
        size = maid.transform.localScale.x;
        isSelect = true;
        isOn = true;
    }

    public void OnMouseUp()
    {
        if (maid != null)
            isOn = false;
        if (doubleTapTime >= 0.300000011920929)
            return;
        isClick = true;
        doubleTapTime = 0.0f;
        idoOld = ido;
    }

    public void OnMouseDrag()
    {
        if (maid == null)
            return;
        if (reset)
        {
            reset = false;
            worldPoint = Camera.main.WorldToScreenPoint(transform.position);
            off = transform.position
                  - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, worldPoint.z));
            off2 = new Vector3(obj.transform.position.x - maid.transform.position.x,
                               obj.transform.position.y - maid.transform.position.y,
                               obj.transform.position.z - maid.transform.position.z);
            rotate = maid.transform.localEulerAngles;
            size = maid.transform.localScale.x;
            mouseIti = Input.mousePosition;
        }

        if (mouseIti != Input.mousePosition)
        {
            Vector3 vector3_1 = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, worldPoint.z))
                                + off - off2;
            isIdo = false;
            if (ido == 1)
            {
                maid.transform.position = new Vector3(vector3_1.x, maid.transform.position.y, vector3_1.z);
                isIdo = true;
            }

            if (ido == 2)
            {
                maid.transform.position = new Vector3(maid.transform.position.x, vector3_1.y, maid.transform.position.z);
                isIdo = true;
            }

            Vector3 vector3_2;
            if (ido == 3)
            {
                vector3_2 = Input.mousePosition - mouseIti;
                maid.transform.eulerAngles =
                        new Vector3(maid.transform.eulerAngles.x, rotate.y - vector3_2.x / 2.2f, maid.transform.eulerAngles.z);
            }

            Vector3 vector3_3;
            if (ido == 4)
            {
                vector3_2 = Input.mousePosition - mouseIti;
                Transform transform = GameMain.Instance.MainCamera.gameObject.transform;
                vector3_3 = transform.TransformDirection(Vector3.right);
                Vector3 vector3_4 = transform.TransformDirection(Vector3.forward);
                if (mouseIti2 != Input.mousePosition)
                {
                    maid.transform.localEulerAngles = rotate;
                    maid.transform.RotateAround(maid.transform.position, new Vector3(vector3_3.x, 0.0f, vector3_3.z), vector3_2.y / 4f);
                    maid.transform.RotateAround(maid.transform.position,
                                                new Vector3(vector3_4.x, 0.0f, vector3_4.z),
                                                (float) (-(double) vector3_2.x / 6.0));
                }

                isIdo = true;
                mouseIti2 = Input.mousePosition;
            }

            if (ido == 6)
            {
                vector3_2 = Input.mousePosition - mouseIti;
                Transform transform = GameMain.Instance.MainCamera.gameObject.transform;
                vector3_3 = transform.TransformDirection(Vector3.right);
                transform.TransformDirection(Vector3.forward);
                if (mouseIti2 != Input.mousePosition)
                {
                    maid.transform.localEulerAngles = rotate;
                    maid.body0.transform.localRotation = Quaternion.Euler(maid.body0.transform.localEulerAngles)
                                                         * Quaternion.AngleAxis((float) (-(double) vector3_2.x / 2.20000004768372),
                                                                                Vector3.up);
                }

                isIdo = true;
                mouseIti2 = Input.mousePosition;
            }

            if (ido == 5)
            {
                vector3_2 = Input.mousePosition - mouseIti;
                float num = size + vector3_2.y / 200f;
                if (num < 0.100000001490116)
                    num = 0.1f;
                maid.transform.localScale = new Vector3(num, num, num);
            }
        }
    }
}