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,
|
//后续IL开发添加预设
|
default1,
|
default2,
|
default3,
|
default4,
|
|
}
|
|
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<FacingTargetY>();
|
Object.DontDestroyOnLoad(s_Red.gameObject);
|
}
|
if (s_Green == null)
|
{
|
s_Green = SFXPlayUtility.Instance.PlayBattleEffect(999997,
|
Constants.Special_Hide_Position,
|
Vector3.forward).
|
AddMissingComponent<FacingTargetY>();
|
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;
|
}
|
}
|