using System; using UnityEngine; using Wizard; public class MyPageCardDetail : MonoBehaviour { private const float POSITION_Y = -88f; private const float CARD_ROTATION = 100f; private const float CARD_ROTATION_MIN_X = -65f; private const float CARD_ROTATION_MAX_X = 35f; private const float CARD_ROTATION_MIN_Y = -50f; private const float CARD_ROTATION_MAX_Y = 50f; [SerializeField] private GameObject prefabCardDetailWindow; [SerializeField] private GameObject m_CardObj; [SerializeField] private UIEventListener m_TouchEventListener; [SerializeField] private UIEventListener _touchColliderBG; private bool m_IsDrag; private Vector3 m_CardViewPortPoint = Vector3.zero; public MyPageMenu MyPageMenuClass; private int _cardId; public SimpleCardDetail CardDetailWindow { get; private set; } public bool IsCardObjRotateTween { get; private set; } private void Start() { CardDetailWindow = NGUITools.AddChild(base.gameObject, prefabCardDetailWindow).GetComponent(); CardDetailWindow.SetLocalOffset(Vector3.up * -88f); CardDetailWindow.ActiveCraftPanel(isActive: false); CardDetailWindow.ActiveCloseCollider(isActive: false); SetTouchEvent(); } private void Update() { if (IsCardObjRotateTween && m_CardObj.transform.localEulerAngles.magnitude < 3f) { ResetAngleCardObj(); IsCardObjRotateTween = false; } } public void UpdateCardData(int cardId) { _cardId = cardId; if (CardDetailWindow != null && CardDetailWindow.IsVisible) { CardDetailWindow.ChangeDetail(_cardId, CardMaster.CardMasterId.Default); } } public void ResetAngleCardObj() { iTween.Stop(m_CardObj); m_CardObj.transform.localEulerAngles = Vector3.zero; } private void SetTouchEvent() { UIEventListener touchColliderBG = _touchColliderBG; touchColliderBG.onClick = (UIEventListener.VoidDelegate)Delegate.Combine(touchColliderBG.onClick, new UIEventListener.VoidDelegate(OnClickBG)); UIEventListener touchEventListener = m_TouchEventListener; touchEventListener.onClick = (UIEventListener.VoidDelegate)Delegate.Combine(touchEventListener.onClick, new UIEventListener.VoidDelegate(OnClick)); UIEventListener touchEventListener2 = m_TouchEventListener; touchEventListener2.onDrag = (UIEventListener.VectorDelegate)Delegate.Combine(touchEventListener2.onDrag, new UIEventListener.VectorDelegate(OnDrag)); UIEventListener touchEventListener3 = m_TouchEventListener; touchEventListener3.onDragStart = (UIEventListener.VoidDelegate)Delegate.Combine(touchEventListener3.onDragStart, new UIEventListener.VoidDelegate(OnDragStart)); UIEventListener touchEventListener4 = m_TouchEventListener; touchEventListener4.onDragEnd = (UIEventListener.VoidDelegate)Delegate.Combine(touchEventListener4.onDragEnd, new UIEventListener.VoidDelegate(OnDragEnd)); } private void OnClickBG(GameObject gameObj) { if (CardDetailWindow.IsVisible) { CardDetailWindow.HideDetail(); GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_CARD_INFO_CANCEL); MyPageMenuClass.ShowBanner(); } } private void OnClick(GameObject gameObj) { if (CardDetailWindow.IsVisible) { CardDetailWindow.HideDetail(); GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_CARD_INFO_CANCEL); MyPageMenuClass.ShowBanner(); } else { CardDetailWindow.ChangeDetail(_cardId, CardMaster.CardMasterId.Default); GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_CARD_INFO_SMALL); MyPageMenuClass.HideBanner(); } } private void OnDrag(GameObject g, Vector2 delta) { if (m_IsDrag) { Vector3 vector = m_CardViewPortPoint - UICamera.currentCamera.ScreenToViewportPoint(UICamera.lastEventPosition); Vector3 vector2 = new Vector3(0f - vector.y, vector.x, 0f) * 100f; vector2 = new Vector3(Mathf.Clamp(vector2.x, -65f, 35f), Mathf.Clamp(vector2.y, -50f, 50f), 0f); m_CardObj.transform.localEulerAngles = vector2; } } private void OnDragStart(GameObject gameObj) { iTween component = m_CardObj.GetComponent(); if (null != component) { component.enabled = false; } m_CardViewPortPoint = UICamera.currentCamera.WorldToViewportPoint(m_CardObj.transform.position); m_IsDrag = true; } private void OnDragEnd(GameObject gameObj) { iTween component = m_CardObj.GetComponent(); if (null != component) { component.enabled = true; } IsCardObjRotateTween = true; iTween.RotateTo(m_CardObj, iTween.Hash("rotation", Vector3.zero, "islocal", true, "time", 0.5f)); m_IsDrag = false; } private void OnApplicationPause(bool paused) { if (!paused) { ResetAngleCardObj(); } } }