| //--------------------------------------------------------  | 
| //    [Author]:           第二世界  | 
| //    [  Date ]:           Friday, November 10, 2017  | 
| //--------------------------------------------------------  | 
|   | 
| using System;  | 
| using System.Collections;  | 
| using System.Collections.Generic;  | 
|   | 
| using UnityEngine;  | 
| using UnityEngine.UI;  | 
| namespace vnxbqy.UI  | 
| {  | 
|     public class SkillAccordWin : Window  | 
|     {  | 
|         [SerializeField] FlipScroll flipActScroll;  | 
|         [SerializeField] RectTransform m_ContainerSkillDetails;  | 
|         [SerializeField] RectTransform m_ContainerUnselect;  | 
|         [SerializeField] Text m_TreasureNameTxt;  | 
|         [SerializeField] Text m_SkillNameTxt;  | 
|         [SerializeField] Text m_SkillCoolDownTxt;  | 
|         [SerializeField] Text m_SkillLevel;  | 
|         [SerializeField] Text m_SkillDescTxt;  | 
|         [SerializeField] Button m_LevelUp;  | 
|         [SerializeField] Text m_LevelUpLabel;  | 
|         [SerializeField] RedpointBehaviour m_LevelRedpoint;  | 
|         [SerializeField] Button m_LeftBtn;  | 
|         [SerializeField] Button m_RightBtn;  | 
|         [SerializeField] List<SkillCell> m_QuickSkills = new List<SkillCell>();  | 
|         [SerializeField] Image m_DragImg;  | 
|         [SerializeField] Image m_DragSkillImg;  | 
|         [SerializeField] List<RectTransform> m_QuickSkillRect = new List<RectTransform>();  | 
|         [SerializeField] Button m_AutoUseXp;  | 
|         [SerializeField] Image m_AutoXpCheck;  | 
|         [SerializeField] Button m_SkillMatch;  | 
|         private List<int> skillListAct = new List<int>();  | 
|         private bool onXpCoolDown = false;  | 
|   | 
|         private bool m_IsAutoUseXp = false;  | 
|   | 
|         SkillModel m_Model;  | 
|         SkillModel model  | 
|         {  | 
|             get  | 
|             {  | 
|                 return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<SkillModel>());  | 
|             }  | 
|         }  | 
|   | 
|         TreasureSkillModel treasureSkillModel  | 
|         {  | 
|             get { return ModelCenter.Instance.GetModel<TreasureSkillModel>(); }  | 
|         }  | 
|   | 
|         #region Built-in  | 
|         protected override void BindController()  | 
|         {  | 
|         }  | 
|   | 
|         protected override void AddListeners()  | 
|         {  | 
|             flipActScroll.OnRefreshData += OnRefreshActSkill;  | 
|             flipActScroll.OnTweenCompt += OnTweenCompt;  | 
|             m_LeftBtn.onClick.AddListener(flipActScroll.FlipLeft);  | 
|             m_RightBtn.onClick.AddListener(flipActScroll.FlipRight);  | 
|             m_AutoUseXp.onClick.AddListener(OnAutoUseXp);  | 
|             //m_PageOneBtn.onClick.AddListener(() =>  | 
|             //{  | 
|             //    if (m_SkillTurnplate.GroupIndex != 1)  | 
|             //    {  | 
|             //        m_SkillTurnplate.Turn(GestureType.Left);  | 
|             //        UpdateSkillPage();  | 
|             //    }  | 
|             //});  | 
|             //m_PageTwoBtn.onClick.AddListener(() =>  | 
|             //{  | 
|             //    if (m_SkillTurnplate.GroupIndex != 2)  | 
|             //    {  | 
|             //        m_SkillTurnplate.Turn(GestureType.Right);  | 
|             //        UpdateSkillPage();  | 
|             //    }  | 
|             //});  | 
|             m_SkillMatch.AddListener(() =>  | 
|             {  | 
|                 WindowCenter.Instance.Open("SkillMatchWin");  | 
|                 if (model.skillMatchRedpointable)  | 
|                 {  | 
|                     model.skillMatchRedpointable = false;  | 
|                 }  | 
|             });  | 
|             for (int i = 0; i < m_QuickSkills.Count; i++)  | 
|             {  | 
|                 int index = i;  | 
|                 m_QuickSkills[i].skillData.m_SkillBtn.onClick.AddListener(() =>  | 
|                 {  | 
|                     OnQuickSkillClick(index);  | 
|                 });  | 
|             }  | 
|   | 
|   | 
|             m_LevelUp.AddListener(LevelUp);  | 
|         }  | 
|   | 
|         protected override void OnPreOpen()  | 
|         {  | 
|             model.presentSltSkillID = 0;  | 
|             flipActScroll.locked = false;  | 
|             m_DragImg.SetActive(false);  | 
|   | 
|             Input.multiTouchEnabled = false;  | 
|   | 
|             PlayerSkillDatas.OnQuickSkillRefresh += OnUpdateQuickSkill;  | 
|             PlayerSkillDatas.OnRefreshSkill += OnRefreshSkill;  | 
|             model.OnRefreshSltSkill += OnUpdateQuickSkill;  | 
|             model.OnRefreshSltSkill += UpdateSltSkill;  | 
|             FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;  | 
|             treasureSkillModel.treasureSkillRefresh += TreasureSkillRefresh;  | 
|             GetSkillList();  | 
|             OnUpdateQuickSkill();  | 
|             for (int i = 0; i < SkillModel.QUICK_SKILL_COUNT; i++)  | 
|             {  | 
|                 if (PlayerDatas.Instance.skill.GetQuickSkillByPos(i) != null)  | 
|                 {  | 
|                     OnQuickSkillClick(i);  | 
|                     break;  | 
|                 }  | 
|             }  | 
|             //m_SkillTurnplate.Init();  | 
|             UpdateSkillPage();  | 
|             //RefreshXpSkill();  | 
|             DisplayButtonState();  | 
|   | 
|             m_IsAutoUseXp = model.AutoUseXp();  | 
|             UpdateAutoXp();  | 
|         }  | 
|   | 
|         protected override void OnActived()  | 
|         {  | 
|             base.OnActived();  | 
|             UpdatePageBtn();  | 
|         }  | 
|   | 
|         private void OnRefreshSkill()  | 
|         {  | 
|             UpdateSltSkill();  | 
|             //RefreshXpSkill();  | 
|         }  | 
|   | 
|         protected override void OnAfterOpen()  | 
|         {  | 
|             HandleAchievement();  | 
|         }  | 
|   | 
|         protected override void OnPreClose()  | 
|         {  | 
|             model.skillDraging = false;  | 
|             m_DragImg.SetActive(false);  | 
|             PlayerSkillDatas.OnQuickSkillRefresh -= OnUpdateQuickSkill;  | 
|             PlayerSkillDatas.OnRefreshSkill -= OnRefreshSkill;  | 
|             model.OnRefreshSltSkill -= UpdateSltSkill;  | 
|             model.OnRefreshSltSkill -= OnUpdateQuickSkill;  | 
|             FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;  | 
|             treasureSkillModel.treasureSkillRefresh -= TreasureSkillRefresh;  | 
|             AchievementGoto.achievementType = 0;  | 
|             Input.multiTouchEnabled = true;  | 
|             treasureSkillModel.SetAlreadyRemind();  | 
|         }  | 
|   | 
|         protected override void OnAfterClose()  | 
|         {  | 
|             model.SetAutoUseXp(m_IsAutoUseXp);  | 
|         }  | 
|         #endregion  | 
|         private void OnTweenCompt()  | 
|         {  | 
|             UpdatePageBtn();  | 
|         }  | 
|   | 
|         void UpdatePageBtn()  | 
|         {  | 
|             if (flipActScroll.Page == 0)  | 
|             {  | 
|                 m_LeftBtn.SetActive(false);  | 
|             }  | 
|             else  | 
|             {  | 
|                 m_LeftBtn.SetActive(true);  | 
|             }  | 
|             if (flipActScroll.Page == flipActScroll.pageCnt - 1)  | 
|             {  | 
|                 m_RightBtn.SetActive(false);  | 
|             }  | 
|             else  | 
|             {  | 
|                 m_RightBtn.SetActive(true);  | 
|             }  | 
|         }  | 
|   | 
|         void OnRefreshActSkill(int page, RectTransform cell)  | 
|         {  | 
|             for (int i = 0; i < cell.childCount; i++)  | 
|             {  | 
|                 Transform skillTran = cell.GetChild(i);  | 
|                 int index = page * SkillModel.ACT_SKILL_NUM + i;  | 
|                 if (index < skillListAct.Count)  | 
|                 {  | 
|                     if(AchievementGoto.achievementType==AchievementGoto.ExcuteSkill  | 
|                         && skillListAct[index] == m_AchieveSkillId)  | 
|                     {  | 
|                         var _effect = AchievementGuideEffectPool.Require(3);  | 
|                         _effect.transform.SetParentEx(skillTran, Vector3.zero, Vector3.zero, Vector3.one);  | 
|                         (_effect.transform as RectTransform).anchoredPosition = Vector3.zero;  | 
|                         AchievementGoto.achievementType = 0;  | 
|                         m_AchieveSkillId = 0;  | 
|                     }  | 
|                     skillTran.SetActive(true);  | 
|                     skillTran.GetComponent<SkillCell>().Refresh(skillListAct[index]);  | 
|                 }  | 
|                 else  | 
|                 {  | 
|                     skillTran.SetActive(false);  | 
|                 }  | 
|             }  | 
|         }  | 
|   | 
|         void OnUpdateSltSkillInfo()  | 
|         {  | 
|             SkillConfig cfg = SkillConfig.Get(model.presentSltSkillID);  | 
|             m_ContainerSkillDetails.SetActive(cfg != null);  | 
|             m_ContainerUnselect.SetActive(cfg == null);  | 
|             if (cfg != null)  | 
|             {  | 
|                 m_SkillNameTxt.text = cfg.SkillName;  | 
|                 m_TreasureNameTxt.text = cfg.Skillsource;  | 
|                 m_SkillDescTxt.text = UIHelper.ReplaceNewLine(cfg.Description);  | 
|                 m_SkillCoolDownTxt.text = cfg.CoolDownTime == 0 ? string.Empty : Language.Get("L1065", cfg.CoolDownTime / 1000);  | 
|   | 
|                 TreasureSkill treasureSkill;  | 
|                 var level = 0;  | 
|                 if (treasureSkillModel.TryGetSkill(cfg.SkillTypeID, out treasureSkill))  | 
|                 {  | 
|                     level = treasureSkill.level;  | 
|                     m_LevelRedpoint.redpointId = treasureSkill.levelUpRedpoint.id;  | 
|   | 
|                     bool isMax = treasureSkill.level >= treasureSkill.maxLevel;  | 
|                     m_LevelUp.SetActive(!isMax && treasureSkill.level > 0);  | 
|                 }  | 
|                 if (level > 0)  | 
|                 {  | 
|                     m_SkillLevel.text = Language.Get("SkillActLevel", level);  | 
|                 }  | 
|                 else  | 
|                 {  | 
|                     m_SkillLevel.text = Language.Get("SkillActLevel", Language.Get("TreasureSkilllock"));  | 
|                 }  | 
|             }  | 
|         }  | 
|   | 
|         void GetSkillList()  | 
|         {  | 
|             RefreshSkills();  | 
|             if (skillListAct.Count < 1)  | 
|             {  | 
|                 return;  | 
|             }  | 
|             model.presentSltSkillID = skillListAct[0];  | 
|             flipActScroll.pageCnt = Mathf.CeilToInt((float)skillListAct.Count / SkillModel.ACT_SKILL_NUM);  | 
|             UpdateSltSkill();  | 
|         }  | 
|   | 
|         void RefreshSkills()  | 
|         {  | 
|             var _skillJobKey = (int)Math.Pow(2, PlayerDatas.Instance.baseData.Job);  | 
|             Dictionary<int, List<int>> dic = model.skillActDict[_skillJobKey];  | 
|             skillListAct.Clear();  | 
|             foreach (int key in dic.Keys)  | 
|             {  | 
|                 List<int> typeList = dic[key];  | 
|                 var skillId = typeList[0];  | 
|                 foreach (var id in typeList)  | 
|                 {  | 
|                     if (PlayerDatas.Instance.skill.GetSKillById(id) != null)  | 
|                     {  | 
|                         skillId = id;  | 
|                         break;  | 
|                     }  | 
|                 }  | 
|                 if (PlayerDatas.Instance.skill.GetFilterPlayerSkill(PlayerDatas.Instance.baseData.Job).Contains(skillId))  | 
|                 {  | 
|                     continue;  | 
|                 }  | 
|                 skillListAct.Add(skillId);  | 
|             }  | 
|         }  | 
|   | 
|         void OnUpdateQuickSkill()  | 
|         {  | 
|             int[] intarray = model.GetQuickBaseSkillArray(PlayerDatas.Instance.baseData.Job);  | 
|             for (int i = 0; i < m_QuickSkills.Count; i++)  | 
|             {  | 
|                 PlayerSkillData data = PlayerDatas.Instance.skill.GetQuickSkillByPos(i);  | 
|                 SkillConfig skillCfg = SkillConfig.Get(intarray[i]);  | 
|                 if (data != null)  | 
|                 {  | 
|                     m_QuickSkills[i].skillData.SetSkillData(data.id);  | 
|                     m_QuickSkills[i].skillData.SetActive(true);  | 
|                     m_QuickSkills[i].skillData.m_LockImg.SetActive(false);  | 
|                 }  | 
|                 else  | 
|                 {  | 
|                     m_QuickSkills[i].skillData.SetSkillData(skillCfg.SkillID);  | 
|                     m_QuickSkills[i].skillData.SetActive(false);  | 
|                     m_QuickSkills[i].skillData.m_LockImg.SetActive(true);  | 
|                     if (PlayerDatas.Instance.skill.GetSKillById(intarray[i]) != null)  | 
|                     {  | 
|                         m_QuickSkills[i].skillData.m_LockImg.SetActive(false);  | 
|                     }  | 
|                 }  | 
|             }  | 
|         }  | 
|   | 
|         private void OnQuickSkillClick(int _index)  | 
|         {  | 
|             PlayerSkillData skill = PlayerDatas.Instance.skill.GetQuickSkillByPos(_index);  | 
|             if (skill == null)  | 
|             {  | 
|                 int skillid = model.GetQuickBaseSkillArray(PlayerDatas.Instance.baseData.Job)[_index];  | 
|                 SkillConfig skillCfg = SkillConfig.Get(skillid);  | 
|                 if (skillCfg != null)  | 
|                 {  | 
|                     ServerTipDetails.DisplayNormalTip(Language.Get("L1115", skillCfg.Skillsource));  | 
|                 }  | 
|                 return;  | 
|             }  | 
|             model.presentSltSkillID = skill.id;  | 
|             UpdateSltSkill();  | 
|         }  | 
|   | 
|         private void OnXpClick()  | 
|         {  | 
|             var _xpSkillId = model.GetXpSkillID();  | 
|             if (PlayerDatas.Instance.skill.GetSKillById(_xpSkillId) != null)  | 
|             {  | 
|                 model.presentSltSkillID = _xpSkillId;  | 
|                 UpdateSltSkill();  | 
|             }  | 
|         }  | 
|   | 
|         private void UpdateQuickSkillSelect()  | 
|         {  | 
|             for (int i = 0; i < m_QuickSkills.Count; i++)  | 
|             {  | 
|                 var _skillData = m_QuickSkills[i].skillData;  | 
|                 var _select = _skillData.skillId == model.presentSltSkillID;  | 
|                 var _activeSkill = PlayerDatas.Instance.skill.GetSKillById(_skillData.skillId) != null;  | 
|                 _skillData.m_SelectImg.SetActive(_select && _activeSkill);  | 
|             }  | 
|             //var _xpSkillId = model.GetXpSkillID();  | 
|             //bool xpSkillSelect = PlayerDatas.Instance.skill.GetSKillById(_xpSkillId) != null  | 
|             //                       && model.presentSltSkillID == _xpSkillId;  | 
|   | 
|         }  | 
|   | 
|         private void UpdateSltSkill()  | 
|         {  | 
|             flipActScroll.RefreshActive();  | 
|             UpdateQuickSkillSelect();  | 
|             OnUpdateSltSkillInfo();  | 
|         }  | 
|   | 
|         //private void RefreshXpSkill()  | 
|         //{  | 
|         //    var xpSkillId = model.GetXpSkillID();  | 
|         //    m_XpSkill.skillData.SetSkillData(xpSkillId);  | 
|         //    var hasXpSkill = PlayerDatas.Instance.skill.GetSKillById(xpSkillId) != null;  | 
|         //    m_XpSkill.skillData.SetActive(hasXpSkill);  | 
|         //    m_XpSkill.skillData.m_LockImg.SetActive(!hasXpSkill);  | 
|         //    m_XpCoolDownImg.SetActive(false);  | 
|         //    onXpCoolDown = false;  | 
|         //    if (hasXpSkill)  | 
|         //    {  | 
|         //        Skill xpSkill = PlayerDatas.Instance.hero.SkillMgr.Get(xpSkillId);  | 
|         //        if (xpSkill.cd > 0)  | 
|         //        {  | 
|         //            m_XpCoolDownImg.SetActive(true);  | 
|         //            onXpCoolDown = true;  | 
|         //            RefreshXpCd();  | 
|         //        }  | 
|         //    }  | 
|         //}  | 
|   | 
|         //private void RefreshXpCd()  | 
|         //{  | 
|         //    if (model.xpSkill != null)  | 
|         //    {  | 
|         //        m_XpCoolDownImg.fillAmount = model.xpSkill.cd / (model.xpSkill.skillInfo.config.CoolDownTime * Constants.F_GAMMA);  | 
|         //        m_XpCoolDownTxt.text = TimeUtility.SecondsToHMS((int)model.xpSkill.cd);  | 
|         //        if (model.xpSkill.cd <= 0)  | 
|         //        {  | 
|         //            onXpCoolDown = false;  | 
|         //            m_XpCoolDownImg.SetActive(false);  | 
|         //        }  | 
|         //    }  | 
|         //    else  | 
|         //    {  | 
|         //        onXpCoolDown = false;  | 
|         //    }  | 
|         //}  | 
|   | 
|         void DisplayButtonState()  | 
|         {  | 
|             m_LevelUp.SetColorful(m_LevelUpLabel, FuncOpen.Instance.IsFuncOpen(177));  | 
|         }  | 
|   | 
|   | 
|         private void OnFuncStateChangeEvent(int id)  | 
|         {  | 
|             if (id == 177)  | 
|             {  | 
|                 DisplayButtonState();  | 
|             }  | 
|         }  | 
|   | 
|         private void TreasureSkillRefresh(int skillId)  | 
|         {  | 
|             var config = SkillConfig.Get(model.presentSltSkillID);  | 
|             var skillTypeId = config.SkillTypeID;  | 
|             TreasureSkill treasureSkill;  | 
|             if (treasureSkillModel.TryGetSkill(skillTypeId, out treasureSkill))  | 
|             {  | 
|                 model.presentSltSkillID = treasureSkill.GetSkillConfig(treasureSkill.level).SkillID;  | 
|             }  | 
|             RefreshSkills();  | 
|             //RefreshXpSkill();  | 
|             flipActScroll.RefreshActive();  | 
|             UpdateQuickSkillSelect();  | 
|             OnUpdateSltSkillInfo();  | 
|         }  | 
|   | 
|         protected override void LateUpdate()  | 
|         {  | 
|             base.LateUpdate();  | 
|             if (model.skillDraging)  | 
|             {  | 
|                 flipActScroll.locked = true;  | 
|                 if (!m_DragImg.gameObject.activeSelf)  | 
|                 {  | 
|                     m_DragImg.SetActive(true);  | 
|                     SkillConfig cfg = SkillConfig.Get(model.skillDragId);  | 
|                     if (cfg != null)  | 
|                     {  | 
|                         m_DragSkillImg.SetSprite(cfg.IconName);  | 
|                     }  | 
|                 }  | 
|                 Vector2 _pos;  | 
|                 if (RectTransformUtility.ScreenPointToLocalPointInRectangle(this.transform as RectTransform,  | 
|                     Input.mousePosition, CameraManager.uiCamera, out _pos))  | 
|                 {  | 
|                     m_DragImg.rectTransform.localPosition = _pos;  | 
|                 }  | 
|   | 
|                 if (Input.GetMouseButtonUp(0))  | 
|                 {  | 
|                     model.skillDraging = false;  | 
|                     m_DragImg.SetActive(false);  | 
|                     CheckReplaceQuickSkill();  | 
|                     flipActScroll.locked = false;  | 
|                 }  | 
|             }  | 
|             //if (onXpCoolDown)  | 
|             //{  | 
|             //    RefreshXpCd();  | 
|             //}  | 
|         }  | 
|   | 
|         private void LevelUp()  | 
|         {  | 
|             if (!FuncOpen.Instance.IsFuncOpen(177))  | 
|             {  | 
|                 FuncOpen.Instance.ProcessorFuncErrorTip(177);  | 
|                 return;  | 
|             }  | 
|             var config = SkillConfig.Get(model.presentSltSkillID);  | 
|             TreasureSkillLevelUpWin.skillId = config.SkillTypeID;  | 
|             WindowCenter.Instance.Open<TreasureSkillLevelUpWin>();  | 
|         }  | 
|   | 
|         private void OnAutoUseXp()  | 
|         {  | 
|             m_IsAutoUseXp = !m_IsAutoUseXp;  | 
|             UpdateAutoXp();  | 
|         }  | 
|   | 
|         private void UpdateAutoXp()  | 
|         {  | 
|             m_AutoXpCheck.SetActive(m_IsAutoUseXp);  | 
|         }  | 
|   | 
|         private void UpdateSkillPage()  | 
|         {  | 
|             // 根据法宝开放显示第二批  | 
|             //m_PageOneBtn.image.SetSprite(m_SkillTurnplate.GroupIndex == 1 ?  | 
|             //    "SkillRightbtn_A" : "Skillbtnbtn_A");  | 
|             //m_PageTwoBtn.image.SetSprite(m_SkillTurnplate.GroupIndex == 2 ?  | 
|             //    "SkillRightbtn_A" : "Skillbtnbtn_A");  | 
|         }  | 
|   | 
|         private void CheckReplaceQuickSkill()  | 
|         {  | 
|             for (int i = 0; i < m_QuickSkillRect.Count; i++)  | 
|             {  | 
|                 //if (!InDisplay(i))  | 
|                 //{  | 
|                 //    continue;  | 
|                 //}  | 
|                 var des = RectTransformUtility.CalculateRelativeRectTransformBounds(this.transform, m_QuickSkillRect[i]);  | 
|                 var src = RectTransformUtility.CalculateRelativeRectTransformBounds(this.transform, m_DragImg.rectTransform);  | 
|                 var dis = Vector3.Distance(des.center, src.center);  | 
|                 if (dis < m_QuickSkillRect[i].rect.width / 2)  | 
|                 {  | 
|                     if (PlayerDatas.Instance.skill.GetQuickSkillByPos(i) != null)  | 
|                     {  | 
|                         if (m_QuickSkills[i].skillData.skillId == model.skillDragId)  | 
|                         {  | 
|                             //SoundPlayer.Instance.PlayUIAudio(2);  | 
|                             return;  | 
|                         }  | 
|                         PlayerDatas.Instance.skill.SetQuickSkill(i, model.skillDragId);  | 
|                         SoundPlayer.Instance.PlayUIAudio(28);  | 
|                         UpdateSltSkill();  | 
|                     }  | 
|                     //SoundPlayer.Instance.PlayUIAudio(2);  | 
|                     break;  | 
|                 }  | 
|             }  | 
|         }  | 
|   | 
|   | 
|         private int m_AchieveSkillId = 0;  | 
|         void HandleAchievement()  | 
|         {  | 
|             m_AchieveSkillId = 0;  | 
|             if (AchievementGoto.achievementType == AchievementGoto.ExcuteSkill)  | 
|             {  | 
|                 var _cfg = SuccessConfig.Get(AchievementGoto.guideAchievementId);  | 
|                 var _skillId = SkillConfig.FindSkillByJob(_cfg.Condition, PlayerDatas.Instance.baseData.Job);  | 
|                 if (_skillId != 0)  | 
|                 {  | 
|                     m_AchieveSkillId = _skillId;  | 
|                     var _index = skillListAct.FindIndex((x) =>  | 
|                      {  | 
|                          return x == _skillId;  | 
|                      });  | 
|                     if (_index != -1)  | 
|                     {  | 
|                         var _page = _index / SkillModel.ACT_SKILL_NUM;  | 
|                         if (_page == 1)  | 
|                         {  | 
|                             flipActScroll.FlipRight();  | 
|                         }  | 
|                         flipActScroll.RefreshActive();  | 
|                         SysNotifyMgr.Instance.ShowTip("Achievement_109");  | 
|                     }  | 
|                 }  | 
|             }  | 
|         }  | 
|     }  | 
|   | 
| }  | 
|   | 
|   | 
|   | 
|   |