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();
|
}
|
|
}
|
}
|