using System.Linq; using Core.Event.Event; using Excel2Json; using Fort23.Core; using Fort23.UTool; using UnityEngine; public class RedDotWidget : MonoBehaviour { public int RedDotConfigId; public int GroupId; public int Layer; public int[] LinkGroupIds; public int UnlockId; public GameObject RedDotRoot; [ContextMenu("test")] public void Test() { RedDotUpdate(new DefaultEventData(){eventData = 0}); } public void Start() { EventManager.Instance.RemoveEventListener(CustomEventType.RedDotUpdate, RedDotUpdate); EventManager.Instance.AddEventListener(CustomEventType.RedDotUpdate, RedDotUpdate); EventManager.Instance.RemoveEventListener(CustomEventType.RedDotChangeState, RedDotChangeState); EventManager.Instance.AddEventListener(CustomEventType.RedDotChangeState, RedDotChangeState); ReddotConfig reddotConfig = ConfigComponent.Instance.Get(RedDotConfigId); RedDotRoot.SetActive(false); GroupId = reddotConfig.GroupID; Layer = reddotConfig.Layer; LinkGroupIds = reddotConfig.LinkGroupID; RedDotUpdate(new DefaultEventData(){eventData = 0}); } private void RedDotChangeState(IEventData e) { if (UnlockId != 0) { if (!ULockManager.Instance.IsULock(UnlockId)) { return; } } ReddotConfig reddotConfig = ConfigComponent.Instance.Get(RedDotConfigId); DefaultEventData data = (DefaultEventData)e; int[] eventData = data.eventData as int[]; if (eventData[0] == RedDotConfigId) { if (eventData[1] == 0) { if (reddotConfig.Visible == 1) { RedDotRoot.SetActive(false); } } else { RedDotRoot.SetActive(true); } } } public void CustomInit(int reddDotConfigId) { RedDotConfigId = reddDotConfigId; EventManager.Instance.RemoveEventListener(CustomEventType.RedDotUpdate, RedDotUpdate); EventManager.Instance.AddEventListener(CustomEventType.RedDotUpdate, RedDotUpdate); EventManager.Instance.RemoveEventListener(CustomEventType.RedDotChangeState, RedDotChangeState); EventManager.Instance.AddEventListener(CustomEventType.RedDotChangeState, RedDotChangeState); ReddotConfig reddotConfig = ConfigComponent.Instance.Get(RedDotConfigId); RedDotRoot.SetActive(false); GroupId = reddotConfig.GroupID; Layer = reddotConfig.Layer; LinkGroupIds = reddotConfig.LinkGroupID; RedDotUpdate(new DefaultEventData(){eventData = 0}); } private void RedDotUpdate(IEventData e) { DefaultEventData data = (DefaultEventData)e; if ((int)data.eventData != 0 && (int)data.eventData != GroupId) { return; } if (UnlockId != 0) { if (ULockManager.Instance.IsULock(UnlockId)) { if (RedDotManager.Instance.TargetRedDotIsEnable(RedDotConfigId)) { RedDotRoot.SetActive(true); ReddotConfig reddotConfig = ConfigComponent.Instance.Get(RedDotConfigId); if (reddotConfig.EnableForTarget != 0) { bool isEnable = RedDotManager.Instance.TargetRedDotIsEnable2(reddotConfig.EnableForTarget); if (isEnable) { RedDotRoot.SetActive(true); } else { RedDotRoot.SetActive(false); } } } else { RedDotRoot.SetActive(false); } } } else { if (RedDotManager.Instance.TargetRedDotIsEnable(RedDotConfigId)) { RedDotRoot.SetActive(true); ReddotConfig reddotConfig = ConfigComponent.Instance.Get(RedDotConfigId); if (reddotConfig.EnableForTarget != 0) { bool isEnable = RedDotManager.Instance.TargetRedDotIsEnable2(reddotConfig.EnableForTarget); if (isEnable) { RedDotRoot.SetActive(true); } else { RedDotRoot.SetActive(false); } } } else { RedDotRoot.SetActive(false); } } } public void OnDestroy() { EventManager.Instance.RemoveEventListener(CustomEventType.RedDotUpdate, RedDotUpdate); EventManager.Instance.RemoveEventListener(CustomEventType.RedDotChangeState, RedDotChangeState); } }