using DragonBones; using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; using UnityEngine.EventSystems; using System.Collections; using System.Collections.Generic; using Transform = UnityEngine.Transform; public class Tutorial : Regist, IPointerClickHandler { #region Config public static bool MaskLock; public static Material Material; public static Transform Arrow; public static List HighLightList = new List(); #endregion public static void HightScene(float radiusX, float radiusY, Transform arrowPos, Transform target) { SetArea(target, radiusX, radiusY); PointScene(arrowPos.position, target); } public static void HightScene(float radiusX, float radiusY, Transform arrowPos, Transform targetPos, Transform target) { SetArea(target, radiusX, radiusY); PointScene(arrowPos.position, targetPos); } public static void HightScreen(Transform arrowPos, Transform target, int order = 1) { target.AddComponent(); Canvas canvas = target.GetComponent(); canvas.overrideSorting = true; canvas.sortingOrder = order; MaskLock = true; PointScreen(arrowPos.position, target); ResourceManager.Get(PrefabLabel.N_Mask).TweenForGra(); HighLightList.Add(target); } public static void HightScreen(Transform arrowPos, Transform targetPos, Transform target) { target.AddComponent(); Canvas canvas = target.GetComponent(); canvas.overrideSorting = true; canvas.sortingOrder = 1; MaskLock = true; PointScreen(arrowPos.position, targetPos); ResourceManager.Get(PrefabLabel.N_Mask).TweenForGra(); HighLightList.Add(target); } public static void HightDisable() { for (int i = 0; i < HighLightList.Count; i++) { HighLightList[i].GetComponent().overrideSorting = false; Destroy(HighLightList[i].GetComponent()); Destroy(HighLightList[i].GetComponent()); } HighLightList = new List(); ResourceManager.Get(PrefabLabel.N_Mask).TweenBacGra(); ResourceManager.Get(PrefabLabel.N_Arrow).TweenBacCG(); ClearArea(); MaskLock = false; } public static void HightDisable(int index, bool hideArrow) { HighLightList[index].GetComponent().overrideSorting = false; Destroy(HighLightList[index].GetComponent()); Destroy(HighLightList[index].GetComponent()); HighLightList.RemoveAt(index); if (hideArrow) { ResourceManager.Get(PrefabLabel.N_Arrow).TweenBacCG(); } } public static void SetArea(Transform tra, float radiusX, float radiusY) { Vector3 screenPos = Camera.main.WorldToScreenPoint(tra.position); screenPos = new Vector3(screenPos.x / Screen.width, screenPos.y / Screen.height, 0); if (MaskLock) { Material.SetFloat("_RadiusX", radiusX); Material.SetFloat("_RadiusY", radiusY); Material.SetVector("_Center", screenPos); } else { SceneMask.SetArea(tra, screenPos, radiusX, radiusY); } } public static void ClearArea() { if (MaskLock) { Material.SetFloat("_RadiusX", 0); Material.SetFloat("_RadiusY", 0); Material.SetVector("_Center", new Vector2(0, 0)); } else { SceneMask.ClearArea(); } } public static void PointScene(Vector3 pos, Transform tra) { Vector3 pointPos = Camera.main.WorldToScreenPoint(tra.position); pos = Camera.main.WorldToScreenPoint(pos); Arrow.position = pos; Arrow.right = pointPos - Arrow.position; Arrow.TweenForCG(); } public static void PointScreen(Vector3 pos, Transform tra) { Arrow.position = pos; Arrow.right = tra.position - Arrow.position; Arrow.TweenForCG(); } public static void ShowDescriptScene(Vector3 pos) { pos = Camera.main.WorldToScreenPoint(pos); ShowDescriptScreen(pos); } public static void ShowDescriptScreen(Vector3 pos) { ResourceManager.Get(PrefabLabel.N_LabBK).TweenForCG(); ResourceManager.Get(PrefabLabel.N_LabBK).transform.position = pos; } public static void SetUIButton(Vector3 pos, float radiusX, float radiusY) { pos = Camera.main.WorldToScreenPoint(pos); Image image = ResourceManager.Get(PrefabLabel.N_Button); image.transform.position = pos; image.transform.localScale = new Vector3(radiusX*2, radiusY*2, 1); image.SetActive(true); } public void OnPointerClick(PointerEventData eventData) { AudioManager.PlayClip(Clip.BtnClip); if (eventData.rawPointerPress.name == "PlayerBk1") { Vector3 offset = ResourceManager.Get("PlayerBk1").position; offset.x = -offset.x; offset.y = 0; ResourceManager.Get("PlayerBk1").MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad); ResourceManager.Get("PlayerBk2").MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad); ResourceManager.Get("PlayerBk3").MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad); ResourceManager.Get("PlayerBk1").TweenForScale(); ResourceManager.Get("PlayerBk2").TweenBacScale(); ResourceManager.Get("PlayerBk3").TweenBacScale(); PlayerManager.PlayerPink.TweenBacScale(); PlayerManager.PlayerBlond.TweenBacScale(); PlayerManager.PlayerBrown.TweenForScale(); PlayerManager.SeleTra = PlayerManager.PlayerBrown; } else if (eventData.rawPointerPress.name == "PlayerBk2") { Vector3 offset = ResourceManager.Get("PlayerBk2").position; offset.x = -offset.x; offset.y = 0; ResourceManager.Get("PlayerBk1").MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad); ResourceManager.Get("PlayerBk2").MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad); ResourceManager.Get("PlayerBk3").MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad); ResourceManager.Get("PlayerBk2").TweenForScale(); ResourceManager.Get("PlayerBk1").TweenBacScale(); ResourceManager.Get("PlayerBk3").TweenBacScale(); PlayerManager.PlayerPink.TweenBacScale(); PlayerManager.PlayerBlond.TweenForScale(); PlayerManager.PlayerBrown.TweenBacScale(); PlayerManager.SeleTra = PlayerManager.PlayerBlond; } else if (eventData.rawPointerPress.name == "PlayerBk3") { Vector3 offset = ResourceManager.Get("PlayerBk3").position; offset.x = -offset.x; offset.y = 0; ResourceManager.Get("PlayerBk1").MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad); ResourceManager.Get("PlayerBk2").MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad); ResourceManager.Get("PlayerBk3").MoveOffset2D(offset, 1f, false, Curve.EaseOutQuad); ResourceManager.Get("PlayerBk3").TweenForScale(); ResourceManager.Get("PlayerBk1").TweenBacScale(); ResourceManager.Get("PlayerBk2").TweenBacScale(); PlayerManager.PlayerPink.TweenForScale(); PlayerManager.PlayerBlond.TweenBacScale(); PlayerManager.PlayerBrown.TweenBacScale(); PlayerManager.SeleTra = PlayerManager.PlayerPink; } else if (eventData.rawPointerPress.name == "TutorialCollider") { if (TutorialManager.NewplayerTutorialIndex == 4) { TutorialManager.EndClickSlot(); } } } }