using UnityEngine; public class SelectionManager { private static FacingTargetY s_Red; private static FacingTargetY s_Green; private static uint ownerSID; private static SFXController m_JH_SelectSign = null; private static SFXController m_JH_RangeRed = null; private static SFXController m_JH_RangeBlue = null; private static uint jhOwnerSID; public static void ClearJHSfx() { if (m_JH_SelectSign) { SFXPlayUtility.Instance.Release(m_JH_SelectSign); m_JH_SelectSign = null; } if (m_JH_RangeRed) { SFXPlayUtility.Instance.Release(m_JH_RangeRed); m_JH_RangeRed = null; } if (m_JH_RangeBlue) { SFXPlayUtility.Instance.Release(m_JH_RangeBlue); m_JH_RangeBlue = null; } } public enum E_Type { None, Red, Green } public static E_Type s_Type; public static void Initiailze() { if (s_Red == null) { s_Red = SFXPlayUtility.Instance.PlayBattleEffect(999998, Constants.Special_Hide_Position, Vector3.forward). AddMissingComponent(); Object.DontDestroyOnLoad(s_Red.gameObject); } if (s_Green == null) { s_Green = SFXPlayUtility.Instance.PlayBattleEffect(999997, Constants.Special_Hide_Position, Vector3.forward). AddMissingComponent(); Object.DontDestroyOnLoad(s_Green.gameObject); } } public static void RequestJH_Red(GActor owner) { if (owner == null) { return; } if (owner.ServerInstID == jhOwnerSID) { if (m_JH_SelectSign) { SFXPlayUtility.Instance.Release(m_JH_SelectSign); m_JH_SelectSign = null; } if (m_JH_RangeBlue) { SFXPlayUtility.Instance.Release(m_JH_RangeBlue); m_JH_RangeBlue = null; } } if (!m_JH_RangeRed) { m_JH_RangeRed = SFXPlayUtility.Instance.PlayBattleEffect(10044, owner); } else { m_JH_RangeRed.transform.SetParent(owner.Root); m_JH_RangeRed.transform.localPosition = Vector3.zero; m_JH_RangeRed.transform.localRotation = Quaternion.identity; m_JH_RangeRed.transform.localScale = Vector3.one; } jhOwnerSID = owner.ServerInstID; } public static void RequestJH_Blue(GActor owner) { if (owner == null) { return; } if (owner.ServerInstID == jhOwnerSID) { if (m_JH_SelectSign) { SFXPlayUtility.Instance.Release(m_JH_SelectSign); m_JH_SelectSign = null; } if (m_JH_RangeRed) { SFXPlayUtility.Instance.Release(m_JH_RangeRed); m_JH_RangeRed = null; } } if (!m_JH_RangeBlue) { m_JH_RangeBlue = SFXPlayUtility.Instance.PlayBattleEffect(10043, owner); } else { m_JH_RangeBlue.transform.SetParent(owner.Root); m_JH_RangeBlue.transform.localPosition = Vector3.zero; m_JH_RangeBlue.transform.localRotation = Quaternion.identity; m_JH_RangeBlue.transform.localScale = Vector3.one; } jhOwnerSID = owner.ServerInstID; } public static void RequestJH(GActor owner) { if (owner == null) { return; } if (jhOwnerSID == owner.ServerInstID) { return; } if (!m_JH_RangeBlue) { m_JH_RangeBlue = SFXPlayUtility.Instance.PlayBattleEffect(10042, owner); } else { m_JH_RangeBlue.transform.SetParent(owner.Root); m_JH_RangeBlue.transform.localPosition = Vector3.zero; m_JH_RangeBlue.transform.localRotation = Quaternion.identity; m_JH_RangeBlue.transform.localScale = Vector3.one; } jhOwnerSID = owner.ServerInstID; } public static void ReleaseJH() { if (m_JH_RangeBlue) { SFXPlayUtility.Instance.Release(m_JH_RangeBlue); m_JH_RangeBlue = null; } } public static void Request(E_Type type, GActor owner, float scale = 1) { if (owner == null) { return; } if (s_Type == type && ownerSID == owner.ServerInstID) { return; } switch (type) { case E_Type.Red: Release(E_Type.Green); if (s_Red) { s_Red.transform.SetParentEx(owner.Root, Vector3.zero, Quaternion.identity, Vector3.one * scale); if (CameraController.Instance.CameraObject) { s_Red.target = CameraController.Instance.CameraObject.transform; } } break; case E_Type.Green: Release(E_Type.Red); if (s_Green) { s_Green.transform.SetParentEx(owner.Root, Vector3.zero, Quaternion.identity, Vector3.one * scale); if (CameraController.Instance.CameraObject) { s_Green.target = CameraController.Instance.CameraObject.transform; } } break; } s_Type = type; ownerSID = owner.ServerInstID; } public static void Release(E_Type type) { switch (type) { case E_Type.Red: if (s_Red) { s_Red.transform.SetParent(null); s_Red.transform.localScale = Vector3.one; s_Red.transform.position = Constants.Special_Hide_Position; } break; case E_Type.Green: if (s_Green) { s_Green.transform.SetParent(null); s_Green.transform.localScale = Vector3.one; s_Green.transform.position = Constants.Special_Hide_Position; } break; } s_Type = E_Type.None; } }