From 33130a24f50494083c9a65716f3aec1a50f3f966 Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期一, 13 八月 2018 20:58:30 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 System/HappyXB/HappyXBModel.cs         |   72 +++++++++++---
 System/Welfare/OperationTimeHepler.cs  |  116 ++++++++++++++++++++++-
 Utility/EnumHelper.cs                  |    1 
 System/HappyXB/RuneXBWin.cs            |   21 +++
 System/Welfare/WelfareCenter.cs        |    4 
 System/HappyXB/HappyXBGetItemWin.cs    |    2 
 System/Redpoint/RedpointBehaviour.cs   |    8 +
 System/HappyXB/BestXBWin.cs            |   26 ++++
 System/Vip/FairyJadeInvestmentModel.cs |    4 
 9 files changed, 220 insertions(+), 34 deletions(-)

diff --git a/System/HappyXB/BestXBWin.cs b/System/HappyXB/BestXBWin.cs
index bf6e4dd..b53a6d2 100644
--- a/System/HappyXB/BestXBWin.cs
+++ b/System/HappyXB/BestXBWin.cs
@@ -245,13 +245,13 @@
         private void RefreshXBResult()
         {
             CreateGetItem();
-            targetIndexs = XBModel.GetXbResultDict().Values.ToList();
+            targetIndexs = XBModel.rangelist;
             StartCoroutine(PlayXBAni(0,0));
         }
 
         private void CreateGetItem()
         {
-            List<XBGetItem> xbResultlist = XBModel.GetXbResultDict().Values.ToList();
+            List<XBGetItem> xbResultlist = XBModel.rangelist;
             if (xbResultlist.Count < 2) return;
 
             luckDesObj.SetActive(false);
@@ -284,8 +284,19 @@
             if (index < xbResultItemBasiclist.Count)
             {
                 xbResultItemBasiclist[index].gameObject.SetActive(true);
-                xbResultItemBasiclist[index].transform.DOScale(new Vector3(1, 1, 1), scaleTime);
+                xbResultItemBasiclist[index].transform.DOScale(new Vector3(1, 1, 1), scaleTime).OnComplete(()=>
+                {
+                    if (index == xbResultItemBasiclist.Count - 1)
+                    {
+                        RestXBItemState();
+                    }
+                });
+                if (xbResultItemBasiclist[index].itemConfig != null)
+                {
+                    XBModel.GetNotifyResult(xbResultItemBasiclist[index].itemConfig.ID, int.Parse(xbResultItemBasiclist[index].countText.text));
+                }
                 XBModel.GetNotifyResult(xbResultItemBasiclist[index].itemConfig.ID, int.Parse(xbResultItemBasiclist[index].countText.text));
+                
             }
         }
 
@@ -353,7 +364,14 @@
             yield return new WaitForSeconds(stopTime);
             if(isEndXB)
             {
-                RestXBItemState();
+                if(targetIndexs.Count > 1)
+                {
+                    ShowXBResultCtrl(targetIndexs.Count - 1);
+                }
+                else
+                {
+                    RestXBItemState();
+                }
             }
             else
             {
diff --git a/System/HappyXB/HappyXBGetItemWin.cs b/System/HappyXB/HappyXBGetItemWin.cs
index 683d133..eb4f6a1 100644
--- a/System/HappyXB/HappyXBGetItemWin.cs
+++ b/System/HappyXB/HappyXBGetItemWin.cs
@@ -169,7 +169,7 @@
             DestroyGetItemlist();
             GetItemlist.Clear();
             getItemBasiclist.Clear();
-            xbItemlist = XBModel.GetXbResultDict().Values.ToList();
+            xbItemlist = XBModel.rangelist;
             for (int i = 0; i < xbItemlist.Count; i++)
             {
                 XBGetItem xbItem = xbItemlist[i];
diff --git a/System/HappyXB/HappyXBModel.cs b/System/HappyXB/HappyXBModel.cs
index 20368a5..785b799 100644
--- a/System/HappyXB/HappyXBModel.cs
+++ b/System/HappyXB/HappyXBModel.cs
@@ -101,7 +101,16 @@
 
         public void GetNotifyResult(int itemId, int itemCount)
         {
-            DesignDebug.Log("GetNotifyResult" + XBNotifyParms.Count);
+            int notifyIndex = 0;
+            if(CheckNotifyItemByIdAndCnt(itemId,itemCount,out notifyIndex))
+            {
+                SysNotifyMgr.Instance.ShowTip("HappyXB", XBNotifyParms[notifyIndex].ToArray());
+            }
+        }
+
+        private bool CheckNotifyItemByIdAndCnt(int itemId,int itemCnt,out int notifyIndex)
+        {
+            notifyIndex = 0;
             for (int i = 0; i < XBNotifyParms.Count; i++)
             {
                 if (XBNotifyParms[i] != null && XBNotifyParms[i].Count > 3)
@@ -110,13 +119,14 @@
                     int.TryParse(XBNotifyParms[i][1].ToString(), out notifyItemId);
                     int notifyItemCnt = 0;
                     int.TryParse(XBNotifyParms[i][3].ToString(), out notifyItemCnt);
-                    if (notifyItemId == itemId && notifyItemCnt == itemCount)
+                    if (notifyItemId == itemId && notifyItemCnt == itemCnt)
                     {
-                        SysNotifyMgr.Instance.ShowTip("HappyXB", XBNotifyParms[i].ToArray());
-                        break;
+                        notifyIndex = i;
+                        return true;
                     }
                 }
             }
+            return false;
         }
 
         private void SetXBFuncDict(int type,FuncConfigConfig xbSet)
@@ -306,16 +316,17 @@
                     }
                 }
             }
-
-            if(RefreshXBResultAct != null)
+            SetXBResultRecord();
+            if (RefreshXBResultAct != null)
             {
                 RefreshXBResultAct();
             }
-            SetXBResultRecord();
+        
         }
 
         List<string> itemGetTimeArray = new List<string>();
         List<string> getNewItemLoglist = new List<string>();
+        List<XBGetItem> xbItemRecordlist = new List<XBGetItem>();
         public void SetXBResultRecord()
         {
             if (PlayerPrefs.HasKey(HAPPYXBITEMKEY))
@@ -326,22 +337,22 @@
             {
                 itemGetTimeArray.Clear();
             }
-
+            xbItemRecordlist.Clear();
             getNewItemLoglist.Clear();
-            List<XBGetItem> xbItemlist = GetXbResultDict().Values.ToList();
-            if (xbItemlist != null)
+            xbItemRecordlist.AddRange(GetXBResultlist());
+            if (xbItemRecordlist != null)
             {
-                int remianLogNum = (itemGetTimeArray.Count + xbItemlist.Count) - 30;
+                int remianLogNum = (itemGetTimeArray.Count + xbItemRecordlist.Count) - 30;
                 if (remianLogNum > 0)
                 {
                     int startIndex = itemGetTimeArray.Count - remianLogNum;
                     itemGetTimeArray.RemoveRange(startIndex, remianLogNum);
                 }
-                xbItemlist.Sort(CompareByTime);
-                for (int i = 0; i < xbItemlist.Count; i++)
+                xbItemRecordlist.Sort(CompareByTime);
+                for (int i = 0; i < xbItemRecordlist.Count; i++)
                 {
-                    string log = Language.Get("HappyXBGetItemTime", xbItemlist[i].createTimeStr, UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.PlayerName),
-                        xbItemlist[i].itemId, xbItemlist[i].count);
+                    string log = Language.Get("HappyXBGetItemTime", xbItemRecordlist[i].createTimeStr, UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.PlayerName),
+                        xbItemRecordlist[i].itemId, xbItemRecordlist[i].count);
                     getNewItemLoglist.Add(log);
                 }
                 if (getNewItemLoglist.Count > 0)
@@ -362,6 +373,37 @@
             return 0;
         }
 
+        public List<XBGetItem> rangelist = new List<XBGetItem>();
+        List<int> index = new List<int>();
+        public List<XBGetItem> GetXBResultlist()
+        {
+            rangelist.Clear();
+            index.Clear();
+            List<XBGetItem> xbItemlist = xbResultDict.Values.ToList();
+            for(int i = 0; i < xbItemlist.Count; i++)
+            {
+                index.Add(i);
+            }
+            SetRandomList(xbItemlist);
+            return rangelist;
+        }
+
+        public void SetRandomList(List<XBGetItem> xbItemlist)
+        {
+            int currentRandom = UnityEngine.Random.Range(0,index.Count);
+            XBGetItem current = xbItemlist[index[currentRandom]];
+            if (!rangelist.Contains(current))
+            {
+                rangelist.Add(current);
+                index.Remove(index[currentRandom]);
+               
+            }
+            if(index.Count > 0)
+            {
+                SetRandomList(xbItemlist);
+            }
+        }
+
         public Dictionary<int, XBGetItem> GetXbResultDict()
         {
             return xbResultDict;
diff --git a/System/HappyXB/RuneXBWin.cs b/System/HappyXB/RuneXBWin.cs
index 67e7acd..ad8d081 100644
--- a/System/HappyXB/RuneXBWin.cs
+++ b/System/HappyXB/RuneXBWin.cs
@@ -254,13 +254,13 @@
         private void RefreshXBResult()
         {
             CreateGetItem();
-            targetIndexs = XBModel.GetXbResultDict().Values.ToList();
+            targetIndexs = XBModel.rangelist;
             StartCoroutine(PlayXBAni(0,0));
         }
 
         private void CreateGetItem()
         {
-            List<XBGetItem> xbResultlist = XBModel.GetXbResultDict().Values.ToList();
+            List<XBGetItem> xbResultlist = XBModel.rangelist;
             if (xbResultlist.Count < 2) return;
             luckDesObj.SetActive(false);
             getXBItemParent.gameObject.SetActive(true);
@@ -292,7 +292,13 @@
             if (index < xbResultItemBasiclist.Count)
             {
                 xbResultItemBasiclist[index].gameObject.SetActive(true);
-                xbResultItemBasiclist[index].transform.DOScale(new Vector3(1, 1, 1), scaleTime);
+                xbResultItemBasiclist[index].transform.DOScale(new Vector3(1, 1, 1), scaleTime).OnComplete(() =>
+                {
+                    if (index == xbResultItemBasiclist.Count - 1)
+                    {
+                        RestXBItemState();
+                    }
+                }); ;
                 if(xbResultItemBasiclist[index].itemConfig != null)
                 {
                     XBModel.GetNotifyResult(xbResultItemBasiclist[index].itemConfig.ID, int.Parse(xbResultItemBasiclist[index].countText.text));
@@ -364,7 +370,14 @@
             yield return new WaitForSeconds(stopTime);
             if (isEndXB)
             {
-                RestXBItemState();
+                if (targetIndexs.Count > 1)
+                {
+                    ShowXBResultCtrl(targetIndexs.Count - 1);
+                }
+                else
+                {
+                    RestXBItemState();
+                }
             }
             else
             {
diff --git a/System/Redpoint/RedpointBehaviour.cs b/System/Redpoint/RedpointBehaviour.cs
index d978e77..0da0c97 100644
--- a/System/Redpoint/RedpointBehaviour.cs
+++ b/System/Redpoint/RedpointBehaviour.cs
@@ -47,6 +47,9 @@
         [SerializeField]
         Transform m_FullRedpoint;
 
+        [SerializeField]
+        Transform m_GetRewardRedpoint;
+
         bool m_Show = false;
         public bool show {
             get { return m_Show; }
@@ -98,6 +101,11 @@
                 m_FullRedpoint.gameObject.SetActive(state == RedPointState.Full);
             }
 
+            if (m_GetRewardRedpoint != null)
+            {
+                m_GetRewardRedpoint.gameObject.SetActive(state == RedPointState.GetReward);
+            }
+
             if (state == RedPointState.Quantity && m_Quantity != null)
             {
                 var count = RedpointCenter.Instance.GetRedpointCount(redpointId);
diff --git a/System/Vip/FairyJadeInvestmentModel.cs b/System/Vip/FairyJadeInvestmentModel.cs
index 01c5f8d..644834a 100644
--- a/System/Vip/FairyJadeInvestmentModel.cs
+++ b/System/Vip/FairyJadeInvestmentModel.cs
@@ -228,7 +228,7 @@
                     int IsReceive = InfoSeriors[indexID];
                     if (IsReceive == 0)
                     {
-                        redPointStre1.state = RedPointState.Simple;
+                        redPointStre1.state = RedPointState.GetReward;
                         JumpInedx = type;
                         return;
                     }
@@ -244,7 +244,7 @@
                         }
                         if (fairyJadeInvestmentItem[0].item.count > AtPresentNumber)
                         {
-                            redPointStre1.state = RedPointState.Simple;
+                            redPointStre1.state = RedPointState.GetReward;
                             JumpInedx = type;
                             return;
                         }
diff --git a/System/Welfare/OperationTimeHepler.cs b/System/Welfare/OperationTimeHepler.cs
index 203f306..2bc2f4f 100644
--- a/System/Welfare/OperationTimeHepler.cs
+++ b/System/Welfare/OperationTimeHepler.cs
@@ -15,6 +15,7 @@
         public event Action<Operation> operationServerCloseEvent;//鐗规畩鎯呭喌涓嬭Е鍙�
         public event Action<Operation, int> operationEndEvent;//娲诲姩缁撴潫鏃堕棿瑙﹀彂  绗簩涓弬鏁�0--杩囨椿鍔ㄦ椂闂磋Е鍙�  1--杩囨椿鍔ㄥぉ瑙﹀彂
         public event Action<Operation, int> operationStartEvent;//娲诲姩寮�濮嬫椂闂村苟涓旀弧瓒冲紑鍚潯浠惰Е鍙� 绗簩涓弬鏁�0--娲诲姩鏃堕棿瑙﹀彂  1--娲诲姩澶╄Е鍙�
+        public event Action<Operation> operationAdvanceEvent;//娲诲姩鎻愬墠寮�鏀句簨浠�
         public OperationTimeHepler()
         {
             DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerDataInitializeEvent;
@@ -63,6 +64,7 @@
                     {
                         operation.inTimeNotify = true;
                         operation.stepTimeNotify = false;
+                        operation.inAdvanceNotify = false;
                         DesignDebug.LogFormat("{0}  娲诲姩鏃堕棿寮�濮�", (Operation)i);
                         if (operationStartEvent != null)
                         {
@@ -77,6 +79,15 @@
                         if (operationEndEvent != null)
                         {
                             operationEndEvent((Operation)i, 0);
+                        }
+                    }
+
+                    if (!operation.inAdvanceNotify && operation.InAdvanceTime(TimeUtility.ServerNow))
+                    {
+                        operation.inAdvanceNotify = true;
+                        if (operationAdvanceEvent != null)
+                        {
+                            operationAdvanceEvent((Operation)i);
                         }
                     }
                 }
@@ -631,6 +642,40 @@
         }
     }
 
+    public class OperationDateEnumerator : IEnumerable, IEnumerator
+    {
+        OperationDate start;
+        OperationDate end;
+
+        public int index = 0;
+
+        public object Current
+        {
+            get
+            {
+                var date = start;
+                date.day += index;
+                return date;
+            }
+        }
+
+        public IEnumerator GetEnumerator()
+        {
+            return (IEnumerator)this;
+        }
+
+        public bool MoveNext()
+        {
+            index++;
+            return index <= (start - end);
+        }
+
+        public void Reset()
+        {
+            index = 0;
+        }
+    }
+
     public struct OperationDate
     {
         public int year;
@@ -657,6 +702,13 @@
         {
             var yearString = StringUtility.Contact(year, Language.Get("Year"));
             return StringUtility.Contact(showYear ? yearString : string.Empty, month, Language.Get("Month"), day, Language.Get("Day"));
+        }
+
+        public static int operator -(OperationDate x, OperationDate y)
+        {
+            DateTime _x = new DateTime(x.year, x.month, x.day);
+            DateTime _y = new DateTime(y.year, y.month, y.day);
+            return (int)(_y - _x).TotalDays;
         }
     }
 
@@ -712,6 +764,7 @@
         public OperationDate startDate;
         public OperationDate endDate;
         public List<OperationTime> times = new List<OperationTime>();
+        public OperationDateEnumerator dateEnumerator;
 
         public bool allDay = false;
 
@@ -720,6 +773,10 @@
 
         public bool inTimeNotify = false;
         public bool inDateNotify = false;
+
+        public bool inAdvanceNotify = false;
+
+        public int inAdvanceSeconds = 0;
 
         public int limitLv;
 
@@ -837,6 +894,57 @@
             return -1;
         }
 
+        public bool InAdvanceTime(DateTime time)
+        {
+            if (InTime(time) || inAdvanceSeconds <= 0)
+            {
+                return false;
+            }
+            var seconds = 0;
+            if (TryGetInAdvanceSurplusSecond(time, out seconds))
+            {
+                return seconds < inAdvanceSeconds;
+            }
+            return false;
+        }
+
+        public bool TryGetInAdvanceSurplusSecond(DateTime time, out int seconds)
+        {
+            seconds = 0;
+            if (InTime(time))
+            {
+                return false;
+            }
+            if (allDay)
+            {
+                var startTime = new DateTime(startDate.year, startDate.month, startDate.day);
+                seconds = (int)(startTime - time).TotalSeconds;
+            }
+            else
+            {
+                if (dateEnumerator != null)
+                {
+                    foreach (OperationDate date in dateEnumerator)
+                    {
+                        for (int i = 0; i < times.Count; i++)
+                        {
+                            var startTime = new DateTime(date.year, date.month, date.day, times[i].startHour, times[i].startMinute, 0);
+                            seconds = (int)(startTime - time).TotalSeconds;
+                            if (seconds > 0)
+                            {
+                                break;
+                            }
+                        }
+                        if (seconds > 0)
+                        {
+                            break;
+                        }
+                    }
+                }
+            }
+            return seconds > 0;
+        }
+
         public int GetSurplusTime(DateTime time)
         {
             var seconds = 0;
@@ -871,7 +979,9 @@
             stepDateNotify = false;
             inTimeNotify = false;
             inDateNotify = false;
+            inAdvanceNotify = false;
             allDay = false;
+            inAdvanceSeconds = 0;
             limitLv = 0;
             times.Clear();
         }
@@ -890,12 +1000,6 @@
         {
             var textBuilder = OperationTimeHepler.textBuilder;
             textBuilder.Length = 0;
-            //textBuilder.Append(startDate.ToDisplay());
-            //if (startDate != endDate)
-            //{
-            //    textBuilder.Append("鈥�");
-            //    textBuilder.Append(endDate.ToDisplay(startDate.year != endDate.year));
-            //}
             if (allDay)
             {
                 textBuilder.Append(Language.Get("OpenAllDay"));
diff --git a/System/Welfare/WelfareCenter.cs b/System/Welfare/WelfareCenter.cs
index b323994..5382e89 100644
--- a/System/Welfare/WelfareCenter.cs
+++ b/System/Welfare/WelfareCenter.cs
@@ -71,7 +71,7 @@
                 WindowCenter.Instance.Open<WelfareWin>(false, 7);
                 return;
             }
-            if (fairyJadeInvestmentModel.redPointStre1.state == RedPointState.Simple)
+            if (fairyJadeInvestmentModel.redPointStre1.state == RedPointState.Simple || fairyJadeInvestmentModel.redPointStre1.state == RedPointState.GetReward)
             {
                 WindowCenter.Instance.Close<MainInterfaceWin>();
                 WindowCenter.Instance.Open<WelfareWin>(false, 8);
@@ -122,7 +122,7 @@
             {
                 return 7;
             }
-            if (fairyJadeInvestmentModel.redPointStre1.state == RedPointState.Simple)
+            if (fairyJadeInvestmentModel.redPointStre1.state == RedPointState.Simple || fairyJadeInvestmentModel.redPointStre1.state == RedPointState.GetReward)
             {             
                 return 8;
             }
diff --git a/Utility/EnumHelper.cs b/Utility/EnumHelper.cs
index 77eb63a..923f3db 100644
--- a/Utility/EnumHelper.cs
+++ b/Utility/EnumHelper.cs
@@ -1039,6 +1039,7 @@
     Simple = 1,
     Quantity = 2,
     Full = 3,
+    GetReward = 4,
 }
 
 public enum TeamInviteType

--
Gitblit v1.8.0