예제 #1
0
        public void SendRedPointNotify(ERedPointType redPointType)
        {
            if (redPointType == ERedPointType.None)
            {
                return;
            }

            RedPointDelegateInfo delegateInfo = GetRedPointDelegate(redPointType);

            if (delegateInfo != null)
            {
                int num = GetRedPointNum(redPointType);
                for (int i = 0; i < delegateInfo.delegates.Count; i++)
                {
                    if (delegateInfo.delegates[i] != null)
                    {
                        delegateInfo.delegates[i].OnTipsChanged(redPointType, num);
                    }
                }
            }

            ERedPointType parentType = RedPointParentData.GetRedPointParentType(redPointType);

            if (parentType != ERedPointType.None)
            {
                SendRedPointNotify(parentType);
            }
        }
예제 #2
0
 public FunctionListItemData(string desc, UnityAction callback = null, EFunctionItemType itemType = EFunctionItemType.normal, ERedPointType redPoint = ERedPointType.None)
 {
     Desc              = desc;
     Callback          = callback;
     eFunctionItemType = itemType;
     redPointType      = redPoint;
 }
예제 #3
0
        public int GetRedPointNum(ERedPointType redPointType)
        {
            int result = 0;

            redPointDict.TryGetValue(redPointType, out result);
            return(result);
        }
예제 #4
0
 private RedPointDelegateInfo GetRedPointDelegate(ERedPointType redPointType)
 {
     if (redPointDelegateDict.ContainsKey(redPointType))
     {
         return(redPointDelegateDict[redPointType]);
     }
     return(null);
 }
예제 #5
0
 public void OnTipsChanged(ERedPointType redPointType, int number)
 {
     if (redPointGO != null)
     {
         redPointGO.SetActive(number > 0);
     }
     if (redPointNumText != null)
     {
         redPointNumText.text = number > 99 ? "99" : number > 1 ? number.ToString() : "";
     }
 }
예제 #6
0
        private IRedPointData CreateRedPointData(string id, ERedPointType type)
        {
            switch (type)
            {
            case ERedPointType.Simple:
                return(new SimpleRedPointData(id));

            case ERedPointType.Number:
                return(new NumberRedPointData(id));
            }
            return(null);
        }
        /// <summary>
        /// 获得红点父类型
        /// </summary>
        /// <param name="redPointType"></param>
        /// <returns></returns>
        public static ERedPointType GetRedPointParentType(ERedPointType redPointType)
        {
            ERedPointType result = ERedPointType.None;

            for (int i = 0; i < TupleList.Count; i++)
            {
                var tuple = TupleList[i];
                if (tuple.Item1 == redPointType)
                {
                    result = tuple.Item2;
                    break;
                }
            }

            return(result);
        }
        /// <summary>
        /// 获得所有红点子类型
        /// </summary>
        /// <returns></returns>
        public static List <ERedPointType> GetRedPointSubTypes(ERedPointType redPointType)
        {
            List <ERedPointType> result = null;

            for (int i = 0; i < TupleList.Count; i++)
            {
                var tuple = TupleList[i];
                if (tuple.Item2 == redPointType)
                {
                    if (result == null)
                    {
                        result = new List <ERedPointType>();
                    }
                    result.Add(tuple.Item1);
                }
            }

            return(result);
        }
예제 #9
0
        public bool UnRegisterTipsDelegate(ERedPointType redPointType)
        {
            if (redPointType == ERedPointType.None)
            {
                return(false);
            }

            bool result = false;

            RedPointDelegateInfo delegateInfo = GetRedPointDelegate(redPointType);

            if (delegateInfo != null)
            {
                result = redPointDelegateDict.Remove(redPointType);
                delegateInfo.OnRecycle();
                SimplePool <RedPointDelegateInfo> .Release(delegateInfo);
            }

            return(result);
        }
예제 #10
0
        public int GetRedPointNum(ERedPointType redPointType)
        {
            int result = 0;
            List <ERedPointType> subTypes = RedPointParentData.GetRedPointSubTypes(redPointType);

            if (subTypes == null || subTypes.Count == 0)
            {
                result = redPointDS.GetRedPointNum(redPointType);
            }
            else
            {
                result += redPointDS.GetRedPointNum(redPointType);
                for (int i = 0; i < subTypes.Count; i++)
                {
                    result += GetRedPointNum(subTypes[i]);
                }
            }

            return(result);
        }
예제 #11
0
        public bool UnRegisterRedPointDelegate(ERedPointType redPointType, IRedPointDelegate callback)
        {
            if (redPointType == ERedPointType.None || callback == null)
            {
                return(false);
            }

            bool result = false;

            RedPointDelegateInfo delegateInfo = GetRedPointDelegate(redPointType);

            if (delegateInfo != null)
            {
                result = delegateInfo.delegates.Remove(callback);
                if (delegateInfo.delegates.Count == 0)
                {
                    UnRegisterTipsDelegate(redPointType);
                }
            }

            return(result);
        }
예제 #12
0
        public bool RegisterRedPointDelegate(ERedPointType redPointType, IRedPointDelegate callback)
        {
            if (redPointType == ERedPointType.None || callback == null)
            {
                return(false);
            }

            bool alreadyRegister = false;
            RedPointDelegateInfo delegateInfo = GetRedPointDelegate(redPointType);

            if (delegateInfo != null)
            {
                for (int i = 0; i < delegateInfo.delegates.Count; i++)
                {
                    if (delegateInfo.delegates[i] == callback)
                    {
                        alreadyRegister = true;
                        break;
                    }
                }
            }

            if (!alreadyRegister)
            {
                if (delegateInfo == null)
                {
                    delegateInfo = SimplePool <RedPointDelegateInfo> .Get();

                    delegateInfo.redPointType          = redPointType;
                    redPointDelegateDict[redPointType] = delegateInfo;
                }
                delegateInfo.delegates.Add(callback);
            }

            return(true);
        }
예제 #13
0
 static void AddRedPointParentData(ERedPointType type, ERedPointType parentType)
 {
     _tupleList.Add(new Tuple <ERedPointType, ERedPointType>(type, parentType));
 }
 private void ClearRedPoint(ERedPointType type)
 {
     RedPointManager.Instance.SetRedPointNum(type, 0);
 }
예제 #15
0
 public void SetRedPointNum(ERedPointType redPointType, int num)
 {
     redPointDict[redPointType] = num;
 }
예제 #16
0
 public void SetRedPointNum(ERedPointType redPointType, int num)
 {
     redPointDS.SetRedPointNum(redPointType, num);
     SendRedPointNotify(redPointType);
 }
예제 #17
0
 public void InitRedPointType(ERedPointType inType)
 {
     type = inType;
     UpdateRedPoint();
 }
예제 #18
0
 public bool OnRecycle()
 {
     redPointType = ERedPointType.None;
     delegates.Clear();
     return(true);
 }