using System;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
[XLua.Hotfix]
|
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] Slider luckValueSlider;
|
[SerializeField] Text luckValueText;
|
[SerializeField] Text ruleText;
|
[Header("滑动时间"), SerializeField] float sliderTime = 0.1f;
|
[Header("滑动速度"), SerializeField] float sliderSpeed = 0.1f;
|
|
OperationLuckyTreasure operation = null;
|
LuckyTreasureModel luckyTreasureModel { get { return ModelCenter.Instance.GetModel<LuckyTreasureModel>(); } }
|
ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
|
#region Built-in
|
protected override void BindController()
|
{
|
|
}
|
|
protected override void AddListeners()
|
{
|
freeTreasureBtn.AddListener(ClickFreeTreasure);
|
goldTreasureBtn.AddListener(ClickGoldTreasure);
|
autoTreasureBtn.AddListener(ClickAutoTreasure);
|
}
|
|
protected override void OnPreOpen()
|
{
|
PlayerDatas.Instance.PlayerDataRefreshInfoEvent += UpdatePlayerData;
|
luckyTreasureModel.UpdateMessageEvent += UpdateMessageInfo;
|
luckyTreasureModel.UpdateLuckyResultEvent += UpdateLuckyResult;
|
SetDisplay();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
|
}
|
|
protected override void LateUpdate()
|
{
|
base.LateUpdate();
|
}
|
|
protected override void OnPreClose()
|
{
|
luckyTreasureModel.UpdateLuckyResultEvent -= UpdateLuckyResult;
|
luckyTreasureModel.UpdateMessageEvent -= UpdateMessageInfo;
|
PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= UpdatePlayerData;
|
}
|
protected override void OnAfterClose()
|
{
|
|
}
|
#endregion
|
|
private void SetDisplay()
|
{
|
operation = luckyTreasureModel.GetOperation();
|
if (operation == null) return;
|
|
UpdateRemainMoney();
|
UpdateMessageInfo();
|
UpdateAwards();
|
UpdateLuckValue();
|
UpdateLuckyTreasureState();
|
operationTimeText.text = operation.ToDisplayTime();
|
luckValueSlider.value = luckyTreasureModel.curLuckValue;
|
ruleText.text = Language.Get("LuckyTreasure101",luckyTreasureModel.luckyTreasurePoint);
|
luckValueSlider.minValue = 0;
|
luckValueSlider.maxValue = operation.sumLuckPoint;
|
OperationLuckyTreasure.LuckyTreasureItem luckyItem = null;
|
if(operation.TryGetLuckBigAward(out luckyItem))
|
{
|
ItemCellModel itemCellModel = new ItemCellModel(luckyItem.itemId);
|
luckAward_Item.Init(itemCellModel);
|
luckAward_Item.cellBtn.RemoveAllListeners();
|
luckAward_Item.cellBtn.AddListener(() =>
|
{
|
ItemAttrData attrData = new ItemAttrData(luckyItem.itemId);
|
tipsModel.SetItemTipsModel(attrData);
|
});
|
}
|
}
|
|
|
private void UpdateLuckyResult()
|
{
|
UpdateLuckValue();
|
UpdateLuckyTreasureState();
|
}
|
|
private void UpdateAwards()
|
{
|
var luckyItems = operation.luckTreasureItems;
|
awardsCtrl.Refresh();
|
for(int i = 0; i < luckyItems.Count; 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()
|
{
|
float offset = luckyTreasureModel.curLuckValue - luckValueSlider.value;
|
if (offset < 0.01f)
|
{
|
luckValueSlider.value = luckyTreasureModel.curLuckValue;
|
return;
|
}
|
|
luckValueSlider.value = Mathf.SmoothDamp(luckValueSlider.value,luckyTreasureModel.curLuckValue,ref sliderSpeed,sliderTime);
|
|
}
|
|
|
private void UpdatePlayerData(PlayerDataRefresh type)
|
{
|
switch(type)
|
{
|
case PlayerDataRefresh.Gold:
|
UpdateRemainMoney();
|
break;
|
}
|
}
|
|
private void UpdateRemainMoney()
|
{
|
ulong moneyNum = UIHelper.GetMoneyCnt(1);
|
remainMoneyText.text = moneyNum.ToString();
|
}
|
|
private void UpdateLuckyTreasureState()
|
{
|
goldTreasureBtn.gameObject.SetActive(!luckyTreasureModel.isFree);
|
freeTreasureBtn.gameObject.SetActive(luckyTreasureModel.isFree);
|
}
|
|
private void ClickAutoTreasure()
|
{
|
luckyTreasureModel.isAutoLuckyTreasure = true;
|
luckyTreasureModel.SendStartLuckyTreasure();
|
}
|
|
private void ClickGoldTreasure()
|
{
|
luckyTreasureModel.SendStartLuckyTreasure();
|
}
|
|
private void ClickFreeTreasure()
|
{
|
luckyTreasureModel.SendStartLuckyTreasure();
|
}
|
|
}
|
}
|