| using System;  | 
| using UnityEngine;  | 
| using UnityEngine.UI;  | 
|   | 
| namespace vnxbqy.UI  | 
| {  | 
|       | 
|     public class LuckyTreasureWin : Window  | 
|     {  | 
|         [SerializeField] ScrollerController awardsCtrl;  | 
|         [SerializeField] ScrollerController resultCtrl;  | 
|         [SerializeField] Text remainMoneyText;  | 
|         [SerializeField] Text operationTimeText;  | 
|         [SerializeField] CommonItemBaisc luckAward_Item;  | 
|         [SerializeField] Button freeTreasureBtn;  | 
|         [SerializeField] Button goldTreasureBtn;  | 
|         [SerializeField] Button autoTreasureBtn;  | 
|         [SerializeField] Button addMoneyBtn;  | 
|         [SerializeField] Text goldTreasurePriceText;  | 
|         [SerializeField] Slider luckValueSlider;  | 
|         [SerializeField] Text luckValueText;  | 
|         [SerializeField] Text ruleText;  | 
|         [SerializeField] UIEffect effect;  | 
|   | 
|         [Header("滑动时间"), SerializeField] float sliderTime = 0.1f;  | 
|         [Header("滑动速度"), SerializeField] float sliderSpeed = 0.1f;  | 
|   | 
|         OperationLuckyTreasure operation = null;  | 
|         LuckyTreasureModel luckyTreasureModel { get { return ModelCenter.Instance.GetModel<LuckyTreasureModel>(); } }  | 
|           | 
|         #region Built-in  | 
|         protected override void BindController()  | 
|         {  | 
|               | 
|         }  | 
|   | 
|         protected override void AddListeners()  | 
|         {  | 
|             freeTreasureBtn.AddListener(ClickFreeTreasure);  | 
|             goldTreasureBtn.AddListener(ClickGoldTreasure);  | 
|             autoTreasureBtn.AddListener(ClickAutoTreasure);  | 
|             addMoneyBtn.AddListener(ClickAddMoney);  | 
|         }  | 
|   | 
|         protected override void OnPreOpen()  | 
|         {  | 
|             GlobalTimeEvent.Instance.secondEvent += UpdateSecond;  | 
|             PlayerDatas.Instance.playerDataRefreshEvent += UpdatePlayerData;  | 
|             luckyTreasureModel.UpdateMessageEvent += UpdateMessageInfo;  | 
|             luckyTreasureModel.UpdateLuckyResultEvent += UpdateLuckyResult;  | 
|             luckyTreasureModel.UpdateLoginLuckyTreasureRedPoint(false);  | 
|             SetDisplay();  | 
|         }  | 
|   | 
|         protected override void OnAfterOpen()  | 
|         {  | 
|              | 
|         }  | 
|   | 
|         protected override void LateUpdate()  | 
|         {  | 
|             base.LateUpdate();  | 
|         }  | 
|   | 
|         protected override void OnPreClose()  | 
|         {  | 
|             GlobalTimeEvent.Instance.secondEvent -= UpdateSecond;  | 
|             luckyTreasureModel.UpdateLuckyResultEvent -= UpdateLuckyResult;  | 
|             luckyTreasureModel.UpdateMessageEvent -= UpdateMessageInfo;  | 
|             PlayerDatas.Instance.playerDataRefreshEvent -= UpdatePlayerData;  | 
|         }  | 
|         protected override void OnAfterClose()  | 
|         {  | 
|   | 
|         }  | 
|         #endregion  | 
|   | 
|         private void SetDisplay()  | 
|         {  | 
|             operation = luckyTreasureModel.GetOperation();  | 
|             if (operation == null) return;  | 
|   | 
|             UpdateRemainMoney();  | 
|             UpdateMessageInfo();  | 
|             UpdateAwards();  | 
|             UpdateLuckyTreasureState();  | 
|             UpdateSecond();  | 
|             goldTreasurePriceText.text = luckyTreasureModel.luckyTreasurePrice.ToString();  | 
|             ruleText.text = Language.Get("LuckyTreasure101",luckyTreasureModel.luckyTreasurePoint);  | 
|             luckValueSlider.minValue = 0;  | 
|             luckValueSlider.maxValue = 600;  | 
|             UpdateLuckValue();  | 
|             luckValueSlider.value = luckyTreasureModel.curLuckValue;  | 
|             OperationLuckyTreasure.LuckyTreasureItem luckyItem = null;  | 
|             if(operation.TryGetLuckBigAward(out luckyItem))  | 
|             {  | 
|                 var itemConfig = ItemConfig.Get(luckyItem.itemId);  | 
|                 if(itemConfig.ItemColor <= 4)  | 
|                 {  | 
|                     effect.effect = 1177;  | 
|                 }  | 
|                 else  | 
|                 {  | 
|                     effect.effect = 1178;  | 
|                 }  | 
|                 ItemCellModel itemCellModel = new ItemCellModel(luckyItem.itemId);  | 
|                 luckAward_Item.Init(itemCellModel);  | 
|                 luckAward_Item.button.RemoveAllListeners();  | 
|                 luckAward_Item.button.AddListener(() =>  | 
|                 {  | 
|                     ItemTipUtility.Show(luckyItem.itemId);  | 
|                 });  | 
|             }  | 
|         }  | 
|         private void UpdateSecond()  | 
|         {  | 
|             operationTimeText.text = Language.Get("BossFHLanguage2", operation.ToDisplayTime());  | 
|         }  | 
|   | 
|         private void UpdateLuckyResult()  | 
|         {  | 
|             UpdateLuckValue();  | 
|             UpdateLuckyTreasureState();  | 
|         }  | 
|   | 
|         private void UpdateAwards()  | 
|         {  | 
|             var luckyItems = operation.luckTreasureItems;  | 
|             if(luckyItems != null && luckyItems.Count > 0)  | 
|             {  | 
|                 awardsCtrl.Refresh();  | 
|                 int length = luckyItems.Count - 1;  | 
|                 int line = length / 2;  | 
|                 if (length % 2 > 0)  | 
|                 {  | 
|                     line += 1;  | 
|                 }  | 
|                 for (int i = 0; i < line; i++)  | 
|                 {  | 
|                     awardsCtrl.AddCell(ScrollerDataType.Header, i);  | 
|                 }  | 
|                 awardsCtrl.Restart();  | 
|             }  | 
|         }  | 
|   | 
|         private void UpdateMessageInfo()  | 
|         {  | 
|             var results = luckyTreasureModel.resultInfolist;  | 
|             resultCtrl.Refresh();  | 
|             for(int i = 0; i < results.Count; i++)  | 
|             {  | 
|                 resultCtrl.AddCell(ScrollerDataType.Header,i);  | 
|             }  | 
|             resultCtrl.Restart();  | 
|         }  | 
|   | 
|         private void UpdateLuckValue()  | 
|         {  | 
|             luckValueText.text = StringUtility.Contact(luckyTreasureModel.curLuckValue, "/", operation.sumLuckPoint);  | 
|             luckValueSlider.value = luckyTreasureModel.curLuckValue;  | 
|         }  | 
|   | 
|         private void UpdatePlayerData(PlayerDataType type)  | 
|         {  | 
|             switch(type)  | 
|             {  | 
|                 case PlayerDataType.Gold:  | 
|                     UpdateRemainMoney();  | 
|                     break;  | 
|             }  | 
|         }  | 
|   | 
|         private void UpdateRemainMoney()  | 
|         {  | 
|             ulong moneyNum = UIHelper.GetMoneyCnt(1);  | 
|             remainMoneyText.text = moneyNum.ToString();  | 
|         }  | 
|   | 
|         private void UpdateLuckyTreasureState()  | 
|         {  | 
|             goldTreasureBtn.SetActive(!luckyTreasureModel.isFree);  | 
|             freeTreasureBtn.SetActive(luckyTreasureModel.isFree);  | 
|         }  | 
|   | 
|         private void ClickAutoTreasure()  | 
|         {  | 
|             WindowCenter.Instance.Open<AutoLuckyTreasurePopWin>();  | 
|         }  | 
|   | 
|   | 
|         private void ClickAddMoney()  | 
|         {  | 
|             WindowCenter.Instance.Open<RechargeTipWin>();  | 
|         }  | 
|   | 
|         private void ClickGoldTreasure()  | 
|         {  | 
|             luckyTreasureModel.SendStartLuckyTreasure();  | 
|         }  | 
|   | 
|         private void ClickFreeTreasure()  | 
|         {  | 
|             luckyTreasureModel.SendStartLuckyTreasure();  | 
|         }  | 
|   | 
|     }  | 
| }  |