From 85448a839d432aab4220e6b23e55a0270e007b6f Mon Sep 17 00:00:00 2001
From: Client_PangDeRong <593317293@qq.com>
Date: 星期四, 23 八月 2018 18:03:38 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 System/FindPrecious/DemonJarVictoryWin.cs          |    4 
 System/OpenServerActivity/ImpactRankModel.cs       |    5 
 System/Vip/FirstRechargeWin.cs                     |    1 
 System/Welfare/WelfareCenter.cs                    |    4 
 Core/GameEngine/Login/Launch.cs                    |    1 
 System/OpenServerActivity/OSGiftBehaviour.cs       |   22 +
 System/Vip/FairyJadeInvestmentWin.cs               |    2 
 System/SystemSetting/SystemSetWin.cs               |   28 ++
 System/DailyQuest/DayRemind.cs                     |    4 
 System/Rune/RuneMosaicWin.cs                       |    6 
 UI/Common/OnOffToggle.cs.meta                      |   12 +
 System/OpenServerActivity/OSGiftModel.cs           |   33 +-
 System/OpenServerActivity/OpenServerGiftWin.cs     |    5 
 System/Tip/ServerTipDetails.cs                     |  244 +++++++++++--------
 System/Vip/VipInvest/VipInvestWin.cs               |    2 
 System/Message/RichText.cs                         |    6 
 System/SystemSetting/SystemSetting.cs              |   19 +
 System/FindPrecious/ElderGodAreaRebornWin.cs       |   55 +++-
 System/Treasure/TreasureLevelUpWin.cs              |    6 
 System/GeneralConfig/GeneralConfig.cs              |    3 
 System/MainInterfacePanel/FlyingShoesTask.cs       |   14 +
 System/AssetVersion/InGameDownLoadProgress.cs      |    6 
 System/OpenServerActivity/OpenServerActivityWin.cs |   14 +
 System/Message/SysNotifyMgr.cs                     |    7 
 System/Tip/MarqueeWin.cs                           |   41 ++
 System/Vip/VipInvest/VipInvestModel.cs             |   30 +-
 UI/Common/OnOffToggle.cs                           |   61 +++++
 System/KnapSack/Logic/EquipTip.cs                  |   12 
 System/Vip/FairyJadeInvestmentModel.cs             |   24 +
 29 files changed, 482 insertions(+), 189 deletions(-)

diff --git a/Core/GameEngine/Login/Launch.cs b/Core/GameEngine/Login/Launch.cs
index 9219e44..4d48dcb 100644
--- a/Core/GameEngine/Login/Launch.cs
+++ b/Core/GameEngine/Login/Launch.cs
@@ -43,6 +43,7 @@
         SoundPlayer.CreateSoundPlayer();
         SoundPlayer.Instance.PlayLoginMusic();
         SystemSetting.Instance.SetSoundVolume(SystemSetting.Instance.GetSoundVolume());
+        SystemSetting.Instance.SetVSyncCount(SystemSetting.Instance.GetVSyncCount());
 
         SDKUtility.Instance.Init();
         GameObjectPoolManager.Instance.gameObject.name = "GameObjectPool";
diff --git a/System/AssetVersion/InGameDownLoadProgress.cs b/System/AssetVersion/InGameDownLoadProgress.cs
index 1f8e0b3..47da693 100644
--- a/System/AssetVersion/InGameDownLoadProgress.cs
+++ b/System/AssetVersion/InGameDownLoadProgress.cs
@@ -28,7 +28,8 @@
                 && InGameDownLoad.Instance.completeDownLoadAccount == PlayerDatas.Instance.baseData.AccID)
             {
                 m_ProgressText.gameObject.SetActive(true);
-                m_ProgressText.text = "100%";
+                var progress = Mathf.RoundToInt(InGameDownLoad.Instance.progress * 100);
+                m_ProgressText.text = StringUtility.Contact(progress, "%");
                 this.gameObject.SetActive(true);
             }
             else
@@ -91,7 +92,8 @@
                 case InGameDownLoad.State.Award:
                     this.gameObject.SetActive(true);
                     m_ProgressText.gameObject.SetActive(true);
-                    m_ProgressText.text = "100%";
+                    var progress = Mathf.RoundToInt(InGameDownLoad.Instance.progress * 100);
+                    m_ProgressText.text = StringUtility.Contact(progress, "%");
                     break;
             }
         }
diff --git a/System/DailyQuest/DayRemind.cs b/System/DailyQuest/DayRemind.cs
index 48da12e..7e79d34 100644
--- a/System/DailyQuest/DayRemind.cs
+++ b/System/DailyQuest/DayRemind.cs
@@ -42,7 +42,7 @@
     public const string POTENTIAL_NO_NOTIFY = "PotentialNoNotify";
     public const string FLASHSALE_REDPOINT = "FlashSale_Redpoint";
     public const string OSTIMEGIFT_REDPOINT = "OSTimeGift_Redpoint";
-    public const string TRIALEXCHANGE_REDPOINT = "TrialExchange_Redpoint";
+    public const string OSGIFT_REDPOINT = "OSGitf_Redpoint";
     public Dictionary<string, int[]> dayRemindDic = new Dictionary<string, int[]>();
 
     public bool GetDayRemind(string _remindKey)
@@ -93,7 +93,7 @@
         SetDayRemind(POTENTIAL_NO_NOTIFY);
         SetDayRemind(FLASHSALE_REDPOINT);
         SetDayRemind(OSTIMEGIFT_REDPOINT);
-        SetDayRemind(TRIALEXCHANGE_REDPOINT);
+        SetDayRemind(OSGIFT_REDPOINT);
     }
 
     private void SetDayRemind(string _key)
diff --git a/System/FindPrecious/DemonJarVictoryWin.cs b/System/FindPrecious/DemonJarVictoryWin.cs
index 63fbde4..ed71643 100644
--- a/System/FindPrecious/DemonJarVictoryWin.cs
+++ b/System/FindPrecious/DemonJarVictoryWin.cs
@@ -18,7 +18,7 @@
         [SerializeField] Transform m_ContainerPoivt;
         [SerializeField] Transform m_KillRewardExplain;
         [SerializeField] Text m_Rank;
-        [SerializeField] Text m_RewardType;
+        [SerializeField] RectTransform  m_FirstRankRewardTip;
         [SerializeField] Transform m_DoubleReward;
         [SerializeField] Transform m_DoubleChallenge;
         [SerializeField] ScrollRect m_RewardsScroll;
@@ -112,7 +112,7 @@
 
             var rank = model.dungeonResult.rank;
             m_Rank.text = Language.Get("DemonJar7", rank);
-            m_RewardType.text = Language.Get(rank == 1 ? "DemonJar9" : "DemonJar11");
+            m_FirstRankRewardTip.gameObject.SetActive(rank == 1);
             m_KillRewardExplain.gameObject.SetActive(rank == 1);
             m_DamageFirstEffect.gameObject.SetActive(rank == 1);
             m_VictoryFontContainer.gameObject.SetActive(rank != 1);
diff --git a/System/FindPrecious/ElderGodAreaRebornWin.cs b/System/FindPrecious/ElderGodAreaRebornWin.cs
index ebafe0e..95b19fb 100644
--- a/System/FindPrecious/ElderGodAreaRebornWin.cs
+++ b/System/FindPrecious/ElderGodAreaRebornWin.cs
@@ -18,12 +18,11 @@
         [SerializeField] Text m_ReBornTimer;
         [SerializeField] Button m_Reborn;
 
-        PlayerDeadModel _deadModel;
-        PlayerDeadModel DeadModel
-        {
-            get { return _deadModel ?? (_deadModel = ModelCenter.Instance.GetModel<PlayerDeadModel>()); }
-        }
+        PlayerDeadModel DeadModel { get { return ModelCenter.Instance.GetModel<PlayerDeadModel>(); } }
 
+        float rebornTime = 0f;
+        float secondTimer = 0f;
+        bool sendReborn = false;
         #region Built-in
         protected override void BindController()
         {
@@ -36,13 +35,22 @@
 
         protected override void OnPreOpen()
         {
-            TimeDownMgr.CoolTimeData coolDown;
-            if (TimeDownMgr.Instance.Get(TimeDownMgr.CoolTimeType.DuplicatesReborn, out coolDown))
-            {
-                RefreshTime(Mathf.RoundToInt(coolDown.duration - coolDown.time));
-            }
+            secondTimer = 0f;
+            sendReborn = false;
 
-            DeadModel.RefreshDuplicatesRebornCDEvent = RefreshTime;
+            try
+            {
+                rebornTime = Time.time + GeneralConfig.Instance.dungeonRebornClientTimes[ElderGodAreaModel.ELDERGODAREA_MAPID];
+                if (rebornTime <= Time.time)
+                {
+                    Reborn();
+                }
+            }
+            catch (Exception ex)
+            {
+                Debug.Log(ex);
+                rebornTime = Time.time + 10f;
+            }
         }
 
         protected override void OnAfterOpen()
@@ -51,6 +59,10 @@
 
         protected override void OnPreClose()
         {
+            if (!sendReborn)
+            {
+                Reborn();
+            }
         }
 
         protected override void OnAfterClose()
@@ -58,20 +70,33 @@
         }
         #endregion
 
-        private void RefreshTime(int _time)
+
+        protected override void LateUpdate()
         {
-            if (_time > 0)
+            base.LateUpdate();
+
+            if (Time.time >= rebornTime)
             {
-                m_ReBornTimer.text = StringUtility.Contact("(", _time, ")");
+                if (!sendReborn)
+                {
+                    Reborn();
+                }
             }
             else
             {
-                Reborn();
+                secondTimer -= Time.deltaTime;
+                if (secondTimer < 0f)
+                {
+                    secondTimer = 1f;
+                    var surplusSecond = Mathf.RoundToInt(rebornTime - Time.time);
+                    m_ReBornTimer.text = StringUtility.Contact("(", surplusSecond, ")");
+                }
             }
         }
 
         private void Reborn()
         {
+            sendReborn = true;
             DeadModel.SendRebornQuest(0);
             WindowCenter.Instance.Close<ElderGodAreaRebornWin>();
         }
diff --git a/System/GeneralConfig/GeneralConfig.cs b/System/GeneralConfig/GeneralConfig.cs
index 2ad19ed..f09490b 100644
--- a/System/GeneralConfig/GeneralConfig.cs
+++ b/System/GeneralConfig/GeneralConfig.cs
@@ -126,6 +126,8 @@
 
     public List<int> dungeonCanUseMoneyIds { get; private set; }
 
+    public Dictionary<int, int> dungeonRebornClientTimes { get; private set; }
+
     public void Init()
     {
         try
@@ -429,6 +431,7 @@
             inGameDownLoadHighestLevelPoint = GetInt("DownReward", 2);
 
             dungeonCanUseMoneyIds = new List<int>(GetIntArray("FBEnterTickeyAuto", 1));
+            dungeonRebornClientTimes = ConfigParse.GetDic<int, int>(GetInputString("DuplicatesRebornTime", 2));
         }
         catch (Exception ex)
         {
diff --git a/System/KnapSack/Logic/EquipTip.cs b/System/KnapSack/Logic/EquipTip.cs
index 6f6cd51..da98471 100644
--- a/System/KnapSack/Logic/EquipTip.cs
+++ b/System/KnapSack/Logic/EquipTip.cs
@@ -827,7 +827,10 @@
         {
             if(itemAttrData.packType != PackType.rptDogzItem && itemAttrData.packType != PackType.rptDogzEquip)
             {
-                dogzEquipDesText.gameObject.SetActive(false);
+                if (dogzEquipDesText != null)
+                {
+                    dogzEquipDesText.gameObject.SetActive(false);
+                }
                 if (itemAttrData.itemConfig.Description == "" || string.IsNullOrEmpty(itemAttrData.itemConfig.Description))
                 {
                     equipSourceNormal.gameObject.SetActive(true);
@@ -849,8 +852,11 @@
                 equipSourceNormal.gameObject.SetActive(false);
                 equipSourceDes.gameObject.SetActive(false);
                 equipSourceText.gameObject.SetActive(false);
-                dogzEquipDesText.gameObject.SetActive(true);
-                dogzEquipDesText.text = itemAttrData.itemConfig.Description;
+                if (dogzEquipDesText != null)
+                {
+                    dogzEquipDesText.gameObject.SetActive(true);
+                    dogzEquipDesText.text = itemAttrData.itemConfig.Description;
+                }
             }
            
         }
diff --git a/System/MainInterfacePanel/FlyingShoesTask.cs b/System/MainInterfacePanel/FlyingShoesTask.cs
index 0821dc5..5c95f60 100644
--- a/System/MainInterfacePanel/FlyingShoesTask.cs
+++ b/System/MainInterfacePanel/FlyingShoesTask.cs
@@ -322,11 +322,23 @@
             {
                 m_TitleText.text = "<color=#ec4bf6>" + TaskTitle(TaskID) + "</color>";
             }
+            int itemNumber = playerPack.GetItemCountByID(PackType.rptItem, mainModel.ItemID);//鑾峰彇鐗规畩鐗╁搧
+            if (mainModel.TaskId_Skill1.Contains(TaskID))
+            {
+                if (itemNumber >= mainModel.ItemNumber)
+                {
+                    m_TitleText.text = "<color=#109d06>" + TaskTitle(TaskID) + "</color>";
+                }
+                else
+                {
+                    m_TitleText.text = "<color=#feed28>" + TaskTitle(TaskID) + "</color>";
+                }
+            }
             string str = taskmodel.allMissionDict[TaskID].InforList;
             var taskinfo = Config.Instance.Get<TASKINFOConfig>(str);
             if (mainModel.TaskId_Skill1.Contains(TaskID))//鐗规畩浠诲姟
             {
-                int itemNumber = playerPack.GetItemCountByID(PackType.rptItem, mainModel.ItemID);//鑾峰彇鐗规畩鐗╁搧
+               
                 string Str_A = string.Format(Language.Get("PassiveSkillTask1"), mainModel.ItemID, itemNumber);
                 string Str_B = Language.Get("PassiveSkillTask2");
                 if (itemNumber >= mainModel.ItemNumber)
diff --git a/System/Message/RichText.cs b/System/Message/RichText.cs
index ca7e328..a2f70bf 100644
--- a/System/Message/RichText.cs
+++ b/System/Message/RichText.cs
@@ -500,7 +500,7 @@
     {
         get
         {
-            if (font == null)
+            if (font == null && Application.isPlaying)
             {
                 font = FontUtility.preferred;
             }
@@ -513,7 +513,7 @@
     {
         get
         {
-            if (font == null)
+            if (font == null && Application.isPlaying)
             {
                 font = FontUtility.preferred;
             }
@@ -719,7 +719,7 @@
         fitterText = fitterText.Replace("\n", "");
         float width = 0;
         textBuilder.Length = 0;
-        if (null == font)
+        if (null == font && Application.isPlaying)
         {
             font = FontUtility.preferred;
         }
diff --git a/System/Message/SysNotifyMgr.cs b/System/Message/SysNotifyMgr.cs
index a5abf42..7fd90e8 100644
--- a/System/Message/SysNotifyMgr.cs
+++ b/System/Message/SysNotifyMgr.cs
@@ -28,12 +28,19 @@
     private void Awake()
     {
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerDataInitializeEvent;
+        StageManager.Instance.onStageLoadFinish += OnStageLoadFinish;
     }
 
     protected override void OnDestroy()
     {
         base.OnDestroy();
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= BeforePlayerDataInitializeEvent;
+        StageManager.Instance.onStageLoadFinish -= OnStageLoadFinish;
+    }
+
+    private void OnStageLoadFinish()
+    {
+        ServerTipDetails.OnStageLoadFinish();
     }
 
     private void BeforePlayerDataInitializeEvent()
diff --git a/System/OpenServerActivity/ImpactRankModel.cs b/System/OpenServerActivity/ImpactRankModel.cs
index 1ba13f1..44886b9 100644
--- a/System/OpenServerActivity/ImpactRankModel.cs
+++ b/System/OpenServerActivity/ImpactRankModel.cs
@@ -495,7 +495,8 @@
         public bool CanGetAward(int _type, out int _displayIndex)
         {
             _displayIndex = 0;
-            if (IsMissImpactRank(_type) || !IsActivityClose(_type))
+            bool _locked = IsLock(_type);
+            if (IsMissImpactRank(_type) || _locked)
             {
                 return false;
             }
@@ -524,7 +525,7 @@
                         }
                     }
                 }
-                else
+                else if (IsActivityClose(_type))
                 {
                     var _start = (_cfg as OSCBillRankAwardConfig).RankA;
                     var _end = (_cfg as OSCBillRankAwardConfig).RankB;
diff --git a/System/OpenServerActivity/OSGiftBehaviour.cs b/System/OpenServerActivity/OSGiftBehaviour.cs
index 2bc822c..95f58c1 100644
--- a/System/OpenServerActivity/OSGiftBehaviour.cs
+++ b/System/OpenServerActivity/OSGiftBehaviour.cs
@@ -18,6 +18,7 @@
         [SerializeField] Text m_OriginalMoneyValue;
         [SerializeField] Button m_BuyBtn;
         [SerializeField] Image m_Complete;
+        [SerializeField] Text m_OwnMoney;
 
         StoreModel m_StoreModel;
         StoreModel storeModel
@@ -55,11 +56,21 @@
         private void OnEnable()
         {
             storeModel.RefreshBuyShopLimitEvent += RefreshBuyShopLimitEvent;
+            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerDataRefreshInfoEvent;
         }
 
         private void OnDisable()
         {
             storeModel.RefreshBuyShopLimitEvent -= RefreshBuyShopLimitEvent;
+            PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= PlayerDataRefreshInfoEvent;
+        }
+
+        private void PlayerDataRefreshInfoEvent(PlayerDataRefresh refreshType)
+        {
+            if (refreshType == PlayerDataRefresh.Gold || refreshType == PlayerDataRefresh.GoldPaper)
+            {
+                DisplayOwnMoney();
+            }
         }
 
         private void RefreshBuyShopLimitEvent()
@@ -111,11 +122,22 @@
                 m_OriginalMoneyValue.text = _storeConfig.MoneyOriginal.ToString();
             }
 
+            DisplayOwnMoney();
+
             var _limit = storeModel.GetBuyShopLimit((uint)storeId);
             m_Complete.gameObject.SetActive(_limit != null && _limit.BuyCnt >= _storeConfig.PurchaseNumber[0]);
             m_BuyBtn.gameObject.SetActive(_limit == null || _limit.BuyCnt < _storeConfig.PurchaseNumber[0]);
         }
 
+        private void DisplayOwnMoney()
+        {
+            if (m_OwnMoney != null)
+            {
+                var config = Config.Instance.Get<StoreConfig>(storeId);
+                m_OwnMoney.text = UIHelper.GetMoneyCnt(config == null ? 1 : config.MoneyType).ToString();
+            }
+        }
+
         private void OnBuyBtn()
         {
             var _storeConfig = Config.Instance.Get<StoreConfig>(storeId);
diff --git a/System/OpenServerActivity/OSGiftModel.cs b/System/OpenServerActivity/OSGiftModel.cs
index 8b748c1..f9921d5 100644
--- a/System/OpenServerActivity/OSGiftModel.cs
+++ b/System/OpenServerActivity/OSGiftModel.cs
@@ -27,22 +27,12 @@
             {
                 onStateUpate(6);
             }
+            UpdateRedpoint();
         }
 
         public event Action<int> onStateUpate;
 
         public bool activate { get; private set; }
-
-        private bool m_GiftGetNotify = false;
-        public bool giftGetNotify
-        {
-            get { return m_GiftGetNotify; }
-            set
-            {
-                m_GiftGetNotify = value;
-                OSGiftRedpoint.state = value ? RedPointState.Simple : RedPointState.None;
-            }
-        }
 
         StoreModel storeModel
         {
@@ -80,6 +70,7 @@
                 {
                     onStateUpate(6);
                 }
+                UpdateRedpoint();
             }
         }
 
@@ -94,6 +85,7 @@
                     onStateUpate(6);
                 }
             }
+            UpdateRedpoint();
         }
 
         public bool CheckActivate()
@@ -131,7 +123,24 @@
 
         public void OnBeforePlayerDataInitialize()
         {
-            giftGetNotify = false;
+        }
+        
+        public void SetDayRemind()
+        {
+            if (OSGiftRedpoint.state == RedPointState.Simple)
+            {
+                DayRemind.Instance.SetDayRemind(DayRemind.OSGIFT_REDPOINT, true);
+                UpdateRedpoint();
+            }
+        }
+
+        void UpdateRedpoint()
+        {
+            OSGiftRedpoint.state = RedPointState.None;
+            if (CheckActivate() && !DayRemind.Instance.GetDayRemind(DayRemind.OSGIFT_REDPOINT))
+            {
+                OSGiftRedpoint.state = RedPointState.Simple;
+            }
         }
 
         public Redpoint OSGiftRedpoint = new Redpoint(MainRedDot.REDPOINT_OPENSERVER, 20906);
diff --git a/System/OpenServerActivity/OpenServerActivityWin.cs b/System/OpenServerActivity/OpenServerActivityWin.cs
index 0b6809f..96f062c 100644
--- a/System/OpenServerActivity/OpenServerActivityWin.cs
+++ b/System/OpenServerActivity/OpenServerActivityWin.cs
@@ -55,7 +55,12 @@
             {
                 m_ActivitySpreadDict[m_SortArray[i]] = false;
             }
-            impactRankModel.presentSelectType = impactRankModel.GetDefaultSelectType();
+            var impactDefaultType= impactRankModel.GetDefaultSelectType();
+            if (impactRankModel.IsLock(impactDefaultType))
+            {
+                impactDefaultType = impactRankModel.billRankCfgDict.Keys.First();
+            }
+            impactRankModel.presentSelectType = impactDefaultType;
             impactRankModel.gotoImpactRankType = 0;
             envelopeModel.selectType = 1;
             CheckAlreadyOpen();
@@ -241,7 +246,8 @@
 
         private void OnStepServerDayEvent()
         {
-            m_ActivityCtrl.m_Scorller.RefreshActiveCellViews();
+            //m_ActivityCtrl.m_Scorller.RefreshActiveCellViews();
+            UpdateFunctionBtns();
         }
 
         private void RefreshActivityTypeCell(OpenActivityRankTypeCell _cell)
@@ -292,6 +298,10 @@
                         }
                         foreach (var _type in impactRankModel.billRankCfgDict.Keys)
                         {
+                            if (impactRankModel.IsLock(_type))
+                            {
+                                continue;
+                            }
                             m_ActivityCtrl.AddCell(ScrollerDataType.Normal, sort * 100 + _type);
                         }
                         break;
diff --git a/System/OpenServerActivity/OpenServerGiftWin.cs b/System/OpenServerActivity/OpenServerGiftWin.cs
index 274d5e4..269121a 100644
--- a/System/OpenServerActivity/OpenServerGiftWin.cs
+++ b/System/OpenServerActivity/OpenServerGiftWin.cs
@@ -26,6 +26,8 @@
                 return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<StoreModel>());
             }
         }
+
+        OSGiftModel giftModel { get { return ModelCenter.Instance.GetModel<OSGiftModel>(); } }
         #region Built-in
         protected override void BindController()
         {
@@ -43,9 +45,8 @@
         {
             WindowCenter.Instance.windowAfterOpenEvent += WindowAfterOpenEvent;
             WindowCenter.Instance.windowAfterCloseEvent += windowAfterCloseEvent;
-            ModelCenter.Instance.GetModel<OSGiftModel>().giftGetNotify = false;
             model.RefreshBuyShopLimitEvent += RefreshBuyShopLimitEvent;
-
+            giftModel.SetDayRemind();
             Display();
 
             m_ContainerDisplay.gameObject.SetActive(!WindowCenter.Instance.CheckOpen<OffLineOnHookWin>());
diff --git a/System/Rune/RuneMosaicWin.cs b/System/Rune/RuneMosaicWin.cs
index b3bd373..9be1150 100644
--- a/System/Rune/RuneMosaicWin.cs
+++ b/System/Rune/RuneMosaicWin.cs
@@ -31,10 +31,11 @@
         [SerializeField] Text presentRuneNameTxt;
         [SerializeField] Text presentRuneAttrTxt;
 
-        [SerializeField] RectTransform m_ContainerLevelUp;
+        //[SerializeField] RectTransform m_ContainerLevelUp;
         [SerializeField] RectTransform m_ContainerLvUp1;
         [SerializeField] RectTransform m_ContainerLvUp2;
         [SerializeField] RectTransform m_ContainerItem;
+        [SerializeField] RectTransform m_ContaienrMaxLevel;
         [SerializeField] Text runeLevelUpAttr1;
         [SerializeField] Text runeLevelUpAttr2;
         [SerializeField] Text runeLevelUpAttrNum1;
@@ -294,7 +295,8 @@
             m_ContainerLvUp1.gameObject.SetActive(!_isRuneMaxLv);
             m_ContainerItem.gameObject.SetActive(!_isRuneMaxLv);
             m_RuneLevelUpBtn.gameObject.SetActive(!_isRuneMaxLv);
-            m_ContainerLevelUp.gameObject.SetActive(!_isRuneMaxLv);
+            //m_ContainerLevelUp.gameObject.SetActive(!_isRuneMaxLv);
+            m_ContaienrMaxLevel.gameObject.SetActive(_isRuneMaxLv);
             runeLevelUpItemNum.text = StringUtility.Contact(UIHelper.GetTextColorByItemColor(
                 model.RuneSplinters >= _levelUpExp ? TextColType.Green : TextColType.Red
                 , model.RuneSplinters.ToString(), true), "/", _levelUpExp);
diff --git a/System/SystemSetting/SystemSetWin.cs b/System/SystemSetting/SystemSetWin.cs
index 9ebb3dc..fdf6b40 100644
--- a/System/SystemSetting/SystemSetWin.cs
+++ b/System/SystemSetting/SystemSetWin.cs
@@ -15,6 +15,7 @@
         [SerializeField] Toggle m_HighQuality;
         [SerializeField] Toggle m_MediumQuality;
         [SerializeField] Toggle m_LowQuality;
+        [SerializeField] OnOffToggle m_SixtyFrame;
 
         [SerializeField] Toggle m_OtherPlayer;
         [SerializeField] Toggle m_Monster;
@@ -49,6 +50,8 @@
             m_HighQuality.AddListener(OnSetQualityHigh);
             m_MediumQuality.AddListener(OnSetQualityMedium);
             m_LowQuality.AddListener(OnSetQualityLow);
+            m_SixtyFrame.AddListener(SwitchVSyncCount);
+
             m_OtherPlayer.AddListener(OnShowOrHideOtherPlayers);
             m_Monster.AddListener(OnShowOrHideMonsters);
 
@@ -78,6 +81,8 @@
             UpdateToggleSkin(m_LowQuality);
             UpdateToggleSkin(m_OtherPlayer);
             UpdateToggleSkin(m_Monster);
+
+            m_SixtyFrame.isOn = SystemSetting.Instance.GetVSyncCount() == 1;
 
             var serverName = ServerListCenter.Instance.GetServerData(ServerListCenter.Instance.currentServer.region_flag).name;
             var playerAccount = PlayerDatas.Instance.baseData.AccID.Split('@');
@@ -111,6 +116,7 @@
 
             loginModel.accountBindOkEvent += UpdateAccountBindTitle;
             SDKUtility.Instance.onFreePlatfromDoIDAuthenticationOk += OnAuthenticationOk;
+            SystemSetting.Instance.vSyncCountChangeEvent += OnSwitchVSyncCount;
             SystemSetting.Instance.playerSyncCountChangeEvent += OnPlayerSyncCountChange;
 
             isInited = true;
@@ -121,6 +127,7 @@
             isInited = false;
             loginModel.accountBindOkEvent -= UpdateAccountBindTitle;
             SDKUtility.Instance.onFreePlatfromDoIDAuthenticationOk -= OnAuthenticationOk;
+            SystemSetting.Instance.vSyncCountChangeEvent -= OnSwitchVSyncCount;
             SystemSetting.Instance.playerSyncCountChangeEvent -= OnPlayerSyncCountChange;
             SystemSetting.Instance.SetPlayerSyncCount(playerSyncCountRef);
         }
@@ -182,6 +189,27 @@
             UpdateToggleSkin(m_LowQuality);
         }
 
+        private void SwitchVSyncCount()
+        {
+            var currentVSyncCount = SystemSetting.Instance.GetVSyncCount();
+            switch (currentVSyncCount)
+            {
+                case 1:
+                    SystemSetting.Instance.SetVSyncCount(2);
+                    break;
+                case 2:
+                    SystemSetting.Instance.SetVSyncCount(1);
+                    break;
+                default:
+                    break;
+            }
+        }
+
+        private void OnSwitchVSyncCount()
+        {
+            m_SixtyFrame.isOn = SystemSetting.Instance.GetVSyncCount() == 1;
+        }
+
         private void OnShowOrHideOtherPlayers(bool _value)
         {
             SystemSetting.Instance.SetSystemSettingSwitch(SystemSwitch.OtherPlayer, _value);
diff --git a/System/SystemSetting/SystemSetting.cs b/System/SystemSetting/SystemSetting.cs
index e2636d5..f50eaba 100644
--- a/System/SystemSetting/SystemSetting.cs
+++ b/System/SystemSetting/SystemSetting.cs
@@ -12,6 +12,7 @@
     const string SOUND_VOLUME_KEY = "SoundRatioKey";  //闊充箰
     const string SOUND_EFFECT_KEY = "SoundEffect"; //闊虫晥
     const string FPS_KEY = "FPSKey";
+    const string VSYNC_KEY = "GameVSyncCountSetting";//鍨傜洿鍚屾鐜�
 
     public Dictionary<SystemSwitch, bool> systemSettings = new Dictionary<SystemSwitch, bool>();
 
@@ -20,6 +21,7 @@
     public event Action<SystemSwitch, bool> OnSettingChanged;
     public event Action qualityLevelChangeEvent;
     public event Action playerSyncCountChangeEvent;
+    public event Action vSyncCountChangeEvent;
 
     public SystemSetting()
     {
@@ -50,6 +52,21 @@
     public float GetSoundEffect()
     {
         return LocalSave.GetFloat(SOUND_EFFECT_KEY, 1);
+    }
+
+    public void SetVSyncCount(int _vSync)
+    {
+        LocalSave.SetInt(VSYNC_KEY, QualitySettings.vSyncCount = Mathf.Clamp(_vSync, 0, 2));
+
+        if (vSyncCountChangeEvent != null)
+        {
+            vSyncCountChangeEvent();
+        }
+    }
+
+    public int GetVSyncCount()
+    {
+        return LocalSave.GetInt(VSYNC_KEY, 2);
     }
 
     public void SetSystemSettingSwitch(SystemSwitch type, bool _value)
@@ -122,7 +139,6 @@
     public void SetQualityLevel(GameQuality _quality, bool _disabeCamera = true)
     {
         LocalSave.SetInt(QUALITY_LEVEL_KEY, Mathf.Clamp((int)_quality, 0, 2));
-        QualitySettings.SetQualityLevel((int)GameQuality.High);
 
         switch (_quality)
         {
@@ -131,6 +147,7 @@
                 Shader.DisableKeyword("QUALITY_HGH");
                 Shader.DisableKeyword("QUALITY_MED");
                 Shader.EnableKeyword("QUALITY_LOW");
+                SetVSyncCount(2);
                 break;
             case GameQuality.Medium:
                 Shader.globalMaximumLOD = 250;
diff --git a/System/Tip/MarqueeWin.cs b/System/Tip/MarqueeWin.cs
index 925b797..3affd01 100644
--- a/System/Tip/MarqueeWin.cs
+++ b/System/Tip/MarqueeWin.cs
@@ -14,13 +14,11 @@
 
     public class MarqueeWin : Window
     {
-        [SerializeField]
-        RichText marqueeText;
-        [SerializeField]
-        RectTransform marqueeBg;
-        [SerializeField]
-        TweenCurve tweenCurve;
-
+        [SerializeField] RectTransform m_ContainerMarquee;
+        [SerializeField] RichText marqueeText;
+        [SerializeField] RectTransform marqueeBg;
+        [SerializeField] TweenCurve tweenCurve;
+        [SerializeField] UIEffect m_Effect;
         #region 鍙傛暟
         Vector3 fromPos;
         Vector3 toPos;
@@ -32,6 +30,8 @@
 
         [SerializeField]
         float speed = 5.0f;
+
+        Coroutine cacheCoroutine = null;
 
         #region Built-in
         protected override void BindController()
@@ -49,19 +49,37 @@
             m_Time = 0;
             ServerTipDetails.OnTweening = false;
             presentCnt = 0;
+            m_ContainerMarquee.gameObject.SetActive(false);
+            if (cacheCoroutine != null)
+            {
+                StopCoroutine(cacheCoroutine);
+                cacheCoroutine = null;
+            }
+        }
+
+        protected override void OnActived()
+        {
+            base.OnActived();
+            m_Effect.Play();
+            cacheCoroutine = StartCoroutine(Co_StartTween());
         }
 
 
 
         protected override void OnAfterOpen()
         {
-            BeginMarquee();
+            //BeginMarquee();
         }
 
         protected override void OnPreClose()
         {
             ServerTipDetails.OnTweening = false;
             presentCnt = 0;
+            if (cacheCoroutine != null)
+            {
+                StopCoroutine(cacheCoroutine);
+                cacheCoroutine = null;
+            }
         }
 
         protected override void OnAfterClose()
@@ -69,6 +87,13 @@
 
         }
 
+        IEnumerator Co_StartTween()
+        {
+            yield return WaitingForSecondConst.WaitMS500;
+            m_ContainerMarquee.gameObject.SetActive(true);
+            BeginMarquee();
+        }
+
         protected override void LateUpdate()
         {
             base.LateUpdate();
diff --git a/System/Tip/ServerTipDetails.cs b/System/Tip/ServerTipDetails.cs
index 7bb8783..ea5c675 100644
--- a/System/Tip/ServerTipDetails.cs
+++ b/System/Tip/ServerTipDetails.cs
@@ -1,106 +1,138 @@
-锘縰sing System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-namespace Snxxz.UI
-{
-    public class ServerTipDetails
-    {
-        #region 璺戦┈鐏�
-        public static bool OnTweening = false;
-        private static List<SystemHintData> m_Marquees = new List<SystemHintData>();
-        public static void ShowMarquee(string msg, ArrayList info, int _order, int loopCnt = 1)
-        {
-            m_Marquees.Add(new SystemHintData()
-            {
-                appendTime = DateTime.Now,
-                message = msg,
-                extentionData = info == null ? info : new ArrayList(info),
-                order = _order
-            });
-
-            m_Marquees.Sort(SysNotifyMgr.Instance.Compare);
-
-            if (!WindowCenter.Instance.CheckOpen<MarqueeWin>())
-            {
-                WindowCenter.Instance.Open<MarqueeWin>();
-            }
-        }
-
-        public static SystemHintData RequireMarquee()
-        {
-            if (m_Marquees.Count > 0)
-            {
-                var _hint = m_Marquees[0];
-                m_Marquees.RemoveAt(0);
-                return _hint;
-            }
-            return null;
-        }
-
-        #endregion
-
-        #region 鍥哄畾鍏ㄦ湇娑堟伅
-        private static List<SystemHintData> hintTips = new List<SystemHintData>();
-
-        public static void ShowServerTip(string msg, ArrayList info, int order)
-        {
-            hintTips.Add(new SystemHintData()
-            {
-                message = msg,
-                order = order,
-                extentionData = info == null ? info : new ArrayList(info),
-                appendTime = DateTime.Now,
-            });
-
-            hintTips.Sort(SysNotifyMgr.Instance.Compare);
-
-            MessageWin.Inst.ShowServerTip();
-        }
-
-        public static SystemHintData RequireServerTip()
-        {
-            if (hintTips.Count > 0)
-            {
-                var _hint = hintTips[0];
-                hintTips.RemoveAt(0);
-                return _hint;
-            }
-            return null;
-        }
-        #endregion
-
-        public static void ClearHint()
-        {
-            hintTips.Clear();
-            m_Marquees.Clear();
-            queueTrumpetTips.Clear();
-        }
-
-        #region 鍠囧彮淇℃伅
-        private static Queue<ChatTrumpetData> queueTrumpetTips = new Queue<ChatTrumpetData>();
-        public static void ShowTrumpetTip(ChatTrumpetData trumpetData)
-        {
-            queueTrumpetTips.Enqueue(trumpetData);
-            if (!WindowCenter.Instance.CheckOpen<TrumpetWin>())
-            {
-                WindowCenter.Instance.Open<TrumpetWin>();
-            }
-        }
-        public static ChatTrumpetData RequireTrumpetTip()
-        {
-            if (queueTrumpetTips.Count > 0)
-            {
-                return queueTrumpetTips.Dequeue();
-            }
-            return null;
-        }
-        public static int GetTrumpetSurplusCnt()
-        {
-            return queueTrumpetTips.Count;
-        }
-        #endregion
-    }
-}
-
+锘縰sing System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+namespace Snxxz.UI
+{
+    public class ServerTipDetails
+    {
+        #region 璺戦┈鐏�
+        public static bool OnTweening = false;
+        private static List<SystemHintData> m_Marquees = new List<SystemHintData>();
+        public static void ShowMarquee(string msg, ArrayList info, int _order, int loopCnt = 1)
+        {
+            m_Marquees.Add(new SystemHintData()
+            {
+                appendTime = DateTime.Now,
+                message = msg,
+                extentionData = info == null ? info : new ArrayList(info),
+                order = _order
+            });
+
+            m_Marquees.Sort(SysNotifyMgr.Instance.Compare);
+
+            if (!CheckOpenMarquee())
+            {
+                return;
+            }
+            if (!WindowCenter.Instance.CheckOpen<MarqueeWin>())
+            {
+                WindowCenter.Instance.Open<MarqueeWin>();
+            }
+        }
+
+        public static void OnStageLoadFinish()
+        {
+            if (StageManager.Instance.CurrentStage is LoginStage
+                || StageManager.Instance.CurrentStage is SelectRoleStage)
+            {
+                m_Marquees.Clear();
+                return;
+            }
+            SnxxzGame.Instance.StartCoroutine(Co_StageLoadFinish());
+        }
+
+        static IEnumerator Co_StageLoadFinish()
+        {
+            yield return null;
+            if (CheckOpenMarquee() && m_Marquees.Count > 0)
+            {
+                if (!WindowCenter.Instance.CheckOpen<MarqueeWin>())
+                {
+                    WindowCenter.Instance.Open<MarqueeWin>();
+                }
+            }
+        }
+
+        static bool CheckOpenMarquee()
+        {
+            return (StageManager.Instance.CurrentStage is DungeonStage) && !StageManager.Instance.isLoading;
+        }
+
+        public static SystemHintData RequireMarquee()
+        {
+            if (m_Marquees.Count > 0)
+            {
+                var _hint = m_Marquees[0];
+                m_Marquees.RemoveAt(0);
+                return _hint;
+            }
+            return null;
+        }
+
+        #endregion
+
+        #region 鍥哄畾鍏ㄦ湇娑堟伅
+        private static List<SystemHintData> hintTips = new List<SystemHintData>();
+
+        public static void ShowServerTip(string msg, ArrayList info, int order)
+        {
+            hintTips.Add(new SystemHintData()
+            {
+                message = msg,
+                order = order,
+                extentionData = info == null ? info : new ArrayList(info),
+                appendTime = DateTime.Now,
+            });
+
+            hintTips.Sort(SysNotifyMgr.Instance.Compare);
+
+            MessageWin.Inst.ShowServerTip();
+        }
+
+        public static SystemHintData RequireServerTip()
+        {
+            if (hintTips.Count > 0)
+            {
+                var _hint = hintTips[0];
+                hintTips.RemoveAt(0);
+                return _hint;
+            }
+            return null;
+        }
+        #endregion
+
+        public static void ClearHint()
+        {
+            hintTips.Clear();
+            m_Marquees.Clear();
+            queueTrumpetTips.Clear();
+        }
+
+        #region 鍠囧彮淇℃伅
+        private static Queue<ChatTrumpetData> queueTrumpetTips = new Queue<ChatTrumpetData>();
+        public static void ShowTrumpetTip(ChatTrumpetData trumpetData)
+        {
+            queueTrumpetTips.Enqueue(trumpetData);
+            if (!WindowCenter.Instance.CheckOpen<TrumpetWin>())
+            {
+                WindowCenter.Instance.Open<TrumpetWin>();
+            }
+        }
+        public static ChatTrumpetData RequireTrumpetTip()
+        {
+            if (queueTrumpetTips.Count > 0)
+            {
+                return queueTrumpetTips.Dequeue();
+            }
+            return null;
+        }
+        public static int GetTrumpetSurplusCnt()
+        {
+            return queueTrumpetTips.Count;
+        }
+        #endregion
+    }
+}
+
diff --git a/System/Treasure/TreasureLevelUpWin.cs b/System/Treasure/TreasureLevelUpWin.cs
index 68d5efe..27da3cf 100644
--- a/System/Treasure/TreasureLevelUpWin.cs
+++ b/System/Treasure/TreasureLevelUpWin.cs
@@ -931,6 +931,12 @@
             var stage = m_Treasure.treasureStages[m_Treasure.stage];
             var _index = m_Treasure.GetStageIndex(stage.stage);
             model.SetTreasureStageShow(m_Treasure.id, stage.stage);
+
+            if (WindowCenter.Instance.CheckOpen<TreasureStageTipWin>())
+            {
+                WindowCenter.Instance.CloseImmediately<TreasureStageTipWin>();
+            }
+
             switch (stage.unlockType)
             {
                 case TreasureStageUnlock.Skill:
diff --git a/System/Vip/FairyJadeInvestmentModel.cs b/System/Vip/FairyJadeInvestmentModel.cs
index 29b5af1..c32fb70 100644
--- a/System/Vip/FairyJadeInvestmentModel.cs
+++ b/System/Vip/FairyJadeInvestmentModel.cs
@@ -31,8 +31,17 @@
     VipInvestModel VipInvestModel { get { return m_VipInvestModel ?? (m_VipInvestModel = ModelCenter.Instance.GetModel<VipInvestModel>()); } }
     private bool IsOk = false;
     public bool IsRedpoint = false;
+
+    private int DisplayLevel = 0;//鏄剧ず绛夌骇
+    private int DisplayDays = 0;//鏄剧ず澶╂暟
+                                //----
+    private bool IsOneRedPoint = true;
     public override void Init()
     {
+        var InvestRedPoint = Config.Instance.Get<FuncConfigConfig>("InvestRedPoint");
+        DisplayLevel = int.Parse(InvestRedPoint.Numerical2);
+        DisplayDays = int.Parse(InvestRedPoint.Numerical3);
+
         int[] MultipleIntList = ConfigParse.GetMultipleStr<int>(Config.Instance.Get<FuncConfigConfig>("JadeInvest").Numerical1);
         MultipleList.Clear();
         for (int i = 0; i < MultipleIntList.Length; i++)
@@ -61,10 +70,10 @@
         IsOk = true;
         InvestmentAmount();
         InvestmentRedPoint();
-        if (TimeUtility.CreateDays <= 3 && redPointStre1.state == RedPointState.None)
+        if (TimeUtility.CreateDays <= DisplayDays && redPointStre1.state == RedPointState.None)
         {
             IsRedpoint = true;
-            if (PlayerDatas.Instance.baseData.LV >= 30)
+            if (PlayerDatas.Instance.baseData.LV >= DisplayLevel)
             {
                 RedPointSate();
             }
@@ -88,7 +97,7 @@
         }
         if (_tCDBPlayerRefresh == PlayerDataRefresh.LV)
         {
-            if (TimeUtility.CreateDays <= 3 && redPointStre1.state == RedPointState.None && PlayerDatas.Instance.baseData.LV >= 30)
+            if (TimeUtility.CreateDays <= DisplayDays && redPointStre1.state == RedPointState.None && PlayerDatas.Instance.baseData.LV >= DisplayLevel)
             {
                 if (IsRedpoint)
                 {
@@ -250,9 +259,7 @@
                         }
                     }
                 }
-
             }
-
         }
         int type1 = -1;
         if (JumpInedx == 0 && InvestmentGrade != 0)
@@ -266,7 +273,6 @@
                     return;
                 }
             }
-
         }
     }
     private void RedPointSate()//鏈堝崱鎶曡祫鍒涜鍓嶄笁澶╃孩鐐�
@@ -277,7 +283,11 @@
         }
         if (IsRedpoint)
         {
-            redPointStre1.state = RedPointState.Simple;
+            if (IsOneRedPoint)
+            {
+                redPointStre1.state = RedPointState.Simple;
+                IsOneRedPoint = false;
+            }        
         }
         else
         {
diff --git a/System/Vip/FairyJadeInvestmentWin.cs b/System/Vip/FairyJadeInvestmentWin.cs
index b0004ee..245eb34 100644
--- a/System/Vip/FairyJadeInvestmentWin.cs
+++ b/System/Vip/FairyJadeInvestmentWin.cs
@@ -98,7 +98,7 @@
 
         protected override void OnAfterOpen()
         {
-            if (fairyJadeInvestmentModel.IsRedpoint)
+            if (fairyJadeInvestmentModel.redPointStre1.state==RedPointState.Simple)
             {
                 fairyJadeInvestmentModel.IsRedpoint = false;
                 if (FairyJadeInvestmentRedPointEvent != null)
diff --git a/System/Vip/FirstRechargeWin.cs b/System/Vip/FirstRechargeWin.cs
index b0d0b36..91ad1f8 100644
--- a/System/Vip/FirstRechargeWin.cs
+++ b/System/Vip/FirstRechargeWin.cs
@@ -132,7 +132,6 @@
             if(PlayerDatas.Instance.baseData.coinPointTotal > 0
                 && !model.firstChargeRewardGet)
             {
-                ModelCenter.Instance.GetModel<OSGiftModel>().giftGetNotify = true;
                 CA504_tagCMPlayerGetReward pak = new CA504_tagCMPlayerGetReward();
                 pak.RewardType = (byte)GotServerRewardType.Def_RewardType_GoldGiftFirst;
                 pak.DataEx = 0;
diff --git a/System/Vip/VipInvest/VipInvestModel.cs b/System/Vip/VipInvest/VipInvestModel.cs
index 6b7e342..526083e 100644
--- a/System/Vip/VipInvest/VipInvestModel.cs
+++ b/System/Vip/VipInvest/VipInvestModel.cs
@@ -15,6 +15,11 @@
         public int NeedVipLv { get; private set;}
         private bool IsOkBool = false;
         public bool IsRedpoint = false;
+
+        private int DisplayLevel = 0;//鏄剧ず绛夌骇
+        private int DisplayDays = 0;//鏄剧ず澶╂暟
+        //----
+        private bool IsOneRedPoint = true;
         public override void Init()
         {
             vipInvestDict.Clear();
@@ -22,7 +27,9 @@
             vipInvestLvlimitDict.Clear();
             investGoldDict.Clear();
             investMaxDayDict.Clear();
-
+            var InvestRedPoint = Config.Instance.Get<FuncConfigConfig>("InvestRedPoint");
+            DisplayLevel = int.Parse(InvestRedPoint.Numerical1);
+            DisplayDays = int.Parse(InvestRedPoint.Numerical3);
             FuncConfigConfig vipInvestLv = Config.Instance.Get<FuncConfigConfig>("VIPInvest");
             NeedVipLv = int.Parse(vipInvestLv.Numerical2);
             JsonData vipInvestData = JsonMapper.ToObject(vipInvestLv.Numerical1);
@@ -83,10 +90,10 @@
             VipInvestWin.VipInvestRedPointEvent += VipInvestRedPointEvent;
             PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= Updatefighting;
             PlayerDatas.Instance.PlayerDataRefreshInfoEvent += Updatefighting;
-            if (TimeUtility.CreateDays <= 3 && redPointStre1.state==RedPointState.None)
+            if (TimeUtility.CreateDays <= DisplayDays && redPointStre1.state==RedPointState.None)
             {
                 IsRedpoint = true;
-                if (PlayerDatas.Instance.baseData.LV >= 30)
+                if (PlayerDatas.Instance.baseData.LV >= DisplayLevel)
                 {
                     RedPointSate();
                 }              
@@ -97,7 +104,7 @@
         {
             if (_tCDBPlayerRefresh == PlayerDataRefresh.LV)
             {
-                if (TimeUtility.CreateDays <= 3 && redPointStre1.state == RedPointState.None && PlayerDatas.Instance.baseData.LV >= 30)
+                if (TimeUtility.CreateDays <= DisplayDays && redPointStre1.state == RedPointState.None && PlayerDatas.Instance.baseData.LV >= DisplayLevel)
                 {
                     if (IsRedpoint)
                     {
@@ -185,7 +192,6 @@
             {
                 return investGoldDict[type][index];
             }
-
             return 0;
         }
 
@@ -200,7 +206,6 @@
                     return index;
                 }
             }
-
             return "";
         }
 
@@ -359,7 +364,6 @@
             {
                 cycle = day / 7;
             }
-
             return cycle;
         }
 
@@ -381,7 +385,6 @@
         {
 
         }
-
         ServerInvestInfo InvestInfo;
         int cycle = 0;
         private List<InvestConfig> configlist;
@@ -437,7 +440,6 @@
                             break;
                         default:
                             break;
-
                     }
                    // redPointStre1.state = RedPointState.Simple;
                     JumpIndex = i;
@@ -456,7 +458,6 @@
                         return;
                     }
                 }
-
             }
         }
 
@@ -469,16 +470,17 @@
             }
             if (IsRedpoint)
             {
-                redPointStre1.state = RedPointState.Simple;
+                if (IsOneRedPoint)
+                {
+                    redPointStre1.state = RedPointState.Simple;
+                    IsOneRedPoint = false;
+                }              
             }
             else
             {
                 VipInvestRedPoint();
             }
-
         }
-
-
     }
 
     public struct InvestReward
diff --git a/System/Vip/VipInvest/VipInvestWin.cs b/System/Vip/VipInvest/VipInvestWin.cs
index 6a83a4c..d64320e 100644
--- a/System/Vip/VipInvest/VipInvestWin.cs
+++ b/System/Vip/VipInvest/VipInvestWin.cs
@@ -81,7 +81,7 @@
 
         protected override void OnAfterOpen()
         {
-            if (investModel.IsRedpoint)
+            if (investModel.redPointStre1.state==RedPointState.Simple)
             {
                 investModel.IsRedpoint = false;
                 if (VipInvestRedPointEvent != null)
diff --git a/System/Welfare/WelfareCenter.cs b/System/Welfare/WelfareCenter.cs
index 397c2a5..38da6cc 100644
--- a/System/Welfare/WelfareCenter.cs
+++ b/System/Welfare/WelfareCenter.cs
@@ -49,7 +49,7 @@
             {
                 functionOrder = 3;
             }
-            else if (sevenDayModel.redPointStre1.state == RedPointState.Simple && FuncOpen.Instance.IsFuncOpen(115))
+            else if (sevenDayModel.redPointStre1.state == RedPointState.GetReward && FuncOpen.Instance.IsFuncOpen(115))
             {
                 WindowCenter.Instance.Close<MainInterfaceWin>();
                 WindowCenter.Instance.Open<WelfareWin>(false, 2);
@@ -100,7 +100,7 @@
             {
                 functionOrder = 3;
             }
-            else if (sevenDayModel.redPointStre1.state == RedPointState.Simple && FuncOpen.Instance.IsFuncOpen(115))
+            else if (sevenDayModel.redPointStre1.state == RedPointState.GetReward && FuncOpen.Instance.IsFuncOpen(115))
             {
                 return 2;
             }
diff --git a/UI/Common/OnOffToggle.cs b/UI/Common/OnOffToggle.cs
new file mode 100644
index 0000000..f9dcd7b
--- /dev/null
+++ b/UI/Common/OnOffToggle.cs
@@ -0,0 +1,61 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Thursday, August 23, 2018
+//--------------------------------------------------------
+using UnityEngine;
+using System.Collections;
+using UnityEngine.UI;
+using UnityEngine.Events;
+
+namespace Snxxz.UI
+{
+
+    public class OnOffToggle : MonoBehaviour
+    {
+
+        [SerializeField] Button m_Button;
+        [SerializeField] RectTransform m_Handle;
+        [SerializeField] Image m_BackGround;
+        [SerializeField] RectTransform m_OnShow;
+        [SerializeField] RectTransform m_OffShow;
+        [SerializeField] Vector2 m_OnHandleOffset;
+        [SerializeField] Vector2 m_OffHandleOffset;
+
+        bool m_IsOn = false;
+        public bool isOn {
+            get { return m_IsOn; }
+            set {
+                m_IsOn = value;
+                SwitchShowState(m_IsOn);
+            }
+        }
+
+        public void AddListener(UnityAction _action)
+        {
+            if (m_Button != null)
+            {
+                m_Button.AddListener(_action);
+            }
+        }
+
+        public void RemoveAllListeners()
+        {
+            if (m_Button != null)
+            {
+                m_Button.RemoveAllListeners();
+            }
+        }
+
+        private void SwitchShowState(bool _isOn)
+        {
+            m_Handle.anchoredPosition = _isOn ? m_OnHandleOffset : m_OffHandleOffset;
+            m_BackGround.SetSprite(_isOn ? "SettingUpWin_NO" : "SettingUpWin_OFF");
+            m_OnShow.gameObject.SetActive(_isOn);
+            m_OffShow.gameObject.SetActive(!_isOn);
+        }
+    }
+
+}
+
+
+
diff --git a/UI/Common/OnOffToggle.cs.meta b/UI/Common/OnOffToggle.cs.meta
new file mode 100644
index 0000000..39d7ebf
--- /dev/null
+++ b/UI/Common/OnOffToggle.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: dd8929af600e643478d3f0a22d7e3c52
+timeCreated: 1535009068
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

--
Gitblit v1.8.0